[mutter/gtk3-ci: 5/18] tests/test-client: Remove shadow from X11 test client CSS style



commit b7ad1fb08637be9eecd1d59810a7949bfc6866de
Author: Jonas Ådahl <jadahl gmail com>
Date:   Thu Apr 2 16:05:54 2020 +0200

    tests/test-client: Remove shadow from X11 test client CSS style
    
    Gtk is quite buggy and "fluid" in how it handles the shadow margins for
    windows under X11. The "size" of the window fluctuate between including and
    excluding a shadow margin in a way that causes issues, as there are no
    atomic update of any state going on.
    
    In order to avoid running into those particular issues now, lets get rid
    of shadows so the margins are always zero, when the client is using the
    X11 backend.
    
    https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1171

 src/tests/test-client.c | 26 ++++++++++++++++++++++++++
 1 file changed, 26 insertions(+)
---
diff --git a/src/tests/test-client.c b/src/tests/test-client.c
index 2c19d9a36..8b37a4225 100644
--- a/src/tests/test-client.c
+++ b/src/tests/test-client.c
@@ -813,6 +813,32 @@ main(int argc, char **argv)
 
   gtk_init (NULL, NULL);
 
+  if (!wayland)
+    {
+      GdkScreen *screen;
+      GtkCssProvider *provider;
+
+      screen = gdk_screen_get_default ();
+      provider = gtk_css_provider_new ();
+      static const char *no_decoration_css =
+        "decoration {"
+        "  border-radius: 0 0 0 0;"
+        "  border-width: 0;"
+        "  box-shadow: 0 0 0 0 rgba(0, 0, 0, 0), 0 0 0 0 rgba(0, 0, 0, 0);"
+        "  margin: 0px;"
+        "}";
+      if (!gtk_css_provider_load_from_data (provider,
+                                            no_decoration_css,
+                                            strlen (no_decoration_css),
+                                            &error))
+        {
+          g_printerr ("%s", error->message);
+          return 1;
+        }
+      gtk_style_context_add_provider_for_screen (screen, GTK_STYLE_PROVIDER (provider),
+                                                 GTK_STYLE_PROVIDER_PRIORITY_APPLICATION);
+    }
+
   windows = g_hash_table_new_full (g_str_hash, g_str_equal,
                                    g_free, NULL);
   event_source_quark = g_quark_from_static_string ("event-source");


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]