vcl/inc/jsdialog/jsdialogbuilder.hxx | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-)
New commits: commit 634180af365781e8158e4a438dcdfc48e6af27a8 Author: Szymon Kłos <szymon.k...@collabora.com> AuthorDate: Wed May 7 08:36:09 2025 +0000 Commit: Caolán McNamara <caolan.mcnam...@collabora.com> CommitDate: Sat May 24 20:29:52 2025 +0200 jsdialog: allow stacking freeze on widgets followup for: commit a01e6603d5b0356757fd647f90c69a395f376ba5 clear while frozen if we will need to freeze anyway commit 61bc7ce2aa02eb621de8e4c879646767af3d28ce Navigator: freeze/thaw collapse Change-Id: I43b7f29e17c8625da2bea09b917061ed6401dcd9 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185013 Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com> Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com> Tested-by: Caolán McNamara <caolan.mcnam...@collabora.com> (cherry picked from commit a865c65727e2a552ba0475656b79fd71773f1142) Reviewed-on: https://gerrit.libreoffice.org/c/core/+/185737 Tested-by: Jenkins diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index 89db0cb8c508..ad1b93884668 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -262,7 +262,7 @@ class JSWidget : public BaseInstanceClass, public BaseJSWidget { protected: rtl::Reference<JSDropTarget> m_xDropTarget; - bool m_bIsFreezed; + sal_Int8 m_nFreezeCounter; JSDialogSender* m_pSender; @@ -270,7 +270,7 @@ public: JSWidget(JSDialogSender* pSender, VclClass* pObject, SalInstanceBuilder* pBuilder, bool bTakeOwnership) : BaseInstanceClass(pObject, pBuilder, bTakeOwnership) - , m_bIsFreezed(false) + , m_nFreezeCounter(0) , m_pSender(pSender) { } @@ -278,7 +278,7 @@ public: JSWidget(JSDialogSender* pSender, VclClass* pObject, SalInstanceBuilder* pBuilder, bool bTakeOwnership, bool bUserManagedScrolling) : BaseInstanceClass(pObject, pBuilder, bTakeOwnership, bUserManagedScrolling) - , m_bIsFreezed(false) + , m_nFreezeCounter(0) , m_pSender(pSender) { } @@ -288,7 +288,7 @@ public: bool bTakeOwnership) : BaseInstanceClass(pObject, pBuilder, rAlly, std::move(pUITestFactoryFunction), pUserData, bTakeOwnership) - , m_bIsFreezed(false) + , m_nFreezeCounter(0) , m_pSender(pSender) { } @@ -344,14 +344,16 @@ public: virtual void freeze() override { BaseInstanceClass::freeze(); - m_bIsFreezed = true; + m_nFreezeCounter++; } virtual void thaw() override { BaseInstanceClass::thaw(); - m_bIsFreezed = false; - sendUpdate(); + assert(m_nFreezeCounter > 0); + m_nFreezeCounter--; + if (m_nFreezeCounter == 0) + sendUpdate(); } virtual void grab_focus() override @@ -370,32 +372,32 @@ public: virtual void sendUpdate(bool bForce = false) override { - if (!m_bIsFreezed && m_pSender) + if (!m_nFreezeCounter && m_pSender) m_pSender->sendUpdate(BaseInstanceClass::m_xWidget, bForce); } virtual void sendFullUpdate(bool bForce = false) override { - if ((!m_bIsFreezed || bForce) && m_pSender) + if ((!m_nFreezeCounter || bForce) && m_pSender) m_pSender->sendFullUpdate(bForce); } virtual void sendAction(std::unique_ptr<jsdialog::ActionDataMap> pData) override { - if (!m_bIsFreezed && m_pSender && pData) + if (!m_nFreezeCounter && m_pSender && pData) m_pSender->sendAction(BaseInstanceClass::m_xWidget, std::move(pData)); } virtual void sendPopup(vcl::Window* pPopup, const OUString& rParentId, const OUString& rCloseId) override { - if (!m_bIsFreezed && m_pSender) + if (!m_nFreezeCounter && m_pSender) m_pSender->sendPopup(pPopup, rParentId, rCloseId); } virtual void sendClosePopup(vcl::LOKWindowId nWindowId) override { - if (!m_bIsFreezed && m_pSender) + if (!m_nFreezeCounter && m_pSender) m_pSender->sendClosePopup(nWindowId); }