[gthumb] preferences dialog: same dialog shown endlessy
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] preferences dialog: same dialog shown endlessy
- Date: Sun, 29 Mar 2015 17:34:46 +0000 (UTC)
commit 3d62cd4cfec5eaae8ff8c0a090892125d931fe25
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sun Mar 29 18:01:10 2015 +0200
preferences dialog: same dialog shown endlessy
gthumb/dlg-preferences-extensions.c | 36 ++++++++++++++++++----------------
1 files changed, 19 insertions(+), 17 deletions(-)
---
diff --git a/gthumb/dlg-preferences-extensions.c b/gthumb/dlg-preferences-extensions.c
index 2a20d97..c81bd06 100644
--- a/gthumb/dlg-preferences-extensions.c
+++ b/gthumb/dlg-preferences-extensions.c
@@ -347,6 +347,13 @@ category_view_separator_func (GtkTreeModel *model,
static void
+change_switch_state (gpointer user_data)
+{
+ gtk_switch_set_active (GTK_SWITCH (user_data), ! gtk_switch_get_active (GTK_SWITCH (user_data)));
+}
+
+
+static void
extension_switch_activated_cb (GObject *gobject,
GParamSpec *pspec,
gpointer user_data)
@@ -356,30 +363,25 @@ extension_switch_activated_cb (GObject *gobject,
GthExtensionDescription *description = row_data->description;
GError *error = NULL;
- if (! gth_extension_description_is_active (description)) {
- if (! gth_extension_manager_activate (gth_main_get_default_extension_manager (),
description->id, &error)) {
- _gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser_data->dialog), _("Could not
activate the extension"), error);
- g_clear_error (&error);
-
- g_signal_handlers_block_by_data (gobject, user_data);
- gtk_switch_set_active (GTK_SWITCH (gobject), FALSE);
- g_signal_handlers_unblock_by_data (gobject, user_data);
- }
+ if (gtk_switch_get_active (GTK_SWITCH (gobject))) {
+ if (! gth_extension_manager_activate (gth_main_get_default_extension_manager (),
description->id, &error))
+ _gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser_data->dialog), _("Could not
activate the extension"), error);
else
browser_data->enabled_disabled_cardinality_changed = TRUE;
}
else {
- if (! gth_extension_manager_deactivate (gth_main_get_default_extension_manager (),
description->id, &error)) {
- _gtk_error_dialog_from_gerror_run (GTK_WINDOW (browser_data->dialog), _("Could not
deactivate the extension"), error);
- g_clear_error (&error);
-
- g_signal_handlers_block_by_data (gobject, user_data);
- gtk_switch_set_active (GTK_SWITCH (gobject), TRUE);
- g_signal_handlers_unblock_by_data (gobject, user_data);
- }
+ if (! gth_extension_manager_deactivate (gth_main_get_default_extension_manager (),
description->id, &error))
+ _gtk_error_dialog_from_gerror_show (GTK_WINDOW (browser_data->dialog), _("Could not
deactivate the extension"), error);
else
browser_data->enabled_disabled_cardinality_changed = TRUE;
}
+
+ if (error != NULL) {
+ /* reset to the previous state */
+ call_when_idle (change_switch_state, gobject);
+ }
+
+ g_clear_error (&error);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]