Blame SOURCES/0327-sw-lok-comments-emit-invalidation-events-in-SidebarT.patch

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