Hi, I have submitted a patch for review:
https://gerrit.libreoffice.org/2440 To pull it, you can do: git pull ssh://gerrit.libreoffice.org:29418/core refs/changes/40/2440/1 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 <tbehr...@suse.com> Tested-by: Thorsten Behrens <tbehr...@suse.com> --- M svx/source/tbxctrls/tbcontrl.cxx 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx index fab0466..45a8f06 100644 --- a/svx/source/tbxctrls/tbcontrl.cxx +++ b/svx/source/tbxctrls/tbcontrl.cxx @@ -371,20 +371,20 @@ if ( !IsTravelSelect() ) { - String aSelEntry( GetText() ); + OUString 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 @@ } } - // #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 && OUString( 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 @@ 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 { -- To view, visit https://gerrit.libreoffice.org/2440 To unsubscribe, visit https://gerrit.libreoffice.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: If2fd4eecec4f6f031b264a9a1b0c31e938194878 Gerrit-PatchSet: 1 Gerrit-Project: core Gerrit-Branch: libreoffice-4-0 Gerrit-Owner: Joren De Cuyper <joren.libreoff...@telenet.be> Gerrit-Reviewer: Thorsten Behrens <tbehr...@suse.com> _______________________________________________ LibreOffice mailing list LibreOffice@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice