diff options
author | Caolán McNamara <caolanm@redhat.com> | 2019-09-17 12:50:05 +0100 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2019-09-20 21:20:51 +0200 |
commit | 94d6fa11d086187b82adf9aa596e0f334827e095 (patch) | |
tree | 4a44af903b2572efe89ae5e8aa67bb092644e038 /vcl/unx/gtk3/gtk3gtkframe.cxx | |
parent | 3c84b18f4f0fe4058de60b1c62149275ed858b79 (diff) |
weld OfaTreeOptionsDialog
including ability to host a vcl::Window based XWindow hierarchy inside
a native widget, e.g. the dictionary extensions have option pages
Change-Id: I17d933bac12679e10164214a9045b677291a6557
Reviewed-on: https://gerrit.libreoffice.org/79070
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/unx/gtk3/gtk3gtkframe.cxx')
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkframe.cxx | 34 |
1 files changed, 21 insertions, 13 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx index f3edf71d9c41..96be79e3d106 100644 --- a/vcl/unx/gtk3/gtk3gtkframe.cxx +++ b/vcl/unx/gtk3/gtk3gtkframe.cxx @@ -971,16 +971,19 @@ void GtkSalFrame::InitCommon() m_aSystemData.pWidget = m_pWindow; m_aSystemData.nScreen = m_nXScreen.getXScreen(); m_aSystemData.pToolkit = "gtk3"; - GdkScreen* pScreen = gtk_window_get_screen(GTK_WINDOW(m_pWindow)); - GdkVisual* pVisual = gdk_screen_get_system_visual(pScreen); #if defined(GDK_WINDOWING_X11) GdkDisplay *pDisplay = getGdkDisplay(); if (DLSYM_GDK_IS_X11_DISPLAY(pDisplay)) { m_aSystemData.pDisplay = gdk_x11_display_get_xdisplay(pDisplay); - m_aSystemData.pVisual = gdk_x11_visual_get_xvisual(pVisual); m_aSystemData.pPlatformName = "xcb"; + if (GTK_IS_WINDOW(m_pWindow)) + { + GdkScreen* pScreen = gtk_window_get_screen(GTK_WINDOW(m_pWindow)); + GdkVisual* pVisual = gdk_screen_get_system_visual(pScreen); + m_aSystemData.pVisual = gdk_x11_visual_get_xvisual(pVisual); + } } #endif #if defined(GDK_WINDOWING_WAYLAND) @@ -1073,17 +1076,20 @@ void GtkSalFrame::Init( SalFrame* pParent, SalFrameStyleFlags nStyle ) if( m_pParent && m_pParent->m_pWindow && ! isChild() ) gtk_window_set_screen( GTK_WINDOW(m_pWindow), gtk_window_get_screen( GTK_WINDOW(m_pParent->m_pWindow) ) ); - if (m_pParent) - { - if (!(m_pParent->m_nStyle & SalFrameStyleFlags::PLUG)) - gtk_window_set_transient_for( GTK_WINDOW(m_pWindow), GTK_WINDOW(m_pParent->m_pWindow) ); - m_pParent->m_aChildren.push_back( this ); - gtk_window_group_add_window(gtk_window_get_group(GTK_WINDOW(m_pParent->m_pWindow)), GTK_WINDOW(m_pWindow)); - } - else + if (GTK_IS_WINDOW(m_pWindow)) { - gtk_window_group_add_window(gtk_window_group_new(), GTK_WINDOW(m_pWindow)); - g_object_unref(gtk_window_get_group(GTK_WINDOW(m_pWindow))); + if (m_pParent) + { + if (!(m_pParent->m_nStyle & SalFrameStyleFlags::PLUG)) + gtk_window_set_transient_for( GTK_WINDOW(m_pWindow), GTK_WINDOW(m_pParent->m_pWindow) ); + m_pParent->m_aChildren.push_back( this ); + gtk_window_group_add_window(gtk_window_get_group(GTK_WINDOW(m_pParent->m_pWindow)), GTK_WINDOW(m_pWindow)); + } + else + { + gtk_window_group_add_window(gtk_window_group_new(), GTK_WINDOW(m_pWindow)); + g_object_unref(gtk_window_get_group(GTK_WINDOW(m_pWindow))); + } } // set window type @@ -1279,6 +1285,8 @@ void GtkSalFrame::DrawMenuBar() void GtkSalFrame::Center() { + if (!GTK_IS_WINDOW(m_pWindow)) + return; if (m_pParent) gtk_window_set_position(GTK_WINDOW(m_pWindow), GTK_WIN_POS_CENTER_ON_PARENT); else |