diff options
author | Ivan Timofeev <timofeev.i.s@gmail.com> | 2013-09-17 16:49:14 +0400 |
---|---|---|
committer | Ivan Timofeev <timofeev.i.s@gmail.com> | 2013-09-17 16:59:34 +0400 |
commit | 03a341775507502dd58598edc3fd805a8518550d (patch) | |
tree | 78a8c3b5a8133e4d69c7a1c9608aa129bfd8372b /svx/source/tbxctrls/itemwin.cxx | |
parent | 56ec59f10541b924b2ee305dabb8a98c2971e848 (diff) |
fdo#64455 Handle unknown color in color line
Change-Id: Ice4205056cc64ae50bd3c8136aeae6f648adbd0b
Signed-off-by: Ivan Timofeev <timofeev.i.s@gmail.com>
Diffstat (limited to 'svx/source/tbxctrls/itemwin.cxx')
-rw-r--r-- | svx/source/tbxctrls/itemwin.cxx | 38 |
1 files changed, 37 insertions, 1 deletions
diff --git a/svx/source/tbxctrls/itemwin.cxx b/svx/source/tbxctrls/itemwin.cxx index dbc2ede40d91..dd44ac7297c0 100644 --- a/svx/source/tbxctrls/itemwin.cxx +++ b/svx/source/tbxctrls/itemwin.cxx @@ -28,6 +28,9 @@ #include <svx/dialogs.hrc> +#define TMP_STR_BEGIN '[' +#define TMP_STR_END ']' + #define DELAY_TIMEOUT 100 #include <svx/xlnclit.hxx> @@ -295,7 +298,40 @@ SvxColorBox::~SvxColorBox() void SvxColorBox::Update( const XLineColorItem* pItem ) { if ( pItem ) - SelectEntry( pItem->GetColorValue() ); + { + // fdo#64455 + ::Color aColor = pItem->GetColorValue(); + String aString( pItem->GetName() ); + SelectEntry(aString); + if( GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND || + GetSelectEntryColor() != aColor ) + { + SelectEntry( aColor ); + } + // Check if the entry is not in the list + if( GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND || + GetSelectEntryColor() != aColor ) + { + sal_uInt16 nCount = GetEntryCount(); + String aTmpStr; + if( nCount > 0 ) + { + // Last entry gets tested against temporary color + aTmpStr = GetEntry( nCount - 1 ); + if( aTmpStr.GetChar(0) == TMP_STR_BEGIN && + aTmpStr.GetChar(aTmpStr.Len()-1) == TMP_STR_END ) + { + RemoveEntry( nCount - 1 ); + } + } + aTmpStr = TMP_STR_BEGIN; + aTmpStr += aString; + aTmpStr += TMP_STR_END; + + sal_uInt16 nPos = InsertEntry( aColor, aTmpStr ); + SelectEntryPos( nPos ); + } + } else SetNoSelection(); } |