[Libreoffice-commits] core.git: cui/source include/vcl
Tamás Zolnai
tamas.zolnai at collabora.com
Fri Feb 2 12:04:22 UTC 2018
cui/source/tabpages/backgrnd.cxx | 22 ++++++++++++++++++++++
include/vcl/window.hxx | 2 +-
2 files changed, 23 insertions(+), 1 deletion(-)
New commits:
commit 974ea04ddd1b82e5d5c0171bd8ad29310e3f2bd7
Author: Tamás Zolnai <tamas.zolnai at collabora.com>
Date: Thu Feb 1 19:55:51 2018 +0100
lokdialog: Color/font picker in dialogs don't show preview
Invalidation needs to be passed upward to the right parent window.
It should work similar to other dialog items, but this preview class
is not derived from the Control class.
Change-Id: I5fb2b6438b8be92d55609c8d3c25110b49d0e6d7
Reviewed-on: https://gerrit.libreoffice.org/49101
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Tamás Zolnai <tamas.zolnai at collabora.com>
diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx
index 00bdcd0cadd8..3926e04f83fd 100644
--- a/cui/source/tabpages/backgrnd.cxx
+++ b/cui/source/tabpages/backgrnd.cxx
@@ -24,6 +24,7 @@
#include <vcl/msgbox.hxx>
#include <vcl/settings.hxx>
#include <vcl/idle.hxx>
+#include <vcl/window.hxx>
#include <tools/urlobj.hxx>
#include <sfx2/dialoghelper.hxx>
#include <sfx2/objsh.hxx>
@@ -51,6 +52,7 @@
#include <svl/intitem.hxx>
#include <sfx2/request.hxx>
#include <svtools/grfmgr.hxx>
+#include <comphelper/lok.hxx>
using namespace css;
@@ -154,6 +156,7 @@ protected:
virtual void Paint( vcl::RenderContext& /*rRenderContext*/, const ::tools::Rectangle& rRect ) override;
virtual void DataChanged( const DataChangedEvent& rDCEvt ) override;
virtual void Resize() override;
+ virtual void LogicInvalidate(const ::tools::Rectangle* pRectangle) override;
private:
@@ -310,6 +313,25 @@ void BackgroundPreviewImpl::DataChanged( const DataChangedEvent& rDCEvt )
Window::DataChanged( rDCEvt );
}
+
+void BackgroundPreviewImpl::LogicInvalidate(const ::tools::Rectangle* /*pRectangle*/)
+{
+ // Invalidate the container dialog or floating window
+ // The code is same as in Control::LogicInvalidate() method
+ if (comphelper::LibreOfficeKit::isActive() && !comphelper::LibreOfficeKit::isDialogPainting())
+ {
+ if (VclPtr<vcl::Window> pParent = GetParentWithLOKNotifier())
+ {
+ // invalidate the complete floating window for now
+ if (pParent->ImplIsFloatingWindow())
+ return pParent->LogicInvalidate(nullptr);
+
+ const ::tools::Rectangle aRect(Point(GetOutOffXPixel(), GetOutOffYPixel()), Size(GetOutputWidthPixel(), GetOutputHeightPixel()));
+ pParent->LogicInvalidate(&aRect);
+ }
+ }
+}
+
#define HDL(hdl) LINK(this,SvxBackgroundTabPage,hdl)
SvxBackgroundTabPage::SvxBackgroundTabPage(vcl::Window* pParent, const SfxItemSet& rCoreSet)
diff --git a/include/vcl/window.hxx b/include/vcl/window.hxx
index 3fe40355bab3..7028255f5999 100644
--- a/include/vcl/window.hxx
+++ b/include/vcl/window.hxx
@@ -567,7 +567,7 @@ public:
SAL_DLLPRIVATE bool ImplIsWindowOrChild( const vcl::Window* pWindow, bool bSystemWindow = false ) const;
SAL_DLLPRIVATE bool ImplIsChild( const vcl::Window* pWindow, bool bSystemWindow = false ) const;
- SAL_DLLPRIVATE bool ImplIsFloatingWindow() const;
+ bool ImplIsFloatingWindow() const;
SAL_DLLPRIVATE bool ImplIsPushButton() const;
SAL_DLLPRIVATE bool ImplIsSplitter() const;
SAL_DLLPRIVATE bool ImplIsOverlapWindow() const;
More information about the Libreoffice-commits
mailing list