From 8a1ae9bbbd2a5da6684b0ec34b49c8a3337f95dc Mon Sep 17 00:00:00 2001
From: Julien Bonjean <julien@bonjean.info>
Date: Fri, 5 Mar 2010 16:25:11 -0500
Subject: [PATCH] [#2916] Added support to disable a shortcut

---
 .../src/config/shortcuts-config.c             | 20 +++++++++++++++++++
 .../src/config/shortcuts-config.h             | 10 +++++++---
 2 files changed, 27 insertions(+), 3 deletions(-)

diff --git a/sflphone-client-gnome/src/config/shortcuts-config.c b/sflphone-client-gnome/src/config/shortcuts-config.c
index 91e4d140a9..bffab5f554 100644
--- a/sflphone-client-gnome/src/config/shortcuts-config.c
+++ b/sflphone-client-gnome/src/config/shortcuts-config.c
@@ -85,12 +85,15 @@ setup_tree_view(GtkWidget *treeview)
 
   gtk_tree_view_append_column(GTK_TREE_VIEW (treeview), column);
   g_signal_connect (G_OBJECT (renderer), "accel_edited", G_CALLBACK (accel_edited), (gpointer) treeview);
+  g_signal_connect (G_OBJECT (renderer), "accel_cleared", G_CALLBACK (accel_cleared), (gpointer) treeview);
 }
 
 static void
 accel_edited(GtkCellRendererAccel *renderer, gchar *path, guint accel_key,
     GdkModifierType mask, guint hardware_keycode, GtkTreeView *treeview)
 {
+  DEBUG("Accel edited");
+
   GtkTreeModel *model;
   GtkTreeIter iter;
 
@@ -105,3 +108,20 @@ accel_edited(GtkCellRendererAccel *renderer, gchar *path, guint accel_key,
   // Update GDK bindings
   shortcuts_update_bindings(atoi(path), code);
 }
+
+static void
+accel_cleared(GtkCellRendererAccel *renderer, gchar *path, GtkTreeView *treeview)
+{
+  DEBUG("Accel cleared");
+
+  GtkTreeModel *model;
+  GtkTreeIter iter;
+
+  // Update treeview
+  model = gtk_tree_view_get_model(treeview);
+  if (gtk_tree_model_get_iter_from_string(model, &iter, path))
+    gtk_list_store_set(GTK_LIST_STORE (model), &iter, MASK, 0, VALUE, 0, -1);
+
+  // Update GDK bindings
+  shortcuts_update_bindings(atoi(path), 0);
+}
diff --git a/sflphone-client-gnome/src/config/shortcuts-config.h b/sflphone-client-gnome/src/config/shortcuts-config.h
index 61306699f0..b7edf5c549 100644
--- a/sflphone-client-gnome/src/config/shortcuts-config.h
+++ b/sflphone-client-gnome/src/config/shortcuts-config.h
@@ -34,15 +34,19 @@ enum
 };
 
 GtkWidget*
-create_shortcuts_settings();
+create_shortcuts_settings ();
 
 static void
-setup_tree_view(GtkWidget *treeview);
+setup_tree_view (GtkWidget *treeview);
 
 static void
-accel_edited(GtkCellRendererAccel *renderer, gchar *path, guint accel_key,
+accel_edited (GtkCellRendererAccel *renderer, gchar *path, guint accel_key,
     GdkModifierType mask, guint hardware_keycode, GtkTreeView *treeview);
 
+static void
+accel_cleared (GtkCellRendererAccel *renderer, gchar *path,
+    GtkTreeView *treeview);
+
 G_END_DECLS
 
 #endif // _SHORTCUTS_CONFIG
-- 
GitLab