Resolves: tdf#151509 don't overwrite geometry for system childs

Change-Id: I5ad73d0bd138b2ba1b99d63bca97773f43e39606
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142277
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx
index 3684dd5..0a8b802 100644
--- a/vcl/unx/gtk3/gtkframe.cxx
+++ b/vcl/unx/gtk3/gtkframe.cxx
@@ -3149,7 +3149,7 @@ gboolean GtkSalFrame::signalButton(GtkWidget*, GdkEventButton* pEvent, gpointer 
    if (bDifferentEventWindow)
        translate_coords(pEvent->window, pEventWidget, nEventX, nEventY);

    if (!aDel.isDeleted())
    if (!aDel.isDeleted() && !(pThis->m_nStyle & SalFrameStyleFlags::SYSTEMCHILD))
    {
        int frame_x = static_cast<int>(pEvent->x_root - nEventX);
        int frame_y = static_cast<int>(pEvent->y_root - nEventY);
@@ -3168,8 +3168,8 @@ gboolean GtkSalFrame::signalButton(GtkWidget*, GdkEventButton* pEvent, gpointer 
    if (!aDel.isDeleted())
    {
        bRet = pThis->DrawingAreaButton(nEventType,
                                        pEvent->x_root - pThis->maGeometry.nX,
                                        pEvent->y_root - pThis->maGeometry.nY,
                                        nEventX,
                                        nEventY,
                                        pEvent->button,
                                        pEvent->time,
                                        pEvent->state);
@@ -3463,21 +3463,22 @@ gboolean GtkSalFrame::signalMotion( GtkWidget*, GdkEventMotion* pEvent, gpointer
    int frame_x = static_cast<int>(pEvent->x_root - nEventX);
    int frame_y = static_cast<int>(pEvent->y_root - nEventY);

    if (pThis->m_bGeometryIsProvisional || frame_x != pThis->maGeometry.nX || frame_y != pThis->maGeometry.nY)
    if (!aDel.isDeleted() && !(pThis->m_nStyle & SalFrameStyleFlags::SYSTEMCHILD))
    {
        pThis->m_bGeometryIsProvisional = false;
        pThis->maGeometry.nX = frame_x;
        pThis->maGeometry.nY = frame_y;
        ImplSVData* pSVData = ImplGetSVData();
        if (pSVData->maNWFData.mbCanDetermineWindowPosition)
            pThis->CallCallbackExc(SalEvent::Move, nullptr);
        if (pThis->m_bGeometryIsProvisional || frame_x != pThis->maGeometry.nX || frame_y != pThis->maGeometry.nY)
        {
            pThis->m_bGeometryIsProvisional = false;
            pThis->maGeometry.nX = frame_x;
            pThis->maGeometry.nY = frame_y;
            ImplSVData* pSVData = ImplGetSVData();
            if (pSVData->maNWFData.mbCanDetermineWindowPosition)
                pThis->CallCallbackExc(SalEvent::Move, nullptr);
        }
    }

    if (!aDel.isDeleted())
    {
        pThis->DrawingAreaMotion(pEvent->x_root - pThis->maGeometry.nX,
                                 pEvent->y_root - pThis->maGeometry.nY,
                                 pEvent->time, pEvent->state);
        pThis->DrawingAreaMotion(nEventX, nEventY, pEvent->time, pEvent->state);
    }

    if (!aDel.isDeleted())
@@ -3530,8 +3531,8 @@ gboolean GtkSalFrame::signalCrossing( GtkWidget*, GdkEventCrossing* pEvent, gpoi
{
    GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame);
    pThis->DrawingAreaCrossing((pEvent->type == GDK_ENTER_NOTIFY) ? SalEvent::MouseMove : SalEvent::MouseLeave,
                               pEvent->x_root - pThis->maGeometry.nX,
                               pEvent->y_root - pThis->maGeometry.nY,
                               pEvent->x,
                               pEvent->y,
                               pEvent->time,
                               pEvent->state);
    return true;