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 <zolnaitamas2...@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) );
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits