diff options
author | Juergen Funk <juergen.funk_ml@cib.de> | 2014-10-02 13:18:21 +0200 |
---|---|---|
committer | Samuel Mehrbrodt <s.mehrbrodt@gmail.com> | 2014-10-02 15:57:40 +0000 |
commit | dc358107b88badba60bc348564034ac2ad19c65c (patch) | |
tree | c3f3d5fbf35531d1111e62e56fbcb19ea1e4fdbe | |
parent | 1f18b3b07832fee769e7a36c4f3503effde26f1e (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.cxx | 64 |
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]) |