vcl/inc/unx/gtk/gtkframe.hxx | 3 ++- vcl/unx/gtk3/gtkframe.cxx | 11 ++++++----- 2 files changed, 8 insertions(+), 6 deletions(-)
New commits: commit dfa2688357941d61765011cce0e511c9fd1f42a4 Author: Caolán McNamara <caolan.mcnam...@collabora.com> AuthorDate: Fri Aug 22 09:59:54 2025 +0100 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Fri Aug 22 13:09:16 2025 +0200 gtk: Don't force redraw if "resize" didn't resize rather spurious resize events seen on pressing and holding gtk scrollbar in calc in tdf#156297 where the main topic is windows/gen Change-Id: I65591a09be1d3e3f5a92407df8a550a6bc2296d1 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/190050 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx index 41790d893dba..6533af1ae583 100644 --- a/vcl/inc/unx/gtk/gtkframe.hxx +++ b/vcl/inc/unx/gtk/gtkframe.hxx @@ -412,7 +412,8 @@ class GtkSalFrame final : public SalFrame void setMinMaxSize(); - void AllocateFrame(); + //returns true if FrameSize changed + bool AllocateFrame(); void TriggerPaintEvent(); void updateWMClass(); diff --git a/vcl/unx/gtk3/gtkframe.cxx b/vcl/unx/gtk3/gtkframe.cxx index 7d78bef83bd1..a1583a07269d 100644 --- a/vcl/unx/gtk3/gtkframe.cxx +++ b/vcl/unx/gtk3/gtkframe.cxx @@ -2140,12 +2140,12 @@ void GtkSalFrame::SetMinClientSize( tools::Long nWidth, tools::Long nHeight ) } } -void GtkSalFrame::AllocateFrame() +bool GtkSalFrame::AllocateFrame() { basegfx::B2IVector aFrameSize( maGeometry.width(), maGeometry.height() ); if (m_pSurface && m_aFrameSize.getX() == aFrameSize.getX() && m_aFrameSize.getY() == aFrameSize.getY() ) - return; + return false; if( aFrameSize.getX() == 0 ) aFrameSize.setX( 1 ); @@ -2166,6 +2166,8 @@ void GtkSalFrame::AllocateFrame() if (m_pGraphics) m_pGraphics->setSurface(m_pSurface, m_aFrameSize); + + return true; } void GtkSalFrame::SetPosSize( tools::Long nX, tools::Long nY, tools::Long nWidth, tools::Long nHeight, sal_uInt16 nFlags ) @@ -3877,10 +3879,9 @@ void GtkSalFrame::DrawingAreaResized(GtkWidget* pWidget, int nWidth, int nHeight return; maGeometry.setSize({ nWidth, nHeight }); bool bRealized = gtk_widget_get_realized(pWidget); - if (bRealized) - AllocateFrame(); + bool bTriggerPaintEvent = bRealized && AllocateFrame(); CallCallbackExc( SalEvent::Resize, nullptr ); - if (bRealized) + if (bTriggerPaintEvent) TriggerPaintEvent(); }