[PATCH libreoffice-4-0] resolve fdo#54335 type an existing style name into Style box...

Joren De Cuyper (via Code Review) gerrit at gerrit.libreoffice.org
Wed Feb 27 04:20:41 PST 2013


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 <tbehrens at suse.com>
Tested-by: Thorsten Behrens <tbehrens at 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.libreoffice at telenet.be>
Gerrit-Reviewer: Thorsten Behrens <tbehrens at suse.com>



More information about the LibreOffice mailing list