sw/source/uibase/shells/basesh.cxx | 36 ++++++++++++++++++++++++++++++++++++ sw/source/uibase/utlui/uitool.cxx | 34 +++++++++++++++++++++++++++------- xmloff/source/text/txtexppr.cxx | 10 ++++++++-- 3 files changed, 71 insertions(+), 9 deletions(-)
New commits: commit a72faa83239aaf75f5070bd3a2cd2b79b41238c7 Author: Zolnai Tamás <[email protected]> Date: Sun Feb 22 11:48:42 2015 +0100 Char highlight: ODT export: be aware of transparent highlight Change-Id: Ic8d524375a8312f64423d3f57487bfe2a76d07f8 diff --git a/xmloff/source/text/txtexppr.cxx b/xmloff/source/text/txtexppr.cxx index 2925aec..1300c3b 100644 --- a/xmloff/source/text/txtexppr.cxx +++ b/xmloff/source/text/txtexppr.cxx @@ -27,6 +27,7 @@ #include <com/sun/star/awt/FontUnderline.hpp> #include <com/sun/star/text/XChapterNumberingSupplier.hpp> #include <tools/debug.hxx> +#include <tools/color.hxx> #include <xmloff/txtprmap.hxx> #include <xmloff/xmlexp.hxx> #include <xmloff/maptype.hxx> @@ -1125,10 +1126,15 @@ void XMLTextExportPropertySetMapper::ContextFilter( if( pClipState != NULL && pClip11State != NULL ) pClip11State->mnIndex = -1; - // When both background attributes are available export only the highlight + // When both background attributes are available export the visible one if( pCharHighlight && pCharBackground ) { - pCharBackground->mnIndex = -1; + sal_uInt32 nColor = COL_TRANSPARENT; + pCharHighlight->maValue >>= nColor; + if( nColor == COL_TRANSPARENT ) + pCharHighlight->mnIndex = -1; + else + pCharBackground->mnIndex = -1; } SvXMLExportPropertyMapper::ContextFilter(bEnableFoFontFamily, rProperties, rPropSet); commit ef1a27657c9e1a394a5662a211bdb38153c4d0ba Author: Zolnai Tamás <[email protected]> Date: Sun Feb 22 11:57:31 2015 +0100 Char highlight: "Background Color" toolbar item Extend the usage of this item to text ranges. Change-Id: Ia7873e671b3a256f4cecb31d00e408a694332159 diff --git a/sw/source/uibase/shells/basesh.cxx b/sw/source/uibase/shells/basesh.cxx index 6813b0a..09f4795 100644 --- a/sw/source/uibase/shells/basesh.cxx +++ b/sw/source/uibase/shells/basesh.cxx @@ -2154,6 +2154,27 @@ void SwBaseShell::GetBckColState(SfxItemSet &rSet) { rSh.GetBoxBackground( aBrushItem ); } + else if(nSelType & nsSelectionType::SEL_TXT && rSh.HasSelection()) // text range selected + { + SfxItemSet aCoreSet(GetPool(), RES_CHRATR_BEGIN, RES_CHRATR_END-1); + + rSh.GetCurAttr(aCoreSet); + + // Always use the visible background + const SfxPoolItem *pTmpBrush; + if( SfxItemState::SET == aCoreSet.GetItemState( RES_CHRATR_HIGHLIGHT, true, &pTmpBrush ) ) + { + aBrushItem = *static_cast<const SvxBrushItem*>(pTmpBrush); + } + if( aBrushItem.GetColor() == COL_TRANSPARENT ) + { + if( SfxItemState::SET == aCoreSet.GetItemState( RES_CHRATR_BACKGROUND, true, &pTmpBrush ) ) + { + aBrushItem = *static_cast<const SvxBrushItem*>(pTmpBrush); + } + } + aBrushItem.SetWhich(RES_BACKGROUND); + } else { //UUUU Adapt to new DrawingLayer FillStyle; use a parent which has XFILL_NONE set @@ -2213,6 +2234,10 @@ void SwBaseShell::ExecBckCol(SfxRequest& rReq) { rSh.GetBoxBackground( aBrushItem ); } + else if(nSelType & nsSelectionType::SEL_TXT && rSh.HasSelection()) // text range selected + { + // This is really necessary to get the brush item before set it?? + } else { //UUUU Adapt to new DrawingLayer FillStyle; use a parent which has XFILL_NONE set @@ -2272,6 +2297,17 @@ void SwBaseShell::ExecBckCol(SfxRequest& rReq) { rSh.SetBoxBackground( aBrushItem ); } + else if(nSelType & nsSelectionType::SEL_TXT && rSh.HasSelection()) // text range selected + { + SfxItemSet aCoreSet(GetPool(), RES_CHRATR_BEGIN, RES_CHRATR_END-1); + + aBrushItem.SetWhich( RES_CHRATR_BACKGROUND ); + aCoreSet.Put( aBrushItem ); + + SvxBrushItem aTransparentBrush( RES_CHRATR_HIGHLIGHT ); + aCoreSet.Put( aTransparentBrush ); + rSh.SetAttrSet(aCoreSet); + } else { //UUUU Adapt to new DrawingLayer FillStyle; use a parent which has XFILL_NONE set commit e1673e2eddcfd91e7596c80ac57d5f3964b5f7f4 Author: Zolnai Tamás <[email protected]> Date: Sat Feb 21 20:24:20 2015 +0100 Char highlight: character properties dialog Modify character highlight using character dialog's "Background" tab. Change-Id: I693aebe1915e6b77af9919acf223fb2c87608516 diff --git a/sw/source/uibase/utlui/uitool.cxx b/sw/source/uibase/utlui/uitool.cxx index 86a9cb1..ffa7ed4 100644 --- a/sw/source/uibase/utlui/uitool.cxx +++ b/sw/source/uibase/utlui/uitool.cxx @@ -122,17 +122,32 @@ void PrepareBoxInfo(SfxItemSet& rSet, const SwWrtShell& rSh) void ConvertAttrCharToGen(SfxItemSet& rSet, const sal_uInt8 nMode) { - // Background + // Background / highlight { + // Always use the visible background const SfxPoolItem *pTmpBrush; - if( SfxItemState::SET == rSet.GetItemState( RES_CHRATR_BACKGROUND, true, &pTmpBrush ) ) + bool bUseHighlight = false; + if( SfxItemState::SET == rSet.GetItemState( RES_CHRATR_HIGHLIGHT, true, &pTmpBrush ) ) { SvxBrushItem aTmpBrush( *static_cast<const SvxBrushItem*>(pTmpBrush) ); - aTmpBrush.SetWhich( RES_BACKGROUND ); - rSet.Put( aTmpBrush ); + if( aTmpBrush.GetColor() != COL_TRANSPARENT ) + { + aTmpBrush.SetWhich( RES_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); } - else - rSet.ClearItem(RES_BACKGROUND); } if( nMode == CONV_ATTR_STD ) @@ -162,14 +177,19 @@ void ConvertAttrCharToGen(SfxItemSet& rSet, const sal_uInt8 nMode) void ConvertAttrGenToChar(SfxItemSet& rSet, const sal_uInt8 nMode) { - // Background + // Background / highlight { + // Highlight is an MS specific thing, so remove it at the first time when LO modifies + // this part of the imported document. const SfxPoolItem *pTmpBrush; if( SfxItemState::SET == rSet.GetItemState( RES_BACKGROUND, false, &pTmpBrush ) ) { SvxBrushItem aTmpBrush( *static_cast<const SvxBrushItem*>(pTmpBrush) ); aTmpBrush.SetWhich( RES_CHRATR_BACKGROUND ); rSet.Put( aTmpBrush ); + + SvxBrushItem aTransparentBrush( RES_CHRATR_HIGHLIGHT ); + rSet.Put( aTransparentBrush ); } rSet.ClearItem( RES_BACKGROUND ); }
_______________________________________________ Libreoffice-commits mailing list [email protected] http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
