From 08ca67b7742364ecdc8bf7928ce2ef058da0e37e Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Sat, 14 Nov 2015 10:04:38 +0100 Subject: [PATCH 327/398] sw lok comments: emit invalidation events in SidebarTextControl With this, newly typed characters show up instantly in comments, not only after changing the zoom level. (cherry picked from commit 4cbbaf571d3982eccd7f7267df3185b3d321d0da) Change-Id: I1470db1ec03cc415917375f1f95434cf0944e559 --- sw/source/uibase/docvw/SidebarTxtControl.cxx | 26 ++++++++++++++++++++++++++ sw/source/uibase/docvw/SidebarTxtControl.hxx | 2 ++ 2 files changed, 28 insertions(+) diff --git a/sw/source/uibase/docvw/SidebarTxtControl.cxx b/sw/source/uibase/docvw/SidebarTxtControl.cxx index afda8b1952ad..d6887a475312 100644 --- a/sw/source/uibase/docvw/SidebarTxtControl.cxx +++ b/sw/source/uibase/docvw/SidebarTxtControl.cxx @@ -23,6 +23,7 @@ #include #include +#include #include #include @@ -46,6 +47,7 @@ #include #include #include +#include #include #include @@ -186,6 +188,30 @@ void SidebarTextControl::Paint(vcl::RenderContext& rRenderContext, const Rectang } } +void SidebarTextControl::LogicInvalidate(const Rectangle* pRectangle) +{ + OString sRectangle; + if (!pRectangle) + sRectangle = "EMPTY"; + else + { + // Convert from relative twips to absolute ones. + Rectangle aRectangle(*pRectangle); + vcl::Window& rParent = *mrSidebarWin.EditWin(); + Point aOffset(GetOutOffXPixel() - rParent.GetOutOffXPixel(), GetOutOffYPixel() - rParent.GetOutOffYPixel()); + rParent.Push(PushFlags::MAPMODE); + rParent.EnableMapMode(); + aOffset = rParent.PixelToLogic(aOffset); + rParent.Pop(); + aRectangle.Move(aOffset.getX(), aOffset.getY()); + + sRectangle = aRectangle.toString(); + } + + SwWrtShell& rWrtShell = mrDocView.GetWrtShell(); + rWrtShell.libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, sRectangle.getStr()); +} + void SidebarTextControl::KeyInput( const KeyEvent& rKeyEvt ) { const vcl::KeyCode& rKeyCode = rKeyEvt.GetKeyCode(); diff --git a/sw/source/uibase/docvw/SidebarTxtControl.hxx b/sw/source/uibase/docvw/SidebarTxtControl.hxx index 43d6b98d82c1..f73b68c950ae 100644 --- a/sw/source/uibase/docvw/SidebarTxtControl.hxx +++ b/sw/source/uibase/docvw/SidebarTxtControl.hxx @@ -40,6 +40,8 @@ class SidebarTextControl : public Control protected: virtual void Paint( vcl::RenderContext& rRenderContext, const Rectangle& rRect) SAL_OVERRIDE; + /// @see OutputDevice::LogicInvalidate(). + void LogicInvalidate(const Rectangle* pRectangle) override; virtual void MouseMove( const MouseEvent& rMEvt ) SAL_OVERRIDE; virtual void MouseButtonUp( const MouseEvent& rMEvt ) SAL_OVERRIDE; virtual void Command( const CommandEvent& rCEvt ) SAL_OVERRIDE; -- 2.12.0