diff options
author | Ajay Garg <ajay@activitycentral.com> | 2013-01-04 06:31:07 (GMT) |
---|---|---|
committer | Ajay Garg <ajay@activitycentral.com> | 2013-01-04 06:31:07 (GMT) |
commit | 5c2df6bc60acf84af97db52eebe38b436e31efd2 (patch) | |
tree | 14edaea19e29da01cfdb73d96284b36abf4d69b9 | |
parent | 96bdf7849255892ed6317a495597e74d0991ecaa (diff) |
sdxo#2851: The issue was due to a 'timeout'-function being used (current
timeout was 3 seconds). So, if "Restart" was done before 3 seconds.
elapsed since the last change, "at least" one change was not committed.
Now, change the commiting-procedure; now all commits are done in
synchronous manner (no 'timeout'-function involved.
-rw-r--r-- | extensions/cpsection/network/view.py | 28 |
1 files changed, 15 insertions, 13 deletions
diff --git a/extensions/cpsection/network/view.py b/extensions/cpsection/network/view.py index a6294aa..6e7fb69 100644 --- a/extensions/cpsection/network/view.py +++ b/extensions/cpsection/network/view.py @@ -55,7 +55,6 @@ client = GConf.Client.get_default() class GConfMixin(object): """Mix-in class for GTK widgets backed by GConf""" def __init__(self, gconf_key, gsettings_dconf, dconf_key, widget=None, signal='changed'): - self._timeout_id = None self._gconf_key = gconf_key self._gsettings_dconf = gsettings_dconf self._dconf_key = dconf_key @@ -64,7 +63,6 @@ class GConfMixin(object): self._undo_value = initial_value self.set_value_from_gconf(initial_value) widget = widget or self - widget.connect(signal, self.__changed_cb) def undo(self): """Revert to original value if modified""" @@ -88,12 +86,6 @@ class GConfMixin(object): """ raise NotImplementedError() - def __changed_cb(self, widget): - if self._timeout_id is not None: - GObject.source_remove(self._timeout_id) - self._timeout_id = GObject.timeout_add(_APPLY_TIMEOUT, self._commit, - widget) - def __gconf_notify_cb(self, client, transaction_id_, entry, user_data_): new_value = _gconf_value_to_python(entry.value) self.set_value_from_gconf(new_value) @@ -102,11 +94,7 @@ class GConfMixin(object): new_value = self.get_value_for_gconf() logging.debug('Setting %r to %r', self._gconf_key, new_value) - widget.handler_block_by_func(self.__changed_cb) - try: - self._set_gconf_value(new_value) - finally: - widget.handler_unblock_by_func(self.__changed_cb) + self._set_gconf_value(new_value) def _set_gconf_value(self, new_value): gconf_type = client.get(self._gconf_key).type @@ -240,6 +228,9 @@ class GConfStringSettingBox(SettingBox): """Revert to original value if modified""" self.string_entry.undo() + def _commit(self, widget): + self.string_entry._commit(self.string_entry) + @property def changed(self): return self.string_entry.changed @@ -268,6 +259,9 @@ class GConfHostListSettingBox(GConfStringSettingBox): """Revert to original value if modified""" self.hosts_entry.undo() + def _commit(self, widget): + self.hosts_entry._commit(self.hosts_entry) + @property def changed(self): return self.hosts_entry.changed @@ -298,6 +292,10 @@ class GConfHostPortSettingBox(SettingBox): self.host_name_entry.undo() self.port_spin_button.undo() + def _commit(self, widget): + self.host_name_entry._commit(self.host_name_entry) + self.port_spin_button._commit(self.port_spin_button) + @property def changed(self): return self.host_name_entry.changed or self.port_spin_button.changed @@ -898,6 +896,10 @@ class Network(SectionView): def __launch_button_clicked_cb(self, launch_button): self._model.launch_nm_connection_editor() + def perform_accept_actions(self): + for setting in self._undo_objects: + setting._commit(setting) + def _gconf_value_to_python(gconf_value): if gconf_value.type == GConf.ValueType.STRING: |