gnome-terminal r2738 - trunk/src



Author: chpe
Date: Thu May 29 19:49:41 2008
New Revision: 2738
URL: http://svn.gnome.org/viewvc/gnome-terminal?rev=2738&view=rev

Log:
Use a separate handler to update the treeview.


Modified:
   trunk/src/terminal-accels.c

Modified: trunk/src/terminal-accels.c
==============================================================================
--- trunk/src/terminal-accels.c	(original)
+++ trunk/src/terminal-accels.c	Thu May 29 19:49:41 2008
@@ -217,7 +217,6 @@
 /* never set gconf keys in response to receiving a gconf notify. */
 static int inside_gconf_notify = 0;
 static GtkWidget *edit_keys_dialog = NULL;
-static GtkWidget *edit_keys_dialog_treeview = NULL;
 static guint gconf_notify_id;
 static GHashTable *gconf_key_to_entry;
 
@@ -311,7 +310,7 @@
 		      KEYVAL_COLUMN, &key_entry,
 		      -1);
 
-  if (key_entry == (KeyEntry *)data)
+  if (key_entry == (KeyEntry *) data)
     {
       gtk_tree_model_row_changed (model, path, iter);
       return TRUE;
@@ -378,14 +377,6 @@
                               keyval, mask,
                               TRUE);
   inside_gconf_notify -= 1;
-
-  /* Notify tree views to repaint with new values */
-  if (edit_keys_dialog_treeview)
-    {
-      gtk_tree_model_foreach (gtk_tree_view_get_model (GTK_TREE_VIEW (edit_keys_dialog_treeview)),
-                              update_model_foreach,
-                              key_entry);
-    }
 }
 
 static void
@@ -632,6 +623,16 @@
   return result;
 }
 
+static void
+treeview_accel_changed_cb (GtkAccelGroup  *accel_group,
+                           guint keyval,
+                           GdkModifierType modifier,
+                           GClosure *accel_closure,
+                           GtkTreeModel *model)
+{
+  gtk_tree_model_foreach (model, update_model_foreach, accel_closure->data);
+}
+
 static gboolean
 cb_check_for_uniqueness (GtkTreeModel *model,
                          GtkTreePath  *path,
@@ -788,6 +789,14 @@
   g_free (str);
 }
 
+static void
+edit_keys_dialog_destroy_cb (GtkWidget *widget,
+                             gpointer user_data)
+{
+  g_signal_handlers_disconnect_by_func (hack_group, G_CALLBACK (treeview_accel_changed_cb), user_data);
+  edit_keys_dialog = NULL;
+}
+
 void
 terminal_edit_keys_dialog_show (GtkWindow *transient_parent)
 {
@@ -815,11 +824,6 @@
   terminal_util_bind_object_property_to_widget (G_OBJECT (app), TERMINAL_APP_ENABLE_MENU_ACCELS,
                                                 disable_menu_accel_button, FLAG_INVERT_BOOL);
 
-  edit_keys_dialog_treeview = tree_view;
-  g_signal_connect (tree_view, "destroy",
-                    G_CALLBACK (gtk_widget_destroyed),
-                    &edit_keys_dialog_treeview);
-
   /* Column 1 */
   cell_renderer = gtk_cell_renderer_text_new ();
   column = gtk_tree_view_column_new_with_attributes (_("_Action"),
@@ -882,15 +886,19 @@
   g_object_unref (tree);
 
   gtk_tree_view_expand_all (GTK_TREE_VIEW (tree_view));
-  
+
+  g_signal_connect (hack_group, "accel-changed",
+                    G_CALLBACK (treeview_accel_changed_cb), tree);
+
   edit_keys_dialog = dialog;
   g_signal_connect (dialog, "destroy",
-                    G_CALLBACK (gtk_widget_destroyed), &edit_keys_dialog);
+                    G_CALLBACK (edit_keys_dialog_destroy_cb), tree);
   g_signal_connect (dialog, "response",
                     G_CALLBACK (gtk_widget_destroy),
                     NULL);
   gtk_window_set_default_size (GTK_WINDOW (dialog), -1, 350);
 
+
 done:
   gtk_window_set_transient_for (GTK_WINDOW (edit_keys_dialog), transient_parent);
   gtk_window_present (GTK_WINDOW (edit_keys_dialog));



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]