Add wxApp::GTKIsUsingGlobalMenu() helper to wxGTK.

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
This commit is contained in:
Vadim Zeitlin
2012-11-25 00:15:26 +00:00
parent 6bc9f42c3d
commit 93c609c737
2 changed files with 26 additions and 0 deletions

View 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();

View 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()