summaryrefslogtreecommitdiff
path: root/sw/source/uibase/shells
diff options
context:
space:
mode:
authorOliver Specht <oliver.specht@cib.de>2024-04-11 08:56:17 +0200
committerThorsten Behrens <thorsten.behrens@allotropia.de>2024-04-15 19:05:14 +0200
commitb1170251fbca5b6b243902cf10695ab4c4c5642b (patch)
treed956b2d2dfa072b180a8e906685a052447ea5825 /sw/source/uibase/shells
parent6f99187ec29e8716e1fb9ffa18b1830048608fbc (diff)
Improve case rotation in sentence case
Rotating case (Shift+F3) applies sentence case only if multiple words are already selected or selects sentence if SENTENCE_CASE is going to be applied. Change-Id: I9e8536d7744a344d7ad54150783e91e843e0e81e Reviewed-on: https://gerrit.libreoffice.org/c/core/+/165986 Tested-by: Jenkins Reviewed-by: Thorsten Behrens <thorsten.behrens@allotropia.de>
Diffstat (limited to 'sw/source/uibase/shells')
-rw-r--r--sw/source/uibase/shells/textsh.cxx19
1 files changed, 16 insertions, 3 deletions
diff --git a/sw/source/uibase/shells/textsh.cxx b/sw/source/uibase/shells/textsh.cxx
index 1b1fb47fd1f3..93020de3bad2 100644
--- a/sw/source/uibase/shells/textsh.cxx
+++ b/sw/source/uibase/shells/textsh.cxx
@@ -878,20 +878,33 @@ void SwTextShell::ExecRotateTransliteration( SfxRequest const & rReq )
{
if( rReq.GetSlot() == SID_TRANSLITERATE_ROTATE_CASE )
{
+ TransliterationFlags transFlags = m_aRotateCase.getNextMode();
+ bool bSentenceCase = TransliterationFlags::SENTENCE_CASE == transFlags;
SwWrtShell& rSh = GetShell();
if (rSh.HasSelection())
{
- rSh.TransliterateText(m_aRotateCase.getNextMode());
+ if (bSentenceCase)
+ {
+ OUString aSelection = rSh.GetSelText().trim();
+ if (aSelection.getLength() <= 2 || (aSelection.indexOf(' ') < 0 && aSelection.indexOf('\t') < 0))
+ transFlags = m_aRotateCase.getNextMode();
+ }
+ rSh.TransliterateText(transFlags);
}
else
{
+ if (bSentenceCase)
+ {
+ if (!rSh.IsEndSentence())
+ rSh.EndSentence(false);
+ }
if (rSh.IsEndSentence())
{
rSh.BwdSentence(true);
- rSh.TransliterateText(m_aRotateCase.getNextMode());
+ rSh.TransliterateText(transFlags);
}
else if ((rSh.IsEndWrd() || rSh.IsStartWord() || rSh.IsInWord()) && rSh.SelWrd())
- rSh.TransliterateText(m_aRotateCase.getNextMode());
+ rSh.TransliterateText(transFlags);
}
}
}