[Libreoffice-commits] core.git: sd/source sd/uiconfig
Katarina Behrens
Katarina.Behrens at cib.de
Mon Nov 2 04:36:26 PST 2015
sd/source/ui/dlg/dlgchar.cxx | 6 ++++
sd/source/ui/func/fuchar.cxx | 43 +++++++++++++++++++++++++++++++--
sd/source/ui/inc/dlg_char.hxx | 1
sd/uiconfig/sdraw/ui/drawchardialog.ui | 14 ++++++++++
4 files changed, 62 insertions(+), 2 deletions(-)
New commits:
commit ecc7308efa973fd1f1985ff9a0a0f01414b73f2b
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date: Fri Oct 30 16:13:27 2015 +0100
tdf#88276: New text background tab in char formatting dialog
Change-Id: I81880456d398e8bffd363626bac17ff9d54e7796
Reviewed-on: https://gerrit.libreoffice.org/19697
Reviewed-by: Oliver Specht <oliver.specht at cib.de>
Tested-by: Oliver Specht <oliver.specht at cib.de>
diff --git a/sd/source/ui/dlg/dlgchar.cxx b/sd/source/ui/dlg/dlgchar.cxx
index 5e44899..60db745 100644
--- a/sd/source/ui/dlg/dlgchar.cxx
+++ b/sd/source/ui/dlg/dlgchar.cxx
@@ -46,6 +46,7 @@ SdCharDlg::SdCharDlg( vcl::Window* pParent, const SfxItemSet* pAttr,
mnCharName = AddTabPage( "RID_SVXPAGE_CHAR_NAME", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_NAME ), 0 );
mnCharEffects = AddTabPage( "RID_SVXPAGE_CHAR_EFFECTS", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_EFFECTS ), 0 );
mnCharPosition = AddTabPage( "RID_SVXPAGE_CHAR_POSITION", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_CHAR_POSITION ), 0 );
+ mnCharBackground = AddTabPage( "RID_SVXPAGE_BACKGROUND", pFact->GetTabPageCreatorFunc( RID_SVXPAGE_BACKGROUND ), 0 );
}
void SdCharDlg::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
@@ -62,6 +63,11 @@ void SdCharDlg::PageCreated( sal_uInt16 nId, SfxTabPage &rPage )
{
rPage.PageCreated(aSet);
}
+ else if (nId == mnCharBackground)
+ {
+ aSet.Put(SfxUInt32Item(SID_FLAG_TYPE,static_cast<sal_uInt32>(SvxBackgroundTabFlags::SHOW_HIGHLIGHTING)));
+ rPage.PageCreated(aSet);
+ }
}
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sd/source/ui/func/fuchar.cxx b/sd/source/ui/func/fuchar.cxx
index 5b5227c..705cb16 100644
--- a/sd/source/ui/func/fuchar.cxx
+++ b/sd/source/ui/func/fuchar.cxx
@@ -24,6 +24,8 @@
#include <editeng/editdata.hxx>
#include <svx/svxids.hrc>
#include <editeng/eeitem.hxx>
+#include <editeng/colritem.hxx>
+#include <editeng/brushitem.hxx>
#include <vcl/msgbox.hxx>
#include <sfx2/bindings.hxx>
#include <sfx2/request.hxx>
@@ -66,10 +68,33 @@ void FuChar::DoExecute( SfxRequest& rReq )
SfxItemSet aEditAttr( mpDoc->GetPool() );
mpView->GetAttributes( aEditAttr );
+ static const sal_uInt16 aRanges[] =
+ {
+ EE_ITEMS_START, EE_ITEMS_END,
+ SID_ATTR_BRUSH_CHAR, SID_ATTR_BRUSH_CHAR,
+ 0
+ };
+
SfxItemSet aNewAttr( mpViewShell->GetPool(),
- EE_ITEMS_START, EE_ITEMS_END );
+ aRanges );
aNewAttr.Put( aEditAttr, false );
+ // EE_CHAR_BKGCOLOR is SvxBackgroundColorItem, but char background tabpage
+ // can only work with SvxBrushItems (it requires major undertaking to have
+ // it support anything else). Do the following then:
+ const SfxPoolItem* pItem;
+ if ( aNewAttr.GetItemState( EE_CHAR_BKGCOLOR, true, &pItem ) == SfxItemState::SET )
+ {
+ // extract Color outta SvxBackColorItem
+ Color aBackColor = static_cast<const SvxBackgroundColorItem*>(pItem)->GetValue();
+ // make new SvxBrushItem with this Color
+ SvxBrushItem aBrushItem( aBackColor, SID_ATTR_BRUSH_CHAR );
+
+ aNewAttr.ClearItem( EE_CHAR_BKGCOLOR );
+ // and stick it into the set
+ aNewAttr.Put( aBrushItem );
+ }
+
SdAbstractDialogFactory* pFact = SdAbstractDialogFactory::Create();
std::unique_ptr<SfxAbstractTabDialog> pDlg(pFact ? pFact->CreateSdTabCharDialog( NULL, &aNewAttr, mpDoc->GetDocSh() ) : 0);
sal_uInt16 nResult = RET_CANCEL;
@@ -84,7 +109,20 @@ void FuChar::DoExecute( SfxRequest& rReq )
if( nResult == RET_OK )
{
- rReq.Done( *( pDlg->GetOutputItemSet() ) );
+ const SfxItemSet* pOutputSet = pDlg->GetOutputItemSet();
+ SfxItemSet pOtherSet( *pOutputSet );
+
+ // and now the reverse process
+ const SvxBrushItem* pBrushItem= static_cast<const SvxBrushItem*>(pOtherSet.GetItem( SID_ATTR_BRUSH_CHAR ));
+
+ if ( pBrushItem )
+ {
+ SvxBackgroundColorItem aBackColorItem( pBrushItem->GetColor(), EE_CHAR_BKGCOLOR );
+ pOtherSet.ClearItem( SID_ATTR_BRUSH_CHAR );
+ pOtherSet.Put( aBackColorItem );
+ }
+
+ rReq.Done( pOtherSet );
pArgs = rReq.GetArgs();
}
}
@@ -105,6 +143,7 @@ void FuChar::DoExecute( SfxRequest& rReq )
SID_ATTR_CHAR_UNDERLINE,
SID_ATTR_CHAR_FONTHEIGHT,
SID_ATTR_CHAR_COLOR,
+ SID_ATTR_CHAR_BACK_COLOR,
SID_ATTR_CHAR_KERNING,
SID_ATTR_CHAR_CASEMAP,
SID_SET_SUPER_SCRIPT,
diff --git a/sd/source/ui/inc/dlg_char.hxx b/sd/source/ui/inc/dlg_char.hxx
index 1075eed..361afd8 100644
--- a/sd/source/ui/inc/dlg_char.hxx
+++ b/sd/source/ui/inc/dlg_char.hxx
@@ -34,6 +34,7 @@ private:
sal_uInt16 mnCharName;
sal_uInt16 mnCharEffects;
sal_uInt16 mnCharPosition;
+ sal_uInt16 mnCharBackground;
const SfxObjectShell& rDocShell;
diff --git a/sd/uiconfig/sdraw/ui/drawchardialog.ui b/sd/uiconfig/sdraw/ui/drawchardialog.ui
index 797a2e5..424ffb4 100644
--- a/sd/uiconfig/sdraw/ui/drawchardialog.ui
+++ b/sd/uiconfig/sdraw/ui/drawchardialog.ui
@@ -130,6 +130,20 @@
<property name="tab_fill">False</property>
</packing>
</child>
+ <child>
+ <placeholder/>
+ </child>
+ <child type="tab">
+ <object class="GtkLabel" id="RID_SVXPAGE_BACKGROUND">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes">Background</property>
+ </object>
+ <packing>
+ <property name="position">3</property>
+ <property name="tab_fill">False</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
More information about the Libreoffice-commits
mailing list