[Libreoffice-commits] core.git: Branch 'libreoffice-4-0' - svx/source

Joren De Cuyper joren.libreoffice at telenet.be
Mon Mar 4 02:08:34 PST 2013


 svx/source/tbxctrls/tbcontrl.cxx |   40 +++++++++++++++++++++++++++++----------
 1 file changed, 30 insertions(+), 10 deletions(-)

New commits:
commit c56ae179f83034df407cd609a69c140d24d3ec6d
Author: Joren De Cuyper <joren.libreoffice at telenet.be>
Date:   Wed Feb 20 15:16:46 2013 +0100

    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 at suse.com>
    Tested-by: Thorsten Behrens <tbehrens at suse.com>
    Reviewed-on: https://gerrit.libreoffice.org/2440
    Reviewed-by: Miklos Vajna <vmiklos at suse.cz>
    Tested-by: Miklos Vajna <vmiklos at suse.cz>

diff --git a/svx/source/tbxctrls/tbcontrl.cxx b/svx/source/tbxctrls/tbcontrl.cxx
index fab0466..112ef1f 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
             {


More information about the Libreoffice-commits mailing list