summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2020-02-14 16:57:12 +0000
committerCaolán McNamara <caolanm@redhat.com>2020-02-14 20:57:06 +0100
commitce16f1f32937ee881268abf91454900b0170c637 (patch)
treeeebf069556fb829793d39dd23780902c57aa18df
parent85e52d79debfd496672ed16c6ee916d61bb1e754 (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>
-rw-r--r--vcl/unx/gtk3/gtk3gtkframe.cxx10
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