Related: tdf#151509 factor out common block as UpdateGeometryFromEvent
Change-Id: Iec2d4d1dcc2c38e264079024e25a8a3b8ea351c9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/142273
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index 8f2b806..5b2df74 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -425,6 +425,8 @@ class GtkSalFrame final : public SalFrame
void ListenPortalSettings();
void UpdateGeometryFromEvent(int x_root, int y_root, int nEventX, int nEventY);
public:
cairo_surface_t* m_pSurface;
basegfx::B2IVector m_aFrameSize;
diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx
index 525bf25..d4084ca 100644
--- a/vcl/unx/gtk3/gtkframe.cxx
+++ b/vcl/unx/gtk3/gtkframe.cxx
@@ -3130,6 +3130,21 @@ bool GtkSalFrame::DrawingAreaButton(SalEvent nEventType, int nEventX, int nEvent
}
#if !GTK_CHECK_VERSION(4, 0, 0)
void GtkSalFrame::UpdateGeometryFromEvent(int x_root, int y_root, int nEventX, int nEventY)
{
int frame_x = x_root - nEventX;
int frame_y = y_root - nEventY;
if (m_bGeometryIsProvisional || frame_x != maGeometry.x() || frame_y != maGeometry.y())
{
m_bGeometryIsProvisional = false;
maGeometry.setPos({ frame_x, frame_y });
ImplSVData* pSVData = ImplGetSVData();
if (pSVData->maNWFData.mbCanDetermineWindowPosition)
CallCallbackExc(SalEvent::Move, nullptr);
}
}
gboolean GtkSalFrame::signalButton(GtkWidget*, GdkEventButton* pEvent, gpointer frame)
{
GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame);
@@ -3187,18 +3202,7 @@ gboolean GtkSalFrame::signalButton(GtkWidget*, GdkEventButton* pEvent, gpointer
translate_coords(pEvent->window, pEventWidget, nEventX, nEventY);
if (!aDel.isDeleted())
{
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.x() || frame_y != pThis->maGeometry.y())
{
pThis->m_bGeometryIsProvisional = false;
pThis->maGeometry.setPos({ frame_x, frame_y });
ImplSVData* pSVData = ImplGetSVData();
if (pSVData->maNWFData.mbCanDetermineWindowPosition)
pThis->CallCallbackExc(SalEvent::Move, nullptr);
}
}
pThis->UpdateGeometryFromEvent(pEvent->x_root, pEvent->y_root, nEventX, nEventY);
bool bRet = false;
if (!aDel.isDeleted())
@@ -3501,22 +3505,10 @@ gboolean GtkSalFrame::signalMotion( GtkWidget*, GdkEventMotion* pEvent, gpointer
if (bDifferentEventWindow)
translate_coords(pEvent->window, pEventWidget, nEventX, nEventY);
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.x() || frame_y != pThis->maGeometry.y())
{
pThis->m_bGeometryIsProvisional = false;
pThis->maGeometry.setPos({ frame_x, frame_y });
ImplSVData* pSVData = ImplGetSVData();
if (pSVData->maNWFData.mbCanDetermineWindowPosition)
pThis->CallCallbackExc(SalEvent::Move, nullptr);
}
pThis->UpdateGeometryFromEvent(pEvent->x_root, pEvent->y_root, nEventX, nEventY);
if (!aDel.isDeleted())
{
pThis->DrawingAreaMotion(nEventX, nEventY, pEvent->time, pEvent->state);
}
if (!aDel.isDeleted())
{