editeng/source/editeng/editeng.cxx | 70 ---------------------------------- editeng/source/editeng/impedit.hxx | 1 editeng/source/editeng/impedit5.cxx | 73 ++++++++++++++++++++++++++++++++++++ 3 files changed, 75 insertions(+), 69 deletions(-)
New commits: commit 04eedb4aec5ffa3966dd4e21ae2f594b289ac53b Author: Noel Grandin <noelgran...@gmail.com> AuthorDate: Mon Jun 17 14:12:38 2024 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Mon Jun 17 20:02:45 2024 +0200 move SetControlWord code from EditEngine to ImpEditEngine so we have the implementation in one class, instead of bouncing back and forth between two. Change-Id: Ie653fc6880e096ca4fad4dc1cf77bb3f16915dbf Reviewed-on: https://gerrit.libreoffice.org/c/core/+/169000 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx index bfba5faa811f..4c2eef100fac 100644 --- a/editeng/source/editeng/editeng.cxx +++ b/editeng/source/editeng/editeng.cxx @@ -1167,75 +1167,7 @@ void EditEngine::SetSingleLine(bool bValue) void EditEngine::SetControlWord( EEControlBits nWord ) { - - if (nWord == getImpl().GetStatus().GetControlWord()) - return; - - EEControlBits nPrev = getImpl().GetStatus().GetControlWord(); - getImpl().GetStatus().GetControlWord() = nWord; - - EEControlBits nChanges = nPrev ^ nWord; - if (getImpl().IsFormatted()) - { - // possibly reformat: - if ( ( nChanges & EEControlBits::USECHARATTRIBS ) || - ( nChanges & EEControlBits::ONECHARPERLINE ) || - ( nChanges & EEControlBits::STRETCHING ) || - ( nChanges & EEControlBits::OUTLINER ) || - ( nChanges & EEControlBits::NOCOLORS ) || - ( nChanges & EEControlBits::OUTLINER2 ) ) - { - if ( nChanges & EEControlBits::USECHARATTRIBS ) - { - getImpl().GetEditDoc().CreateDefFont(true); - } - - getImpl().FormatFullDoc(); - getImpl().UpdateViews(getImpl().GetActiveView()); - } - } - - bool bSpellingChanged = bool(nChanges & EEControlBits::ONLINESPELLING); - - if ( !bSpellingChanged ) - return; - - getImpl().StopOnlineSpellTimer(); - if (nWord & EEControlBits::ONLINESPELLING) - { - // Create WrongList, start timer... - sal_Int32 nNodes = getImpl().GetEditDoc().Count(); - for (sal_Int32 nNode = 0; nNode < nNodes; nNode++) - { - ContentNode* pNode = getImpl().GetEditDoc().GetObject(nNode); - pNode->CreateWrongList(); - } - if (getImpl().IsFormatted()) - getImpl().StartOnlineSpellTimer(); - } - else - { - tools::Long nY = 0; - sal_Int32 nNodes = getImpl().GetEditDoc().Count(); - for ( sal_Int32 nNode = 0; nNode < nNodes; nNode++) - { - ContentNode* pNode = getImpl().GetEditDoc().GetObject(nNode); - ParaPortion const& rPortion = getImpl().GetParaPortions().getRef(nNode); - bool bWrongs = false; - if (pNode->GetWrongList() != nullptr) - bWrongs = !pNode->GetWrongList()->empty(); - pNode->DestroyWrongList(); - if ( bWrongs ) - { - getImpl().maInvalidRect.SetLeft(0); - getImpl().maInvalidRect.SetRight(getImpl().GetPaperSize().Width()); - getImpl().maInvalidRect.SetTop(nY + 1); - getImpl().maInvalidRect.SetBottom(nY + rPortion.GetHeight() - 1); - getImpl().UpdateViews(getImpl().mpActiveView); - } - nY += rPortion.GetHeight(); - } - } + getImpl().SetControlWord(nWord); } EEControlBits EditEngine::GetControlWord() const diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 482ea3ecd357..bdae6e7c7b36 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -1172,6 +1172,7 @@ public: const MapMode& GetRefMapMode() const { return mpRefDev->GetMapMode(); } void SetRefMapMode(const MapMode& rMapMode); + void SetControlWord( EEControlBits nWord ); InternalEditStatus& GetStatus() { return maStatus; } InternalEditStatus const& GetStatus() const{ return maStatus; } diff --git a/editeng/source/editeng/impedit5.cxx b/editeng/source/editeng/impedit5.cxx index 22536c3cd44a..7e3f6ef970c5 100644 --- a/editeng/source/editeng/impedit5.cxx +++ b/editeng/source/editeng/impedit5.cxx @@ -1339,6 +1339,79 @@ bool ImpEditEngine::IsSimpleCharInput( const KeyEvent& rKeyEvent ) ( KEY_MOD1 != (rKeyEvent.GetKeyCode().GetModifier() & ~KEY_SHIFT ) ); } +void ImpEditEngine::SetControlWord( EEControlBits nWord ) +{ + + if (nWord == maStatus.GetControlWord()) + return; + + EEControlBits nPrev = maStatus.GetControlWord(); + maStatus.GetControlWord() = nWord; + + EEControlBits nChanges = nPrev ^ nWord; + if (IsFormatted()) + { + // possibly reformat: + if ( ( nChanges & EEControlBits::USECHARATTRIBS ) || + ( nChanges & EEControlBits::ONECHARPERLINE ) || + ( nChanges & EEControlBits::STRETCHING ) || + ( nChanges & EEControlBits::OUTLINER ) || + ( nChanges & EEControlBits::NOCOLORS ) || + ( nChanges & EEControlBits::OUTLINER2 ) ) + { + if ( nChanges & EEControlBits::USECHARATTRIBS ) + { + maEditDoc.CreateDefFont(true); + } + + FormatFullDoc(); + UpdateViews(mpActiveView); + } + } + + bool bSpellingChanged = bool(nChanges & EEControlBits::ONLINESPELLING); + + if ( !bSpellingChanged ) + return; + + StopOnlineSpellTimer(); + if (nWord & EEControlBits::ONLINESPELLING) + { + // Create WrongList, start timer... + sal_Int32 nNodes = maEditDoc.Count(); + for (sal_Int32 nNode = 0; nNode < nNodes; nNode++) + { + ContentNode* pNode = maEditDoc.GetObject(nNode); + pNode->CreateWrongList(); + } + if (IsFormatted()) + StartOnlineSpellTimer(); + } + else + { + tools::Long nY = 0; + sal_Int32 nNodes = maEditDoc.Count(); + for ( sal_Int32 nNode = 0; nNode < nNodes; nNode++) + { + ContentNode* pNode = maEditDoc.GetObject(nNode); + ParaPortion const& rPortion = maParaPortionList.getRef(nNode); + bool bWrongs = false; + if (pNode->GetWrongList() != nullptr) + bWrongs = !pNode->GetWrongList()->empty(); + pNode->DestroyWrongList(); + if ( bWrongs ) + { + maInvalidRect.SetLeft(0); + maInvalidRect.SetRight(GetPaperSize().Width()); + maInvalidRect.SetTop(nY + 1); + maInvalidRect.SetBottom(nY + rPortion.GetHeight() - 1); + UpdateViews(mpActiveView); + } + nY += rPortion.GetHeight(); + } + } +} + IdleFormattter::IdleFormattter() : Idle("editeng::ImpEditEngine aIdleFormatter") {