Blame SOURCES/0348-sw-lok-comments-optimize-sidebar-text-control-invali.patch

f325b2
From eea254dd5eb834b846ff9c55662d5704c266f438 Mon Sep 17 00:00:00 2001
f325b2
From: Miklos Vajna <vmiklos@collabora.co.uk>
f325b2
Date: Thu, 19 Nov 2015 16:11:43 +0100
f325b2
Subject: [PATCH 348/398] sw lok comments: optimize sidebar text control
f325b2
 invalidation
f325b2
f325b2
Instead of invalidating the whole area, invalidate the sub-widget when
f325b2
the whole area of the sub-widget would be invalidated.
f325b2
f325b2
With this, a test comment with enough comment to have a scrollbar
f325b2
results in 3 paintTile() calls instead of 11 ones (70% save).
f325b2
f325b2
(cherry picked from commit 9ece5c870a0ce39690109777bb8f76c1463a10c2)
f325b2
f325b2
Change-Id: I2fe317549eefac9a63aaf50f5a9a242e15c4dc86
f325b2
---
f325b2
 sw/source/uibase/docvw/SidebarTxtControl.cxx | 34 ++++++++++++++++------------
f325b2
 1 file changed, 19 insertions(+), 15 deletions(-)
f325b2
f325b2
diff --git a/sw/source/uibase/docvw/SidebarTxtControl.cxx b/sw/source/uibase/docvw/SidebarTxtControl.cxx
f325b2
index d6887a475312..4558c4071bfd 100644
f325b2
--- a/sw/source/uibase/docvw/SidebarTxtControl.cxx
f325b2
+++ b/sw/source/uibase/docvw/SidebarTxtControl.cxx
f325b2
@@ -190,24 +190,28 @@ void SidebarTextControl::Paint(vcl::RenderContext& rRenderContext, const Rectang
f325b2
 
f325b2
 void SidebarTextControl::LogicInvalidate(const Rectangle* pRectangle)
f325b2
 {
f325b2
-    OString sRectangle;
f325b2
+    Rectangle aRectangle;
f325b2
+
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
+        Push(PushFlags::MAPMODE);
f325b2
+        EnableMapMode();
f325b2
+        aRectangle = Rectangle(Point(0, 0), PixelToLogic(GetSizePixel()));
f325b2
+        Pop();
f325b2
     }
f325b2
-
f325b2
+    else
f325b2
+        aRectangle = *pRectangle;
f325b2
+
f325b2
+    // Convert from relative twips to absolute ones.
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
+    OString sRectangle = aRectangle.toString();
f325b2
     SwWrtShell& rWrtShell = mrDocView.GetWrtShell();
f325b2
     rWrtShell.libreOfficeKitCallback(LOK_CALLBACK_INVALIDATE_TILES, sRectangle.getStr());
f325b2
 }
f325b2
-- 
f325b2
2.12.0
f325b2