summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Stahl <mstahl@redhat.com>2013-10-11 18:36:47 +0200
committerMichael Stahl <mstahl@redhat.com>2013-10-11 18:49:01 +0200
commit9533e01713c0170bdae030429de38756d9c5ca74 (patch)
tree94f20349bda18a51d793676cda3e1ecd3e9ef8d0
parent2731092c12a08e2b53d28089070d2a97c23e8925 (diff)
fdo#67796: sw: fix table cursor when setting language in status bar
Unfortunately it turns out that the neat hack in commit b227a8e4d65e4bbfe991aed9342fe3e30eca8639 does not work unless something actually _deletes_ the current m_pTblCrsr between Push() and Pop(), e.g. by calling SwCrsrShell::ClearMark() or KillPams(). It would be possible to do some invalidation of m_pTblCrsr in SwCrsrShell::ClearUpCrsrs() or UpdateCrsr(), to set it's bChg flag or perhaps call ParkTblCrsr(); not sure if doing that is an improvement; certainly it shouldn't be tried in a 4.0.6 backport. So work around the problem locally in SwTextShell::Execute(). Change-Id: I2981506b3065e824532deda28d21dad4a5734a8c
-rw-r--r--sw/source/ui/shells/textsh1.cxx16
1 files changed, 10 insertions, 6 deletions
diff --git a/sw/source/ui/shells/textsh1.cxx b/sw/source/ui/shells/textsh1.cxx
index c76969afcb30..1ffbe4b637c1 100644
--- a/sw/source/ui/shells/textsh1.cxx
+++ b/sw/source/ui/shells/textsh1.cxx
@@ -322,9 +322,6 @@ void SwTextShell::Execute(SfxRequest &rReq)
// prevent view from jumping because of (temporary) selection changes
rWrtSh.LockView( sal_True );
- // save selection for later restoration
- rWrtSh.Push();
-
// setting the new language...
if (!aNewLangTxt.isEmpty())
{
@@ -363,6 +360,12 @@ void SwTextShell::Execute(SfxRequest &rReq)
bForSelection = false;
}
+ if (bForParagraph || !bForSelection)
+ {
+ rWrtSh.Push(); // save selection for later restoration
+ rWrtSh.ClearMark(); // fdo#67796: invalidate table crsr
+ }
+
if (bForParagraph)
SwLangHelper::SelectCurrentPara( rWrtSh );
@@ -381,11 +384,12 @@ void SwTextShell::Execute(SfxRequest &rReq)
SwLangHelper::SetLanguage( rWrtSh, aNewLangTxt, bForSelection, aCoreSet );
rWrtSh.EndUndo();
+ if (bForParagraph || !bForSelection)
+ {
+ rWrtSh.Pop(false); // restore selection...
+ }
}
- // restore selection...
- rWrtSh.Pop( sal_False );
-
rWrtSh.LockView( sal_False );
rWrtSh.EndAction();
}