summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJoren De Cuyper <joren.libreoffice@telenet.be>2013-02-20 15:16:46 +0100
committerMiklos Vajna <vmiklos@suse.cz>2013-03-04 10:08:22 +0000
commitc56ae179f83034df407cd609a69c140d24d3ec6d (patch)
tree473c88f3c258b4a7199b9aec46cadf02faadf3bb
parentaa1d118f9474ca0be4b1fcdc2749dd4020e05ffc (diff)
resolve fdo#54335 type an existing style name into Style box changes hierarchy
Change-Id: If2fd4eecec4f6f031b264a9a1b0c31e938194878 Reviewed-on: https://gerrit.libreoffice.org/2292 Reviewed-by: Thorsten Behrens <tbehrens@suse.com> Tested-by: Thorsten Behrens <tbehrens@suse.com> Reviewed-on: https://gerrit.libreoffice.org/2440 Reviewed-by: Miklos Vajna <vmiklos@suse.cz> Tested-by: Miklos Vajna <vmiklos@suse.cz>
-rw-r--r--svx/source/tbxctrls/tbcontrl.cxx40
1 files changed, 30 insertions, 10 deletions
diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index fab046635950..112ef1fc23a4 100644
--- a/svx/source/tbxctrls/tbcontrl.cxx
+++ b/svx/source/tbxctrls/tbcontrl.cxx
@@ -371,20 +371,20 @@ void SvxStyleBox_Impl::Select()
if ( !IsTravelSelect() )
{
- String aSelEntry( GetText() );
+ String aSearchEntry( GetText() );
bool bDoIt = true, bClear = false;
if( bInSpecialMode )
{
- if( aSelEntry == aClearFormatKey && GetSelectEntryPos() == 0 )
+ if( aSearchEntry == aClearFormatKey && GetSelectEntryPos() == 0 )
{
- aSelEntry = sDefaultStyle;
+ aSearchEntry = sDefaultStyle;
bClear = true;
//not only apply default style but also call 'ClearFormatting'
Sequence< PropertyValue > aEmptyVals;
- SfxToolBoxControl::Dispatch( m_xDispatchProvider, rtl::OUString(".uno:ResetAttributes"),
+ SfxToolBoxControl::Dispatch( m_xDispatchProvider, OUString(".uno:ResetAttributes"),
aEmptyVals);
}
- else if( aSelEntry == aMoreKey && GetSelectEntryPos() == ( GetEntryCount() - 1 ) )
+ else if( aSearchEntry == aMoreKey && GetSelectEntryPos() == ( GetEntryCount() - 1 ) )
{
SfxViewFrame* pViewFrm = SfxViewFrame::Current();
DBG_ASSERT( pViewFrm, "SvxStyleBox_Impl::Select(): no viewframe" );
@@ -401,8 +401,28 @@ void SvxStyleBox_Impl::Select()
}
}
- // #i36723# after ReleaseFocus() the new entry is included into the List
- sal_Bool bCreateNew = GetSelectEntryPos() == LISTBOX_ENTRY_NOTFOUND;
+ //Do we need to create a new style?
+ SfxObjectShell *pShell = SfxObjectShell::Current();
+ SfxStyleSheetBasePool* pPool = pShell->GetStyleSheetPool();
+ SfxStyleSheetBase* pStyle = NULL;
+
+ bool bCreateNew = 0;
+
+ if ( pPool )
+ {
+ pPool->SetSearchMask( eStyleFamily, SFXSTYLEBIT_ALL );
+
+ pStyle = pPool->First();
+ while ( pStyle && String( pStyle->GetName() ) != aSearchEntry )
+ pStyle = pPool->Next();
+ }
+
+ if ( !pStyle )
+ {
+ // cannot find the style for whatever reason
+ // therefore create a new style
+ bCreateNew = 1;
+ }
/* #i33380# DR 2004-09-03 Moved the following line above the Dispatch() call.
This instance may be deleted in the meantime (i.e. when a dialog is opened
@@ -412,17 +432,17 @@ void SvxStyleBox_Impl::Select()
if( bDoIt )
{
if ( bClear )
- SetText( aSelEntry );
+ SetText( aSearchEntry );
SaveValue();
Sequence< PropertyValue > aArgs( 2 );
- aArgs[0].Value = makeAny( OUString( aSelEntry ) );
+ aArgs[0].Value = makeAny( OUString( aSearchEntry ) );
aArgs[1].Name = OUString("Family");
aArgs[1].Value = makeAny( sal_Int16( eStyleFamily ));
if( bCreateNew )
{
aArgs[0].Name = OUString("Param");
- SfxToolBoxControl::Dispatch( m_xDispatchProvider, rtl::OUString(".uno:StyleNewByExample"), aArgs);
+ SfxToolBoxControl::Dispatch( m_xDispatchProvider, OUString(".uno:StyleNewByExample"), aArgs);
}
else
{