[Libreoffice-commits] core.git: Branch 'libreoffice-4-3-7' - cui/source

Michael Stahl mstahl at redhat.com
Mon Apr 20 07:35:39 PDT 2015


 cui/source/tabpages/tparea.cxx |   46 ++++++++++++++++++++++++-----------------
 1 file changed, 28 insertions(+), 18 deletions(-)

New commits:
commit cd16cf3e499f9d0f345cd52cb92ae945189ff480
Author: Michael Stahl <mstahl at redhat.com>
Date:   Fri Apr 17 21:20:47 2015 +0200

    tdf#82784: cui: Area tab page: do not override imported bitmaps
    
    Check that we don't clobber a custom bitmap in the dialog.
    
    The (non-obvious) trick is that the name of these is non-empty, so we
    can check that to filter out pool default items that Draw likes to put
    into item sets (?), as well as just plain weird items that Draw likes to
    put into item sets, while avoiding relying on the surprisingly
    implemented ImpGraphic::operator==().
    
    (regression from 38d0047da7f964c862360b48d88cc869ad376b6b)
    
    (cherry picked from commit 171fb61c6526daf83d6948a543a1614215590946)
    
    Conflicts:
    	cui/source/tabpages/tparea.cxx
    
    Change-Id: I0b94e49ef3a9a32c188c3b117a57f780f55e1584
    Reviewed-on: https://gerrit.libreoffice.org/15372
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>
    (cherry picked from commit 00dc0e2a2d505e5281a9f5a32fa658e5fca6a6ea)
    Reviewed-on: https://gerrit.libreoffice.org/15438
    Reviewed-by: David Tardon <dtardon at redhat.com>
    Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>

diff --git a/cui/source/tabpages/tparea.cxx b/cui/source/tabpages/tparea.cxx
index 35db8ef..9f7803b 100644
--- a/cui/source/tabpages/tparea.cxx
+++ b/cui/source/tabpages/tparea.cxx
@@ -1423,28 +1423,35 @@ void SvxAreaTabPage::Reset( const SfxItemSet& rAttrs )
             m_pLbHatchBckgrdColor->SelectEntry( rColorItem.GetColorValue() );
         }
 
-        if (SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_FILLGRADIENT))
+        SfxItemState const eGradState(rAttrs.GetItemState(XATTR_FILLGRADIENT));
+        XFillGradientItem const* pGradientItem(NULL);
+        if (SFX_ITEM_DONTCARE != eGradState)
         {
-            XFillGradientItem const& rGradientItem(
-                static_cast<const XFillGradientItem&>(
-                                    rAttrs.Get(XATTR_FILLGRADIENT)) );
-            OUString  const aString( rGradientItem.GetName() );
-            XGradient const aGradient( rGradientItem.GetGradientValue() );
-
+            pGradientItem = &static_cast<const XFillGradientItem&>(
+                                    rAttrs.Get(XATTR_FILLGRADIENT));
+            OUString  const aString( pGradientItem->GetName() );
+            XGradient const aGradient( pGradientItem->GetGradientValue() );
             m_pLbGradient->SelectEntryByList(pGradientList, aString, aGradient);
         }
-        if (!m_pLbGradient->GetSelectEntryCount())
+        if (!m_pLbGradient->GetSelectEntryCount()
+            && (SFX_ITEM_DEFAULT == eGradState
+                || (pGradientItem && pGradientItem->GetName().isEmpty())))
         {   // avoid relying on pool default - cannot export that
             m_pLbGradient->SelectEntryPos(0); // anything better than nothing
             isMissingGradient = true;
         }
 
-        if (SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_FILLHATCH))
+        SfxItemState const eHatchState(rAttrs.GetItemState(XATTR_FILLHATCH));
+        XFillHatchItem const* pHatch(NULL);
+        if (SFX_ITEM_DONTCARE != eHatchState)
         {
-            m_pLbHatching->SelectEntry( static_cast<const XFillHatchItem&>(
-                            rAttrs.Get(XATTR_FILLHATCH)).GetName() );
+            pHatch = &static_cast<const XFillHatchItem&>(
+                                rAttrs.Get(XATTR_FILLHATCH));
+            m_pLbHatching->SelectEntry(pHatch->GetName());
         }
-        if (!m_pLbHatching->GetSelectEntryCount())
+        if (!m_pLbHatching->GetSelectEntryCount()
+            && (SFX_ITEM_DEFAULT == eHatchState
+                || (pHatch && pHatch->GetName().isEmpty())))
         {   // avoid relying on pool default - cannot export that
             m_pLbHatching->SelectEntryPos(0); // anything better than nothing
             isMissingHatching = true;
@@ -1455,14 +1462,17 @@ void SvxAreaTabPage::Reset( const SfxItemSet& rAttrs )
                         rAttrs.Get(XATTR_FILLBACKGROUND)).GetValue() );
         }
 
-        if (SFX_ITEM_DONTCARE != rAttrs.GetItemState(XATTR_FILLBITMAP))
+        SfxItemState const eBitmapState(rAttrs.GetItemState(XATTR_FILLBITMAP));
+        XFillBitmapItem const* pBitmapItem(NULL);
+        if (SFX_ITEM_DONTCARE != eBitmapState)
         {
-            XFillBitmapItem const& rBitmapItem(
-                    static_cast<const XFillBitmapItem&>(
-                        rAttrs.Get(XATTR_FILLBITMAP)));
-            m_pLbBitmap->SelectEntry(rBitmapItem.GetName());
+            pBitmapItem = &static_cast<const XFillBitmapItem&>(
+                            rAttrs.Get(XATTR_FILLBITMAP));
+            m_pLbBitmap->SelectEntry(pBitmapItem->GetName());
         }
-        if (!m_pLbBitmap->GetSelectEntryCount())
+        if (!m_pLbBitmap->GetSelectEntryCount()
+            && (SFX_ITEM_DEFAULT == eBitmapState
+                || (pBitmapItem && pBitmapItem->GetName().isEmpty())))
         {   // avoid relying on pool default - cannot export that
             m_pLbBitmap->SelectEntryPos(0); // anything better than nothing
             isMissingBitmap = true;


More information about the Libreoffice-commits mailing list