[Xfce4-commits] <xfwm4:master> Update treeview when choosing to use new value in a conflict.
Jérôme Guelfucci
noreply at xfce.org
Sun Dec 30 15:46:10 CET 2012
Updating branch refs/heads/master
to 5b473cf697eab460c157619d5c1c0c12cd2313b0 (commit)
from 1498e23fdbecad0d35c9cf53d7b29f55ec098213 (commit)
commit 5b473cf697eab460c157619d5c1c0c12cd2313b0
Author: Jérôme Guelfucci <jeromeg at xfce.org>
Date: Sun Dec 30 15:01:58 2012 +0100
Update treeview when choosing to use new value in a conflict.
We need to erase the old shortcut manually in the treeview as we won't
get a signal for features which are not used anymore.
settings-dialogs/xfwm4-settings.c | 45 ++++++++++++++++++++++++++++++++++++-
1 files changed, 44 insertions(+), 1 deletions(-)
diff --git a/settings-dialogs/xfwm4-settings.c b/settings-dialogs/xfwm4-settings.c
index 15a83e7..4f284d3 100644
--- a/settings-dialogs/xfwm4-settings.c
+++ b/settings-dialogs/xfwm4-settings.c
@@ -175,6 +175,10 @@ static void xfwm_settings_shortcut_added (XfceShortc
static void xfwm_settings_shortcut_removed (XfceShortcutsProvider *provider,
const gchar *shortcut,
XfwmSettings *settings);
+static gboolean xfwm_settings_update_treeview_on_conflict_replace (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer shortcut_to_erase);
static void xfwm_settings_shortcut_edit_clicked (GtkButton *button,
XfwmSettings *settings);
static void xfwm_settings_shortcut_clear_clicked (GtkButton *button,
@@ -1909,6 +1913,35 @@ xfwm_settings_shortcut_reset_clicked (GtkButton *button,
static gboolean
+xfwm_settings_update_treeview_on_conflict_replace (GtkTreeModel *model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
+ gpointer shortcut_to_erase)
+{
+ gchar *shortcut;
+
+ gtk_tree_model_get (model, iter, SHORTCUTS_SHORTCUT_COLUMN, &shortcut, -1);
+
+ if (g_strcmp0 (shortcut_to_erase, shortcut) == 0)
+ {
+ /* We found the iter for which we want to erase the shortcut value */
+ /* Let's do it! */
+ gtk_list_store_set (GTK_LIST_STORE (model), iter,
+ SHORTCUTS_SHORTCUT_COLUMN, NULL,
+ SHORTCUTS_SHORTCUT_LABEL_COLUMN, NULL, -1);
+
+ g_free (shortcut);
+
+ return TRUE;
+ }
+
+ g_free (shortcut);
+
+ return FALSE;
+}
+
+
+static gboolean
xfwm_settings_validate_shortcut (XfceShortcutDialog *dialog,
const gchar *shortcut,
XfwmSettings *settings)
@@ -1964,7 +1997,17 @@ xfwm_settings_validate_shortcut (XfceShortcutDialog *dialog,
FALSE);
if (G_UNLIKELY (response == GTK_RESPONSE_ACCEPT))
- xfce_shortcuts_provider_reset_shortcut (other_provider, shortcut);
+ {
+ GObject *view;
+
+ xfce_shortcuts_provider_reset_shortcut (other_provider, shortcut);
+
+ /* We need to update the treeview to erase the shortcut value */
+ view = gtk_builder_get_object (settings->priv->builder, "shortcuts_treeview");
+ gtk_tree_model_foreach (gtk_tree_view_get_model (GTK_TREE_VIEW (view)),
+ xfwm_settings_update_treeview_on_conflict_replace,
+ (gpointer) shortcut);
+ }
else
accepted = FALSE;
}
More information about the Xfce4-commits
mailing list