[Libreoffice-commits] core.git: Branch 'feature/sidebar' - svx/source

Armin Le Grand alg at apache.org
Thu May 9 08:08:40 PDT 2013


 svx/source/sidebar/line/LinePropertyPanel.cxx |  225 ++++++++++++++------------
 svx/source/sidebar/line/LinePropertyPanel.hxx |    5 
 2 files changed, 126 insertions(+), 104 deletions(-)

New commits:
commit b2b7ad3f362ad0de5b3c0f92786b3caa03a05d12
Author: Armin Le Grand <alg at apache.org>
Date:   Tue Apr 23 12:53:29 2013 +0000

    Resolves: #ii122111# Corrected LinePropertyPanel::NotifyItemUpdate
    
    to use pState with more care
    
    (cherry picked from commit 12df8f6dd3ed9ea37d9d0dd61bc56ada3bc062b1)
    
    Conflicts:
    	svx/source/sidebar/line/LinePropertyPanel.cxx
    
    Change-Id: I380a4f9f8e43340ee03a1cd10546367b6818f74e

diff --git a/svx/source/sidebar/line/LinePropertyPanel.cxx b/svx/source/sidebar/line/LinePropertyPanel.cxx
index c6da700..61f07b0 100644
--- a/svx/source/sidebar/line/LinePropertyPanel.cxx
+++ b/svx/source/sidebar/line/LinePropertyPanel.cxx
@@ -224,12 +224,7 @@ LinePropertyPanel::LinePropertyPanel(
     mxFrame(rxFrame),
     mpBindings(pBindings),
     mbColorAvailable(true),
-    mbStyleAvailable(false),
-    mbDashAvailable(false),
-    mbTransAvailable(true),
-    mbWidthValuable(true),
-    mbStartAvailable(true),
-    mbEndAvailable(true)
+    mbWidthValuable(true)
 {
     Initialize();
     FreeResource();
@@ -387,42 +382,43 @@ void LinePropertyPanel::NotifyItemUpdate(
     const bool bIsEnabled)
 {
     (void)bIsEnabled;
+    const bool bDisabled(SFX_ITEM_DISABLED == eState);
 
     switch(nSID)
     {
         case SID_ATTR_LINE_COLOR:
         {
-            if( eState == SFX_ITEM_DISABLED)
+            if(bDisabled)
             {
                 mpFTColor->Disable();
                 mpTBColor->Disable();
-                mbColorAvailable = false;
-                mpColorUpdater->Update(COL_WHITE);
             }
             else
             {
                 mpFTColor->Enable();
                 mpTBColor->Enable();
-                const XLineColorItem* pItem = dynamic_cast< const XLineColorItem* >(pState);
+            }
 
-                if(eState >= SFX_ITEM_DEFAULT && pItem)
+            if(eState >= SFX_ITEM_DEFAULT)
+            {
+                const XLineColorItem* pItem = dynamic_cast< const XLineColorItem* >(pState);
+                if(pItem)
                 {
                     maColor = pItem->GetColorValue();
                     mbColorAvailable = true;
                     mpColorUpdater->Update(maColor);
-                }
-                else
-                {
-                    mbColorAvailable = false;
-                    mpColorUpdater->Update(COL_WHITE);
+                    break;
                 }
             }
+
+            mbColorAvailable = false;
+            mpColorUpdater->Update(COL_WHITE);
             break;
         }
         case SID_ATTR_LINE_DASH:
         case SID_ATTR_LINE_STYLE:
         {
-            if( eState == SFX_ITEM_DISABLED)
+            if(bDisabled)
             {
                 mpFTStyle->Disable();
                 mpLBStyle->Disable();
@@ -431,140 +427,159 @@ void LinePropertyPanel::NotifyItemUpdate(
             {
                 mpFTStyle->Enable();
                 mpLBStyle->Enable();
-                if( eState  >= SFX_ITEM_DEFAULT )
+            }
+
+            if(eState  >= SFX_ITEM_DEFAULT)
+            {
+                if(nSID == SID_ATTR_LINE_STYLE)
                 {
-                    if(nSID == SID_ATTR_LINE_STYLE)
-                    {
-                        const XLineStyleItem* pItem = dynamic_cast< const XLineStyleItem* >(pState);
+                    const XLineStyleItem* pItem = dynamic_cast< const XLineStyleItem* >(pState);
 
-                        if(pItem)
-                        {
-                            mbStyleAvailable =true;
-                            mpStyleItem.reset(pState ? (XLineStyleItem*)pItem->Clone() : 0);
-                        }
-                    }
-                    else if(nSID == SID_ATTR_LINE_DASH)
+                    if(pItem)
                     {
-                        const XLineDashItem* pItem = dynamic_cast< const XLineDashItem* >(pState);
+                        mpStyleItem.reset(pState ? (XLineStyleItem*)pItem->Clone() : 0);
+                    }
+                }
+                else // if(nSID == SID_ATTR_LINE_DASH)
+                {
+                    const XLineDashItem* pItem = dynamic_cast< const XLineDashItem* >(pState);
 
-                        if(pItem)
-                        {
-                            mbDashAvailable = true;
-                            mpDashItem.reset(pState ? (XLineDashItem*)pItem->Clone() : 0);
-                        }
+                    if(pItem)
+                    {
+                        mpDashItem.reset(pState ? (XLineDashItem*)pItem->Clone() : 0);
                     }
                 }
+            }
+            else
+            {
+                if(nSID == SID_ATTR_LINE_STYLE)
+                {
+                    mpStyleItem.reset(0);
+                }
                 else
                 {
-                    if(nSID == SID_ATTR_LINE_STYLE)
-                        mbStyleAvailable = false;
-                    else
-                        mbDashAvailable = false;
+                    mpDashItem.reset(0);
                 }
-
-                SelectLineStyle();
             }
+
+            SelectLineStyle();
             break;
         }
         case SID_ATTR_LINE_TRANSPARENCE:
         {
-            if( eState == SFX_ITEM_DISABLED )
+            if(bDisabled)
             {
                 mpFTTrancparency->Disable();
                 mpMFTransparent->Disable();
-                mpMFTransparent->SetValue(0);//add
-                mpMFTransparent->SetText(String());
-                mbTransAvailable = false;
             }
             else
             {
                 mpFTTrancparency->Enable();
                 mpMFTransparent->Enable();
-                mbTransAvailable = true;
+            }
+
+            if(eState >= SFX_ITEM_DEFAULT)
+            {
                 const XLineTransparenceItem* pItem = dynamic_cast< const XLineTransparenceItem* >(pState);
 
-                if(eState != SFX_ITEM_DONTCARE && pItem)
+                if(pItem)
                 {
                     mnTrans = pItem->GetValue();
                     mpMFTransparent->SetValue(mnTrans);
-                }
-                else
-                {
-                    mpMFTransparent->SetValue(0);//add
-                    mpMFTransparent->SetText(String());
+                    break;
                 }
             }
+
+            mpMFTransparent->SetValue(0);//add
+            mpMFTransparent->SetText(String());
             break;
         }
         case SID_ATTR_LINE_WIDTH:
         {
-            if(eState == SFX_ITEM_DISABLED)
+            if(bDisabled)
             {
                 mpTBWidth->Disable();
                 mpFTWidth->Disable();
             }
             else
             {
-                //enable
                 mpTBWidth->Enable();
                 mpFTWidth->Enable();
+            }
+
+            if(eState >= SFX_ITEM_DEFAULT)
+            {
                 const XLineWidthItem* pItem = dynamic_cast< const XLineWidthItem* >(pState);
 
-                if(eState >= SFX_ITEM_AVAILABLE && pItem)
+                if(pItem)
                 {
                     mnWidthCoreValue = pItem->GetValue();
                     mbWidthValuable = true;
-                }
-                else
-                {
-                    mbWidthValuable = false;
+                    SetWidthIcon();
+                    break;
                 }
             }
+
+            mbWidthValuable = false;
             SetWidthIcon();
             break;
         }
         case SID_ATTR_LINE_START:
         {
-            mpFTArrow->Enable();
-            mpLBStart->Enable();
+            if(bDisabled)
+            {
+                mpFTArrow->Disable();
+                mpLBStart->Disable();
+            }
+            else
+            {
+                mpFTArrow->Enable();
+                mpLBStart->Enable();
+            }
 
-            if(eState != SFX_ITEM_DONTCARE)
+            if(eState >= SFX_ITEM_DEFAULT)
             {
                 const XLineStartItem* pItem = dynamic_cast< const XLineStartItem* >(pState);
 
                 if(pItem)
                 {
-                    mbStartAvailable = true;    //add
                     mpStartItem.reset(pItem ? (XLineStartItem*)pItem->Clone() : 0);
                     SelectEndStyle(true);
                     break;
                 }
             }
 
-            mpLBStart->SetNoSelection();
-            mbStartAvailable = false;   //add
+            mpStartItem.reset(0);
+            SelectEndStyle(true);
             break;
         }
         case SID_ATTR_LINE_END:
         {
-            mpFTArrow->Enable();
-            mpLBEnd->Enable();
+            if(bDisabled)
+            {
+                mpFTArrow->Disable();
+                mpLBEnd->Disable();
+            }
+            else
+            {
+                mpFTArrow->Enable();
+                mpLBEnd->Enable();
+            }
 
-            if(eState != SFX_ITEM_DONTCARE)
+            if(eState >= SFX_ITEM_DEFAULT)
             {
                 const XLineEndItem* pItem = dynamic_cast< const XLineEndItem* >(pState);
 
                 if(pItem)
                 {
-                    mbEndAvailable = true;      //add
                     mpEndItem.reset(pItem ? (XLineEndItem*)pItem->Clone() : 0);
                     SelectEndStyle(false);
                     break;
                 }
             }
 
-            mpLBEnd->SetNoSelection();
-            mbEndAvailable = false;     //add
+            mpEndItem.reset(0);
+            SelectEndStyle(false);
             break;
         }
         case SID_LINEEND_LIST:
@@ -582,18 +597,23 @@ void LinePropertyPanel::NotifyItemUpdate(
         }
         case SID_ATTR_LINE_JOINT:
         {
-            if(eState == SFX_ITEM_DISABLED)
+            if(bDisabled)
             {
                 mpLBEdgeStyle->Disable();
             }
             else
             {
                 mpLBEdgeStyle->Enable();
+            }
+
+            if(eState >= SFX_ITEM_DEFAULT)
+            {
                 const XLineJointItem* pItem = dynamic_cast< const XLineJointItem* >(pState);
-                sal_uInt16 nEntryPos(0);
 
-                if(eState >= SFX_ITEM_AVAILABLE && pItem)
+                if(pItem)
                 {
+                    sal_uInt16 nEntryPos(0);
+
                     switch(pItem->GetValue())
                     {
                         case com::sun::star::drawing::LineJoint_MIDDLE:
@@ -621,33 +641,37 @@ void LinePropertyPanel::NotifyItemUpdate(
                         default:
                             break;
                     }
-                }
 
-                if(nEntryPos)
-                {
-                    mpLBEdgeStyle->SelectEntryPos(nEntryPos - 1);
-                }
-                else
-                {
-                    mpLBEdgeStyle->SetNoSelection();
+                    if(nEntryPos)
+                    {
+                        mpLBEdgeStyle->SelectEntryPos(nEntryPos - 1);
+                        break;
+                    }
                 }
             }
+
+            mpLBEdgeStyle->SetNoSelection();
             break;
         }
         case SID_ATTR_LINE_CAP:
         {
-            if(eState == SFX_ITEM_DISABLED)
+            if(bDisabled)
             {
                 mpLBCapStyle->Disable();
             }
             else
             {
                 mpLBCapStyle->Enable();
+            }
+
+            if(eState >= SFX_ITEM_DEFAULT)
+            {
                 const XLineCapItem* pItem = dynamic_cast< const XLineCapItem* >(pState);
-                sal_uInt16 nEntryPos(0);
 
-                if(eState >= SFX_ITEM_AVAILABLE && pItem)
+                if(pItem)
                 {
+                    sal_uInt16 nEntryPos(0);
+
                     switch(pItem->GetValue())
                     {
                         case com::sun::star::drawing::LineCap_BUTT:
@@ -669,16 +693,15 @@ void LinePropertyPanel::NotifyItemUpdate(
                         default:
                             break;
                     }
-                }
 
-                if(nEntryPos)
-                {
-                    mpLBCapStyle->SelectEntryPos(nEntryPos - 1);
-                }
-                else
-                {
-                    mpLBCapStyle->SetNoSelection();
+                    if(nEntryPos)
+                    {
+                        mpLBCapStyle->SelectEntryPos(nEntryPos - 1);
+                        break;
+                    }
                 }
+
+                mpLBCapStyle->SetNoSelection();
             }
             break;
         }
@@ -1049,7 +1072,7 @@ void  LinePropertyPanel::FillLineStyleList()
 
 void LinePropertyPanel::SelectLineStyle()
 {
-    if( !mbStyleAvailable || !mbDashAvailable )
+    if( !mpStyleItem.get() || !mpDashItem.get() )
     {
         mpLBStyle->SetNoSelection();
         return;
@@ -1094,13 +1117,12 @@ void LinePropertyPanel::SelectEndStyle(bool bStart)
 
     if(bStart)
     {
-        //<<add
-        if( !mbStartAvailable )
+        if( !mpStartItem.get() )
         {
             mpLBStart->SetNoSelection();
             return;
         }
-        //add end>>
+
         if (mpStartItem && mxLineEndList.is())
         {
             const basegfx::B2DPolyPolygon& rItemPolygon = mpStartItem->GetLineStartValue();
@@ -1115,18 +1137,20 @@ void LinePropertyPanel::SelectEndStyle(bool bStart)
                 }
             }
         }
+
         if(!bSelected)
+        {
             mpLBStart->SelectEntryPos( 0 );
+        }
     }
     else
     {
-        //<<add
-        if( !mbEndAvailable )
+        if( !mpEndItem.get() )
         {
             mpLBEnd->SetNoSelection();
             return;
         }
-        //add end>>
+
         if (mpEndItem && mxLineEndList.is())
         {
             const basegfx::B2DPolyPolygon& rItemPolygon = mpEndItem->GetLineEndValue();
@@ -1141,8 +1165,11 @@ void LinePropertyPanel::SelectEndStyle(bool bStart)
                 }
             }
         }
+
         if(!bSelected)
+        {
             mpLBEnd->SelectEntryPos( 0 );
+        }
     }
 }
 
diff --git a/svx/source/sidebar/line/LinePropertyPanel.hxx b/svx/source/sidebar/line/LinePropertyPanel.hxx
index ba77e5a..b2f97bd 100644
--- a/svx/source/sidebar/line/LinePropertyPanel.hxx
+++ b/svx/source/sidebar/line/LinePropertyPanel.hxx
@@ -148,12 +148,7 @@ private:
 
     /// bitfield
     bool                mbColorAvailable : 1;
-    bool                mbStyleAvailable : 1;
-    bool                mbDashAvailable : 1;
-    bool                mbTransAvailable : 1;
     bool                mbWidthValuable : 1;
-    bool                mbStartAvailable : 1;
-    bool                mbEndAvailable : 1;
 
     void SetupIcons(void);
     void Initialize();


More information about the Libreoffice-commits mailing list