summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJuergen Funk <juergen.funk_ml@cib.de>2014-10-02 13:18:21 +0200
committerSamuel Mehrbrodt <s.mehrbrodt@gmail.com>2014-10-02 15:57:40 +0000
commitdc358107b88badba60bc348564034ac2ad19c65c (patch)
treec3f3d5fbf35531d1111e62e56fbcb19ea1e4fdbe
parent1f18b3b07832fee769e7a36c4f3503effde26f1e (diff)
Fix fdo#84512 Background color not shown in Styles-Dropdown
this fix is only for simple color backgrounds; gradient, hatching and bitmap are not implement. Change-Id: I5ec31c0105491c6d27835d63648fedff21998926 Reviewed-on: https://gerrit.libreoffice.org/11762 Reviewed-by: Samuel Mehrbrodt <s.mehrbrodt@gmail.com> Tested-by: Samuel Mehrbrodt <s.mehrbrodt@gmail.com>
-rw-r--r--svx/source/tbxctrls/tbcontrl.cxx64
1 files changed, 39 insertions, 25 deletions
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index fe8597d16c35..669d9855ff67 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -62,7 +62,6 @@
#include <svx/xtable.hxx>
#include <editeng/fontitem.hxx>
#include <editeng/fhgtitem.hxx>
-#include <editeng/brushitem.hxx>
#include <editeng/boxitem.hxx>
#include <editeng/charreliefitem.hxx>
#include <editeng/contouritem.hxx>
@@ -89,6 +88,9 @@
#include <editeng/eerdll.hxx>
#include <editeng/editrids.hrc>
#include <svx/xlnclit.hxx>
+#include <svx/xfillit0.hxx>
+#include <svx/xflclit.hxx>
+
#define MAX_MRU_FONTNAME_ENTRIES 5
#define LOGICAL_EDIT_HEIGHT 12
@@ -647,43 +649,55 @@ void SvxStyleBox_Impl::UserDraw( const UserDrawEvent& rUDEvt )
Color aOldColor( pDevice->GetTextColor() );
Color aOldFillColor( pDevice->GetFillColor() );
+ Color aFontCol = COL_AUTO, aBackCol = COL_AUTO;
+
pDevice->SetFont( aFont );
- Color aFontCol, aBackCol;
- bool IsNotSelect = rUDEvt.GetItemId() != GetSelectEntryPos();
+ bool IsNotSelected = rUDEvt.GetItemId() != GetSelectEntryPos();
- // text color
pItem = aItemSet.GetItem( SID_ATTR_CHAR_COLOR );
- if ( NULL != pItem )
+ // text color, when nothing is selected
+ if ( (NULL != pItem) && IsNotSelected)
aFontCol = Color( static_cast< const SvxColorItem* >( pItem )->GetValue() );
- else
- aFontCol = COL_AUTO;
- // background color
- pItem = aItemSet.GetItem( SID_ATTR_BRUSH );
- if ( NULL != pItem )
- aBackCol = Color( static_cast< const SvxBrushItem* >( pItem )->GetColor() );
- else
- aBackCol = COL_AUTO;
+ sal_uInt16 style = drawing::FillStyle_NONE;
+ // which kind of Fill style is selected
+ pItem = aItemSet.GetItem( XATTR_FILLSTYLE );
+ // only when ok and not selected
+ if ( (NULL != pItem) && IsNotSelected)
+ style = static_cast< const XFillStyleItem* >( pItem )->GetValue();
- // test is the font-, background-color not different, then change the Font-Color
+ switch(style)
+ {
+ case drawing::FillStyle_SOLID:
+ {
+ // set background color
+ pItem = aItemSet.GetItem( XATTR_FILLCOLOR );
+ if ( NULL != pItem )
+ aBackCol = Color( static_cast< const XFillColorItem* >( pItem )->GetColorValue() );
+
+ if ( aBackCol != COL_AUTO )
+ {
+ pDevice->SetFillColor( aBackCol );
+ pDevice->DrawRect( rUDEvt.GetRect() );
+ }
+ }
+ break;
+
+ //TODO Draw the other background styles: gradient, hatching and bitmap
+ }
+
+ // when the font- and background-color are too similiar, adjust the Font-Color
if( (aFontCol != COL_AUTO) || (aBackCol != COL_AUTO) )
aFontCol = TestColorsVisible(aFontCol, (aBackCol != COL_AUTO) ? aBackCol : pDevice->GetBackground().GetColor());
- // text color, when we are not selected
- if ( (aFontCol != COL_AUTO) && IsNotSelect )
+ // set text color
+ if ( aFontCol != COL_AUTO )
pDevice->SetTextColor( aFontCol );
- // background color
- if (pItem && IsNotSelect)
+ // handle the push-button
+ if (IsNotSelected)
{
- // background color, when we are not selected
- if ( aBackCol != COL_AUTO )
- {
- pDevice->SetFillColor( aBackCol );
- pDevice->DrawRect( rUDEvt.GetRect() );
- }
-
Rectangle aRect(rUDEvt.GetRect());
unsigned int nId = (aRect.getY() / aRect.GetSize().Height());
if(nId < MAX_STYLES_ENTRIES && m_pButtons[nId])