Bug 1420820 - Added MOZ_GTK_TITLEBAR_DECORATION to override window manager detection and set window decoration type, r?jhorak draft
authorMartin Stransky <stransky@redhat.com>
Mon, 04 Dec 2017 15:19:00 +0100
changeset 706958 cebb82c03483e446b059d0ad088ed35997e82597
parent 706917 785572419acc82b2cbdcd2e24ca59fdbf5d7255f
child 742804 a84fea6ec550235e9d1d900e105970fd0419b1ee
push id91965
push userstransky@redhat.com
push dateMon, 04 Dec 2017 14:26:07 +0000
reviewersjhorak
bugs1420820
milestone59.0a1
Bug 1420820 - Added MOZ_GTK_TITLEBAR_DECORATION to override window manager detection and set window decoration type, r?jhorak Enables override window manager default with those values: MOZ_GTK_TITLEBAR_DECORATION=none - Firefox does not mess with decoration MOZ_GTK_TITLEBAR_DECORATION=client - Firefox tries to disable titlebar rendering and draws shadows by client side decorations. MOZ_GTK_TITLEBAR_DECORATION=system - Firefox tries to disable titlebar rendering and leave system (window manager) to draw window decorations. MozReview-Commit-ID: G60QS3g1TD0
widget/gtk/nsWindow.cpp
--- a/widget/gtk/nsWindow.cpp
+++ b/widget/gtk/nsWindow.cpp
@@ -6935,16 +6935,29 @@ nsWindow::DoDrawTitlebar() const
     return mIsCSDEnabled && mSizeState == nsSizeMode_Normal;
 }
 
 nsWindow::CSDSupportLevel
 nsWindow::GetCSDSupportLevel() {
     if (sCSDSupportLevel != CSD_SUPPORT_UNKNOWN) {
         return sCSDSupportLevel;
     }
+
+    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) {
+            sCSDSupportLevel = CSD_SUPPORT_FULL;
+        }
+        return sCSDSupportLevel;
+    }
+
     const char* currentDesktop = getenv("XDG_CURRENT_DESKTOP");
     if (currentDesktop) {
         if (strstr(currentDesktop, "GNOME") != nullptr) {
             sCSDSupportLevel = CSD_SUPPORT_FULL;
         } else if (strstr(currentDesktop, "XFCE") != nullptr) {
             sCSDSupportLevel = CSD_SUPPORT_FLAT;
         } else if (strstr(currentDesktop, "X-Cinnamon") != nullptr) {
             sCSDSupportLevel = CSD_SUPPORT_FULL;