[gtk+] gtkwindow: Split code that detects if we want CSD out



commit 7462de8fbab0de1b05c5c128b9d353770f10ce09
Author: Jasper St. Pierre <jstpierre mecheye net>
Date:   Wed Aug 21 15:05:44 2013 -0400

    gtkwindow: Split code that detects if we want CSD out
    
    This will get a bit more complex when we enable CSD for custom headerbars
    
    https://bugzilla.gnome.org/show_bug.cgi?id=706529

 gtk/gtkwindow.c |   42 +++++++++++++++++++++---------------------
 1 files changed, 21 insertions(+), 21 deletions(-)
---
diff --git a/gtk/gtkwindow.c b/gtk/gtkwindow.c
index 71fc55b..2e4ed12 100644
--- a/gtk/gtkwindow.c
+++ b/gtk/gtkwindow.c
@@ -5241,43 +5241,42 @@ create_titlebar (GtkWindow *window)
   return titlebar;
 }
 
-static void
-create_decoration (GtkWidget *widget)
+static gboolean
+gdk_window_should_use_csd (GtkWindow *window)
 {
-  GtkWindow *window = GTK_WINDOW (widget);
   GtkWindowPrivate *priv = window->priv;
 
-  /* Client decorations already created */
-  if (priv->client_decorated)
-    return;
-
   if (!priv->decorated)
-    return;
+    return FALSE;
 
   if (priv->type == GTK_WINDOW_POPUP)
-    return;
+    return FALSE;
 
 #ifdef GDK_WINDOWING_WAYLAND
-  if (GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (widget)))
-    priv->client_decorated = TRUE;
+  if (GDK_IS_WAYLAND_DISPLAY (gtk_widget_get_display (GTK_WIDGET (window))))
+    return TRUE;
 #endif
 
-  if (!priv->client_decorated &&
-      g_strcmp0 (g_getenv ("GTK_CSD"), "1") == 0)
+  return (g_strcmp0 (g_getenv ("GTK_CSD"), "1") == 0);
+}
+
+static void
+create_decoration (GtkWidget *widget)
+{
+  GtkWindow *window = GTK_WINDOW (widget);
+  GtkWindowPrivate *priv = window->priv;
+
+#ifdef GDK_WINDOWING_X11
+  if (GDK_IS_X11_DISPLAY (gtk_widget_get_display (widget)))
     {
       GdkVisual *visual;
 
       /* We need a visual with alpha */
       visual = gdk_screen_get_rgba_visual (gtk_widget_get_screen (widget));
       if (visual)
-        {
-          gtk_widget_set_visual (widget, visual);
-          priv->client_decorated = TRUE;
-        }
+        gtk_widget_set_visual (widget, visual);
     }
-
-  if (!priv->client_decorated)
-    return;
+#endif
 
   if (priv->title_box == NULL)
     {
@@ -5700,7 +5699,8 @@ gtk_window_realize (GtkWidget *widget)
   window = GTK_WINDOW (widget);
   priv = window->priv;
 
-  create_decoration (widget);
+  if (!priv->client_decorated && gdk_window_should_use_csd (window))
+    create_decoration (widget);
 
   gtk_widget_get_allocation (widget, &allocation);
 


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