[Libreoffice-commits] core.git: Branch 'libreoffice-5-0' - cui/source sw/source

Zolnai Tamás zolnaitamas2000 at gmail.com
Wed Jun 17 00:58:43 PDT 2015


 cui/source/dialogs/srchxtra.cxx   |    1 -
 cui/source/inc/backgrnd.hxx       |    4 ++++
 cui/source/tabpages/backgrnd.cxx  |   36 +++++++++++++++++++++++++++++++++++-
 sw/source/uibase/utlui/uitool.cxx |   21 ++-------------------
 4 files changed, 41 insertions(+), 21 deletions(-)

New commits:
commit 2b13db0125dabdfa77f8b5d0e8ef934b65a4f17d
Author: Zolnai Tamás <zolnaitamas2000 at gmail.com>
Date:   Wed Jun 17 09:55:33 2015 +0200

    Handle highlighting case inside SvxBackgroundPage class
    
    ... instead of converting attributes.
    
    (cherry picked from commit 62fb96e075e79676b45912a3a8ec2702b1e3aaf2)
    
    Change-Id: I3e45c0641389a7b6bdecb5141646aa13ee5c0aa5

diff --git a/cui/source/dialogs/srchxtra.cxx b/cui/source/dialogs/srchxtra.cxx
index db41952..088ba45 100644
--- a/cui/source/dialogs/srchxtra.cxx
+++ b/cui/source/dialogs/srchxtra.cxx
@@ -113,7 +113,6 @@ void SvxSearchFormatDialog::PageCreated( sal_uInt16 nId, SfxTabPage& rPage )
     }
     else if (nId == m_nBackPageId)
     {
-        static_cast<SvxBackgroundTabPage&>(rPage).ShowParaControl(true);
         SfxAllItemSet aSet(*(GetInputSetImpl()->GetPool()));
         aSet.Put(SfxUInt32Item(SID_FLAG_TYPE,static_cast<sal_uInt32>(SvxBackgroundTabFlags::SHOW_HIGHLIGHTING)));
         rPage.PageCreated(aSet);
diff --git a/cui/source/inc/backgrnd.hxx b/cui/source/inc/backgrnd.hxx
index c08b8a1..6845c41 100644
--- a/cui/source/inc/backgrnd.hxx
+++ b/cui/source/inc/backgrnd.hxx
@@ -25,6 +25,7 @@
 #include <svx/SvxColorValueSet.hxx>
 #include <svx/dlgctrl.hxx>
 #include <editeng/brushitem.hxx>
+#include <memory>
 
 class BackgroundPreviewImpl;
 class SvxOpenGraphicDialog;
@@ -118,6 +119,8 @@ private:
     bool        bLinkOnly           : 1;
     bool        bColTransparency    : 1;
     bool        bGraphTransparency  : 1;
+    bool        bHighlighting       : 1;
+
     Graphic     aBgdGraphic;
     OUString    aBgdGraphicPath;
     OUString    aBgdGraphicFilter;
@@ -127,6 +130,7 @@ private:
 
     SvxBackgroundTable_Impl*    pTableBck_Impl;///< Items for Sw-Table must be corrected
     SvxBackgroundPara_Impl* pParaBck_Impl;///< also for the paragraph style
+    std::unique_ptr<SvxBrushItem> pHighlighting;
 
     void                FillColorValueSets_Impl();
     void                ShowColorUI_Impl();
diff --git a/cui/source/tabpages/backgrnd.cxx b/cui/source/tabpages/backgrnd.cxx
index 14c90e9..a396f49 100644
--- a/cui/source/tabpages/backgrnd.cxx
+++ b/cui/source/tabpages/backgrnd.cxx
@@ -358,10 +358,12 @@ SvxBackgroundTabPage::SvxBackgroundTabPage(vcl::Window* pParent, const SfxItemSe
     , bLinkOnly(false)
     , bColTransparency(false)
     , bGraphTransparency(false)
+    , bHighlighting(false)
     , pPageImpl(new SvxBackgroundPage_Impl)
     , pImportDlg(NULL)
     , pTableBck_Impl(NULL)
     , pParaBck_Impl(NULL)
+    , pHighlighting(nullptr)
 {
     get(m_pAsGrid, "asgrid");
     get(m_pSelectTxt, "asft");
@@ -554,6 +556,10 @@ void SvxBackgroundTabPage::Reset( const SfxItemSet* rSet )
             break;
         }
     }
+    else if( bHighlighting )
+    {
+        nSlot = SID_ATTR_BRUSH_CHAR;
+    }
     //#111173# the destination item is missing when the parent style has been changed
     if(USHRT_MAX == nDestValue && (m_pParaLBox->IsVisible()||m_pTblLBox->IsVisible()))
         nDestValue = 0;
@@ -624,7 +630,7 @@ void SvxBackgroundTabPage::Reset( const SfxItemSet* rSet )
             TblDestinationHdl_Impl(m_pTblLBox);
             m_pTblLBox->SaveValue();
         }
