summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSzymon Kłos <szymon.klos@collabora.com>2020-12-30 09:57:00 +0100
committerSzymon Kłos <szymon.klos@collabora.com>2021-01-04 08:59:57 +0100
commitaeade793fd56fee9540af059fc7f0efb8605cf22 (patch)
tree5e14018abef7dda9eed9366119a80ee4d2a2bff9
parent2c9708cbb870483a8a1c93d722085be5f789d234 (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>
-rw-r--r--vcl/inc/jsdialog/jsdialogbuilder.hxx32
1 files changed, 30 insertions, 2 deletions
diff --git a/vcl/inc/jsdialog/jsdialogbuilder.hxx b/vcl/inc/jsdialog/jsdialogbuilder.hxx
index 0a02e64cf890..8be7950b5bc2 100644
--- a/vcl/inc/jsdialog/jsdialogbuilder.hxx
+++ b/vcl/inc/jsdialog/jsdialogbuilder.hxx
@@ -69,10 +69,12 @@ public:
{
}
- void notifyDialogState(bool bForce = false);
+ virtual ~JSDialogSender() = default;
+
+ virtual void notifyDialogState(bool bForce = false);
void sendClose();
void dumpStatus();
- void sendUpdate(VclPtr<vcl::Window> pWindow);
+ virtual void sendUpdate(VclPtr<vcl::Window> pWindow);
};
class JSDropTarget final
@@ -181,6 +183,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,
@@ -188,6 +191,7 @@ public:
std::string sTypeOfJSON)
: BaseInstanceClass(pObject, pBuilder, bTakeOwnership)
, JSDialogSender(aNotifierWindow, aContentWindow, sTypeOfJSON)
+ , m_bIsFreezed(false)
{
}
@@ -217,6 +221,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 JSDialog : public JSWidget<SalInstanceDialog, ::Dialog>