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

Armin Le Grand (Allotropia) (via logerrit) logerrit at kemper.freedesktop.org
Fri Jun 11 07:41:16 UTC 2021


 editeng/source/uno/unotext.cxx |  106 ++++++++++++++++++++++-------------------
 1 file changed, 59 insertions(+), 47 deletions(-)

New commits:
commit 5c3ad59612697cf0afee0f836e9ee77f0920356b
Author:     Armin Le Grand (Allotropia) <armin.le.grand at me.com>
AuthorDate: Thu Jun 10 17:07:10 2021 +0200
Commit:     Armin Le Grand <Armin.Le.Grand at me.com>
CommitDate: Fri Jun 11 09:40:32 2021 +0200

    tdf#130428 remove unnecessary usage of SfxItemState::UNKNOWN
    
    In this case SfxItemState::UNKNOWN was used as boolean
    state to decide to keep extracted value or replace. First
    method even throws an exception when SfxItemState::UNKNOWN
    should happen.
    I tried to be very careful in changing these methods, so
    another look/check from reviewers will be welcome. I think
    that code was unnecessarily complicated, too, butz hope to
    not have touched semantics (behaviour) at all
    
    Change-Id: Id213fedcafcfb655749caf2659f9a15b240ec27d
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116999
    Tested-by: Jenkins
    Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
    Reviewed-by: Armin Le Grand <Armin.Le.Grand at me.com>

