vcl/inc/unx/gtk/gtkframe.hxx | 2 + vcl/inc/unx/gtk/gtksalmenu.hxx | 2 + vcl/unx/gtk/gtksalframe.cxx | 2 + vcl/unx/gtk3/gtk3gtkframe.cxx | 49 ++++++++++++++++++++++++----------------- 4 files changed, 35 insertions(+), 20 deletions(-)
New commits: commit 59d978389721c780b1df5e54b833fe75576dd034 Author: Caolán McNamara <[email protected]> Date: Thu Feb 18 21:00:57 2016 +0000 gtk3: get app menu working again under gtk3 and have a stab at getting it working under wayland Change-Id: I57592acc4b7ea4a55296541ab4b3bf0c8fd98c5b Reviewed-on: https://gerrit.libreoffice.org/22491 Tested-by: Jenkins <[email protected]> Tested-by: Caolán McNamara <[email protected]> Reviewed-by: Caolán McNamara <[email protected]> diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx index fcd3d73..280ded7 100644 --- a/vcl/inc/unx/gtk/gtkframe.hxx +++ b/vcl/inc/unx/gtk/gtkframe.hxx @@ -47,6 +47,8 @@ #include <list> #include <vector> +#include <config_vclplug.h> + #include "headless/svpgdi.hxx" class GtkSalGraphics; diff --git a/vcl/inc/unx/gtk/gtksalmenu.hxx b/vcl/inc/unx/gtk/gtksalmenu.hxx index 18a2b4d..cc0193c 100644 --- a/vcl/inc/unx/gtk/gtksalmenu.hxx +++ b/vcl/inc/unx/gtk/gtksalmenu.hxx @@ -10,6 +10,8 @@ #ifndef INCLUDED_VCL_INC_UNX_GTK_GTKSALMENU_HXX #define INCLUDED_VCL_INC_UNX_GTK_GTKSALMENU_HXX +#include <config_vclplug.h> + #include <vector> #ifdef ENABLE_GIO #include <gio/gio.h> diff --git a/vcl/unx/gtk/gtksalframe.cxx b/vcl/unx/gtk/gtksalframe.cxx index 435b28b..789f7f2 100644 --- a/vcl/unx/gtk/gtksalframe.cxx +++ b/vcl/unx/gtk/gtksalframe.cxx @@ -39,6 +39,8 @@ #include <vcl/settings.hxx> #include <vcl/opengl/OpenGLHelper.hxx> +#include <config_vclplug.h> + #include <unx/x11/xlimits.hxx> #if defined(ENABLE_DBUS) && defined(ENABLE_GIO) # include <unx/gtk/gtksalmenu.hxx> diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx index c1d7f6e..dff9c90 100644 --- a/vcl/unx/gtk3/gtk3gtkframe.cxx +++ b/vcl/unx/gtk3/gtk3gtkframe.cxx @@ -38,6 +38,8 @@ #include <vcl/window.hxx> #include <vcl/settings.hxx> +#include <config_vclplug.h> + #if defined(ENABLE_DBUS) && defined(ENABLE_GIO) # include <unx/gtk/gtksalmenu.hxx> #endif @@ -485,13 +487,6 @@ GtkSalFrame::GtkSalFrame( SystemParentData* pSysData ) #ifdef ENABLE_GMENU_INTEGRATION -static void -gdk_x11_window_set_utf8_property (GdkWindow * /*window*/, - const gchar * /*name*/, - const gchar * /*value*/) -{ -} - // AppMenu watch functions. static void ObjectDestroyedNotify( gpointer data ) @@ -610,7 +605,7 @@ gboolean ensure_dbus_setup( gpointer data ) GActionGroup* pActionGroup = reinterpret_cast<GActionGroup*>(g_lo_action_group_new( static_cast< gpointer >( pSalFrame ) )); // Generate menu paths. - ::Window windowId = GDK_WINDOW_XID( gdkWindow ); + sal_uIntPtr windowId = pSalFrame->GetNativeWindowHandle(pSalFrame->getWindow()); gchar* aDBusWindowPath = g_strdup_printf( "/org/libreoffice/window/%lu", windowId ); gchar* aDBusMenubarPath = g_strdup_printf( "/org/libreoffice/window/%lu/menus/menubar", windowId ); @@ -618,12 +613,32 @@ gboolean ensure_dbus_setup( gpointer data ) g_object_set_data_full( G_OBJECT( gdkWindow ), "g-lo-menubar", pMenuModel, ObjectDestroyedNotify ); g_object_set_data_full( G_OBJECT( gdkWindow ), "g-lo-action-group", pActionGroup, ObjectDestroyedNotify ); - gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_ID", "org.libreoffice" ); - gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_UNIQUE_BUS_NAME", g_dbus_connection_get_unique_name( pSessionBus ) ); - 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 ); - + GdkDisplay *pDisplay = pSalFrame->getGdkDisplay(); + // fdo#70885 we don't want app menu under Unity + const bool bDesktopIsUnity = (SalGetDesktopEnvironment() == "UNITY"); +#if defined(GDK_WINDOWING_X11) + if (GDK_IS_X11_DISPLAY(pDisplay)) + { + gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_ID", "org.libreoffice" ); + if (!bDesktopIsUnity) + gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APP_MENU_OBJECT_PATH", "/org/libreoffice/menus/appmenu" ); + gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_MENUBAR_OBJECT_PATH", aDBusMenubarPath ); + gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_WINDOW_OBJECT_PATH", aDBusWindowPath ); + gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_APPLICATION_OBJECT_PATH", "/org/libreoffice" ); + gdk_x11_window_set_utf8_property( gdkWindow, "_GTK_UNIQUE_BUS_NAME", g_dbus_connection_get_unique_name( pSessionBus ) ); + } +#endif +#if defined(GDK_WINDOWING_WAYLAND) + if (GDK_IS_WAYLAND_DISPLAY(pDisplay)) + { + gdk_wayland_window_set_dbus_properties_libgtk_only(gdkWindow, "org.libreoffice", + "/org/libreoffice/menus/appmenu", + !bDesktopIsUnity ? aDBusMenubarPath : nullptr, + aDBusWindowPath, + "/org/libreoffice", + g_dbus_connection_get_unique_name( pSessionBus )); + } +#endif // Publish the menu model and the action group. SAL_INFO("vcl.unity", "exporting menu model at " << pMenuModel << " for window " << windowId); pSalFrame->m_nMenuExportId = g_dbus_connection_export_menu_model (pSessionBus, aDBusMenubarPath, pMenuModel, nullptr); @@ -631,12 +646,6 @@ gboolean ensure_dbus_setup( gpointer data ) pSalFrame->m_nActionGroupExportId = g_dbus_connection_export_action_group( pSessionBus, aDBusWindowPath, pActionGroup, nullptr); pSalFrame->m_nHudAwarenessId = hud_awareness_register( pSessionBus, aDBusMenubarPath, hud_activated, pSalFrame, nullptr, nullptr ); - // 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 && !bDesktopIsUnity )
_______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
