[Libreoffice-commits] core.git: vcl/inc vcl/unx

Ivan Timofeev timofeev.i.s at gmail.com
Sun Nov 3 19:10:14 CET 2013


 vcl/inc/unx/desktops.hxx                          |    1 +
 vcl/unx/generic/desktopdetect/desktopdetector.cxx |   12 ++++++++++--
 vcl/unx/generic/plugadapt/salplug.cxx             |    3 ++-
 vcl/unx/gtk/window/gtksalframe.cxx                |    9 +++++++--
 4 files changed, 20 insertions(+), 5 deletions(-)

New commits:
commit 2e25016289d5f565ba4080625950ef6ca6487d34
Author: Ivan Timofeev <timofeev.i.s at gmail.com>
Date:   Sun Nov 3 21:59:55 2013 +0400

    fdo#70885: disable app menu under Unity
    
    Change-Id: I90ca2f5dd8d2678dff74ae5599e640c9a69aee33

diff --git a/vcl/inc/unx/desktops.hxx b/vcl/inc/unx/desktops.hxx
index f67e8ca..0515cf5 100644
--- a/vcl/inc/unx/desktops.hxx
+++ b/vcl/inc/unx/desktops.hxx
@@ -24,6 +24,7 @@ enum DesktopType {
     DESKTOP_NONE, // headless, i.e. no X connection at all
     DESKTOP_UNKNOWN, // unknown desktop, simple WM, etc.
     DESKTOP_GNOME,
+    DESKTOP_UNITY,
     DESKTOP_XFCE,
     DESKTOP_MATE,
     DESKTOP_KDE,
diff --git a/vcl/unx/generic/desktopdetect/desktopdetector.cxx b/vcl/unx/generic/desktopdetect/desktopdetector.cxx
index f18bf0a..1d5d223 100644
--- a/vcl/unx/generic/desktopdetect/desktopdetector.cxx
+++ b/vcl/unx/generic/desktopdetect/desktopdetector.cxx
@@ -291,6 +291,8 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment()
             return DESKTOP_KDE4;
         if ( aOver.equalsIgnoreAsciiCase( "gnome" ) )
             return DESKTOP_GNOME;
+        if ( aOver.equalsIgnoreAsciiCase( "unity" ) )
+            return DESKTOP_UNITY;
         if ( aOver.equalsIgnoreAsciiCase( "xfce" ) )
             return DESKTOP_XFCE;
         if ( aOver.equalsIgnoreAsciiCase( "mate" ) )
@@ -351,12 +353,18 @@ DESKTOP_DETECTOR_PUBLIC DesktopType get_desktop_environment()
 
     const char *pSession;
     OString aDesktopSession;
-
     if ( ( pSession = getenv( "DESKTOP_SESSION" ) ) )
         aDesktopSession = OString( pSession, strlen( pSession ) );
 
+    const char *pDesktop;
+    OString aCurrentDesktop;
+    if ( ( pDesktop = getenv( "XDG_CURRENT_DESKTOP" ) ) )
+        aCurrentDesktop = OString( pDesktop, strlen( pDesktop ) );
+
     // fast environment variable checks
-    if ( aDesktopSession.equalsIgnoreAsciiCase( "gnome" ) )
+    if ( aCurrentDesktop.equalsIgnoreAsciiCase( "unity" ) )
+        ret = DESKTOP_UNITY;
+    else if ( aDesktopSession.equalsIgnoreAsciiCase( "gnome" ) )
         ret = DESKTOP_GNOME;
     else if ( aDesktopSession.equalsIgnoreAsciiCase( "mate" ) )
         ret = DESKTOP_MATE;
diff --git a/vcl/unx/generic/plugadapt/salplug.cxx b/vcl/unx/generic/plugadapt/salplug.cxx
index ddd0422..56d9fe5 100644
--- a/vcl/unx/generic/plugadapt/salplug.cxx
+++ b/vcl/unx/generic/plugadapt/salplug.cxx
@@ -184,6 +184,7 @@ static SalInstance* autodetect_plugin()
     if ( desktop == DESKTOP_NONE )
         pList = pHeadlessFallbackList;
     else if ( desktop == DESKTOP_GNOME ||
+              desktop == DESKTOP_UNITY ||
               desktop == DESKTOP_XFCE  ||
               desktop == DESKTOP_MATE )
         pList = pStandardFallbackList;
@@ -286,7 +287,7 @@ const OUString& SalGetDesktopEnvironment()
 {
     // Order to match desktops.hxx' DesktopType
     static const char * const desktop_strings[] = {
-        "none", "unknown", "GNOME",
+        "none", "unknown", "GNOME", "UNITY",
         "XFCE", "MATE", "TDE",
         "KDE", "KDE4" };
     static OUString aRet;
diff --git a/vcl/unx/gtk/window/gtksalframe.cxx b/vcl/unx/gtk/window/gtksalframe.cxx
index 58d402c..5651dcf 100644
--- a/vcl/unx/gtk/window/gtksalframe.cxx
+++ b/vcl/unx/gtk/window/gtksalframe.cxx
@@ -656,7 +656,6 @@ gboolean ensure_dbus_setup( gpointer data )
         gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_OBJECT_PATH", "/org/libreoffice" );
         gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_WINDOW_OBJECT_PATH", aDBusWindowPath );
         gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_MENUBAR_OBJECT_PATH", aDBusMenubarPath );
-        gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APP_MENU_OBJECT_PATH", "/org/libreoffice/menus/appmenu" );
 
         // Publish the menu model and the action group.
         SAL_INFO("vcl.unity", "exporting menu model at " << pMenuModel << " for window " << windowId);
@@ -665,9 +664,15 @@ gboolean ensure_dbus_setup( gpointer data )
         pSalFrame->m_nActionGroupExportId = g_dbus_connection_export_action_group( pSessionBus, aDBusWindowPath, pActionGroup, NULL);
         pSalFrame->m_nHudAwarenessId = hud_awareness_register( pSessionBus, aDBusMenubarPath, hud_activated, pSalFrame, NULL, NULL );
 
+        // fdo#70885 we don't want app menu under Unity
+        bool bDesktopIsUnity = (SalGetDesktopEnvironment() == "UNITY");
+
+        if (!bDesktopIsUnity)
+            gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APP_MENU_OBJECT_PATH", "/org/libreoffice/menus/appmenu" );
+
         //app menu, to-do translations, block normal menus when active, honor use appmenu settings
         ResMgr* pMgr = ImplGetResMgr();
-        if( pMgr )
+        if( pMgr && !bDesktopIsUnity )
         {
             GMenu *menu = g_menu_new ();
             GMenuItem* item;


More information about the Libreoffice-commits mailing list