[libreoffice] fix interactive growing of impress tables as you type

Caolán McNamara caolanm at fedoraproject.org
Thu Nov 13 14:48:56 UTC 2014


commit 4589096b67a8e8be94ca95fe9d747f44b61f54a2
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Thu Nov 13 14:48:41 2014 +0000

    fix interactive growing of impress tables as you type

 ...ress-tables-are-not-interactively-growing.patch |   55 ++++++++++++++++++++
 libreoffice.spec                                   |    1 +
 2 files changed, 56 insertions(+), 0 deletions(-)
---
diff --git a/0001-impress-tables-are-not-interactively-growing.patch b/0001-impress-tables-are-not-interactively-growing.patch
new file mode 100644
index 0000000..b8d5ad6
--- /dev/null
+++ b/0001-impress-tables-are-not-interactively-growing.patch
@@ -0,0 +1,55 @@
+From 5a958aa9d95f0c14e4980f6909550e657d87a3a9 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Thu, 13 Nov 2014 14:31:09 +0000
+Subject: [PATCH] impress tables are not interactively growing
+
+the optimization here stops tables growing as their text
+contents change in editing mode
+
+So, just recalculate if the table could grow and its
+being interactively edited, which leaves the original
+(dubious ?) load-time optimization in place
+
+Change-Id: I894acf47d34ec8b68aaf9076b5a0cb7e29c38a17
+(cherry picked from commit 22ef69b25fa60f4543dc72cb7a8d2f88b789ce43)
+---
+ svx/source/table/svdotable.cxx | 9 ++++-----
+ 1 file changed, 4 insertions(+), 5 deletions(-)
+
+diff --git a/svx/source/table/svdotable.cxx b/svx/source/table/svdotable.cxx
+index fbd532a..856a9e5 100644
+--- a/svx/source/table/svdotable.cxx
++++ b/svx/source/table/svdotable.cxx
+@@ -689,16 +689,17 @@ sal_Int32 SdrTableObjImpl::getRowCount() const
+     return mxTable.is() ? mxTable->getRowCount() : 0;
+ }
+ 
+-
+-
+ void SdrTableObjImpl::LayoutTable( Rectangle& rArea, bool bFitWidth, bool bFitHeight )
+ {
+     if( mpLayouter && mpTableObj->GetModel() )
+     {
+         // Optimization: SdrTableObj::SetChanged() can call this very often, repeatedly
+         // with the same settings, noticeably increasing load time. Skip if already done.
++        bool bInteractiveMightGrowBecauseTextChanged =
++            mpTableObj->IsRealyEdited() && (mpTableObj->IsAutoGrowHeight() || mpTableObj->IsAutoGrowHeight());
+         WritingMode writingMode = mpTableObj->GetWritingMode();
+-        if( lastLayoutTable != this || lastLayoutInputRectangle != rArea
++        if( bInteractiveMightGrowBecauseTextChanged
++            || lastLayoutTable != this || lastLayoutInputRectangle != rArea
+             || lastLayoutFitWidth != bFitWidth || lastLayoutFitHeight != bFitHeight
+             || lastLayoutMode != writingMode
+             || lastRowCount != getRowCount()
+@@ -722,8 +723,6 @@ void SdrTableObjImpl::LayoutTable( Rectangle& rArea, bool bFitWidth, bool bFitHe
+     }
+ }
+ 
+-
+-
+ void SdrTableObjImpl::UpdateCells( Rectangle& rArea )
+ {
+     if( mpLayouter && mxTable.is() )
+-- 
+1.9.3
+
diff --git a/libreoffice.spec b/libreoffice.spec
index b13dc23..65795a0 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -342,6 +342,7 @@ Patch44: 0001-have-a-stab-at-improving-impossible-question.patch
 Patch45: 0001-just-use-ANSI-C-declarations.patch
 Patch46: 0001-valgrind-check-return-of-convertDateTime-before-usin.patch
 Patch47: 0001-table-layout-cache-returns-wrong-rectangle.patch
+Patch48: 0001-impress-tables-are-not-interactively-growing.patch
 
 %define instdir %{_libdir}
 %define baseinstdir %{instdir}/libreoffice


More information about the scm-commits mailing list