diff --git a/src/gui_interface.py b/src/gui_interface.py index e52ac3b0b63fda3f160d3596f4af3eebf1ea77db..06f91ab6464283fd2738cef6bf2fb19c40f0e248 100644 --- a/src/gui_interface.py +++ b/src/gui_interface.py @@ -229,7 +229,7 @@ class Interface: del self.instances[account]['online_dialog'][name] for request in self.gpg_passphrase.values(): if request: - request.interrupt() + request.interrupt(account=account) if account in self.pass_dialog: self.pass_dialog[account].window.destroy() if show == 'offline': @@ -3564,9 +3564,15 @@ class PassphraseRequest: self.passphrase = None self.completed = False - def interrupt(self): - self.dialog.window.destroy() - self.callbacks = [] + def interrupt(self, account=None): + if account: + for (acct, cb) in self.callbacks: + if acct == account: + self.callbacks.remove((acct, cb)) + else: + self.callbacks = [] + if not len(self.callbacks): + self.dialog.window.destroy() def run_callback(self, account, callback): gajim.connections[account].gpg_passphrase(self.passphrase)