Bug 1423985 - Force CSD titlebar mode when GTK_CSD is set, r?jhorak draft
authorMartin Stransky <stransky@redhat.com>
Mon, 19 Feb 2018 16:26:50 +0100
changeset 756980 3f6ee2d42815fa0c4aea1b70b23eccb622ae7e07
parent 756976 37bbdc8d9878039a92cb3443a54fc7fb9cd278e1
child 756983 4db3abb81cdffd6d17dbd01bbb1e6cd739dd8bd3
push id99619
push userstransky@redhat.com
push dateMon, 19 Feb 2018 15:27:21 +0000
reviewersjhorak
bugs1423985
milestone60.0a1
Bug 1423985 - Force CSD titlebar mode when GTK_CSD is set, r?jhorak MozReview-Commit-ID: KxKI20TEY7U
widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -6928,16 +6928,26 @@ nsWindow::GetCSDSupportLevel() {
     }
 
     // We don't support CSD_SUPPORT_FULL on Wayland
     if (!GDK_IS_X11_DISPLAY(gdk_display_get_default()) &&
         sCSDSupportLevel == CSD_SUPPORT_FULL) {
         sCSDSupportLevel = CSD_SUPPORT_FLAT;
     }
 
+    // GTK_CSD forces CSD mode - use also CSD because window manager
+    // decorations does not work with CSD.
+    // We check GTK_CSD as well as gtk_window_should_use_csd() does.
+    if (sCSDSupportLevel == CSD_SUPPORT_FULL) {
+        const char* csdOverride = getenv("GTK_CSD");
+        if (csdOverride && g_strcmp0(csdOverride, "1") == 0) {
+            sCSDSupportLevel = CSD_SUPPORT_FLAT;
+        }
+    }
+
     // Allow MOZ_GTK_TITLEBAR_DECORATION to override our heuristics
     const char* decorationOverride = getenv("MOZ_GTK_TITLEBAR_DECORATION");
     if (decorationOverride) {
         if (strcmp(decorationOverride, "none") == 0) {
             sCSDSupportLevel = CSD_SUPPORT_NONE;
         } else if (strcmp(decorationOverride, "client") == 0) {
             sCSDSupportLevel = CSD_SUPPORT_FLAT;
         } else if (strcmp(decorationOverride, "system") == 0) {