diff options
author | Oliver Specht <oliver.specht@cib.de> | 2024-04-11 08:56:17 +0200 |
---|---|---|
committer | Thorsten Behrens <thorsten.behrens@allotropia.de> | 2024-04-15 19:05:14 +0200 |
commit | b1170251fbca5b6b243902cf10695ab4c4c5642b (patch) | |
tree | d956b2d2dfa072b180a8e906685a052447ea5825 /sw/source/uibase/shells | |
parent | 6f99187ec29e8716e1fb9ffa18b1830048608fbc (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.cxx | 19 |
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); } } } |