diff --git a/gajim/options_dialog.py b/gajim/options_dialog.py index 6c234509597fec2c06f8585eabc674aab42b2cea..e91dccbf587f2197d3ff08b8941451b9af20efcd 100644 --- a/gajim/options_dialog.py +++ b/gajim/options_dialog.py @@ -477,11 +477,11 @@ class ProxyComboOption(GenericOption): GenericOption.__init__(self, *args) self.combo = Gtk.ComboBoxText() - self.update_values() - - self.combo.connect('changed', self.on_value_change) self.combo.set_valign(Gtk.Align.CENTER) + self._signal_id = None + self.update_values() + button = get_image_button( 'preferences-system-symbolic', _('Manage Proxies')) button.set_action_name('app.manage-proxies') @@ -491,7 +491,18 @@ class ProxyComboOption(GenericOption): self.option_box.pack_start(button, False, True, 0) self.show_all() + def _block_signal(self, state): + if state: + if self._signal_id is None: + return + self.combo.disconnect(self._signal_id) + else: + self._signal_id = self.combo.connect('changed', + self.on_value_change) + self.combo.emit('changed') + def update_values(self): + self._block_signal(True) proxies = app.config.get_per('proxies') proxies.insert(0, _('No Proxy')) self.combo.remove_all() @@ -499,9 +510,13 @@ class ProxyComboOption(GenericOption): self.combo.insert_text(-1, value) if value == self.option_value or index == 0: self.combo.set_active(index) + self._block_signal(False) def on_value_change(self, combo): - self.set_value(combo.get_active_text()) + if combo.get_active() == 0: + self.set_value('') + else: + self.set_value(combo.get_active_text()) def on_row_activated(self): pass