[Libreoffice-commits] core.git: cui/source

Caolán McNamara caolanm at redhat.com
Mon Sep 16 07:07:02 PDT 2013


 cui/source/inc/autocdlg.hxx      |    2 +-
 cui/source/tabpages/autocdlg.cxx |   21 ++++++++++++++++++---
 2 files changed, 19 insertions(+), 4 deletions(-)

New commits:
commit 95e566b9a0df06d130e118181058273f034bcf2c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Mon Sep 16 15:04:47 2013 +0100

    Resolves: fdo#67697 source formatting option list in autocorrect
    
    regression from 0513e10635c85fc1aa214948de4992d4b76d555c
    "fdo#49350 Speedup "OK" action of auto-correct dialog"
    
    Change-Id: Iede6063729433beb3ac50dbdb45230c1d774cea0

diff --git a/cui/source/inc/autocdlg.hxx b/cui/source/inc/autocdlg.hxx
index b53b282..6e4454b 100644
--- a/cui/source/inc/autocdlg.hxx
+++ b/cui/source/inc/autocdlg.hxx
@@ -272,7 +272,7 @@ public:
 
     void    SetLanguage(LanguageType eSet);
     void    DeleteEntry(String sShort, String sLong);
-    void    NewEntry(String sShort, String sLong);
+    void    NewEntry(String sShort, String sLong, bool bKeepSourceFormatting);
 };
 
 // class OfaAutocorrExceptPage ---------------------------------------------
diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx
index 0eeb349..839b1f0 100644
--- a/cui/source/tabpages/autocdlg.cxx
+++ b/cui/source/tabpages/autocdlg.cxx
@@ -923,6 +923,17 @@ sal_Bool OfaAutocorrReplacePage::FillItemSet( SfxItemSet& )
         for (sal_uInt32 i = 0; i < rStringChangeList.aNewEntries.size(); i++)
         {
             DoubleString& newEntry = rStringChangeList.aNewEntries[i];
+
+            //fdo#67697 if the user data is set then we want to retain the
+            //source formatting of the entry, so don't use the optimized
+            //text-only MakeCombinedChanges for this entry
+            bool bKeepSourceFormatting = newEntry.pUserData == &bHasSelectionText;
+            if (bKeepSourceFormatting)
+            {
+                pAutoCorrect->PutText(newEntry.sShort, *SfxObjectShell::Current(), eCurrentLang);
+                continue;
+            }
+
             SvxAutocorrWord aNewWord( newEntry.sShort, newEntry.sLong );
             aNewWords.push_back( aNewWord );
         }
@@ -1100,7 +1111,7 @@ IMPL_LINK(OfaAutocorrReplacePage, SelectHdl, SvTabListBox*, pBox)
     return 0;
 };
 
-void OfaAutocorrReplacePage::NewEntry(String sShort, String sLong)
+void OfaAutocorrReplacePage::NewEntry(String sShort, String sLong, bool bKeepSourceFormatting)
 {
     DoubleStringArray& rNewArray = aChangesTable[eLang].aNewEntries;
     for (sal_uInt32 i = 0; i < rNewArray.size(); i++)
@@ -1126,6 +1137,8 @@ void OfaAutocorrReplacePage::NewEntry(String sShort, String sLong)
     aNewString.sShort = sShort;
     aNewString.sLong = sLong;
     rNewArray.push_back(aNewString);
+    if (bKeepSourceFormatting)
+        rNewArray.back().pUserData = &bHasSelectionText;
 }
 
 void OfaAutocorrReplacePage::DeleteEntry(String sShort, String sLong)
@@ -1177,7 +1190,9 @@ IMPL_LINK(OfaAutocorrReplacePage, NewDelHdl, PushButton*, pBtn)
         if(sEntry.Len() && ( !m_pReplaceED->GetText().isEmpty() ||
                 ( bHasSelectionText && bSWriter ) ))
         {
-            NewEntry(m_pShortED->GetText(), m_pReplaceED->GetText());
+            bool bKeepSourceFormatting = !bReplaceEditChanged && !m_pTextOnlyCB->IsChecked();
+
+            NewEntry(m_pShortED->GetText(), m_pReplaceED->GetText(), bKeepSourceFormatting);
             m_pReplaceTLB->SetUpdateMode(sal_False);
             sal_uInt32 nPos = UINT_MAX;
             sEntry += '\t';
@@ -1201,7 +1216,7 @@ IMPL_LINK(OfaAutocorrReplacePage, NewDelHdl, PushButton*, pBtn)
             SvTreeListEntry* pInsEntry = m_pReplaceTLB->InsertEntry(
                                         sEntry, static_cast< SvTreeListEntry * >(NULL), false,
                                         nPos == UINT_MAX ? LIST_APPEND : nPos);
-            if( !bReplaceEditChanged && !m_pTextOnlyCB->IsChecked())
+            if (bKeepSourceFormatting)
             {
                 pInsEntry->SetUserData(&bHasSelectionText); // new formatted text
             }


More information about the Libreoffice-commits mailing list