gnome-terminal r2454 - trunk/src



Author: chpe
Date: Wed Mar 19 15:20:54 2008
New Revision: 2454
URL: http://svn.gnome.org/viewvc/gnome-terminal?rev=2454&view=rev

Log:
Make "title" a property on TerminalScreen, and remove the "title-changed" signal.


Modified:
   trunk/src/terminal-screen.c
   trunk/src/terminal-screen.h
   trunk/src/terminal-window.c

Modified: trunk/src/terminal-screen.c
==============================================================================
--- trunk/src/terminal-screen.c	(original)
+++ trunk/src/terminal-screen.c	Wed Mar 19 15:20:54 2008
@@ -74,7 +74,6 @@
 
 enum {
   PROFILE_SET,
-  TITLE_CHANGED,
   ICON_TITLE_CHANGED,
   SELECTION_CHANGED,
   ENCODING_CHANGED,
@@ -82,6 +81,11 @@
 };
 
 enum {
+  PROP_0,
+  PROP_TITLE
+};
+
+enum {
   FLAVOR_AS_IS,
   FLAVOR_DEFAULT_TO_HTTP,
   FLAVOR_EMAIL
@@ -402,6 +406,25 @@
 }
 
 static void
+terminal_screen_get_property (GObject *object,
+                              guint prop_id,
+                              GValue *value,
+                              GParamSpec *pspec)
+{
+  TerminalScreen *screen = TERMINAL_SCREEN (object);
+
+  switch (prop_id)
+    {
+      case PROP_TITLE:
+        g_value_set_string (value, terminal_screen_get_title (screen));
+        break;
+      default:
+        G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+        break;
+    }
+}
+
+static void
 terminal_screen_class_init (TerminalScreenClass *klass)
 {
   GObjectClass *object_class = G_OBJECT_CLASS (klass);
@@ -409,6 +432,7 @@
 
   object_class->dispose = terminal_screen_dispose;
   object_class->finalize = terminal_screen_finalize;
+  object_class->get_property = terminal_screen_get_property;
 
   widget_class->unrealize = terminal_screen_unrealize;
   widget_class->size_allocate = terminal_screen_size_allocate;
@@ -416,7 +440,7 @@
   widget_class->size_request = terminal_screen_size_request;
   widget_class->map = terminal_screen_map;
   widget_class->grab_focus = terminal_screen_grab_focus;
-  
+
   signals[PROFILE_SET] =
     g_signal_new ("profile_set",
                   G_OBJECT_CLASS_TYPE (object_class),
@@ -425,15 +449,6 @@
                   NULL, NULL,
                   g_cclosure_marshal_VOID__VOID,
                   G_TYPE_NONE, 0);
-
-  signals[TITLE_CHANGED] =
-    g_signal_new ("title_changed",
-                  G_OBJECT_CLASS_TYPE (object_class),
-                  G_SIGNAL_RUN_LAST,
-                  G_STRUCT_OFFSET (TerminalScreenClass, title_changed),
-                  NULL, NULL,
-                  g_cclosure_marshal_VOID__VOID,
-                  G_TYPE_NONE, 0);
   
   signals[ICON_TITLE_CHANGED] =
     g_signal_new ("icon_title_changed",
@@ -462,6 +477,13 @@
                   g_cclosure_marshal_VOID__VOID,
                   G_TYPE_NONE, 0);
 
+  g_object_class_install_property (object_class,
+                                   PROP_TITLE,
+                                   g_param_spec_string ("title", NULL, NULL,
+                                                        NULL,
+                                                        G_PARAM_READABLE | G_PARAM_STATIC_NAME | G_PARAM_STATIC_NICK | G_PARAM_STATIC_BLURB));
+
+
   g_type_class_add_private (object_class, sizeof (TerminalScreenPrivate));
 }
 
@@ -777,7 +799,7 @@
 terminal_screen_cook_title (TerminalScreen *screen)
 {
   if (cook_title (screen, screen->priv->raw_title, &screen->priv->cooked_title))
-    g_signal_emit (G_OBJECT (screen), signals[TITLE_CHANGED], 0);
+    g_object_notify (G_OBJECT (screen), "title");
 }
 
 static void 

Modified: trunk/src/terminal-screen.h
==============================================================================
--- trunk/src/terminal-screen.h	(original)
+++ trunk/src/terminal-screen.h	Wed Mar 19 15:20:54 2008
@@ -54,7 +54,6 @@
   GtkBinClass parent_class;
 
   void (* profile_set)        (TerminalScreen *screen);
-  void (* title_changed)      (TerminalScreen *screen);
   void (* icon_title_changed) (TerminalScreen *screen);
   void (* selection_changed)  (TerminalScreen *screen);
   void (* encoding_changed)   (TerminalScreen *screen);

Modified: trunk/src/terminal-window.c
==============================================================================
--- trunk/src/terminal-window.c	(original)
+++ trunk/src/terminal-window.c	Wed Mar 19 15:20:54 2008
@@ -1287,6 +1287,7 @@
 
 static void
 title_changed_callback (TerminalScreen *screen,
+                        GParamSpec *psepc,
                         TerminalWindow *window)
 {
   TerminalWindowPrivate *priv = window->priv;
@@ -1412,6 +1413,7 @@
 
 static void
 sync_tab_label (TerminalScreen *screen,
+                GParamSpec *pspec,
                 GtkWidget *label)
 {
   GtkWidget *hbox;
@@ -1464,15 +1466,13 @@
   gtk_container_add (GTK_CONTAINER (close_button), image);
   gtk_box_pack_end (GTK_BOX (hbox), close_button, FALSE, FALSE, 0);
 
-  g_signal_connect (G_OBJECT (close_button), "clicked",
-		    G_CALLBACK (close_button_clicked_cb),
-		    screen);
+  sync_tab_label (screen, NULL, label);
+  g_signal_connect (screen, "notify::title",
+                    G_CALLBACK (sync_tab_label), label);
+
+  g_signal_connect (close_button, "clicked",
+		    G_CALLBACK (close_button_clicked_cb), screen);
 
-  sync_tab_label (screen, label);
-  g_signal_connect (G_OBJECT (screen),
-                    "title-changed",
-                    G_CALLBACK (sync_tab_label),
-                    label);
   g_signal_connect (hbox, "style-set",
                     G_CALLBACK (tab_label_style_set_cb), close_button);
 
@@ -1830,7 +1830,7 @@
                     window);
 
   g_signal_connect (G_OBJECT (screen),
-                    "title-changed",
+                    "notify::title",
                     G_CALLBACK (title_changed_callback),
                     window);
 



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