diff --git a/demos/gtk-demo/main.c b/demos/gtk-demo/main.c index f7ec23d236..c0259ad3a0 100644 --- a/demos/gtk-demo/main.c +++ b/demos/gtk-demo/main.c @@ -1056,8 +1056,6 @@ command_line (GApplication *app, window = gtk_application_get_windows (GTK_APPLICATION (app))->data; - gtk_window_set_icon_name (GTK_WINDOW (window), "org.gtk.Demo4"); - if (name == NULL) goto out; diff --git a/demos/node-editor/node-editor-application.c b/demos/node-editor/node-editor-application.c index ec29941c9e..630807bde1 100644 --- a/demos/node-editor/node-editor-application.c +++ b/demos/node-editor/node-editor-application.c @@ -223,8 +223,6 @@ node_editor_application_activate (GApplication *app) if (g_strcmp0 (PROFILE, "devel") == 0) gtk_widget_add_css_class (GTK_WIDGET (win), "devel"); - gtk_window_set_icon_name (GTK_WINDOW (win), "org.gtk.gtk4.NodeEditor"); - gtk_window_present (GTK_WINDOW (win)); } diff --git a/demos/print-editor/print-editor.c b/demos/print-editor/print-editor.c index a438eeeec8..cfe528d582 100644 --- a/demos/print-editor/print-editor.c +++ b/demos/print-editor/print-editor.c @@ -788,7 +788,6 @@ activate (GApplication *app) if (g_strcmp0 (PROFILE, "devel") == 0) gtk_widget_add_css_class (GTK_WIDGET (main_window), "devel"); - gtk_window_set_icon_name (GTK_WINDOW (main_window), "org.gtk.PrintEditor4"); gtk_window_set_default_size (GTK_WINDOW (main_window), 400, 600); gtk_application_window_set_show_menubar (GTK_APPLICATION_WINDOW (main_window), TRUE); update_title (GTK_WINDOW (main_window)); diff --git a/demos/widget-factory/widget-factory.c b/demos/widget-factory/widget-factory.c index 2f9a2d2fd1..4280b849cc 100644 --- a/demos/widget-factory/widget-factory.c +++ b/demos/widget-factory/widget-factory.c @@ -2232,7 +2232,6 @@ activate (GApplication *app) if (g_strcmp0 (PROFILE, "devel") == 0) gtk_widget_add_css_class (GTK_WIDGET (window), "devel"); - gtk_window_set_icon_name (window, "org.gtk.WidgetFactory4"); gtk_application_add_window (GTK_APPLICATION (app), window); g_action_map_add_action_entries (G_ACTION_MAP (window), win_entries, G_N_ELEMENTS (win_entries), diff --git a/gtk/gtkapplication.c b/gtk/gtkapplication.c index 17da2ed395..e065823910 100644 --- a/gtk/gtkapplication.c +++ b/gtk/gtkapplication.c @@ -88,6 +88,10 @@ * displays the shortcuts window, associate the item with the action * `win.show-help-overlay`. * + * `GtkApplication` will also automatically set the application id as the + * default window icon. Use [func@Gtk.Window.set_default_icon_name] or + * [property@Gtk.Window:icon-name] to override that behavior. + * * ## A simple application * * [A simple example](https://gitlab.gnome.org/GNOME/gtk/tree/main/examples/bp/bloatpad.c) @@ -244,6 +248,23 @@ gtk_application_load_resources (GtkApplication *application) } } +static void +gtk_application_set_window_icon (GtkApplication *application) +{ + GtkIconTheme *default_theme; + const char *appid; + + if (gtk_window_get_default_icon_name () != NULL) + return; + + default_theme = gtk_icon_theme_get_for_display (gdk_display_get_default ()); + appid = g_application_get_application_id (G_APPLICATION (application)); + + if (!gtk_icon_theme_has_icon (default_theme, appid)) + return; + + gtk_window_set_default_icon_name (appid); +} static void gtk_application_startup (GApplication *g_application) @@ -267,6 +288,7 @@ gtk_application_startup (GApplication *g_application) gtk_application_impl_startup (priv->impl, priv->register_session); gtk_application_load_resources (application); + gtk_application_set_window_icon (application); gdk_profiler_end_mark (before, "Application startup", NULL); }