]> git.saurik.com Git - wxWidgets.git/commitdiff
Add wxApp::GTKIsUsingGlobalMenu() helper to wxGTK.
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Nov 2012 00:15:26 +0000 (00:15 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Nov 2012 00:15:26 +0000 (00:15 +0000)
This allows to check whether the global menu is being used and will be mostly
useful for working around various bugs/problems uncovered by it.

See #14302.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@73008 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/gtk/app.h
src/gtk/app.cpp

index 57ff95fbf33a9f762162ee1fdb326ab682878990..f4618d5a5a43e035193f4e5381a810de3246ad83 100644 (file)
@@ -56,6 +56,13 @@ public:
     // must return XVisualInfo pointer (it is not freed by caller)
     virtual void *GetXVisualInfo() { return NULL; }
 
+    // Check if we're using a global menu. Currently this is only true when
+    // running under Ubuntu Unity and global menu is not disabled.
+    //
+    // This is mostly used in the implementation in order to work around
+    // various bugs arising due to this.
+    static bool GTKIsUsingGlobalMenu();
+
 #if wxUSE_LIBHILDON || wxUSE_LIBHILDON2
     // Maemo-specific method: get the main program object
     HildonProgram *GetHildonProgram();
index 63ed6f13b3a6e653ef01aa6306e5c34e9b641360..7e07406519552f19f992052e8f7f43e222d6563e 100644 (file)
@@ -529,6 +529,25 @@ void wxGUIAppTraits::MutexGuiLeave()
 }
 #endif // wxUSE_THREADS
 
+/* static */
+bool wxApp::GTKIsUsingGlobalMenu()
+{
+    static int s_isUsingGlobalMenu = -1;
+    if ( s_isUsingGlobalMenu == -1 )
+    {
+        // Currently we just check for this environment variable because this
+        // is how support for the global menu is implemented under Ubuntu.
+        //
+        // If we ever get false positives, we could also check for
+        // XDG_CURRENT_DESKTOP env var being set to "Unity".
+        wxString proxy;
+        s_isUsingGlobalMenu = wxGetEnv("UBUNTU_MENUPROXY", &proxy) &&
+                                !proxy.empty();
+    }
+
+    return s_isUsingGlobalMenu == 1;
+}
+
 #if wxUSE_LIBHILDON || wxUSE_LIBHILDON2
 // Maemo-specific method: get the main program object
 HildonProgram *wxApp::GetHildonProgram()