diff options
| -rw-r--r-- | src/terminal-app.c | 7 | ||||
| -rw-r--r-- | src/terminal-window.c | 36 | ||||
| -rw-r--r-- | src/terminal-window.h | 3 |
3 files changed, 40 insertions, 6 deletions
diff --git a/src/terminal-app.c b/src/terminal-app.c index 48f8b0b..831f42f 100644 --- a/src/terminal-app.c +++ b/src/terminal-app.c @@ -1798,12 +1798,7 @@ terminal_app_handle_options (TerminalApp *app, gtk_window_set_role (GTK_WINDOW (window), iw->role); if (iw->icon) - { - if (g_path_is_absolute (iw->icon)) - gtk_window_set_icon_from_file (GTK_WINDOW (window), iw->icon, NULL); - else - gtk_window_set_icon_name (GTK_WINDOW (window), iw->icon); - } + terminal_window_set_icon (window, iw->icon); if (iw->force_menubar_state) terminal_window_set_menubar_visible (window, iw->menubar_state); diff --git a/src/terminal-window.c b/src/terminal-window.c index 92ea108..75e5fd8 100644 --- a/src/terminal-window.c +++ b/src/terminal-window.c @@ -109,6 +109,8 @@ struct _TerminalWindowPrivate /* Workaround until gtk+ bug #535557 is fixed */ guint icon_title_set : 1; + char *icon; + gint64 focus_time; /* should we copy selection to clibpoard */ @@ -2489,6 +2491,8 @@ terminal_window_finalize (GObject *object) gtk_dialog_response (GTK_DIALOG (priv->search_find_dialog), GTK_RESPONSE_DELETE_EVENT); + g_free (priv->icon); + G_OBJECT_CLASS (terminal_window_parent_class)->finalize (object); } @@ -2836,6 +2840,34 @@ terminal_window_get_menubar_visible (TerminalWindow *window) return priv->menubar_visible; } +void +terminal_window_set_icon (TerminalWindow *window, + const char *icon) +{ + TerminalWindowPrivate *priv = window->priv; + + g_free (priv->icon); + priv->icon = g_strdup (icon); + + if (icon == NULL || icon[0] == '\0') + return; + + if (g_path_is_absolute (icon)) + { + GError *error = NULL; + if (!gtk_window_set_icon_from_file (GTK_WINDOW (window), icon, &error)) + { + g_printerr (_("Could not load icon from \"%s\": %s\n"), + icon, error->message); + g_error_free (error); + } + } + else + { + gtk_window_set_icon_name (GTK_WINDOW (window), icon); + } +} + GtkWidget * terminal_window_get_notebook (TerminalWindow *window) { @@ -4610,6 +4642,10 @@ terminal_window_save_state (TerminalWindow *window, g_key_file_set_string (key_file, group, TERMINAL_CONFIG_WINDOW_PROP_ROLE, gtk_window_get_role (GTK_WINDOW (window))); + if (priv->icon) + g_key_file_set_string (key_file, group, TERMINAL_CONFIG_WINDOW_PROP_ICON, + priv->icon); + state = gdk_window_get_state (gtk_widget_get_window (GTK_WIDGET (window))); if (state & GDK_WINDOW_STATE_MAXIMIZED) g_key_file_set_boolean (key_file, group, TERMINAL_CONFIG_WINDOW_PROP_MAXIMIZED, TRUE); diff --git a/src/terminal-window.h b/src/terminal-window.h index b96afab..86b8e28 100644 --- a/src/terminal-window.h +++ b/src/terminal-window.h @@ -78,6 +78,9 @@ void terminal_window_set_menubar_visible (TerminalWindow *window, gboolean setting); gboolean terminal_window_get_menubar_visible (TerminalWindow *window); +void terminal_window_set_icon (TerminalWindow *window, + const char *icon); + void terminal_window_switch_screen (TerminalWindow *window, TerminalScreen *screen); TerminalScreen* terminal_window_get_active (TerminalWindow *window); |
