diff options
Diffstat (limited to 'src/terminal-window.c')
| -rw-r--r-- | src/terminal-window.c | 45 |
1 files changed, 38 insertions, 7 deletions
diff --git a/src/terminal-window.c b/src/terminal-window.c index 75e5fd8..da806b4 100644 --- a/src/terminal-window.c +++ b/src/terminal-window.c @@ -2584,6 +2584,7 @@ profile_set_callback (TerminalScreen *screen, return; terminal_window_update_set_profile_menu_active_profile (window); + terminal_window_update_icon (window); } static void @@ -2844,11 +2845,6 @@ 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; @@ -2868,6 +2864,40 @@ terminal_window_set_icon (TerminalWindow *window, } } +void +terminal_window_set_icon_from_cli (TerminalWindow *window, + const char *icon) +{ + TerminalWindowPrivate *priv = window->priv; + + g_free (priv->icon); + priv->icon = g_strdup (icon); + + terminal_window_set_icon (window, icon); +} + +void +terminal_window_update_icon (TerminalWindow *window) +{ + TerminalWindowPrivate *priv = window->priv; + TerminalProfile *profile; + const char *icon; + + /* The --icon flag takes precedence over the profile icon */ + if (priv->icon != NULL && priv->icon[0] != '\0') + return; + + if (priv->active_screen == NULL || + !(profile = terminal_screen_get_profile (priv->active_screen))) + return; + + icon = terminal_profile_get_property_string (profile, TERMINAL_PROFILE_ICON); + if (icon != NULL && icon[0] != '\0') + terminal_window_set_icon (window, icon); + else + gtk_window_set_icon_name (GTK_WINDOW (window), MATE_TERMINAL_ICON_NAME); +} + GtkWidget * terminal_window_get_notebook (TerminalWindow *window) { @@ -3254,6 +3284,7 @@ notebook_page_selected_callback (GtkWidget *notebook, sync_screen_icon_title_set (screen, NULL, window); sync_screen_icon_title (screen, NULL, window); sync_screen_title (screen, NULL, window); + terminal_window_update_icon (window); /* set size of window to current grid size */ _terminal_debug_print (TERMINAL_DEBUG_GEOMETRY, @@ -3657,7 +3688,7 @@ file_new_window_callback (GtkAction *action, new_window = terminal_app_new_window (app, gtk_widget_get_screen (GTK_WIDGET (window))); - new_working_directory = terminal_screen_get_current_dir_with_fallback (priv->active_screen); + new_working_directory = terminal_screen_get_current_dir (priv->active_screen); terminal_app_new_terminal (app, new_window, profile, NULL, NULL, new_working_directory, @@ -3689,7 +3720,7 @@ file_new_tab_callback (GtkAction *action, if (_terminal_profile_get_forgotten (profile)) return; - new_working_directory = terminal_screen_get_current_dir_with_fallback (priv->active_screen); + new_working_directory = terminal_screen_get_current_dir (priv->active_screen); terminal_app_new_terminal (app, window, profile, NULL, NULL, new_working_directory, |
