summaryrefslogtreecommitdiff
path: root/sw/source/core
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2015-06-05 23:56:07 +0200
committerMichael Stahl <mstahl@redhat.com>2015-06-06 00:35:56 +0200
commit4ae19cf8435d78bec75e1c4ea95da9f0aaf35b62 (patch)
tree9d3976a2c88f7af7b8ed1886fa5fde34ac8986fc /sw/source/core
parent4d8acde1b820c2548839b1632bc28f2988001941 (diff)
tdf#91602: sw: prevent recursive layout crash
SwCrsrShell::UpdateCrsr() calls SwTextFrm::GetCharRect(), which does layout. It happens that a SdrObject is moved around during layout, which calls SwDrawContact::Changed(), which believes that there is no layout active because there is no SwLayAction and ViewShell::EndAction() has already been called, so we get recursive layout-in-layout action. Change-Id: Iad8df4910e3c661150bdf5ac7d777792e69a8f71 (cherry picked from commit 587006cac508616f486aea45e265a170bcccdc87)
Diffstat (limited to 'sw/source/core')
-rw-r--r--sw/source/core/crsr/crsrsh.cxx4
1 files changed, 4 insertions, 0 deletions
diff --git a/sw/source/core/crsr/crsrsh.cxx b/sw/source/core/crsr/crsrsh.cxx
index a8158663ab2f..2742a2caf35e 100644
--- a/sw/source/core/crsr/crsrsh.cxx
+++ b/sw/source/core/crsr/crsrsh.cxx
@@ -285,6 +285,10 @@ void SwCrsrShell::EndAction( const bool bIdleEnd, const bool DoSetPosX )
}
return;
}
+ else
+ {
+ eFlags |= SwCrsrShell::NOCALRECT; // tdf#91602 prevent recursive Action!
+ }
if ( !bIdleEnd )
eFlags |= SwCrsrShell::SCROLLWIN;