|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
f085233 |
From b5a90399a502498c28779706b3f518b4ea224b4d Mon Sep 17 00:00:00 2001
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
Date: Thu, 13 Nov 2014 13:32:35 +0000
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
f085233 |
Subject: [PATCH 1/2] table layout cache returns wrong rectangle
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
the layouter can modify its input rectangle to grow
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
it to the necessary size to contain the layout
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
but we're returning the input rectangle when the inputs are the same as the
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
last call, not returning the output rectangle.
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
cache the output rect for a given input and return that
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
so now insert->table in impress and tab so extra cells are added and
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
then select the table and the blue border contains the whole
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
table, not just the first two rows
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
Change-Id: I4f09594d82c1597204afbd059e175af9bf8e2527
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
(cherry picked from commit 98cd2671f0a215ced6203372ac673e2380031ac0)
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
---
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
svx/source/table/svdotable.cxx | 15 +++++++++++----
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
1 file changed, 11 insertions(+), 4 deletions(-)
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
diff --git a/svx/source/table/svdotable.cxx b/svx/source/table/svdotable.cxx
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
f085233 |
index 45c6a30..e3a2a47 100644
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
--- a/svx/source/table/svdotable.cxx
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+++ b/svx/source/table/svdotable.cxx
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
@@ -244,7 +244,8 @@ public:
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
f085233 |
virtual bool isInUse();
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
private:
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
static SdrTableObjImpl* lastLayoutTable;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
- static Rectangle lastLayoutRectangle;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+ static Rectangle lastLayoutInputRectangle;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+ static Rectangle lastLayoutResultRectangle;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
static bool lastLayoutFitWidth;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
static bool lastLayoutFitHeight;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
static WritingMode lastLayoutMode;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
@@ -253,7 +254,8 @@ private:
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
};
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
SdrTableObjImpl* SdrTableObjImpl::lastLayoutTable = NULL;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
-Rectangle SdrTableObjImpl::lastLayoutRectangle;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+Rectangle SdrTableObjImpl::lastLayoutInputRectangle;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+Rectangle SdrTableObjImpl::lastLayoutResultRectangle;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
bool SdrTableObjImpl::lastLayoutFitWidth;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
bool SdrTableObjImpl::lastLayoutFitHeight;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
WritingMode SdrTableObjImpl::lastLayoutMode;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
f085233 |
@@ -698,14 +700,14 @@ void SdrTableObjImpl::LayoutTable( Rectangle& rArea, bool bFitWidth, bool bFitHe
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
// Optimization: SdrTableObj::SetChanged() can call this very often, repeatedly
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
// with the same settings, noticeably increasing load time. Skip if already done.
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
WritingMode writingMode = mpTableObj->GetWritingMode();
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
- if( lastLayoutTable != this || lastLayoutRectangle != rArea
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+ if( lastLayoutTable != this || lastLayoutInputRectangle != rArea
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|| lastLayoutFitWidth != bFitWidth || lastLayoutFitHeight != bFitHeight
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|| lastLayoutMode != writingMode
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|| lastRowCount != getRowCount()
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|| lastColCount != getColumnCount() )
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
{
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
lastLayoutTable = this;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
- lastLayoutRectangle = rArea;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+ lastLayoutInputRectangle = rArea;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
lastLayoutFitWidth = bFitWidth;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
lastLayoutFitHeight = bFitHeight;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
lastLayoutMode = writingMode;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
f085233 |
@@ -713,6 +715,11 @@ void SdrTableObjImpl::LayoutTable( Rectangle& rArea, bool bFitWidth, bool bFitHe
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
lastColCount = getColumnCount();
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
TableModelNotifyGuard aGuard( mxTable.get() );
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
mpLayouter->LayoutTable( rArea, bFitWidth, bFitHeight );
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+ lastLayoutResultRectangle = rArea;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+ }
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+ else
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+ {
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
+ rArea = lastLayoutResultRectangle;
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
}
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
--
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
1.9.3
|
|
![](https://seccdn.libravatar.org/avatar/4c471deb53ad44b176d1794c9545759c8f195b2b4acac0ed10a17e17c205a17f?s=16&d=retro) |
c1307e3 |
|