summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@suse.com>2012-04-26 11:59:02 +0100
committerCaolán McNamara <caolanm@redhat.com>2012-05-01 13:33:04 +0100
commita617eecdb6b2f8d6bb1b20674f8be8ce4d60f2d1 (patch)
tree3c724a9a1335c19d73d57e16c6487a852eecc1fc
parentb16cce86e7acebbe485fadb989687a55605453e0 (diff)
fdo#46805 - special-case appending items to autocorrect lists
Signed-off-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--editeng/source/misc/svxacorr.cxx14
1 files changed, 14 insertions, 0 deletions
diff --git a/editeng/source/misc/svxacorr.cxx b/editeng/source/misc/svxacorr.cxx
index f044d6aca16c..d7b2bc9acd8f 100644
--- a/editeng/source/misc/svxacorr.cxx
+++ b/editeng/source/misc/svxacorr.cxx
@@ -75,6 +75,7 @@
#include <com/sun/star/ucb/NameClash.hpp>
#include <xmloff/xmltoken.hxx>
#include <vcl/help.hxx>
+#include <rtl/logfile.hxx>
#define CHAR_HARDBLANK ((sal_Unicode)0x00A0)
@@ -246,15 +247,27 @@ void SvxAutocorrWordList::DeleteAndDestroy( sal_uInt16 nP, sal_uInt16 nL )
}
+// Keep the list sorted ...
sal_Bool SvxAutocorrWordList::Seek_Entry( const SvxAutocorrWordPtr aE, sal_uInt16* pP ) const
{
register sal_uInt16 nO = SvxAutocorrWordList_SAR::Count(),
nM,
nU = 0;
+
if( nO > 0 )
{
CollatorWrapper& rCmp = ::GetCollatorWrapper();
nO--;
+
+ // quick check of the end of the list
+ if (rCmp.compareString( aE->GetShort(),
+ (*((SvxAutocorrWordPtr*)pData + nO))->GetShort() ) > 0)
+ {
+ if( pP ) *pP = nO + 1;
+ return sal_False;
+ }
+
+ // Incredibly crude sort algorithm, should use some partitioning search.
while( nU <= nO )
{
nM = nU + ( nO - nU ) / 2;
@@ -2216,6 +2229,7 @@ SvxAutocorrWordList* SvxAutoCorrectLanguageLists::LoadAutocorrWordList()
OSL_ENSURE( xXMLParser.is(), "XMLReader::Read: com.sun.star.xml.sax.Parser service missing" );
if( xXMLParser.is() )
{
+ RTL_LOGFILE_PRODUCT_CONTEXT( aLog, "AutoCorrect Import" );
uno::Reference< xml::sax::XDocumentHandler > xFilter = new SvXMLAutoCorrectImport( xServiceFactory, pAutocorr_List, rAutoCorrect, xStg );
// connect parser and filter