diff --git a/app/actions/error-console-commands.c b/app/actions/error-console-commands.c index d1243a81fb..0612051784 100644 --- a/app/actions/error-console-commands.c +++ b/app/actions/error-console-commands.c @@ -135,7 +135,7 @@ error_console_save_cmd_callback (GimpAction *action, gtk_window_present (GTK_WINDOW (console->file_dialog)); #ifdef G_OS_WIN32 - gimp_window_set_title_bar_theme (console->gimp, console->file_dialog, FALSE); + gimp_window_set_title_bar_theme (console->gimp, console->file_dialog); #endif } diff --git a/app/actions/gradients-commands.c b/app/actions/gradients-commands.c index 182805518c..b5011170e9 100644 --- a/app/actions/gradients-commands.c +++ b/app/actions/gradients-commands.c @@ -122,7 +122,7 @@ gradients_save_as_pov_ray_cmd_callback (GimpAction *action, gtk_window_present (GTK_WINDOW (dialog)); #ifdef G_OS_WIN32 - gimp_window_set_title_bar_theme (context->gimp, dialog, FALSE); + gimp_window_set_title_bar_theme (context->gimp, dialog); #endif } diff --git a/app/dialogs/about-dialog.c b/app/dialogs/about-dialog.c index d94668b2df..16fddbb7c0 100644 --- a/app/dialogs/about-dialog.c +++ b/app/dialogs/about-dialog.c @@ -73,7 +73,10 @@ typedef struct gboolean visible; } GimpAboutDialog; - +#ifdef G_OS_WIN32 +static void about_dialog_realize (GtkWidget *widget, + GimpAboutDialog *dialog); +#endif static void about_dialog_map (GtkWidget *widget, GimpAboutDialog *dialog); static void about_dialog_unmap (GtkWidget *widget, @@ -166,7 +169,11 @@ about_dialog_create (Gimp *gimp, g_signal_connect (widget, "response", G_CALLBACK (gtk_widget_destroy), NULL); - +#ifdef G_OS_WIN32 + g_signal_connect (widget, "realize", + G_CALLBACK (about_dialog_realize), + &dialog); +#endif g_signal_connect (widget, "map", G_CALLBACK (about_dialog_map), &dialog); @@ -198,6 +205,15 @@ about_dialog_create (Gimp *gimp, return dialog.dialog; } +#ifdef G_OS_WIN32 +static void +about_dialog_realize (GtkWidget *widget, + GimpAboutDialog *dialog) +{ + gimp_window_set_title_bar_theme (dialog->gimp, widget); +} +#endif + static void about_dialog_map (GtkWidget *widget, GimpAboutDialog *dialog) @@ -215,10 +231,6 @@ about_dialog_map (GtkWidget *widget, dialog->timer = g_timeout_add (800, about_dialog_timer, dialog); } - -#ifdef G_OS_WIN32 - gimp_window_set_title_bar_theme (dialog->gimp, widget, FALSE); -#endif } static void diff --git a/app/dialogs/vectors-export-dialog.c b/app/dialogs/vectors-export-dialog.c index 662df3f846..a757eaab88 100644 --- a/app/dialogs/vectors-export-dialog.c +++ b/app/dialogs/vectors-export-dialog.c @@ -45,9 +45,10 @@ struct _VectorsExportDialog /* local function prototypes */ - -static void vectors_export_dialog_map (GtkWidget *dialog, +#ifdef G_OS_WIN32 +static void vectors_export_dialog_realize (GtkWidget *dialog, VectorsExportDialog *data); +#endif static void vectors_export_dialog_free (VectorsExportDialog *private); static void vectors_export_dialog_response (GtkWidget *widget, gint response_id, @@ -115,8 +116,8 @@ vectors_export_dialog_new (GimpImage *image, dialog, 0); #ifdef G_OS_WIN32 - g_signal_connect (dialog, "map", - G_CALLBACK (vectors_export_dialog_map), + g_signal_connect (dialog, "realize", + G_CALLBACK (vectors_export_dialog_realize), private); #endif g_signal_connect (dialog, "delete-event", @@ -144,14 +145,14 @@ vectors_export_dialog_new (GimpImage *image, /* private functions */ -static void -vectors_export_dialog_map (GtkWidget *dialog, - VectorsExportDialog *data) -{ #ifdef G_OS_WIN32 - gimp_window_set_title_bar_theme (data->image->gimp, dialog, FALSE); -#endif +static void +vectors_export_dialog_realize (GtkWidget *dialog, + VectorsExportDialog *data) +{ + gimp_window_set_title_bar_theme (data->image->gimp, dialog); } +#endif static void vectors_export_dialog_free (VectorsExportDialog *private) diff --git a/app/dialogs/vectors-import-dialog.c b/app/dialogs/vectors-import-dialog.c index 09e52c114c..57ab7b3ce5 100644 --- a/app/dialogs/vectors-import-dialog.c +++ b/app/dialogs/vectors-import-dialog.c @@ -46,9 +46,10 @@ struct _VectorsImportDialog /* local function prototypes */ - -static void vectors_import_dialog_map (GtkWidget *dialog, +#ifdef G_OS_WIN32 +static void vectors_import_dialog_realize (GtkWidget *dialog, VectorsImportDialog *data); +#endif static void vectors_import_dialog_free (VectorsImportDialog *private); static void vectors_import_dialog_response (GtkWidget *dialog, gint response_id, @@ -117,8 +118,8 @@ vectors_import_dialog_new (GimpImage *image, dialog, 0); #ifdef G_OS_WIN32 - g_signal_connect (dialog, "map", - G_CALLBACK (vectors_import_dialog_map), + g_signal_connect (dialog, "realize", + G_CALLBACK (vectors_import_dialog_realize), private); #endif g_signal_connect (dialog, "delete-event", @@ -173,14 +174,14 @@ vectors_import_dialog_new (GimpImage *image, /* private functions */ -static void -vectors_import_dialog_map (GtkWidget *dialog, - VectorsImportDialog *data) -{ #ifdef G_OS_WIN32 - gimp_window_set_title_bar_theme (data->image->gimp, dialog, FALSE); -#endif +static void +vectors_import_dialog_realize (GtkWidget *dialog, + VectorsImportDialog *data) +{ + gimp_window_set_title_bar_theme (data->image->gimp, dialog); } +#endif static void vectors_import_dialog_free (VectorsImportDialog *private) diff --git a/app/gui/themes.c b/app/gui/themes.c index 09d07fa078..2e62c0260a 100644 --- a/app/gui/themes.c +++ b/app/gui/themes.c @@ -678,10 +678,10 @@ themes_theme_paths_notify (GimpExtensionManager *manager, } } +#ifdef G_OS_WIN32 void themes_set_title_bar (Gimp *gimp) { -#ifdef G_OS_WIN32 GList *windows = gimp_get_image_windows (gimp); GList *iter; @@ -689,10 +689,10 @@ themes_set_title_bar (Gimp *gimp) { GtkWidget *window = GTK_WIDGET (windows->data); - gimp_window_set_title_bar_theme (gimp, window, TRUE); + gimp_window_set_title_bar_theme (gimp, window); } if (windows) g_list_free (windows); -#endif } +#endif diff --git a/app/gui/themes.h b/app/gui/themes.h index 87682ed82f..78d28a0cbe 100644 --- a/app/gui/themes.h +++ b/app/gui/themes.h @@ -29,7 +29,8 @@ GFile * themes_get_theme_dir (Gimp *gimp, GFile * themes_get_theme_file (Gimp *gimp, const gchar *first_component, ...) G_GNUC_NULL_TERMINATED; - +#ifdef G_OS_WIN32 void themes_set_title_bar (Gimp *gimp); +#endif #endif /* __THEMES_H__ */ diff --git a/app/widgets/gimpfiledialog.c b/app/widgets/gimpfiledialog.c index e37d237ce2..840033f2bd 100644 --- a/app/widgets/gimpfiledialog.c +++ b/app/widgets/gimpfiledialog.c @@ -86,8 +86,10 @@ static gboolean gimp_file_dialog_delete_event (GtkWidget *w GdkEventAny *event); static void gimp_file_dialog_response (GtkDialog *dialog, gint response_id); -static void gimp_file_dialog_map (GimpFileDialog *dialog, +#ifdef G_OS_WIN32 +static void gimp_file_dialog_realize (GimpFileDialog *dialog, gpointer data); +#endif static GFile * gimp_file_dialog_real_get_default_folder (GimpFileDialog *dialog); static void gimp_file_dialog_real_save_state (GimpFileDialog *dialog, const gchar *state_name); @@ -228,8 +230,8 @@ static void gimp_file_dialog_init (GimpFileDialog *dialog) { #ifdef G_OS_WIN32 - g_signal_connect (dialog, "map", - G_CALLBACK (gimp_file_dialog_map), + g_signal_connect (dialog, "realize", + G_CALLBACK (gimp_file_dialog_realize), NULL); #endif } @@ -427,14 +429,14 @@ gimp_file_dialog_response (GtkDialog *dialog, } } -static void -gimp_file_dialog_map (GimpFileDialog *dialog, - gpointer data) -{ #ifdef G_OS_WIN32 - gimp_window_set_title_bar_theme (dialog->gimp, GTK_WIDGET (dialog), FALSE); -#endif +static void +gimp_file_dialog_realize (GimpFileDialog *dialog, + gpointer data) +{ + gimp_window_set_title_bar_theme (dialog->gimp, GTK_WIDGET (dialog)); } +#endif static GFile * gimp_file_dialog_real_get_default_folder (GimpFileDialog *dialog) diff --git a/app/widgets/gimpiconpicker.c b/app/widgets/gimpiconpicker.c index d4a1e4cadc..bdb886bf9c 100644 --- a/app/widgets/gimpiconpicker.c +++ b/app/widgets/gimpiconpicker.c @@ -108,9 +108,10 @@ static void gimp_icon_picker_menu_paste (GtkWidget *widget, static void gimp_icon_picker_menu_copy (GtkWidget *widget, GdkEventButton *event, gpointer data); - -static void gimp_icon_picker_dialog_map (GtkWidget *dialog, +#ifdef G_OS_WIN32 +static void gimp_icon_picker_dialog_realize (GtkWidget *dialog, gpointer *data); +#endif G_DEFINE_TYPE_WITH_PRIVATE (GimpIconPicker, gimp_icon_picker, GTK_TYPE_BOX) @@ -495,8 +496,8 @@ gimp_icon_picker_menu_from_file (GtkWidget *widget, gtk_file_chooser_add_filter (GTK_FILE_CHOOSER (dialog), filter); #ifdef G_OS_WIN32 - g_signal_connect (dialog, "map", - G_CALLBACK (gimp_icon_picker_dialog_map), + g_signal_connect (dialog, "realize", + G_CALLBACK (gimp_icon_picker_dialog_realize), picker); #endif @@ -616,14 +617,14 @@ gimp_icon_picker_menu_from_name (GtkWidget *widget, gimp_popup_show (GIMP_POPUP (popup), GTK_WIDGET (picker)); } -static void -gimp_icon_picker_dialog_map (GtkWidget *dialog, - gpointer *data) -{ #ifdef G_OS_WIN32 +static void +gimp_icon_picker_dialog_realize (GtkWidget *dialog, + gpointer *data) +{ GimpIconPicker *picker = GIMP_ICON_PICKER (data); GimpIconPickerPrivate *private = GET_PRIVATE (picker); - gimp_window_set_title_bar_theme (private->gimp, dialog, FALSE); -#endif + gimp_window_set_title_bar_theme (private->gimp, dialog); } +#endif diff --git a/app/widgets/gimpsearchpopup.c b/app/widgets/gimpsearchpopup.c index 88509638ad..01e68d2497 100644 --- a/app/widgets/gimpsearchpopup.c +++ b/app/widgets/gimpsearchpopup.c @@ -86,9 +86,10 @@ static void gimp_search_popup_get_property (GObject *obj static void gimp_search_popup_size_allocate (GtkWidget *widget, GtkAllocation *allocation); -static void gimp_search_popup_map (GimpSearchPopup *search_popup, +#ifdef G_OS_WIN32 +static void gimp_search_popup_realize (GimpSearchPopup *search_popup, gpointer data); - +#endif static void gimp_search_popup_confirm (GimpPopup *popup); /* Signal handlers on the search entry */ @@ -178,8 +179,8 @@ gimp_search_popup_init (GimpSearchPopup *search_popup) search_popup->priv = gimp_search_popup_get_instance_private (search_popup); #ifdef G_OS_WIN32 - g_signal_connect (search_popup, "map", - G_CALLBACK (gimp_search_popup_map), + g_signal_connect (search_popup, "realize", + G_CALLBACK (gimp_search_popup_realize), NULL); #endif } @@ -540,23 +541,22 @@ gimp_search_popup_size_allocate (GtkWidget *widget, } } -static void -gimp_search_popup_map (GimpSearchPopup *search_popup, - gpointer data) -{ #ifdef G_OS_WIN32 +static void +gimp_search_popup_realize (GimpSearchPopup *search_popup, + gpointer data) +{ /* Since this popup is initially modal to the main window, * toggling the visibility of the GdkWindow causes odd * behavior. Instead, we change the opacity on launch to * refresh the titlebar theme */ gimp_window_set_title_bar_theme (search_popup->priv->gimp, - GTK_WIDGET (search_popup), - TRUE); + GTK_WIDGET (search_popup)); gtk_widget_set_opacity (GTK_WIDGET (search_popup), 0); gtk_widget_set_opacity (GTK_WIDGET (search_popup), 1); -#endif } +#endif static void gimp_search_popup_confirm (GimpPopup *popup) diff --git a/app/widgets/gimpsettingsbox.c b/app/widgets/gimpsettingsbox.c index afc81d36d6..21a5bf3998 100644 --- a/app/widgets/gimpsettingsbox.c +++ b/app/widgets/gimpsettingsbox.c @@ -138,8 +138,10 @@ static void gimp_settings_box_file_dialog (GimpSettingsBox *box, static void gimp_settings_box_file_response (GtkWidget *dialog, gint response_id, GimpSettingsBox *box); -static void gimp_settings_box_dialog_map (GtkWidget *dialog, +#ifdef G_OS_WIN32 +static void gimp_settings_box_dialog_realize (GtkWidget *dialog, gpointer *data); +#endif static void gimp_settings_box_toplevel_unmap (GtkWidget *toplevel, GtkWidget *dialog); static void gimp_settings_box_truncate_list (GimpSettingsBox *box, @@ -740,8 +742,8 @@ gimp_settings_box_file_dialog (GimpSettingsBox *box, TRUE); #ifdef G_OS_WIN32 - g_signal_connect (dialog, "map", - G_CALLBACK (gimp_settings_box_dialog_map), + g_signal_connect (dialog, "realize", + G_CALLBACK (gimp_settings_box_dialog_realize), box); #endif g_signal_connect (dialog, "response", @@ -832,17 +834,17 @@ gimp_settings_box_file_response (GtkWidget *dialog, gtk_widget_destroy (dialog); } -static void -gimp_settings_box_dialog_map (GtkWidget *dialog, - gpointer *data) -{ #ifdef G_OS_WIN32 +static void +gimp_settings_box_dialog_realize (GtkWidget *dialog, + gpointer *data) +{ GimpSettingsBox *box = (GimpSettingsBox *) data; GimpSettingsBoxPrivate *private = GET_PRIVATE (box); - gimp_window_set_title_bar_theme (private->gimp, dialog, FALSE); -#endif + gimp_window_set_title_bar_theme (private->gimp, dialog); } +#endif static void gimp_settings_box_toplevel_unmap (GtkWidget *toplevel, diff --git a/app/widgets/gimpwidgets-utils.c b/app/widgets/gimpwidgets-utils.c index c8bc8861c3..cbf00ff36c 100644 --- a/app/widgets/gimpwidgets-utils.c +++ b/app/widgets/gimpwidgets-utils.c @@ -2651,12 +2651,11 @@ gimp_window_set_transient_cb (GtkWidget *window, #endif } +#ifdef G_OS_WIN32 void gimp_window_set_title_bar_theme (Gimp *gimp, - GtkWidget *dialog, - gboolean is_main_window) + GtkWidget *dialog) { -#ifdef G_OS_WIN32 HWND hwnd; GdkWindow *window = NULL; gboolean use_dark_mode = FALSE; @@ -2696,13 +2695,6 @@ gimp_window_set_title_bar_theme (Gimp *gimp, hwnd = (HWND) gdk_win32_window_get_handle (window); DwmSetWindowAttribute (hwnd, DWMWA_USE_IMMERSIVE_DARK_MODE, &use_dark_mode, sizeof (use_dark_mode)); - - if (! is_main_window) - { - /* Toggle the window's visibility so the title bar change appears */ - gdk_window_hide (window); - gdk_window_show (window); - } } -#endif } +#endif diff --git a/app/widgets/gimpwidgets-utils.h b/app/widgets/gimpwidgets-utils.h index 9c5c359365..0615718640 100644 --- a/app/widgets/gimpwidgets-utils.h +++ b/app/widgets/gimpwidgets-utils.h @@ -164,10 +164,9 @@ gboolean gimp_utils_are_menu_path_identical (const gchar *path1 gchar **canonical_path1, gchar **mnemonic_path1, gchar **path1_section_name); - +#ifdef G_OS_WIN32 void gimp_window_set_title_bar_theme (Gimp *gimp, - GtkWidget *dialog, - gboolean is_main_window); - + GtkWidget *dialog); +#endif #endif /* __APP_GIMP_WIDGETS_UTILS_H__ */ diff --git a/libgimpwidgets/gimpdialog.c b/libgimpwidgets/gimpdialog.c index bd19b3b5a9..36fe728b1d 100644 --- a/libgimpwidgets/gimpdialog.c +++ b/libgimpwidgets/gimpdialog.c @@ -174,7 +174,7 @@ gimp_dialog_init (GimpDialog *dialog) NULL); #ifdef G_OS_WIN32 - g_signal_connect (GTK_WIDGET (dialog), "map", + g_signal_connect (GTK_WIDGET (dialog), "realize", G_CALLBACK (gimp_dialog_set_title_bar_theme), NULL); #endif @@ -806,11 +806,6 @@ gimp_dialog_set_title_bar_theme (GtkWidget *dialog) DwmSetWindowAttribute (hwnd, DWMWA_USE_IMMERSIVE_DARK_MODE, &use_dark_mode, sizeof (use_dark_mode)); UpdateWindow (hwnd); - ShowWindow (hwnd, 5); - - /* Toggle the window's visibility so the title bar change appears */ - gdk_window_hide (window); - gdk_window_show (window); } } #endif