diff options
author | Szymon Kłos <szymon.klos@collabora.com> | 2020-12-30 09:57:00 +0100 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2021-02-04 16:08:31 +0100 |
commit | 3e8018d8336dc1a34530142a917ccaeb8100fe5a (patch) | |
tree | 6ab04a5cd78568358a182c79ff668bfc9ed1c5c0 | |
parent | 809c30d1518bcc3c0ca43ea6f0fda99dcc2016a2 (diff) |
jsdialog: support for freeze/thaw
Change-Id: Ia3ca2c3c06a95e295e400780540c176cd9606ee7
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108498
Tested-by: Jenkins
Reviewed-by: Szymon Kłos <szymon.klos@collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/109905
Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
-rw-r--r-- | vcl/inc/jsdialog/jsdialogbuilder.hxx | 30 |
1 files changed, 29 insertions, 1 deletions
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx index f254a5ea3592..08218512fa2b 100644 --- a/vcl/inc/jsdialog/jsdialogbuilder.hxx +++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx @@ -71,7 +71,9 @@ public: { } - void notifyDialogState(bool bForce = false); + virtual ~JSDialogSender() = default; + + virtual void notifyDialogState(bool bForce = false); void sendClose(); virtual void sendUpdate(VclPtr<vcl::Window> pWindow); }; @@ -198,6 +200,7 @@ class JSWidget : public BaseInstanceClass, public JSDialogSender { protected: rtl::Reference<JSDropTarget> m_xDropTarget; + bool m_bIsFreezed; public: JSWidget(VclPtr<vcl::Window> aNotifierWindow, VclPtr<vcl::Window> aContentWindow, @@ -205,6 +208,7 @@ public: std::string sTypeOfJSON) : BaseInstanceClass(pObject, pBuilder, bTakeOwnership) , JSDialogSender(aNotifierWindow, aContentWindow, sTypeOfJSON) + , m_bIsFreezed(false) { } @@ -234,6 +238,30 @@ public: return m_xDropTarget.get(); } + + virtual void freeze() override + { + BaseInstanceClass::freeze(); + m_bIsFreezed = true; + } + + virtual void thaw() override + { + BaseInstanceClass::thaw(); + m_bIsFreezed = false; + } + + virtual void sendUpdate(VclPtr<vcl::Window> pWindow) override + { + if (!m_bIsFreezed) + JSDialogSender::sendUpdate(pWindow); + } + + virtual void notifyDialogState(bool bForce = false) override + { + if (!m_bIsFreezed || bForce) + JSDialogSender::notifyDialogState(bForce); + } }; class VCL_DLLPUBLIC JSDialog : public JSWidget<SalInstanceDialog, ::Dialog> |