gnome-terminal r2529 - trunk/src



Author: chpe
Date: Mon Mar 31 22:41:47 2008
New Revision: 2529
URL: http://svn.gnome.org/viewvc/gnome-terminal?rev=2529&view=rev

Log:
Simply creating/updating the transient parent of the keybindings editor. Move that code to terminal-accels.c.


Modified:
   trunk/src/terminal-accels.c
   trunk/src/terminal-accels.h
   trunk/src/terminal.c

Modified: trunk/src/terminal-accels.c
==============================================================================
--- trunk/src/terminal-accels.c	(original)
+++ trunk/src/terminal-accels.c	Mon Mar 31 22:41:47 2008
@@ -237,6 +237,7 @@
 /* never set gconf keys in response to receiving a gconf notify. */
 static int inside_gconf_notify = 0;
 static char *saved_menu_accel = NULL;
+static GtkWidget *edit_keys_dialog = NULL;
 
 void
 terminal_accels_init (void)
@@ -1123,8 +1124,8 @@
   return TRUE;
 }
 
-GtkWidget*
-terminal_edit_keys_dialog_new (GtkWindow *transient_parent)
+void
+terminal_edit_keys_dialog_show (GtkWindow *transient_parent)
 {
   GladeXML *xml;
   GtkWidget *w;
@@ -1135,11 +1136,19 @@
   GtkTreeViewColumn *column;
   GtkTreeIter parent_iter;
 
+  if (edit_keys_dialog != NULL)
+    {
+      gtk_window_set_transient_for (GTK_WINDOW (edit_keys_dialog), transient_parent);
+      gtk_window_present (GTK_WINDOW (edit_keys_dialog));
+      return;
+    }
+
+  /* No keybindings editor yet, create one */
   xml = terminal_util_load_glade_file (TERM_GLADE_FILE,
                                        "keybindings-dialog",
                                        transient_parent);
   if (xml == NULL)
-    return NULL;
+    return;
   
   w = glade_xml_get_widget (xml, "disable-mnemonics-checkbutton");
   living_mnemonics_checkbuttons = g_slist_prepend (living_mnemonics_checkbuttons,
@@ -1252,9 +1261,15 @@
 
   terminal_util_set_unique_role (GTK_WINDOW (w), "gnome-terminal-accels");
 
-  g_object_unref (G_OBJECT (xml));
-  
-  return w;
+  g_object_unref (xml);
+
+  edit_keys_dialog = w;
+
+  gtk_window_set_transient_for (GTK_WINDOW (edit_keys_dialog), transient_parent);
+  g_signal_connect (edit_keys_dialog, "destroy",
+                    G_CALLBACK (gtk_widget_destroyed), &edit_keys_dialog);
+
+  gtk_window_present (GTK_WINDOW (edit_keys_dialog));
 }
 
 static void

Modified: trunk/src/terminal-accels.h
==============================================================================
--- trunk/src/terminal-accels.h	(original)
+++ trunk/src/terminal-accels.h	Mon Mar 31 22:41:47 2008
@@ -26,8 +26,8 @@
 G_BEGIN_DECLS
 
 void terminal_accels_init (void);
-
-GtkWidget* terminal_edit_keys_dialog_new (GtkWindow *transient_parent);
+ 
+void terminal_edit_keys_dialog_show (GtkWindow *transient_parent);
 
 G_END_DECLS
 

Modified: trunk/src/terminal.c
==============================================================================
--- trunk/src/terminal.c	(original)
+++ trunk/src/terminal.c	Mon Mar 31 22:41:47 2008
@@ -75,7 +75,6 @@
 struct _TerminalApp
 {
   GList *windows;
-  GtkWidget *edit_keys_dialog;
   GtkWidget *edit_encodings_dialog;
   GtkWidget *new_profile_dialog;
   GtkWidget *manage_profiles_dialog;
@@ -1785,57 +1784,11 @@
   terminal_profile_edit (profile, transient_parent);
 }
 
-static void
-edit_keys_destroyed_callback (GtkWidget   *edit_keys_dialog,
-                              TerminalApp *app)
-{
-  app->edit_keys_dialog = NULL;
-}
-
 void
 terminal_app_edit_keybindings (TerminalApp     *app,
                                GtkWindow       *transient_parent)
 {
-  GtkWindow *old_transient_parent;
-
-  if (app->edit_keys_dialog == NULL)
-    {      
-      old_transient_parent = NULL;      
-
-      /* passing in transient_parent here purely for the
-       * glade error dialog
-       */
-      app->edit_keys_dialog = terminal_edit_keys_dialog_new (transient_parent);
-
-      if (app->edit_keys_dialog == NULL)
-        return; /* glade file missing */
-      
-      g_signal_connect (G_OBJECT (app->edit_keys_dialog),
-                        "destroy",
-                        G_CALLBACK (edit_keys_destroyed_callback),
-                        app);
-    }
-  else 
-    {
-      old_transient_parent = gtk_window_get_transient_for (GTK_WINDOW (app->edit_keys_dialog));
-    }
-  
-  if (old_transient_parent != transient_parent)
-    {
-      gtk_window_set_transient_for (GTK_WINDOW (app->edit_keys_dialog),
-                                    transient_parent);
-      gtk_widget_hide (app->edit_keys_dialog); /* re-show the window on its new parent */
-    }
-  
-  gtk_widget_show_all (app->edit_keys_dialog);
-  gtk_window_present (GTK_WINDOW (app->edit_keys_dialog));
-}
-
-static void
-edit_encodings_destroyed_callback (GtkWidget   *edit_encodings_dialog,
-                                   TerminalApp *app)
-{
-  app->edit_encodings_dialog = NULL;
+  terminal_edit_keys_dialog_show (transient_parent);
 }
 
 void
@@ -1859,8 +1812,8 @@
       
       g_signal_connect (G_OBJECT (app->edit_encodings_dialog),
                         "destroy",
-                        G_CALLBACK (edit_encodings_destroyed_callback),
-                        app);
+                        G_CALLBACK (gtk_widget_destroyed),
+                        &(app->edit_encodings_dialog));
     }
   else 
     {



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