-        else
+        else if (m_pParaLBox->GetData() == m_pParaLBox)
         {
             sal_Int32 nValue = m_pParaLBox->GetSelectEntryPos();
 
@@ -659,6 +665,15 @@ void SvxBackgroundTabPage::Reset( const SfxItemSet* rSet )
             ParaDestinationHdl_Impl(m_pParaLBox);
             m_pParaLBox->SaveValue();
         }
+        else if( bHighlighting )
+        {
+            nWhich = GetWhich( SID_ATTR_BRUSH_CHAR );
+            if ( rSet->GetItemState( nWhich, false ) >= SfxItemState::DEFAULT )
+            {
+                pBgdAttr = static_cast<const SvxBrushItem*>(&( rSet->Get( nWhich ) ));
+                pHighlighting.reset(new SvxBrushItem(*pBgdAttr));
+            }
+        }
     }
 }
 
@@ -770,6 +785,10 @@ bool SvxBackgroundTabPage::FillItemSet( SfxItemSet* rCoreSet )
             break;
         }
     }
+    else if( bHighlighting )
+    {
+        nSlot = SID_ATTR_BRUSH_CHAR;
+    }
     sal_uInt16 nWhich = GetWhich( nSlot );
 
     const SfxPoolItem* pOld = GetOldItem( *rCoreSet, nSlot );
@@ -974,6 +993,20 @@ bool SvxBackgroundTabPage::FillItemSet( SfxItemSet* rCoreSet )
             bModified |= true;
         }
     }
+    else if( bHighlighting )
+    {
+        if( nSlot != SID_ATTR_BRUSH_CHAR )
+        {
+            const SfxPoolItem* pOldChar =
+                GetOldItem( *rCoreSet, SID_ATTR_BRUSH_CHAR );
+            if ( pOldChar && pHighlighting &&
+                (*pHighlighting != *pOldChar || *pHighlighting != SvxBrushItem(SID_ATTR_BRUSH_CHAR)))
+            {
+                rCoreSet->Put( *pHighlighting );
+                bModified |= true;
+            }
+        }
+    }
     return bModified;
 }
 
@@ -1789,6 +1822,7 @@ void SvxBackgroundTabPage::PageCreated(const SfxAllItemSet& aSet)
         if ( nFlags & SvxBackgroundTabFlags::SHOW_HIGHLIGHTING )
         {
             m_pBackGroundColorLabelFT->SetText(CUI_RES(RID_SVXSTR_CHARNAME_HIGHLIGHTING));
+            bHighlighting = true;
         }
     }
 }
diff --git a/sw/source/uibase/utlui/uitool.cxx b/sw/source/uibase/utlui/uitool.cxx
index d793a99..4b4344c 100644
--- a/sw/source/uibase/utlui/uitool.cxx
+++ b/sw/source/uibase/utlui/uitool.cxx
@@ -127,28 +127,15 @@ void ConvertAttrCharToGen(SfxItemSet& rSet, const sal_uInt8 nMode)
     {
         // Always use the visible background
         const SfxPoolItem *pTmpBrush;
-        bool bUseHighlight = false;
         if( SfxItemState::SET == rSet.GetItemState( RES_CHRATR_HIGHLIGHT, true, &pTmpBrush ) )
         {
             SvxBrushItem aTmpBrush( *static_cast<const SvxBrushItem*>(pTmpBrush) );
             if( aTmpBrush.GetColor() != COL_TRANSPARENT )
             {
-                aTmpBrush.SetWhich( RES_BACKGROUND );
+                aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND );
                 rSet.Put( aTmpBrush );
-                bUseHighlight = true;
             }
         }
-        if( !bUseHighlight )
-        {
-            if( SfxItemState::SET == rSet.GetItemState( RES_CHRATR_BACKGROUND, true, &pTmpBrush ) )
-            {
-                SvxBrushItem aTmpBrush( *static_cast<const SvxBrushItem*>(pTmpBrush) );
-                aTmpBrush.SetWhich( RES_BACKGROUND );
-                rSet.Put( aTmpBrush );
-            }
-            else
-                rSet.ClearItem(RES_BACKGROUND);
-        }
     }
 
     if( nMode == CONV_ATTR_STD )
@@ -181,12 +168,8 @@ void ConvertAttrGenToChar(SfxItemSet& rSet, const SfxItemSet& rOrigSet, const sa
     // Background / highlighting
     {
         const SfxPoolItem *pTmpItem;
-        if( SfxItemState::SET == rSet.GetItemState( RES_BACKGROUND, false, &pTmpItem ) )
+        if( SfxItemState::SET == rSet.GetItemState( RES_CHRATR_BACKGROUND, false, &pTmpItem ) )
         {
-            SvxBrushItem aTmpBrush( *static_cast<const SvxBrushItem*>(pTmpItem) );
-            aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND );
-            rSet.Put( aTmpBrush );
-
             // Highlight is an MS specific thing, so remove it at the first time when LO modifies
             // this part of the imported document.
             rSet.Put( SvxBrushItem(RES_CHRATR_HIGHLIGHT) );


More information about the Libreoffice-commits mailing list