summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-12-30 09:57:00 +0100
committerTomaž Vajngerl <quikee@gmail.com>2021-02-04 16:08:31 +0100
commit3e8018d8336dc1a34530142a917ccaeb8100fe5a (patch)
tree6ab04a5cd78568358a182c79ff668bfc9ed1c5c0
parent809c30d1518bcc3c0ca43ea6f0fda99dcc2016a2 (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.hxx30
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>