diff options
author | Michael Stahl <mstahl@redhat.com> | 2013-10-11 18:36:47 +0200 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-10-14 10:41:22 +0000 |
commit | 02a4d733ef24f4350f65179f46d144de7b948799 (patch) | |
tree | 9384c20a56fc1e9c20c922e24667545238e3292c /sw | |
parent | 856e8cdf9cb67acfc858c9ca55bda5bd24ee7b57 (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().
Conflicts:
sw/source/ui/shells/textsh1.cxx
(cherry picked from commit 9533e01713c0170bdae030429de38756d9c5ca74)
Change-Id: I2981506b3065e824532deda28d21dad4a5734a8c
Reviewed-on: https://gerrit.libreoffice.org/6212
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
Diffstat (limited to 'sw')
-rw-r--r-- | sw/source/ui/shells/textsh1.cxx | 16 |
1 files changed, 11 insertions, 5 deletions
diff --git a/sw/source/ui/shells/textsh1.cxx b/sw/source/ui/shells/textsh1.cxx index 25976e97841b..b01960415b42 100644 --- a/sw/source/ui/shells/textsh1.cxx +++ b/sw/source/ui/shells/textsh1.cxx @@ -328,8 +328,6 @@ void SwTextShell::Execute(SfxRequest &rReq) rWrtSh.StartAction(); // 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.Len() > 0) @@ -369,6 +367,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 ); @@ -383,10 +387,12 @@ void SwTextShell::Execute(SfxRequest &rReq) SwLangHelper::ResetLanguages( rWrtSh, bForSelection ); else SwLangHelper::SetLanguage( rWrtSh, aNewLangTxt, bForSelection, aCoreSet ); - } - // restore selection... - rWrtSh.Pop( sal_False ); + if (bForParagraph || !bForSelection) + { + rWrtSh.Pop(false); // restore selection... + } + } rWrtSh.LockView( sal_False ); rWrtSh.EndAction(); |