summaryrefslogtreecommitdiff
path: root/cui/source/tabpages/autocdlg.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'cui/source/tabpages/autocdlg.cxx')
-rw-r--r--cui/source/tabpages/autocdlg.cxx21
1 files changed, 18 insertions, 3 deletions
diff --git a/cui/source/tabpages/autocdlg.cxx b/cui/source/tabpages/autocdlg.cxx
index f8a5fe54ebb1..cb4cf9d5e065 100644
--- a/cui/source/tabpages/autocdlg.cxx
+++ b/cui/source/tabpages/autocdlg.cxx
@@ -945,6 +945,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 );
}
@@ -1122,7 +1133,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++)
@@ -1148,6 +1159,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)
@@ -1199,7 +1212,9 @@ IMPL_LINK(OfaAutocorrReplacePage, NewDelHdl, PushButton*, pBtn)
if(sEntry.Len() && ( aReplaceED.GetText().Len() ||
( bHasSelectionText && bSWriter ) ))
{
- NewEntry(aShortED.GetText(), aReplaceED.GetText());
+ bool bKeepSourceFormatting = !bReplaceEditChanged && !aTextOnlyCB.IsChecked();
+
+ NewEntry(aShortED.GetText(), aReplaceED.GetText(), bKeepSourceFormatting);
aReplaceTLB.SetUpdateMode(sal_False);
sal_uInt32 nPos = UINT_MAX;
sEntry += '\t';
@@ -1223,7 +1238,7 @@ IMPL_LINK(OfaAutocorrReplacePage, NewDelHdl, PushButton*, pBtn)
SvTreeListEntry* pInsEntry = aReplaceTLB.InsertEntry(
sEntry, static_cast< SvTreeListEntry * >(NULL), false,
nPos == UINT_MAX ? LIST_APPEND : nPos);
- if( !bReplaceEditChanged && !aTextOnlyCB.IsChecked())
+ if (bKeepSourceFormatting)
{
pInsEntry->SetUserData(&bHasSelectionText); // new formatted text
}