diff --git a/editeng/source/uno/unotext.cxx b/editeng/source/uno/unotext.cxx
index 0c4a01c748d1..20d901e0d300 100644
--- a/editeng/source/uno/unotext.cxx
+++ b/editeng/source/uno/unotext.cxx
@@ -933,42 +933,41 @@ beans::PropertyState SvxUnoTextRangeBase::_getPropertyState(const SfxItemPropert
         SvxTextForwarder* pForwarder = mpEditSource ? mpEditSource->GetTextForwarder() : nullptr;
         if( pForwarder )
         {
-            SfxItemState eItemState = SfxItemState::UNKNOWN;
-            sal_uInt16 nWID = 0;
+            SfxItemState eItemState(SfxItemState::DEFAULT);
+            bool bItemStateSet(false);
 
             switch( pMap->nWID )
             {
             case WID_FONTDESC:
                 {
                     const sal_uInt16* pWhichId = aSvxUnoFontDescriptorWhichMap;
-                    SfxItemState eTempItemState = SfxItemState::UNKNOWN;
                     while( *pWhichId )
                     {
-                        if(nPara != -1)
-                            eTempItemState = pForwarder->GetItemState( nPara, *pWhichId );
-                        else
-                            eTempItemState = pForwarder->GetItemState( GetSelection(), *pWhichId );
+                        const SfxItemState eTempItemState(nPara != -1
+                            ? pForwarder->GetItemState( nPara, *pWhichId )
+                            : pForwarder->GetItemState( GetSelection(), *pWhichId ));
 
                         switch( eTempItemState )
                         {
                         case SfxItemState::DISABLED:
                         case SfxItemState::DONTCARE:
                             eItemState = SfxItemState::DONTCARE;
+                            bItemStateSet = true;
                             break;
 
                         case SfxItemState::DEFAULT:
-                            if( eItemState != SfxItemState::DEFAULT )
+                            if( !bItemStateSet )
                             {
-                                if( eItemState == SfxItemState::UNKNOWN )
-                                    eItemState = SfxItemState::DEFAULT;
+                                eItemState = SfxItemState::DEFAULT;
+                                bItemStateSet = true;
                             }
                             break;
 
                         case SfxItemState::SET:
-                            if( eItemState != SfxItemState::SET )
+                            if( !bItemStateSet )
                             {
-                                if( eItemState == SfxItemState::UNKNOWN )
-                                    eItemState = SfxItemState::SET;
+                                eItemState = SfxItemState::SET;
+                                bItemStateSet = true;
                             }
                             break;
                         default:
@@ -984,31 +983,35 @@ beans::PropertyState SvxUnoTextRangeBase::_getPropertyState(const SfxItemPropert
             case WID_NUMBERINGSTARTVALUE:
             case WID_PARAISNUMBERINGRESTART:
                 eItemState = SfxItemState::SET;
+                bItemStateSet = true;
                 break;
 
             default:
-                nWID = pMap->nWID;
-            }
+                if(0 != pMap->nWID)
+                {
+                    if( nPara != -1 )
+                        eItemState = pForwarder->GetItemState( nPara, pMap->nWID );
+                    else
+                        eItemState = pForwarder->GetItemState( GetSelection(), pMap->nWID );
 
-            if( nWID != 0 )
-            {
-                if( nPara != -1 )
-                    eItemState = pForwarder->GetItemState( nPara, nWID );
-                else
-                    eItemState = pForwarder->GetItemState( GetSelection(), nWID );
+                    bItemStateSet = true;
+                }
+                break;
             }
 
-            switch( eItemState )
+            if(bItemStateSet)
             {
-            case SfxItemState::DONTCARE:
-            case SfxItemState::DISABLED:
-                return beans::PropertyState_AMBIGUOUS_VALUE;
-            case SfxItemState::SET:
-                return beans::PropertyState_DIRECT_VALUE;
-            case SfxItemState::DEFAULT:
-                return beans::PropertyState_DEFAULT_VALUE;
-            default: break;
-//              case SfxItemState::UNKNOWN:
+                switch( eItemState )
+                {
+                case SfxItemState::DONTCARE:
+                case SfxItemState::DISABLED:
+                    return beans::PropertyState_AMBIGUOUS_VALUE;
+                case SfxItemState::SET:
+                    return beans::PropertyState_DIRECT_VALUE;
+                case SfxItemState::DEFAULT:
+                    return beans::PropertyState_DEFAULT_VALUE;
+                default: break;
+                }
             }
         }
     }
@@ -1065,39 +1068,39 @@ bool SvxUnoTextRangeBase::_getOnePropertyStates(const SfxItemSet* pSet, const Sf
     bool bUnknownPropertyFound = false;
     if(pSet && pMap)
     {
-        SfxItemState eItemState = SfxItemState::UNKNOWN;
-        sal_uInt16 nWID = 0;
+        SfxItemState eItemState = SfxItemState::DEFAULT;
+        bool bItemStateSet(false);
 
         switch( pMap->nWID )
         {
             case WID_FONTDESC:
                 {
                     const sal_uInt16* pWhichId = aSvxUnoFontDescriptorWhichMap;
-                    SfxItemState eTempItemState = SfxItemState::UNKNOWN;
                     while( *pWhichId )
                     {
-                        eTempItemState = pSet->GetItemState( *pWhichId );
+                        const SfxItemState eTempItemState(pSet->GetItemState( *pWhichId ));
 
                         switch( eTempItemState )
                         {
                         case SfxItemState::DISABLED:
                         case SfxItemState::DONTCARE:
                             eItemState = SfxItemState::DONTCARE;
+                            bItemStateSet = true;
                             break;
 
                         case SfxItemState::DEFAULT:
-                            if( eItemState != SfxItemState::DEFAULT )
+                            if( !bItemStateSet )
                             {
-                                if( eItemState == SfxItemState::UNKNOWN )
-                                    eItemState = SfxItemState::DEFAULT;
+                                eItemState = SfxItemState::DEFAULT;
+                                bItemStateSet = true;
                             }
                             break;
 
                         case SfxItemState::SET:
-                            if( eItemState != SfxItemState::SET )
+                            if( !bItemStateSet )
                             {
-                                if( eItemState == SfxItemState::UNKNOWN )
-                                    eItemState = SfxItemState::SET;
+                                eItemState = SfxItemState::SET;
+                                bItemStateSet = true;
                             }
                             break;
                         default:
@@ -1114,31 +1117,40 @@ bool SvxUnoTextRangeBase::_getOnePropertyStates(const SfxItemSet* pSet, const Sf
             case WID_NUMBERINGSTARTVALUE:
             case WID_PARAISNUMBERINGRESTART:
                 eItemState = SfxItemState::SET;
+                bItemStateSet = true;
                 break;
 
             default:
-                nWID = pMap->nWID;
+                if(0 != pMap->nWID)
+                {
+                    eItemState = pSet->GetItemState( pMap->nWID, false );
+                    bItemStateSet = true;
+                }
+                break;
         }
 
         if( bUnknownPropertyFound )
             return false;
 
-        if( nWID != 0 )
-            eItemState = pSet->GetItemState( nWID, false );
-
-        switch( eItemState )
+        if(bItemStateSet)
         {
+            switch( eItemState )
+            {
                 case SfxItemState::SET:
                     rState = beans::PropertyState_DIRECT_VALUE;
                     break;
                 case SfxItemState::DEFAULT:
                     rState = beans::PropertyState_DEFAULT_VALUE;
                     break;
-//                  case SfxItemState::UNKNOWN:
 //                  case SfxItemState::DONTCARE:
 //                  case SfxItemState::DISABLED:
                 default:
                     rState = beans::PropertyState_AMBIGUOUS_VALUE;
+            }
+        }
+        else
+        {
+            rState = beans::PropertyState_AMBIGUOUS_VALUE;
         }
     }
     return true;


More information about the Libreoffice-commits mailing list