diff options
author | Caolán McNamara <caolanm@redhat.com> | 2013-09-16 15:04:47 +0100 |
---|---|---|
committer | Miklos Vajna <vmiklos@collabora.co.uk> | 2013-09-17 07:24:42 +0000 |
commit | 8af5a2b08dd8fa319ae02d9947f0906ecb1a4805 (patch) | |
tree | c6225ccaa7e41802478d19c69f6a6962277e6c39 | |
parent | 9ed5fd9e6726d435b798ae27005887a9dcb52188 (diff) |
Resolves: fdo#67697 source formatting option list in autocorrect
regression from 0513e10635c85fc1aa214948de4992d4b76d555c
"fdo#49350 Speedup "OK" action of auto-correct dialog"
Change-Id: Iede6063729433beb3ac50dbdb45230c1d774cea0
(cherry picked from commit 95e566b9a0df06d130e118181058273f034bcf2c)
Reviewed-on: https://gerrit.libreoffice.org/5956
Reviewed-by: Miklos Vajna <vmiklos@collabora.co.uk>
Tested-by: Miklos Vajna <vmiklos@collabora.co.uk>
-rw-r--r-- | cui/source/inc/autocdlg.hxx | 2 | ||||
-rw-r--r-- | cui/source/tabpages/autocdlg.cxx | 21 |
2 files changed, 19 insertions, 4 deletions
diff --git a/cui/source/inc/autocdlg.hxx b/cui/source/inc/autocdlg.hxx index 3d518d2b1d01..ee728569bcd0 100644 --- a/cui/source/inc/autocdlg.hxx +++ b/cui/source/inc/autocdlg.hxx @@ -280,7 +280,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 bfde63b7eaf7..df874d79a583 100644 --- a/cui/source/tabpages/autocdlg.cxx +++ b/cui/source/tabpages/autocdlg.cxx @@ -943,6 +943,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 ); } @@ -1120,7 +1131,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++) @@ -1146,6 +1157,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) @@ -1197,7 +1210,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'; @@ -1221,7 +1236,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 } |