diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-02-14 16:57:12 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2020-02-14 20:57:06 +0100 |
commit | ce16f1f32937ee881268abf91454900b0170c637 (patch) | |
tree | eebf069556fb829793d39dd23780902c57aa18df /vcl/unx/gtk3/gtk3gtkframe.cxx | |
parent | 85e52d79debfd496672ed16c6ee916d61bb1e754 (diff) |
Resolves: tdf#130414 don't crash attempting gtk_fixed_move if parent changed
Change-Id: I5b51f1fb0eccbdb1b3ad14ff7b36077a0016a838
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/88738
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'vcl/unx/gtk3/gtk3gtkframe.cxx')
-rw-r--r-- | vcl/unx/gtk3/gtk3gtkframe.cxx | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx index 62d49dd106e8..118c77f9f7b3 100644 --- a/vcl/unx/gtk3/gtk3gtkframe.cxx +++ b/vcl/unx/gtk3/gtk3gtkframe.cxx @@ -709,10 +709,15 @@ void GtkSalFrame::moveWindow( long nX, long nY ) { if( isChild( false ) ) { - if( m_pParent ) - gtk_fixed_move( m_pParent->getFixedContainer(), + GtkWidget* pParent = m_pParent ? gtk_widget_get_parent(m_pWindow) : nullptr; + // tdf#130414 its possible that we were reparented and are no longer inside + // our original GtkFixed parent + if (pParent && GTK_IS_FIXED(pParent)) + { + gtk_fixed_move( GTK_FIXED(pParent), m_pWindow, nX - m_pParent->maGeometry.nX, nY - m_pParent->maGeometry.nY ); + } } else gtk_window_move( GTK_WINDOW(m_pWindow), nX, nY ); @@ -1030,7 +1035,6 @@ void GtkSalFrame::Init( SalFrame* pParent, SalFrameStyleFlags nStyle ) // insert into container gtk_fixed_put( m_pParent->getFixedContainer(), m_pWindow, 0, 0 ); - } } else |