diff --git a/src/gajim.py b/src/gajim.py index 77f0ff19a..f94a0f4f8 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -1410,14 +1410,19 @@ class Interface: gajim.connections[account].gpg_passphrase(self.gpg_passphrase[keyid]) callback() return + if self.gpg_dialog: + # A GPG dialog is already open, retry in 0.5 second + gobject.timeout_add(500, self.handle_event_gpg_password_required, + account, array) + return password_ok = False count = 0 title = _('Passphrase Required') second = _('Enter GPG key passphrase for account %s.') % account while not password_ok and count < 3: count += 1 - w = dialogs.PassphraseDialog(title, second, '') - passphrase, save = w.run() + self.gpg_dialog = dialogs.PassphraseDialog(title, second, '') + passphrase, save = self.gpg_dialog.run() if passphrase == -1: # User pressed cancel passphrase = None @@ -1427,6 +1432,7 @@ class Interface: test_gpg_passphrase(passphrase) title = _('Wrong Passphrase') second = _('Please retype your GPG passphrase or press Cancel.') + self.gpg_dialog = None if passphrase != None: self.gpg_passphrase[keyid] = passphrase gobject.timeout_add(30000, self.forget_gpg_passphrase, keyid) @@ -2697,6 +2703,7 @@ class Interface: self.status_sent_to_users = {} self.status_sent_to_groups = {} self.gpg_passphrase = {} + self.gpg_dialog = None self.default_colors = { 'inmsgcolor': gajim.config.get('inmsgcolor'), 'outmsgcolor': gajim.config.get('outmsgcolor'),