[Libreoffice-commits] core.git: 2 commits - editeng/source include/editeng translations

Mark Hung (via logerrit) logerrit at kemper.freedesktop.org
Fri Oct 23 13:42:38 UTC 2020


 editeng/source/editeng/editeng.cxx  |   15 +++++++++++++--
 editeng/source/editeng/editview.cxx |    7 ++++++-
 editeng/source/editeng/impedit.hxx  |    2 +-
 editeng/source/editeng/impedit5.cxx |    6 +++---
 editeng/source/editeng/textconv.cxx |    2 +-
 include/editeng/editdata.hxx        |    2 ++
 include/editeng/editeng.hxx         |    1 +
 include/editeng/editview.hxx        |    1 +
 translations                        |    2 +-
 9 files changed, 29 insertions(+), 9 deletions(-)

New commits:
commit 5b74b3322fd51cf075eb0c218b3adb786a28b4c9
Author:     Mark Hung <marklh9 at gmail.com>
AuthorDate: Mon Oct 19 00:07:34 2020 +0800
Commit:     Mark Hung <marklh9 at gmail.com>
CommitDate: Fri Oct 23 15:36:22 2020 +0200

    tdf#104378: don't reset para attributes while
    
    converting Chinese characters.
    
    In TextConvWrapper::ChangeText_impl, calls to
    EditView::RemoveAttribs() reset the paragraph attributes.
    That makes SvxLanguageItem of EE_CHAR_LANGUAGE_CJK become
    LANGUAGE_DONTKNOW. Hence it always stops converting after the
    first success.
    
    This patch overload EditView::RemoveAttribs() so that it is
    possible to clear all character attributes of the selction
    without touching paragraph attributes.
    
    Before, bRemoveParaAttribs either removes items between
    EE_ITEMS_START and EE_CHAR_END, or removes items between
    EE_CHAR_START and EE_CHAR_END. The patch add a new enum
    class EERemoveParaAttribsMode, with the following values:
    
    1. RemoveAll : correspond to the old bRemoveParaAttribs = true
    2. RemoveCharItems: correspond to the old bRemoveParaAttribs = false
    3. RemoveNone: new thing for "don't touch para attributes."
    
    Change-Id: I5132e708dea9e2066f13f1b001bd954d7b477f56
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/104484
    Tested-by: Jenkins
    Reviewed-by: Mark Hung <marklh9 at gmail.com>

diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx
index 91bb8217ec3f..da9520aae81a 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -754,7 +754,15 @@ void EditEngine::RemoveCharAttribs(sal_Int32 nPara, sal_uInt16 nWhich, bool bRem
 
 void EditEngine::RemoveCharAttribs(const EditSelection& rSel, bool bRemoveParaAttribs, sal_uInt16 nWhich)
 {
-    pImpEditEngine->RemoveCharAttribs(rSel, bRemoveParaAttribs, nWhich);
+    const EERemoveParaAttribsMode eMode = bRemoveParaAttribs?
+        EERemoveParaAttribsMode::RemoveAll :
+        EERemoveParaAttribsMode::RemoveCharItems;
+    pImpEditEngine->RemoveCharAttribs(rSel, eMode, nWhich);
+}
+
+void EditEngine::RemoveCharAttribs(const EditSelection& rSel, EERemoveParaAttribsMode eMode, sal_uInt16 nWhich)
+{
+    pImpEditEngine->RemoveCharAttribs(rSel, eMode, nWhich);
 }
 
 EditEngine::ViewsType& EditEngine::GetEditViews()
@@ -1770,10 +1778,13 @@ SfxItemSet EditEngine::GetAttribs( sal_Int32 nPara, sal_Int32 nStart, sal_Int32
 
 void EditEngine::RemoveAttribs( const ESelection& rSelection, bool bRemoveParaAttribs, sal_uInt16 nWhich )
 {
+    const EERemoveParaAttribsMode eMode = bRemoveParaAttribs?
+        EERemoveParaAttribsMode::RemoveAll :
+        EERemoveParaAttribsMode::RemoveCharItems;
 
     pImpEditEngine->UndoActionStart( EDITUNDO_RESETATTRIBS );
     EditSelection aSel( pImpEditEngine->ConvertSelection( rSelection.nStartPara, rSelection.nStartPos, rSelection.nEndPara, rSelection.nEndPos ) );
-    pImpEditEngine->RemoveCharAttribs( aSel, bRemoveParaAttribs, nWhich  );
+    pImpEditEngine->RemoveCharAttribs( aSel, eMode, nWhich  );
     pImpEditEngine->UndoActionEnd();
     pImpEditEngine->FormatAndUpdate();
 }
diff --git a/editeng/source/editeng/editview.cxx b/editeng/source/editeng/editview.cxx
index f13a67870902..94012cf70651 100644
--- a/editeng/source/editeng/editview.cxx
+++ b/editeng/source/editeng/editview.cxx
@@ -568,10 +568,15 @@ void EditView::RemoveAttribsKeepLanguages( bool bRemoveParaAttribs )
 
 void EditView::RemoveAttribs( bool bRemoveParaAttribs, sal_uInt16 nWhich )
 {
+    RemoveAttribs(bRemoveParaAttribs ? EERemoveParaAttribsMode::RemoveAll
+            : EERemoveParaAttribsMode::RemoveCharItems, nWhich);
+}
 
+void EditView::RemoveAttribs( EERemoveParaAttribsMode eMode, sal_uInt16 nWhich )
+{
     pImpEditView->DrawSelectionXOR();
     pImpEditView->pEditEngine->UndoActionStart( EDITUNDO_RESETATTRIBS );
-    pImpEditView->pEditEngine->RemoveCharAttribs( pImpEditView->GetEditSelection(), bRemoveParaAttribs, nWhich  );
+    pImpEditView->pEditEngine->RemoveCharAttribs( pImpEditView->GetEditSelection(), eMode, nWhich  );
     pImpEditView->pEditEngine->UndoActionEnd();
     pImpEditView->pEditEngine->FormatAndUpdate( this );
 }
diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx
index 9ab6c7fdfe88..921c0dfe5498 100644
--- a/editeng/source/editeng/impedit.hxx
+++ b/editeng/source/editeng/impedit.hxx
@@ -900,7 +900,7 @@ public:
     SfxItemSet      GetAttribs( sal_Int32 nPara, sal_Int32 nStart, sal_Int32 nEnd, GetAttribsFlags nFlags = GetAttribsFlags::ALL ) const;
     SfxItemSet      GetAttribs( EditSelection aSel, EditEngineAttribs nOnlyHardAttrib = EditEngineAttribs::All  );
     void            SetAttribs( EditSelection aSel, const SfxItemSet& rSet, SetAttribsMode nSpecial = SetAttribsMode::NONE );
-    void            RemoveCharAttribs( EditSelection aSel, bool bRemoveParaAttribs, sal_uInt16 nWhich );
+    void            RemoveCharAttribs( EditSelection aSel, EERemoveParaAttribsMode eMode, sal_uInt16 nWhich );
     void            RemoveCharAttribs( sal_Int32 nPara, sal_uInt16 nWhich = 0, bool bRemoveFeatures = false );
     void            SetFlatMode( bool bFlat );
 
diff --git a/editeng/source/editeng/impedit5.cxx b/editeng/source/editeng/impedit5.cxx
index b871247fa70d..248d78455dc4 100644
--- a/editeng/source/editeng/impedit5.cxx
+++ b/editeng/source/editeng/impedit5.cxx
@@ -577,13 +577,13 @@ void ImpEditEngine::SetAttribs( EditSelection aSel, const SfxItemSet& rSet, SetA
     }
 }
 
-void ImpEditEngine::RemoveCharAttribs( EditSelection aSel, bool bRemoveParaAttribs, sal_uInt16 nWhich )
+void ImpEditEngine::RemoveCharAttribs( EditSelection aSel, EERemoveParaAttribsMode eMode, sal_uInt16 nWhich )
 {
     aSel.Adjust( aEditDoc );
 
     sal_Int32 nStartNode = aEditDoc.GetPos( aSel.Min().GetNode() );
     sal_Int32 nEndNode = aEditDoc.GetPos( aSel.Max().GetNode() );
-
+    bool bRemoveParaAttribs = eMode == EERemoveParaAttribsMode::RemoveAll;
     const SfxItemSet* _pEmptyItemSet = bRemoveParaAttribs ? &GetEmptyItemSet() : nullptr;
 
     if ( IsUndoEnabled() && !IsInUndo() && aStatus.DoUndoAttribs() )
@@ -614,7 +614,7 @@ void ImpEditEngine::RemoveCharAttribs( EditSelection aSel, bool bRemoveParaAttri
         {
             SetParaAttribs( nNode, *_pEmptyItemSet );   // Invalidated
         }
-        else
+        else if (eMode == EERemoveParaAttribsMode::RemoveCharItems)
         {
             // For 'Format-Standard' also the character attributes should
             // disappear, which were set as paragraph attributes by the
diff --git a/editeng/source/editeng/textconv.cxx b/editeng/source/editeng/textconv.cxx
index ed08c698f5e6..3caa1124ce2b 100644
--- a/editeng/source/editeng/textconv.cxx
+++ b/editeng/source/editeng/textconv.cxx
@@ -515,7 +515,7 @@ void TextConvWrapper::ChangeText_impl( const OUString &rNewText, bool bKeepAttri
         // all attributes now. (Those attributes that may take effect left
         // to the position where the new text gets inserted after the old text
         // was deleted)
-        m_pEditView->RemoveAttribs();
+        m_pEditView->RemoveAttribs(EERemoveParaAttribsMode::RemoveNone, 0);
         // apply saved attributes to new inserted text
         m_pEditView->SetAttribs( aSet );
     }
diff --git a/include/editeng/editdata.hxx b/include/editeng/editdata.hxx
index 8d3d39591a42..40c74cb2b8c6 100644
--- a/include/editeng/editdata.hxx
+++ b/include/editeng/editdata.hxx
@@ -42,6 +42,8 @@ enum class EEAnchorMode {
             VCenterLeft, VCenterHCenter, VCenterRight,
             BottomLeft,  BottomHCenter,  BottomRight };
 
+enum class EERemoveParaAttribsMode { RemoveAll, RemoveCharItems, RemoveNone };
+
 #define EE_PARA_NOT_FOUND       SAL_MAX_INT32
 #define EE_PARA_APPEND          SAL_MAX_INT32
 #define EE_PARA_ALL             SAL_MAX_INT32
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx
index 871acf2f43b5..575e43d49e3f 100644
--- a/include/editeng/editeng.hxx
+++ b/include/editeng/editeng.hxx
@@ -609,6 +609,7 @@ public:
 
     void RemoveCharAttribs(sal_Int32 nPara, sal_uInt16 nWhich = 0, bool bRemoveFeatures = false);
     void RemoveCharAttribs(const EditSelection& rSel, bool bRemoveParaAttribs, sal_uInt16 nWhich);
+    void RemoveCharAttribs(const EditSelection& rSel, EERemoveParaAttribsMode eMode, sal_uInt16 nWhich);
 
     ViewsType& GetEditViews();
     const ViewsType& GetEditViews() const;
diff --git a/include/editeng/editview.hxx b/include/editeng/editview.hxx
index a449eff4b742..f75b5ca1228b 100644
--- a/include/editeng/editview.hxx
+++ b/include/editeng/editview.hxx
@@ -240,6 +240,7 @@ public:
     SfxItemSet          GetAttribs();
     void                SetAttribs( const SfxItemSet& rSet );
     void                RemoveAttribs( bool bRemoveParaAttribs = false, sal_uInt16 nWhich = 0 );
+    void                RemoveAttribs( EERemoveParaAttribsMode eMode, sal_uInt16 nWhich );
     void                RemoveCharAttribs( sal_Int32 nPara, sal_uInt16 nWhich );
     void                RemoveAttribsKeepLanguages( bool bRemoveParaAttribs );
 
commit f4c56849b52be5e6daebdffb1f54eccbce277414
Author:     Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
AuthorDate: Fri Oct 23 15:28:12 2020 +0200
Commit:     Gerrit Code Review <gerrit at gerrit.libreoffice.org>
CommitDate: Fri Oct 23 15:28:12 2020 +0200

    Update git submodules
    
    * Update translations from branch 'master'
      to 236b483252c94f7b38ca7fecfa16cabab498a1ac
      - update translations for master/7.1.0 alpha1
    
        and force-fix errors using pocheck
    
        Change-Id: If200fbab2e1c793a45c3f361275028afdced7b91
    
      - update translations for master
    
        and force-fix errors using pocheck
    
        Change-Id: Ia30711726a4e2c71ba0d1c4fb24c370deefc0f98

diff --git a/translations b/translations
index b7dd30b210d1..236b483252c9 160000
--- a/translations
+++ b/translations
@@ -1 +1 @@
-Subproject commit b7dd30b210d1d080404aed2dc7cf2270a10d1260
+Subproject commit 236b483252c94f7b38ca7fecfa16cabab498a1ac


More information about the Libreoffice-commits mailing list