gnome-terminal r2768 - trunk/src
- From: chpe svn gnome org
- To: svn-commits-list gnome org
- Subject: gnome-terminal r2768 - trunk/src
- Date: Thu, 29 May 2008 19:52:25 +0000 (UTC)
Author: chpe
Date: Thu May 29 19:52:24 2008
New Revision: 2768
URL: http://svn.gnome.org/viewvc/gnome-terminal?rev=2768&view=rev
Log:
Fix FIXME: make icon-title work again, and use gobject properties for it instead of signals.
Modified:
trunk/src/terminal-screen.c
trunk/src/terminal-window.c
Modified: trunk/src/terminal-screen.c
==============================================================================
--- trunk/src/terminal-screen.c (original)
+++ trunk/src/terminal-screen.c Thu May 29 19:52:24 2008
@@ -833,13 +833,16 @@
terminal_screen_cook_icon_title (TerminalScreen *screen)
{
TerminalScreenPrivate *priv = screen->priv;
+ GObject *object = G_OBJECT (screen);
+ g_object_freeze_notify (object);
+
cook_title (screen, priv->raw_icon_title, &priv->cooked_icon_title);
-#if 0
- /* FIXMEchpe */
+
if (cook_title (screen, priv->raw_icon_title, &priv->cooked_icon_title))
- g_signal_emit (G_OBJECT (screen), signals[ICON_TITLE_CHANGED], 0);
-#endif
+ g_object_notify (G_OBJECT (screen), "icon-title");
+
+ g_object_thaw_notify (object);
}
static void
@@ -1540,6 +1543,7 @@
gboolean userset)
{
TerminalScreenPrivate *priv = screen->priv;
+ GObject *object = G_OBJECT (screen);
g_assert (TERMINAL_IS_SCREEN (screen));
@@ -1550,10 +1554,16 @@
strcmp (priv->raw_icon_title, icon_title) == 0))
return;
+ g_object_freeze_notify (object);
+
g_free (priv->raw_icon_title);
priv->raw_icon_title = g_strdup (icon_title);
priv->icon_title_set = TRUE;
+
+ g_object_notify (object, "icon-title-set");
terminal_screen_cook_icon_title (screen);
+
+ g_object_thaw_notify (object);
}
void
Modified: trunk/src/terminal-window.c
==============================================================================
--- trunk/src/terminal-window.c (original)
+++ trunk/src/terminal-window.c Thu May 29 19:52:24 2008
@@ -1620,35 +1620,51 @@
}
static void
-title_changed_callback (TerminalScreen *screen,
+sync_screen_title (TerminalScreen *screen,
+ GParamSpec *psepc,
+ TerminalWindow *window)
+{
+ TerminalWindowPrivate *priv = window->priv;
+
+ if (screen != priv->active_term)
+ return;
+
+ gtk_window_set_title (GTK_WINDOW (window), terminal_screen_get_title (screen));
+}
+
+static void
+sync_screen_icon_title (TerminalScreen *screen,
GParamSpec *psepc,
TerminalWindow *window)
{
TerminalWindowPrivate *priv = window->priv;
- const char *title;
-
- if (screen == priv->active_term)
- {
- title = terminal_screen_get_title (screen);
- gtk_window_set_title (GTK_WINDOW (window), title);
+ if (screen != priv->active_term)
+ return;
- if (terminal_screen_get_icon_title_set (screen))
- {
- title = terminal_screen_get_icon_title (screen);
- }
- gdk_window_set_icon_name (GTK_WIDGET (window)->window, title);
- }
+ if (!terminal_screen_get_icon_title_set (screen))
+ return;
+
+ gdk_window_set_icon_name (GTK_WIDGET (window)->window, terminal_screen_get_icon_title (screen));
}
static void
-icon_title_changed_callback (TerminalScreen *screen,
- TerminalWindow *window)
+sync_screen_icon_title_set (TerminalScreen *screen,
+ GParamSpec *psepc,
+ TerminalWindow *window)
{
TerminalWindowPrivate *priv = window->priv;
- if (screen == priv->active_term)
- gdk_window_set_icon_name (GTK_WIDGET (window)->window, terminal_screen_get_icon_title (screen));
+ if (screen != priv->active_term)
+ return;
+
+ if (terminal_screen_get_icon_title_set (screen))
+ return;
+
+ /* Need to reset the icon name */
+ /* FIXMEchpe: needs a gdk function to unset the icon title! */
+
+ gdk_window_set_icon_name (GTK_WIDGET (window)->window, terminal_screen_get_title (screen));
}
/* Notebook callbacks */
@@ -1969,8 +1985,9 @@
terminal_window_set_menubar_visible (window, setting);
}
- gdk_window_set_icon_name (GTK_WIDGET (window)->window, terminal_screen_get_icon_title (screen));
- gtk_window_set_title (GTK_WINDOW (window), terminal_screen_get_title (screen));
+ sync_screen_title (screen, NULL, window);
+ sync_screen_icon_title_set (screen, NULL, window);
+ sync_screen_icon_title (screen, NULL, window);
/* set size of window to current grid size */
#ifdef DEBUG_GEOMETRY
@@ -2052,15 +2069,12 @@
window);
/* FIXMEchpe: only connect on the active screen, not all screens! */
- g_signal_connect (G_OBJECT (screen),
- "notify::title",
- G_CALLBACK (title_changed_callback),
- window);
-
- g_signal_connect (G_OBJECT (screen),
- "icon-title-changed",
- G_CALLBACK (icon_title_changed_callback),
- window);
+ g_signal_connect (screen, "notify::title",
+ G_CALLBACK (sync_screen_title), window);
+ g_signal_connect (screen, "notify::icon-title",
+ G_CALLBACK (sync_screen_icon_title), window);
+ g_signal_connect (screen, "notify::icon-title-set",
+ G_CALLBACK (sync_screen_icon_title_set), window);
g_signal_connect_swapped (G_OBJECT (screen),
"selection-changed",
@@ -2132,11 +2146,15 @@
window);
g_signal_handlers_disconnect_by_func (G_OBJECT (screen),
- G_CALLBACK (title_changed_callback),
+ G_CALLBACK (sync_screen_title),
+ window);
+
+ g_signal_handlers_disconnect_by_func (G_OBJECT (screen),
+ G_CALLBACK (sync_screen_icon_title),
window);
g_signal_handlers_disconnect_by_func (G_OBJECT (screen),
- G_CALLBACK (icon_title_changed_callback),
+ G_CALLBACK (sync_screen_icon_title_set),
window);
g_signal_handlers_disconnect_by_func (G_OBJECT (screen),
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]