summaryrefslogtreecommitdiff
path: root/vcl/unx/gtk3/gtk3gtkframe.cxx
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-09-17 12:50:05 +0100
committerCaolán McNamara <caolanm@redhat.com>2019-09-20 21:20:51 +0200
commit94d6fa11d086187b82adf9aa596e0f334827e095 (patch)
tree4a44af903b2572efe89ae5e8aa67bb092644e038 /vcl/unx/gtk3/gtk3gtkframe.cxx
parent3c84b18f4f0fe4058de60b1c62149275ed858b79 (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.cxx34
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