From bd37a0e037c9536d7238fed0cfe72db031485436 Mon Sep 17 00:00:00 2001 From: Philipp Schaffrath Date: Thu, 27 Aug 2020 22:31:59 +0200 Subject: [PATCH 1/4] use rgba visual when available --- src/nautilus-window.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/nautilus-window.c b/src/nautilus-window.c index c81d150d12..a981dd1336 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -2770,11 +2770,20 @@ static void nautilus_window_init (NautilusWindow *window) { GtkWindowGroup *window_group; + GdkScreen *screen; + GdkVisual *visual; g_type_ensure (NAUTILUS_TYPE_TOOLBAR); g_type_ensure (NAUTILUS_TYPE_NOTEBOOK); gtk_widget_init_template (GTK_WIDGET (window)); + screen = gdk_screen_get_default(); + visual = gdk_screen_get_rgba_visual(screen); + + if (visual != NULL && gdk_screen_is_composited(screen)) { + gtk_widget_set_visual(GTK_WIDGET(window), visual); + } + g_signal_connect (window, "notify::is-maximized", G_CALLBACK (on_is_maximized_changed), NULL); -- GitLab From b0c17b215b908609116b58980f0f4564c8ae19db Mon Sep 17 00:00:00 2001 From: Philipp Schaffrath Date: Thu, 27 Aug 2020 23:52:32 +0200 Subject: [PATCH 2/4] fixed code-style --- src/nautilus-window.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/nautilus-window.c b/src/nautilus-window.c index a981dd1336..353f5f0282 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -2777,11 +2777,12 @@ nautilus_window_init (NautilusWindow *window) g_type_ensure (NAUTILUS_TYPE_NOTEBOOK); gtk_widget_init_template (GTK_WIDGET (window)); - screen = gdk_screen_get_default(); - visual = gdk_screen_get_rgba_visual(screen); + screen = gdk_screen_get_default (); + visual = gdk_screen_get_rgba_visual (screen); - if (visual != NULL && gdk_screen_is_composited(screen)) { - gtk_widget_set_visual(GTK_WIDGET(window), visual); + if (visual != NULL && gdk_screen_is_composited (screen)) + { + gtk_widget_set_visual (GTK_WIDGET (window), visual); } g_signal_connect (window, "notify::is-maximized", -- GitLab From 8366ec3d7dfce55031c34488c12b2bff22b90259 Mon Sep 17 00:00:00 2001 From: Philipp Schaffrath Date: Fri, 28 Aug 2020 11:29:49 +0200 Subject: [PATCH 3/4] try to update visual on screen-changed events, prefer rgba visual and fallback to system visual if no rgba visual is available or the screen is not composited --- src/nautilus-window.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/nautilus-window.c b/src/nautilus-window.c index 353f5f0282..258b4e88c7 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -2695,6 +2695,22 @@ on_is_maximized_changed (GObject *object, NAUTILUS_WINDOW_STATE_MAXIMIZED, is_maximized); } +static void +screen_changed (GtkWidget *widget, + GdkScreen *old_screen, + gpointer userdata) +{ + GdkScreen *screen = gtk_widget_get_screen (widget); + GdkVisual *visual = gdk_screen_get_rgba_visual (screen); + + if (visual == NULL || !gdk_screen_is_composited (screen)) { + visual = gdk_screen_get_system_visual (screen); + } + + gtk_widget_set_visual (widget, visual); +} + + static gboolean nautilus_window_delete_event (GtkWidget *widget, GdkEventAny *event) @@ -2770,24 +2786,19 @@ static void nautilus_window_init (NautilusWindow *window) { GtkWindowGroup *window_group; - GdkScreen *screen; - GdkVisual *visual; g_type_ensure (NAUTILUS_TYPE_TOOLBAR); g_type_ensure (NAUTILUS_TYPE_NOTEBOOK); gtk_widget_init_template (GTK_WIDGET (window)); - screen = gdk_screen_get_default (); - visual = gdk_screen_get_rgba_visual (screen); - - if (visual != NULL && gdk_screen_is_composited (screen)) - { - gtk_widget_set_visual (GTK_WIDGET (window), visual); - } - g_signal_connect (window, "notify::is-maximized", G_CALLBACK (on_is_maximized_changed), NULL); + /* GTK4 uses RGBA visuals by default. When upgrading to it, this can be removed. */ + g_signal_connect (window, "screen-changed", + G_CALLBACK (screen_changed), NULL); + screen_changed (GTK_WIDGET (window), NULL, NULL); + g_signal_connect_object (window->in_app_notification_undo_close_button, "clicked", G_CALLBACK (on_in_app_notification_undo_close_button_clicked), window, 0); g_signal_connect_object (window->in_app_notification_undo_undo_button, "clicked", -- GitLab From 707389f3fc8ced9cee0f3efb544d1a7b4dcfae21 Mon Sep 17 00:00:00 2001 From: Philipp Schaffrath Date: Fri, 28 Aug 2020 11:32:59 +0200 Subject: [PATCH 4/4] fixed code style --- src/nautilus-window.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/nautilus-window.c b/src/nautilus-window.c index 258b4e88c7..c597377ab8 100644 --- a/src/nautilus-window.c +++ b/src/nautilus-window.c @@ -2698,12 +2698,13 @@ on_is_maximized_changed (GObject *object, static void screen_changed (GtkWidget *widget, GdkScreen *old_screen, - gpointer userdata) + gpointer userdata) { GdkScreen *screen = gtk_widget_get_screen (widget); GdkVisual *visual = gdk_screen_get_rgba_visual (screen); - if (visual == NULL || !gdk_screen_is_composited (screen)) { + if (visual == NULL || !gdk_screen_is_composited (screen)) + { visual = gdk_screen_get_system_visual (screen); } -- GitLab