[ooo-build-commit] bin/add_acor.py bin/piece Makefile.shared patches/dev300 src/acor.csv src/acor_vi-VN.dat
Cédric Bosdonnat
cbosdo at kemper.freedesktop.org
Fri Jan 22 08:02:14 PST 2010
Makefile.shared | 3
bin/add_acor.py | 84 +
bin/piece/unpack-extras | 4
patches/dev300/cws-cbosdo01.diff | 1807 ++++++++++++++++++++++++++++++++++-----
src/acor.csv | 4
src/acor_vi-VN.dat |binary
6 files changed, 1700 insertions(+), 202 deletions(-)
New commits:
commit 688b8a53cd679808f0f0d70b8cdf42c780b8c0f0
Author: Cédric Bosdonnat <cedricbosdo at openoffice.org>
Date: Fri Jan 22 16:56:57 2010 +0100
Update cws-cbosdo01.diff with CWS changes
* Makefile.shared:
Added some target to run add_acor.py
* bin/add_acor.py:
Script adding the new autocorrection elements from src/acor.csv
* bin/piece/unpack-extras:
Added some lines to update acor_vi-VN.dat
* patches/dev300/cws-cbosdo01.diff:
Updated from CWS cbosdo01
* src/acor.csv:
the 1/2, 1/4 and 3/4 autocorrection to add due to changes in
cbosdo01. These values will be added by the upstream once the CWS is
integrated.
* src/acor_vi-VN.dat:
Fixes for the Vietnamese autocorrection replacement list:
badly-formed DocumentList.xml file.
diff --git a/Makefile.shared b/Makefile.shared
index 7fa3e87..ece1b34 100644
--- a/Makefile.shared
+++ b/Makefile.shared
@@ -30,6 +30,9 @@ $(STAMP_DIR)/artwork.install : $(OOBUILDDIR)/unpack \
$(TOOLSDIR)/bin/install-artwork $(top_srcdir)/src $(OOBUILDDIR)
touch $@
+autocorr.apply: $(top_srcdir)/bin/add_acor.py $(top_srcdir)/src/acor.csv $(STAMP_DIR)/autocorr.apply
+ $(top_srcdir)/bin/add_acor.py $(OOBUILDDIR) $(top_srcdir)/src/acor.csv
+
patch.apply: $(OOBUILDDIR)/unpack $(STAMP_DIR)/patch.apply
$(STAMP_DIR)/patch.apply : $(top_srcdir)/patches/apply.pl \
$(top_srcdir)/patches/*/*.diff \
diff --git a/bin/add_acor.py b/bin/add_acor.py
new file mode 100755
index 0000000..aeeaf1f
--- /dev/null
+++ b/bin/add_acor.py
@@ -0,0 +1,84 @@
+#!/usr/bin/python
+
+import zipfile
+import xml.dom.minidom
+import os
+import csv
+import sys
+
+
+def read_list( file ):
+ langs = dict();
+
+ file_hd = open( file )
+ reader = csv.reader( file_hd )
+ reader.next( ) # Skip the headers line
+ for row in reader:
+ locale = row[0]
+ if locale == "":
+ locale = 'all'
+ values = []
+ if locale in langs:
+ values = langs[locale]
+ values.append( ( row[1], unicode( row[2], "utf-8" ) ) )
+ langs[locale] = values
+ return langs
+
+def extract_items( data, locale ):
+ entries = []
+ if 'all' in data:
+ entries = entries + data['all']
+ if locale in data:
+ entries = entries + data[locale]
+ return entries
+
+def update_zip( file, items ):
+ tmpname = file + ".new"
+
+ # First open the dat to extract the existing Documentlist.xml file
+ inFile = zipfile.ZipFile( file, "r" )
+ content = inFile.read( "DocumentList.xml" )
+
+ xmlDoc = xml.dom.minidom.parseString( content )
+
+ # Actually add the elements in the XML file
+ for pair in items:
+ node = xmlDoc.createElement( "block-list:block" )
+ node.setAttribute( "block-list:addreviated-name", pair[0] )
+ node.setAttribute( "block-list:name", pair[1] )
+ xmlDoc.documentElement.appendChild( node )
+
+ # Open the dat file for writing now
+ outFile = zipfile.ZipFile( tmpname, "w" )
+ data = xmlDoc.toxml().encode( "utf-8" )
+ for name in inFile.namelist( ):
+ if name != "DocumentList.xml":
+ outFile.writestr( name, inFile.read( name ) )
+
+ outFile.writestr( "DocumentList.xml", data )
+ inFile.close()
+ outFile.close()
+
+ # Rename the new file
+ os.rename( tmpname, file )
+
+def main():
+ if ( len( sys.argv ) == 3 ):
+ builddir = sys.argv[1]
+ datafile = sys.argv[2]
+ else:
+ print "arguments: build-dir data-file.csv"
+ sys.exit( 1 )
+
+ data = read_list( datafile )
+ for root, dirs, files in os.walk( os.path.join( builddir, "extras", "source", "autotext", "lang" ) ):
+ for f in files:
+ if ( f.endswith( ".dat" ) ):
+ locale = os.path.basename( root )
+ items = extract_items( data, locale )
+ if len( items ) > 0:
+ print "Updating: " + os.path.join( root, f )
+ update_zip( os.path.join( root, f ), items )
+
+if __name__ == '__main__':
+ main( )
diff --git a/bin/piece/unpack-extras b/bin/piece/unpack-extras
index ccc442d..3ca8b3a 100755
--- a/bin/piece/unpack-extras
+++ b/bin/piece/unpack-extras
@@ -17,3 +17,7 @@ $GNUCP -f $TOOLSDIR/src/acor_ru-RU.dat $OOBUILDDIR/extras/source/autotext/lang/r
# FIXME: remove when it goes upstream (i#91304)
echo "Copying Slovak autocorrection into tree"
$GNUCP -f $TOOLSDIR/src/acor_sk-SK.dat $OOBUILDDIR/extras/source/autotext/lang/sk || exit 1;
+
+# FIXME Remove when upstreamed (cbosdo01)
+echo "Copying Vietnamese autocorrection into tree"
+$GNUCP -f $TOOLSDIR/src/acor_vi-VN.dat $OOBUILDDIR/extras/source/autotext/lang/vi || exit 1;
diff --git a/patches/dev300/cws-cbosdo01.diff b/patches/dev300/cws-cbosdo01.diff
index 7c3e782..a190b50 100644
--- a/patches/dev300/cws-cbosdo01.diff
+++ b/patches/dev300/cws-cbosdo01.diff
@@ -1,60 +1,151 @@
diff --git officecfg/registry/schema/org/openoffice/Office/Common.xcs officecfg/registry/schema/org/openoffice/Office/Common.xcs
-index 8057641..d158081 100644
+index 25d1b55..1ae36e4 100644
--- officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ officecfg/registry/schema/org/openoffice/Office/Common.xcs
-@@ -1320,6 +1320,17 @@ Dymamic border coloring means that when the mouse is hovered over a control, and
+@@ -1298,25 +1298,25 @@ Dymamic border coloring means that when the mouse is hovered over a control, and
</info>
<value>true</value>
</prop>
+- <prop oor:name="ChangeFraction" oor:type="xs:boolean">
++ <prop oor:name="ChangeDash" oor:type="xs:boolean">
+ <!-- OldPath: AutoCorrect/Options/All -->
+ <!-- OldLocation: Soffice.cfg -->
+- <!-- UIHints: Tools AutoCorrect/AutoFormat Options Replace 1/2... -->
++ <!-- UIHints: Tools AutoCorrect/AutoFormat Options - Replace dashes -->
+ <info>
+ <author>OS</author>
+- <desc>Specifies if character combinations for fractions should be replaced with a corresponding single character.</desc>
+- <label>Replace fractions</label>
++ <desc>Specifies if minus signs should be replaced by dashes automatically.</desc>
++ <label>Replace dashes</label>
+ </info>
+ <value>true</value>
+ </prop>
+- <prop oor:name="ChangeDash" oor:type="xs:boolean">
+ <prop oor:name="AddNonBreakingSpace" oor:type="xs:boolean">
-+ <!-- OldPath: AutoCorrect/Options/All -->
-+ <!-- OldLocation: Soffice.cfg -->
+ <!-- OldPath: AutoCorrect/Options/All -->
+ <!-- OldLocation: Soffice.cfg -->
+- <!-- UIHints: Tools AutoCorrect/AutoFormat Options - Replace dashes -->
+ <!-- UIHints: Tools AutoCorrect/AutoFormat Options - Add non-breaking space -->
-+ <info>
+ <info>
+- <author>OS</author>
+- <desc>Specifies if minus signs should be replaced by dashes automatically.</desc>
+- <label>Replace dashes</label>
+ <author>cedricbosdo</author>
+ <desc>Adds a non-breaking space before the characters :;!? in french.</desc>
+ <label>Add non-breaking space</label>
-+ </info>
-+ <value>true</value>
-+ </prop>
- <prop oor:name="RemoveDoubleSpaces" oor:type="xs:boolean">
- <!-- OldPath: AutoCorrect/Options/All -->
- <!-- OldLocation: Soffice.cfg -->
+ </info>
+ <value>true</value>
+ </prop>
diff --git officecfg/registry/schema/org/openoffice/Office/Writer.xcs officecfg/registry/schema/org/openoffice/Office/Writer.xcs
-index 70e0888..f7155fd 100644
+index 70e0888..b2188dc 100644
--- officecfg/registry/schema/org/openoffice/Office/Writer.xcs
+++ officecfg/registry/schema/org/openoffice/Office/Writer.xcs
-@@ -4437,6 +4437,17 @@
+@@ -4415,25 +4415,25 @@
</info>
<value>true</value>
</prop>
+- <prop oor:name="ChangeFraction" oor:type="xs:boolean">
++ <prop oor:name="ChangeDash" oor:type="xs:boolean">
+ <!-- OldPath: Writer/AutoFormat/Options -->
+ <!-- OldLocation: Soffice.cfg -->
+- <!-- UIHints: Tools AutoCorrect/AutoFormat Options Replace 1/2... -->
++ <!-- UIHints: Tools AutoCorrect/AutoFormat Options - Replace dashes -->
+ <info>
+ <author>OS</author>
+- <desc>Specifies if character combinations for fractions are replaced with a corresponding single character.</desc>
+- <label>Replace fractions</label>
++ <desc>Specifies if dashes are replaced automatically.</desc>
++ <label>Replace dashes</label>
+ </info>
+ <value>true</value>
+ </prop>
+- <prop oor:name="ChangeDash" oor:type="xs:boolean">
+ <prop oor:name="AddNonBreakingSpace" oor:type="xs:boolean">
-+ <!-- OldPath: Writer/AutoFormat/Options -->
-+ <!-- OldLocation: Soffice.cfg -->
+ <!-- OldPath: Writer/AutoFormat/Options -->
+ <!-- OldLocation: Soffice.cfg -->
+- <!-- UIHints: Tools AutoCorrect/AutoFormat Options - Replace dashes -->
+ <!-- UIHints: Tools AutoCorrect/AutoFormat Options - Add non-breaking space -->
-+ <info>
+ <info>
+- <author>OS</author>
+- <desc>Specifies if dashes are replaced automatically.</desc>
+- <label>Replace dashes</label>
+ <author>cedricbosdo</author>
+ <desc>Adds a non-breaking space before the characters :!;? in french.</desc>
+ <label>Add non-breaking space</label>
-+ </info>
-+ <value>true</value>
-+ </prop>
- <prop oor:name="DelEmptyParagraphs" oor:type="xs:boolean">
+ </info>
+ <value>true</value>
+ </prop>
+@@ -4459,17 +4459,6 @@
+ </info>
+ <value>true</value>
+ </prop>
+- <prop oor:name="ReplaceQuote" oor:type="xs:boolean">
+- <!-- OldPath: Writer/AutoFormat/Options -->
+- <!-- OldLocation: Soffice.cfg -->
+- <!-- UIHints: Tools AutoCorrect/AutoFormat Options Replace Standard Quotes... -->
+- <info>
+- <author>OS</author>
+- <desc>Specifies if standard quotes are replaced with custom quotes.</desc>
+- <label>Replace standard quotes with custom quotes</label>
+- </info>
+- <value>true</value>
+- </prop>
+ <prop oor:name="CombineParagraphs" oor:type="xs:boolean">
<!-- OldPath: Writer/AutoFormat/Options -->
<!-- OldLocation: Soffice.cfg -->
+diff --git svx/inc/helpid.hrc svx/inc/helpid.hrc
+index 22d3175..1d82b0b 100644
+--- svx/inc/helpid.hrc
++++ svx/inc/helpid.hrc
+@@ -607,6 +607,8 @@
+ #define HID_DBPATH_CTL_PATH (HID_OFA_START + 125)
+ #define HID_DBPATH_HEADERBAR (HID_OFA_START + 126)
+ #define HID_OFAPAGE_SMARTTAG_OPTIONS (HID_OFA_START + 127)
++#define HID_OFAPAGE_QUOTE_SW_CLB (HID_OFA_START + 128)
++#define HID_OFAPAGE_QUOTE_CLB (HID_OFA_START + 129)
+
+ #define HID_OPTIONS_DICT_EDIT_ENTRIES_LIST (HID_SVX_EXT0_START + 28)
+
diff --git svx/inc/svx/svxacorr.hxx svx/inc/svx/svxacorr.hxx
-index 6771086..d414aed 100644
+index 6771086..63c8d7c 100644
--- svx/inc/svx/svxacorr.hxx
+++ svx/inc/svx/svxacorr.hxx
-@@ -67,6 +67,7 @@ const long SaveWordWrdSttLst= 0x00000400; // 2 GrB. am WortAnf. auto. aufnehmen
- const long IngnoreDoubleSpace= 0x00000800; // 2 Spaces ignorieren
+@@ -55,7 +55,7 @@ class Window;
+ // Flags fuer die AutoKorrekt-Flags
+ const long CptlSttSntnc = 0x00000001; // Gross-Buchstaben am SatzAnfang
+ const long CptlSttWrd = 0x00000002; // keine 2 Gr.-Buchst. am WordAnfang
+-const long ChgFractionSymbol= 0x00000004; // 1/2, 1/4, .. ersetzen
++const long AddNonBrkSpace = 0x00000004; // Add non breaking space before :;?!
+ const long ChgOrdinalNumber = 0x00000008; // Ordinal-Number 1st, 2nd,..
+ const long ChgToEnEmDash = 0x00000010; // - -> Endash/Emdash
+ const long ChgWeightUnderl = 0x00000020; // * -> Fett, _ -> unterstreichen
+@@ -64,7 +64,7 @@ const long Autocorrect = 0x00000080; // Autokorrektur aufrufen
+ const long ChgQuotes = 0x00000100; // doppelte Quotes ersetzen
+ const long SaveWordCplSttLst= 0x00000200; // GrB. am SatzAnf. auto. aufnehmen
+ const long SaveWordWrdSttLst= 0x00000400; // 2 GrB. am WortAnf. auto. aufnehmen
+-const long IngnoreDoubleSpace= 0x00000800; // 2 Spaces ignorieren
++const long IgnoreDoubleSpace= 0x00000800; // 2 Spaces ignorieren
const long ChgSglQuotes = 0x00001000; // einfache Quotes ersetzen
const long CorrectCapsLock = 0x00002000; // Correct accidental use of cAPS LOCK key
-+const long AddNonBrkSpace = 0x00004000; // Add non breaking space before :;?!
- const long ChgWordLstLoad = 0x20000000; // Ersetzungsliste geladen
- const long CplSttLstLoad = 0x40000000; // Exceptionlist fuer CplStart geladen
-@@ -369,6 +370,9 @@ public:
+@@ -218,7 +218,6 @@ class SVX_DLLPUBLIC SvxAutoCorrect
+
+ long nFlags;
+ sal_Unicode cStartDQuote, cEndDQuote, cStartSQuote, cEndSQuote,
+- c1Div2, c1Div4, c3Div4,
+ cEmDash, cEnDash;
+
+
+@@ -361,14 +360,15 @@ public:
+ BOOL FnCptlSttWrd( SvxAutoCorrDoc&, const String&,
+ xub_StrLen nSttPos, xub_StrLen nEndPos,
+ LanguageType eLang = LANGUAGE_SYSTEM );
+- BOOL FnChgFractionSymbol( SvxAutoCorrDoc&, const String&,
+- xub_StrLen nSttPos, xub_StrLen nEndPos );
+ BOOL FnChgOrdinalNumber( SvxAutoCorrDoc&, const String&,
+ xub_StrLen nSttPos, xub_StrLen nEndPos,
+ LanguageType eLang = LANGUAGE_SYSTEM );
BOOL FnChgToEnEmDash( SvxAutoCorrDoc&, const String&,
xub_StrLen nSttPos, xub_StrLen nEndPos,
LanguageType eLang = LANGUAGE_SYSTEM );
@@ -64,12 +155,32 @@ index 6771086..d414aed 100644
BOOL FnSetINetAttr( SvxAutoCorrDoc&, const String&,
xub_StrLen nSttPos, xub_StrLen nEndPos,
LanguageType eLang = LANGUAGE_SYSTEM );
+@@ -390,6 +390,8 @@ public:
+ // (used to avoid occasional 'collisions' with (Thai) input-sequence-checking)
+ static sal_Bool IsAutoCorrectChar( sal_Unicode cChar );
+
++ sal_Bool NeedsHardspaceAutocorr( sal_Unicode cChar );
++
+ CharClass& GetCharClass( LanguageType eLang )
+ {
+ if( !pCharClass || eLang != eCharClassLang )
diff --git svx/inc/svx/swafopt.hxx svx/inc/svx/swafopt.hxx
-index 18ae7e0..eb557ea 100644
+index 18ae7e0..065ad24 100644
--- svx/inc/svx/swafopt.hxx
+++ svx/inc/svx/swafopt.hxx
-@@ -68,6 +68,7 @@ struct SVX_DLLPUBLIC SvxSwAutoFmtFlags
- BOOL bChgFracionSymbol : 1;
+@@ -52,7 +52,6 @@ struct SVX_DLLPUBLIC SvxSwAutoFmtFlags
+
+ BYTE nRightMargin;
+
+- BOOL bReplaceQuote : 1;
+ BOOL bAutoCorrect : 1;
+ BOOL bCptlSttSntnc : 1;
+ BOOL bCptlSttWrd : 1;
+@@ -65,9 +64,9 @@ struct SVX_DLLPUBLIC SvxSwAutoFmtFlags
+ BOOL bDelEmptyNode : 1;
+ BOOL bSetNumRule : 1;
+
+- BOOL bChgFracionSymbol : 1;
BOOL bChgOrdinalNumber : 1;
BOOL bChgToEnEmDash : 1;
+ BOOL bAddNonBrkSpace : 1;
@@ -77,193 +188,1001 @@ index 18ae7e0..eb557ea 100644
BOOL bSetINetAttr : 1;
diff --git svx/source/cui/autocdlg.cxx svx/source/cui/autocdlg.cxx
-index f4c0a21..15710a5 100644
+index f4c0a21..9afde32 100644
--- svx/source/cui/autocdlg.cxx
+++ svx/source/cui/autocdlg.cxx
-@@ -233,6 +233,7 @@ OfaAutocorrOptionsPage::OfaAutocorrOptionsPage( Window* pParent,
+@@ -231,9 +231,7 @@ OfaAutocorrOptionsPage::OfaAutocorrOptionsPage( Window* pParent,
+ sBoldUnderline (SVX_RES(ST_BOLD_UNDER )),
+ sURL (SVX_RES(ST_DETECT_URL )),
sNoDblSpaces (SVX_RES(STR_NO_DBL_SPACES )),
- sHalf (SVX_RES(ST_FRACTION )),
+- sHalf (SVX_RES(ST_FRACTION )),
sDash (SVX_RES(ST_DASH )),
-+ sNonBrkSpace (SVX_RES(ST_NON_BREAK_SPACE )),
- sFirst (SVX_RES(ST_ORDINAL )),
+- sFirst (SVX_RES(ST_ORDINAL )),
sAccidentalCaps (SVX_RES(ST_CORRECT_ACCIDENTAL_CAPS_LOCK))
{
-@@ -279,6 +280,7 @@ BOOL OfaAutocorrOptionsPage::FillItemSet( SfxItemSet& )
- pAutoCorrect->SetAutoCorrFlag(ChgOrdinalNumber, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(ChgFractionSymbol, aCheckLB.IsChecked(nPos++));
+ FreeResource();
+@@ -276,10 +274,8 @@ BOOL OfaAutocorrOptionsPage::FillItemSet( SfxItemSet& )
+ pAutoCorrect->SetAutoCorrFlag(CptlSttSntnc, aCheckLB.IsChecked(nPos++));
+ pAutoCorrect->SetAutoCorrFlag(ChgWeightUnderl, aCheckLB.IsChecked(nPos++));
+ pAutoCorrect->SetAutoCorrFlag(SetINetAttr, aCheckLB.IsChecked(nPos++));
+- pAutoCorrect->SetAutoCorrFlag(ChgOrdinalNumber, aCheckLB.IsChecked(nPos++));
+- pAutoCorrect->SetAutoCorrFlag(ChgFractionSymbol, aCheckLB.IsChecked(nPos++));
pAutoCorrect->SetAutoCorrFlag(ChgToEnEmDash, aCheckLB.IsChecked(nPos++));
-+ pAutoCorrect->SetAutoCorrFlag(AddNonBrkSpace, aCheckLB.IsChecked(nPos++));
- pAutoCorrect->SetAutoCorrFlag(IngnoreDoubleSpace, aCheckLB.IsChecked(nPos++));
+- pAutoCorrect->SetAutoCorrFlag(IngnoreDoubleSpace, aCheckLB.IsChecked(nPos++));
++ pAutoCorrect->SetAutoCorrFlag(IgnoreDoubleSpace, aCheckLB.IsChecked(nPos++));
pAutoCorrect->SetAutoCorrFlag(CorrectCapsLock, aCheckLB.IsChecked(nPos++));
-@@ -321,6 +323,7 @@ void OfaAutocorrOptionsPage::Reset( const SfxItemSet& )
- aCheckLB.InsertEntry(sFirst);
- aCheckLB.InsertEntry(sHalf);
+ BOOL bReturn = nFlags != pAutoCorrect->GetFlags();
+@@ -318,8 +314,6 @@ void OfaAutocorrOptionsPage::Reset( const SfxItemSet& )
+ aCheckLB.InsertEntry(sStartCap);
+ aCheckLB.InsertEntry(sBoldUnderline);
+ aCheckLB.InsertEntry(sURL);
+- aCheckLB.InsertEntry(sFirst);
+- aCheckLB.InsertEntry(sHalf);
aCheckLB.InsertEntry(sDash);
-+ aCheckLB.InsertEntry(sNonBrkSpace);
aCheckLB.InsertEntry(sNoDblSpaces);
aCheckLB.InsertEntry(sAccidentalCaps);
-
-@@ -333,6 +336,7 @@ void OfaAutocorrOptionsPage::Reset( const SfxItemSet& )
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgOrdinalNumber) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgFractionSymbol) );
+@@ -330,10 +324,8 @@ void OfaAutocorrOptionsPage::Reset( const SfxItemSet& )
+ aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & CptlSttSntnc) );
+ aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgWeightUnderl) );
+ aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & SetINetAttr) );
+- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgOrdinalNumber) );
+- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgFractionSymbol) );
aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgToEnEmDash) );
-+ aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & AddNonBrkSpace) );
- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & IngnoreDoubleSpace) );
+- aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & IngnoreDoubleSpace) );
++ aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & IgnoreDoubleSpace) );
aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & CorrectCapsLock) );
-@@ -464,6 +468,7 @@ enum OfaAutoFmtOptions
- REPLACE_1ST,
- REPLACE_HALF,
+ aCheckLB.SetUpdateMode(TRUE);
+@@ -461,8 +453,6 @@ enum OfaAutoFmtOptions
+ BEGIN_UPPER,
+ BOLD_UNDERLINE,
+ DETECT_URL,
+- REPLACE_1ST,
+- REPLACE_HALF,
REPLACE_DASHES,
-+ ADD_NON_BRK_SPACE,
DEL_SPACES_AT_STT_END,
DEL_SPACES_BETWEEN_LINES,
- IGNORE_DBLSPACE,
-@@ -501,6 +506,7 @@ OfaSwAutoFmtOptionsPage::OfaSwAutoFmtOptionsPage( Window* pParent,
- sFraction (SVX_RES( ST_FRACTION )),
+@@ -475,7 +465,6 @@ enum OfaAutoFmtOptions
+ DEL_EMPTY_NODE,
+ REPLACE_USER_COLL,
+ REPLACE_BULLETS,
+- REPLACE_QUOTATION,
+ MERGE_SINGLE_LINE_PARA
+ };
+
+@@ -492,16 +481,13 @@ OfaSwAutoFmtOptionsPage::OfaSwAutoFmtOptionsPage( Window* pParent,
+ sUseReplaceTbl (SVX_RES( ST_USE_REPLACE )),
+ sCptlSttWord (SVX_RES( ST_CPTL_STT_WORD)),
+ sCptlSttSent (SVX_RES( ST_CPTL_STT_SENT)),
+- sTypo (SVX_RES( ST_TYPO )),
+ sUserStyle (SVX_RES( ST_USER_STYLE )),
+ sBullet (SVX_RES( ST_BULLET )),
+ sBoldUnder (SVX_RES( ST_BOLD_UNDER )),
+ sNoDblSpaces (SVX_RES( STR_NO_DBL_SPACES)),
+ sCorrectCapsLock (SVX_RES( ST_CORRECT_ACCIDENTAL_CAPS_LOCK)),
+- sFraction (SVX_RES( ST_FRACTION )),
sDetectURL (SVX_RES( ST_DETECT_URL )),
sDash (SVX_RES( ST_DASH )),
-+ sNonBrkSpace (SVX_RES( ST_NON_BREAK_SPACE )),
- sOrdinal (SVX_RES( ST_ORDINAL )),
+- sOrdinal (SVX_RES( ST_ORDINAL )),
sRightMargin (SVX_RES( ST_RIGHT_MARGIN )),
sNum (SVX_RES( STR_NUM )),
-@@ -711,6 +717,12 @@ BOOL OfaSwAutoFmtOptionsPage::FillItemSet( SfxItemSet& )
+ sBorder (SVX_RES( STR_BORDER )),
+@@ -519,10 +505,6 @@ OfaSwAutoFmtOptionsPage::OfaSwAutoFmtOptionsPage( Window* pParent,
+ //typ. Anfuehrungszeichen einsetzen
+ SvtSysLocale aSysLcl;
+ const LocaleDataWrapper& rLcl = aSysLcl.GetLocaleData();
+- sTypo.SearchAndReplace( String::CreateFromAscii("%1"),
+- rLcl.getDoubleQuotationMarkStart());
+- sTypo.SearchAndReplace( String::CreateFromAscii("%2"),
+- rLcl.getDoubleQuotationMarkEnd());
+
+ aCheckLB.SetHelpId(HID_OFAPAGE_AUTOFORMAT_CLB);
+ aCheckLB.SetWindowBits(WB_HSCROLL| WB_VSCROLL);
+@@ -550,7 +532,7 @@ OfaSwAutoFmtOptionsPage::OfaSwAutoFmtOptionsPage( Window* pParent,
+ /* */
+ /*********************************************************************/
+
+-SvLBoxEntry* OfaSwAutoFmtOptionsPage::CreateEntry(String& rTxt, USHORT nCol)
++SvLBoxEntry* OfaSwAutoFmtOptionsPage::CreateEntry(String& rTxt, USHORT nCol)
+ {
+ SvLBoxEntry* pEntry = new SvLBoxEntry;
+
+@@ -635,7 +617,7 @@ BOOL OfaSwAutoFmtOptionsPage::FillItemSet( SfxItemSet& )
+ pAutoCorrect->SetAutoCorrFlag(ChgWeightUnderl,
+ aCheckLB.IsChecked(BOLD_UNDERLINE, CBCOL_SECOND));
+
+- pAutoCorrect->SetAutoCorrFlag(IngnoreDoubleSpace,
++ pAutoCorrect->SetAutoCorrFlag(IgnoreDoubleSpace,
+ aCheckLB.IsChecked(IGNORE_DBLSPACE, CBCOL_SECOND));
+
+ pAutoCorrect->SetAutoCorrFlag(CorrectCapsLock,
+@@ -647,20 +629,10 @@ BOOL OfaSwAutoFmtOptionsPage::FillItemSet( SfxItemSet& )
+ pAutoCorrect->SetAutoCorrFlag(SetINetAttr,
+ aCheckLB.IsChecked(DETECT_URL, CBCOL_SECOND));
+
+- bCheck = aCheckLB.IsChecked(REPLACE_1ST, CBCOL_FIRST);
+- bModified |= pOpt->bChgOrdinalNumber != bCheck;
+- pOpt->bChgOrdinalNumber = bCheck;
+- pAutoCorrect->SetAutoCorrFlag(ChgOrdinalNumber,
+- aCheckLB.IsChecked(REPLACE_1ST, CBCOL_SECOND));
+-
+ bCheck = aCheckLB.IsChecked(DEL_EMPTY_NODE, CBCOL_FIRST);
+ bModified |= pOpt->bDelEmptyNode != bCheck;
+ pOpt->bDelEmptyNode = bCheck;
+
+- bCheck = aCheckLB.IsChecked(REPLACE_QUOTATION, CBCOL_FIRST);
+- bModified |= pOpt->bReplaceQuote != bCheck;
+- pOpt->bReplaceQuote = bCheck;
+-
+ bCheck = aCheckLB.IsChecked(REPLACE_USER_COLL, CBCOL_FIRST);
+ bModified |= pOpt->bChgUserColl != bCheck;
+ pOpt->bChgUserColl = bCheck;
+@@ -700,12 +672,6 @@ BOOL OfaSwAutoFmtOptionsPage::FillItemSet( SfxItemSet& )
+ bModified |= pOpt->bReplaceStyles != bCheck;
+ pOpt->bReplaceStyles = bCheck;
+
+- bCheck = aCheckLB.IsChecked(REPLACE_HALF, CBCOL_FIRST);
+- bModified |= pOpt->bChgFracionSymbol != bCheck;
+- pOpt->bChgFracionSymbol = bCheck;
+- pAutoCorrect->SetAutoCorrFlag(ChgFractionSymbol,
+- aCheckLB.IsChecked(REPLACE_HALF, CBCOL_SECOND));
+-
+ bCheck = aCheckLB.IsChecked(REPLACE_DASHES, CBCOL_FIRST);
+ bModified |= pOpt->bChgToEnEmDash != bCheck;
pOpt->bChgToEnEmDash = bCheck;
- pAutoCorrect->SetAutoCorrFlag(ChgToEnEmDash,
- aCheckLB.IsChecked(REPLACE_DASHES, CBCOL_SECOND));
-+
-+ bCheck = aCheckLB.IsChecked(ADD_NON_BRK_SPACE, CBCOL_FIRST);
-+ bModified |= pOpt->bAddNonBrkSpace != bCheck;
-+ pOpt->bAddNonBrkSpace = bCheck;
-+ pAutoCorrect->SetAutoCorrFlag(AddNonBrkSpace,
-+ aCheckLB.IsChecked(ADD_NON_BRK_SPACE, CBCOL_SECOND));
-
- bCheck = aCheckLB.IsChecked(DEL_SPACES_AT_STT_END, CBCOL_FIRST);
- bModified |= pOpt->bAFmtDelSpacesAtSttEnd != bCheck;
-@@ -768,6 +780,7 @@ void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet& )
- aCheckLB.GetModel()->Insert(CreateEntry(sOrdinal, CBCOL_BOTH ));
- aCheckLB.GetModel()->Insert(CreateEntry(sFraction, CBCOL_BOTH ));
+@@ -765,8 +731,6 @@ void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet& )
+ aCheckLB.GetModel()->Insert(CreateEntry(sCptlSttSent, CBCOL_BOTH ));
+ aCheckLB.GetModel()->Insert(CreateEntry(sBoldUnder, CBCOL_BOTH ));
+ aCheckLB.GetModel()->Insert(CreateEntry(sDetectURL, CBCOL_BOTH ));
+- aCheckLB.GetModel()->Insert(CreateEntry(sOrdinal, CBCOL_BOTH ));
+- aCheckLB.GetModel()->Insert(CreateEntry(sFraction, CBCOL_BOTH ));
aCheckLB.GetModel()->Insert(CreateEntry(sDash, CBCOL_BOTH ));
-+ aCheckLB.GetModel()->Insert(CreateEntry(sNonBrkSpace, CBCOL_BOTH ));
aCheckLB.GetModel()->Insert(CreateEntry(sDelSpaceAtSttEnd, CBCOL_BOTH ));
aCheckLB.GetModel()->Insert(CreateEntry(sDelSpaceBetweenLines, CBCOL_BOTH ));
+@@ -780,7 +744,6 @@ void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet& )
+ aCheckLB.GetModel()->Insert(CreateEntry(sDeleteEmptyPara, CBCOL_FIRST ));
+ aCheckLB.GetModel()->Insert(CreateEntry(sUserStyle, CBCOL_FIRST ));
+ aCheckLB.GetModel()->Insert(CreateEntry(sBullet, CBCOL_FIRST ));
+- aCheckLB.GetModel()->Insert(CreateEntry(sTypo, CBCOL_FIRST ));
+ aCheckLB.GetModel()->Insert(CreateEntry(sRightMargin, CBCOL_FIRST ));
-@@ -801,6 +814,8 @@ void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet& )
- aCheckLB.CheckEntryPos( REPLACE_HALF, CBCOL_SECOND, 0 != (nFlags & ChgFractionSymbol) );
+ aCheckLB.CheckEntryPos( USE_REPLACE_TABLE, CBCOL_FIRST, pOpt->bAutoCorrect );
+@@ -791,14 +754,10 @@ void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet& )
+ aCheckLB.CheckEntryPos( BEGIN_UPPER, CBCOL_SECOND, 0 != (nFlags & CptlSttSntnc) );
+ aCheckLB.CheckEntryPos( BOLD_UNDERLINE, CBCOL_FIRST, pOpt->bChgWeightUnderl );
+ aCheckLB.CheckEntryPos( BOLD_UNDERLINE, CBCOL_SECOND, 0 != (nFlags & ChgWeightUnderl) );
+- aCheckLB.CheckEntryPos( IGNORE_DBLSPACE, CBCOL_SECOND, 0 != (nFlags & IngnoreDoubleSpace) );
++ aCheckLB.CheckEntryPos( IGNORE_DBLSPACE, CBCOL_SECOND, 0 != (nFlags & IgnoreDoubleSpace) );
+ aCheckLB.CheckEntryPos( CORRECT_CAPS_LOCK, CBCOL_SECOND, 0 != (nFlags & CorrectCapsLock) );
+ aCheckLB.CheckEntryPos( DETECT_URL, CBCOL_FIRST, pOpt->bSetINetAttr );
+ aCheckLB.CheckEntryPos( DETECT_URL, CBCOL_SECOND, 0 != (nFlags & SetINetAttr) );
+- aCheckLB.CheckEntryPos( REPLACE_1ST, CBCOL_FIRST, pOpt->bChgOrdinalNumber );
+- aCheckLB.CheckEntryPos( REPLACE_1ST, CBCOL_SECOND, 0 != (nFlags & ChgOrdinalNumber) );
+- aCheckLB.CheckEntryPos( REPLACE_HALF, CBCOL_FIRST, pOpt->bChgFracionSymbol );
+- aCheckLB.CheckEntryPos( REPLACE_HALF, CBCOL_SECOND, 0 != (nFlags & ChgFractionSymbol) );
aCheckLB.CheckEntryPos( REPLACE_DASHES, CBCOL_FIRST, pOpt->bChgToEnEmDash );
aCheckLB.CheckEntryPos( REPLACE_DASHES, CBCOL_SECOND, 0 != (nFlags & ChgToEnEmDash) );
-+ aCheckLB.CheckEntryPos( ADD_NON_BRK_SPACE, CBCOL_FIRST, 0 != ( pOpt->bAddNonBrkSpace ) );
-+ aCheckLB.CheckEntryPos( ADD_NON_BRK_SPACE, CBCOL_SECOND, 0 != (nFlags & AddNonBrkSpace) );
aCheckLB.CheckEntryPos( DEL_SPACES_AT_STT_END, CBCOL_FIRST, pOpt->bAFmtDelSpacesAtSttEnd );
- aCheckLB.CheckEntryPos( DEL_SPACES_AT_STT_END, CBCOL_SECOND, pOpt->bAFmtByInpDelSpacesAtSttEnd );
+@@ -806,7 +765,6 @@ void OfaSwAutoFmtOptionsPage::Reset( const SfxItemSet& )
aCheckLB.CheckEntryPos( DEL_SPACES_BETWEEN_LINES, CBCOL_FIRST, pOpt->bAFmtDelSpacesBetweenLines );
+ aCheckLB.CheckEntryPos( DEL_SPACES_BETWEEN_LINES, CBCOL_SECOND, pOpt->bAFmtByInpDelSpacesBetweenLines );
+ aCheckLB.CheckEntryPos( DEL_EMPTY_NODE, CBCOL_FIRST, pOpt->bDelEmptyNode );
+- aCheckLB.CheckEntryPos( REPLACE_QUOTATION, CBCOL_FIRST, pOpt->bReplaceQuote );
+ aCheckLB.CheckEntryPos( REPLACE_USER_COLL, CBCOL_FIRST, pOpt->bChgUserColl );
+ aCheckLB.CheckEntryPos( REPLACE_BULLETS, CBCOL_FIRST, pOpt->bChgEnumNum );
+
+@@ -2050,8 +2008,50 @@ void AutoCorrEdit::KeyInput( const KeyEvent& rKEvt )
+
+ --------------------------------------------------*/
+
++enum OfaQuoteOptions
++{
++ ADD_NONBRK_SPACE,
++ REPLACE_1ST
++};
++
++SvLBoxEntry* OfaQuoteTabPage::CreateEntry(String& rTxt, USHORT nCol)
++{
++ SvLBoxEntry* pEntry = new SvLBoxEntry;
++
++ if ( !pCheckButtonData )
++ {
++ pCheckButtonData = new SvLBoxButtonData( &aSwCheckLB );
++ aSwCheckLB.SetCheckButtonData( pCheckButtonData );
++ }
++
++ pEntry->AddItem( new SvLBoxContextBmp( pEntry, 0, Image(), Image(), 0)); // Sonst Puff!
++
++ String sEmpty;
++ if (nCol == CBCOL_SECOND)
++ pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte
++ else
++ pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) );
++
++ if (nCol == CBCOL_FIRST)
++ pEntry->AddItem( new SvLBoxString( pEntry, 0, sEmpty) ); // Leerspalte
++ else
++ pEntry->AddItem( new SvLBoxButton( pEntry, SvLBoxButtonKind_enabledCheckbox, 0, pCheckButtonData ) );
++
++ pEntry->AddItem( new OfaImpBrwString( pEntry, 0, rTxt ) );
++
++ return pEntry;
++}
++
+ OfaQuoteTabPage::OfaQuoteTabPage( Window* pParent, const SfxItemSet& rSet ) :
+ SfxTabPage(pParent, SVX_RES( RID_OFAPAGE_AUTOCORR_QUOTE ), rSet),
++ aCheckLB (this, SVX_RES(CLB_SETTINGS )),
++ aSwCheckLB (this, SVX_RES(CLB_SETTINGS )),
++ sHeader1 (SVX_RES( STR_HEADER1 )),
++ sHeader2 (SVX_RES( STR_HEADER2 )),
++ sNonBrkSpace (SVX_RES( ST_NON_BREAK_SPACE )),
++ sOrdinal (SVX_RES( ST_ORDINAL )),
++ pCheckButtonData ( NULL ),
++
+ aSingleFL (this, SVX_RES(FL_SINGLE )),
+ aSingleTypoCB (this, SVX_RES(CB_SGL_TYPO )),
+ aSglStartQuoteFT (this, SVX_RES(FT_SGL_STARTQUOTE )),
+@@ -2078,6 +2078,38 @@ OfaQuoteTabPage::OfaQuoteTabPage( Window* pParent, const SfxItemSet& rSet ) :
+ sStandard(SVX_RES(ST_STANDARD))
+ {
+ FreeResource();
++
++ BOOL bShowSWOptions = FALSE;
++
++ aCheckLB.SetHelpId( HID_OFAPAGE_QUOTE_CLB );
++ aSwCheckLB.SetHelpId( HID_OFAPAGE_QUOTE_SW_CLB );
++
++ SFX_ITEMSET_ARG( &rSet, pItem, SfxBoolItem, SID_AUTO_CORRECT_DLG, FALSE );
++ if ( pItem && pItem->GetValue() )
++ bShowSWOptions = TRUE;
++
++ if ( bShowSWOptions )
++ {
++ static long aStaticTabs[]=
++ {
++ 3, 0, 20, 40
++ };
++
++ aSwCheckLB.SetWindowBits(WB_HSCROLL| WB_VSCROLL);
++
++ aSwCheckLB.SvxSimpleTable::SetTabs(aStaticTabs);
++ String sHeader( sHeader1 );
++ sHeader += '\t';
++ sHeader += sHeader2;
++ sHeader += '\t';
++ aSwCheckLB.InsertHeaderEntry( sHeader, HEADERBAR_APPEND,
++ HIB_CENTER | HIB_VCENTER | HIB_FIXEDPOS | HIB_FIXED);
++ aCheckLB.Hide( TRUE );
++ }
++ else
++ {
++ aSwCheckLB.HideTable( );
++ }
+
+ aStartQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl));
+ aEndQuotePB.SetClickHdl(LINK(this, OfaQuoteTabPage, QuoteHdl));
+@@ -2092,6 +2124,7 @@ OfaQuoteTabPage::OfaQuoteTabPage( Window* pParent, const SfxItemSet& rSet ) :
+ --------------------------------------------------*/
+ OfaQuoteTabPage::~OfaQuoteTabPage()
+ {
++ delete( pCheckButtonData );
+ }
+ /*-----------------03.07.97 13:17-------------------
+
+@@ -2109,6 +2142,32 @@ BOOL OfaQuoteTabPage::FillItemSet( SfxItemSet& )
+ SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect();
+
+ long nFlags = pAutoCorrect->GetFlags();
++
++ if ( aCheckLB.IsVisible( ) )
++ {
++ USHORT nPos = 0;
++ pAutoCorrect->SetAutoCorrFlag(AddNonBrkSpace, aCheckLB.IsChecked(nPos++));
++ pAutoCorrect->SetAutoCorrFlag(ChgOrdinalNumber, aCheckLB.IsChecked(nPos++));
++ }
++
++ BOOL bModified = FALSE;
++ if ( aSwCheckLB.IsVisible( ) )
++ {
++ SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
++
++ BOOL bCheck = aSwCheckLB.IsChecked(ADD_NONBRK_SPACE, CBCOL_FIRST);
++ bModified |= pOpt->bAddNonBrkSpace != bCheck;
++ pOpt->bAddNonBrkSpace = bCheck;
++ pAutoCorrect->SetAutoCorrFlag(AddNonBrkSpace,
++ aSwCheckLB.IsChecked(ADD_NONBRK_SPACE, CBCOL_SECOND));
++
++ bCheck = aSwCheckLB.IsChecked(REPLACE_1ST, CBCOL_FIRST);
++ bModified |= pOpt->bChgOrdinalNumber != bCheck;
++ pOpt->bChgOrdinalNumber = bCheck;
++ pAutoCorrect->SetAutoCorrFlag(ChgOrdinalNumber,
++ aSwCheckLB.IsChecked(REPLACE_1ST, CBCOL_SECOND));
++ }
++
+ pAutoCorrect->SetAutoCorrFlag(ChgQuotes, aTypoCB.IsChecked());
+ pAutoCorrect->SetAutoCorrFlag(ChgSglQuotes, aSingleTypoCB.IsChecked());
+ BOOL bReturn = nFlags != pAutoCorrect->GetFlags();
+@@ -2137,7 +2196,7 @@ BOOL OfaQuoteTabPage::FillItemSet( SfxItemSet& )
+ pAutoCorrect->SetEndSingleQuote(cUCS2);
+ }
+
+- if(bReturn )
++ if( bModified || bReturn )
+ {
+ SvxAutoCorrCfg* pCfg = SvxAutoCorrCfg::Get();
+ pCfg->SetModified();
+@@ -2160,6 +2219,42 @@ void OfaQuoteTabPage::Reset( const SfxItemSet& )
+ SvxAutoCorrect* pAutoCorrect = SvxAutoCorrCfg::Get()->GetAutoCorrect();
+ const long nFlags = pAutoCorrect->GetFlags();
+
++ // Initialize the Sw options
++ if ( aSwCheckLB.IsVisible( ) )
++ {
++ SvxSwAutoFmtFlags *pOpt = &pAutoCorrect->GetSwFlags();
++
++ aSwCheckLB.SetUpdateMode( FALSE );
++ aSwCheckLB.Clear();
++
++ aSwCheckLB.GetModel()->Insert(CreateEntry(sNonBrkSpace, CBCOL_BOTH ));
++ aSwCheckLB.GetModel()->Insert(CreateEntry(sOrdinal, CBCOL_BOTH ));
++
++ aSwCheckLB.CheckEntryPos( ADD_NONBRK_SPACE, CBCOL_FIRST, pOpt->bAddNonBrkSpace );
++ aSwCheckLB.CheckEntryPos( ADD_NONBRK_SPACE, CBCOL_SECOND, 0 != (nFlags & AddNonBrkSpace) );
++ aSwCheckLB.CheckEntryPos( REPLACE_1ST, CBCOL_FIRST, pOpt->bChgOrdinalNumber );
++ aSwCheckLB.CheckEntryPos( REPLACE_1ST, CBCOL_SECOND, 0 != (nFlags & ChgOrdinalNumber) );
++
++ aSwCheckLB.SetUpdateMode( TRUE );
++ }
++
++ // Initialize the non Sw options
++ if ( aCheckLB.IsVisible( ) )
++ {
++ aCheckLB.SetUpdateMode( FALSE );
++ aCheckLB.Clear( );
++
++ aCheckLB.InsertEntry( sNonBrkSpace );
++ aCheckLB.InsertEntry( sOrdinal );
++
++ USHORT nPos = 0;
++ aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & AddNonBrkSpace) );
++ aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & ChgOrdinalNumber) );
++
++ aCheckLB.SetUpdateMode( TRUE );
++ }
++
++ // Initialize the quote stuffs
+ aTypoCB .Check(0 != (nFlags & ChgQuotes));
+ aSingleTypoCB .Check(0 != (nFlags & ChgSglQuotes));
+ aTypoCB .SaveValue();
diff --git svx/source/cui/autocdlg.hrc svx/source/cui/autocdlg.hrc
-index 38b3507..7aef1e4 100644
+index 38b3507..8a2c51b 100644
--- svx/source/cui/autocdlg.hrc
+++ svx/source/cui/autocdlg.hrc
-@@ -153,6 +153,7 @@
+@@ -148,7 +148,7 @@
+ #define STR_NO_DBL_SPACES 204
+ #define ST_DETECT_URL 205
+ #define ST_ORDINAL 206
+-#define ST_FRACTION 207
++#define ST_NON_BREAK_SPACE 207
+ #define ST_DASH 208
#define FT_LANG 209
#define LB_LANG 210
- #define ST_CORRECT_ACCIDENTAL_CAPS_LOCK 211
-+#define ST_NON_BREAK_SPACE 212
-
- #define CB_SMARTTAGS 220
- #define FT_SMARTTAGS 221
diff --git svx/source/cui/autocdlg.hxx svx/source/cui/autocdlg.hxx
-index ea5ee11..e3d1d3f 100644
+index ea5ee11..2c30af3 100644
--- svx/source/cui/autocdlg.hxx
+++ svx/source/cui/autocdlg.hxx
-@@ -118,6 +118,7 @@ private:
+@@ -116,8 +116,8 @@ private:
+ String sBoldUnderline;
+ String sURL;
String sNoDblSpaces;
- String sHalf;
+- String sHalf;
String sDash;
+ String sNonBrkSpace;
String sFirst;
String sAccidentalCaps;
-@@ -162,6 +163,7 @@ class OfaSwAutoFmtOptionsPage : public SfxTabPage
- String sFraction;
+@@ -152,16 +152,15 @@ class OfaSwAutoFmtOptionsPage : public SfxTabPage
+ String sUseReplaceTbl;
+ String sCptlSttWord;
+ String sCptlSttSent;
+- String sTypo;
+ String sUserStyle;
+ String sBullet;
+ String sByInputBullet;
+ String sBoldUnder;
+ String sNoDblSpaces;
+ String sCorrectCapsLock;
+- String sFraction;
String sDetectURL;
String sDash;
+ String sNonBrkSpace;
String sOrdinal;
String sRightMargin;
String sNum;
+@@ -336,6 +335,18 @@ class OfaQuoteTabPage : public SfxTabPage
+ using TabPage::ActivatePage;
+
+ private:
++ // For anything but writer
++ SvxCheckListBox aCheckLB;
++
++ // Just for writer
++ OfaACorrCheckListBox aSwCheckLB;
++ String sHeader1;
++ String sHeader2;
++
++ String sNonBrkSpace;
++ String sOrdinal;
++
++ SvLBoxButtonData* pCheckButtonData;
+
+ FixedLine aSingleFL;
+ CheckBox aSingleTypoCB;
+@@ -374,6 +385,8 @@ private:
+
+ String ChangeStringExt_Impl( sal_UCS4 );
+
++ SvLBoxEntry* CreateEntry(String& rTxt, USHORT nCol);
++
+ OfaQuoteTabPage( Window* pParent, const SfxItemSet& rSet );
+ public:
+ ~OfaQuoteTabPage();
diff --git svx/source/cui/autocdlg.src svx/source/cui/autocdlg.src
-index edbd265..e207c5f 100644
+index edbd265..d78ca4b 100644
--- svx/source/cui/autocdlg.src
+++ svx/source/cui/autocdlg.src
-@@ -144,6 +144,10 @@ TabDialog RID_OFA_AUTOCORR_DLG
- String ST_CORRECT_ACCIDENTAL_CAPS_LOCK \
+@@ -73,7 +73,7 @@ TabDialog RID_OFA_AUTOCORR_DLG
+ PageItem
+ {
+ Identifier = RID_OFAPAGE_AUTOCORR_QUOTE ;
+- Text [ en-US ] = "Custom Quotes" ;
++ Text [ en-US ] = "Localized Options" ;
+ };
+ PageItem
+ {
+@@ -129,14 +129,6 @@ TabDialog RID_OFA_AUTOCORR_DLG
{ \
- Text [ en-US ] = "Correct accidental use of cAPS LOCK key" ; \
-+ }; \
-+ String ST_NON_BREAK_SPACE \
-+ { \
-+ Text [ en-US ] = "Add non breaking space before : ; ? ! in french text" ; \
+ Text [ en-US ] = "URL Recognition" ; \
+ }; \
+- String ST_ORDINAL \
+- { \
+- Text [ en-US ] = "Replace 1st... with 1^st..." ; \
+- }; \
+- String ST_FRACTION \
+- { \
+- Text [ en-US ] = "Replace 1/2 ... with ½ ..." ; \
+- }; \
+ String ST_DASH \
+ { \
+ Text [ en-US ] = "Replace dashes" ; \
+@@ -219,10 +211,6 @@ TabPage RID_OFAPAGE_AUTOFMT_APPLY
+ /* ### ACHTUNG: Neuer Text in Resource? Leere Absätze entfernen : Leere Absõtze entfernen */
+ Text [ en-US ] = "Remove blank paragraphs" ;
+ };
+- String ST_TYPO
+- {
+- Text [ en-US ] = "Replace \"standard\" quotes with %1custom%2 quotes" ;
+- };
+ String ST_USER_STYLE
+ {
+ Text [ en-US ] = "Replace Custom Styles" ;
+@@ -498,114 +486,137 @@ TabPage RID_OFAPAGE_AUTOCORR_QUOTE
+ Size = MAP_APPFONT ( 260 , 185 ) ;
+ SVLook = TRUE ;
+ Hide = TRUE ;
+- Text [ en-US ] = "Custom Quotes" ;
++ Text [ en-US ] = "Localized Options" ;
++ Control CLB_SETTINGS
++ {
++ Pos = MAP_APPFONT ( 4 , 3 ) ;
++ Size = MAP_APPFONT ( 252 , 85 ) ;
++ Border = TRUE ;
++ TabStop = TRUE ;
++ };
++ String STR_HEADER1
++ {
++ Text [ en-US ] = "[M]" ;
++ };
++ String STR_HEADER2
++ {
++ Text [ en-US ] = "[T]" ;
++ };
++ String ST_NON_BREAK_SPACE
++ {
++ Text [ en-US ] = "Add non breaking space before specific punctuation marks in french text" ;
++ };
++ String ST_ORDINAL
++ {
++ Text [ en-US ] = "Format ordinal numbers suffixes (1st -> 1^st)" ;
++ };
+ FixedLine FL_SINGLE
+ {
+- Pos = MAP_APPFONT ( 4 , 3 ) ;
+- Size = MAP_APPFONT ( 252 , 8 ) ;
++ Pos = MAP_APPFONT ( 4 , 90 ) ;
++ Size = MAP_APPFONT ( 122 , 8 ) ;
+ Text [ en-US ] = "Single quotes" ;
+ };
+ Checkbox CB_SGL_TYPO
+ {
+- Pos = MAP_APPFONT ( 7 , 14 ) ;
++ Pos = MAP_APPFONT ( 7 , 101 ) ;
+ Size = MAP_APPFONT ( 86 , 10 ) ;
+ Text [ en-US ] = "Repla~ce" ;
+ };
+ FixedText FT_SGL_STARTQUOTE
+ {
+- Pos = MAP_APPFONT ( 7 , 30 ) ;
++ Pos = MAP_APPFONT ( 7 , 114 ) ;
+ Size = MAP_APPFONT ( 86 , 8 ) ;
+ Text [ en-US ] = "~Start quote:" ;
+ };
+ PushButton PB_SGL_STARTQUOTE
+ {
+- Pos = MAP_APPFONT ( 105 , 28 ) ;
++ Pos = MAP_APPFONT ( 10 , 125 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ Text = "\'" ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_SGSTEX
+ {
+- Pos = MAP_APPFONT ( 124 , 30 ) ;
++ Pos = MAP_APPFONT ( 26 , 127 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ };
+ FixedText FT_SGL_ENDQUOTE
+ {
+- Pos = MAP_APPFONT ( 7 , 46 ) ;
++ Pos = MAP_APPFONT ( 7 , 139 ) ;
+ Size = MAP_APPFONT ( 86 , 8 ) ;
+ Text [ en-US ] = "~End quote:" ;
+ };
+ PushButton PB_SGL_ENDQUOTE
+ {
+- Pos = MAP_APPFONT ( 105 , 44 ) ;
++ Pos = MAP_APPFONT ( 10 , 151 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ Text = "\'" ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_SGENEX
+ {
+- Pos = MAP_APPFONT ( 124 , 46 ) ;
++ Pos = MAP_APPFONT ( 26 , 153 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ };
+ PushButton PB_SGL_STD
+ {
+- Pos = MAP_APPFONT ( 198 , 63 ) ;
++ Pos = MAP_APPFONT ( 7 , 167 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "~Default" ;
+ };
+ FixedLine FL_DOUBLE
+ {
+- Pos = MAP_APPFONT ( 4 , 83 ) ;
+- Size = MAP_APPFONT ( 252 , 8 ) ;
++ Pos = MAP_APPFONT ( 134 , 90 ) ;
++ Size = MAP_APPFONT ( 122 , 8 ) ;
+ Text [ en-US ] = "Double quotes" ;
+ };
+ CheckBox CB_TYPO
+ {
+- Pos = MAP_APPFONT ( 7 , 94 ) ;
++ Pos = MAP_APPFONT ( 137 , 101 ) ;
+ Size = MAP_APPFONT ( 86 , 10 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "Repl~ace" ;
};
+ FixedText FT_STARTQUOTE
+ {
+- Pos = MAP_APPFONT ( 7 , 110 ) ;
++ Pos = MAP_APPFONT ( 137 , 114 ) ;
+ Size = MAP_APPFONT ( 86 , 8 ) ;
+ Text [ en-US ] = "Start q~uote:" ;
+ };
+ PushButton PB_STARTQUOTE
+ {
+- Pos = MAP_APPFONT ( 105 , 108 ) ;
++ Pos = MAP_APPFONT ( 140 , 125 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ Text = "\"" ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_DBSTEX
+ {
+- Pos = MAP_APPFONT ( 124 , 110 ) ;
++ Pos = MAP_APPFONT ( 156 , 127 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ };
+ FixedText FT_ENDQUOTE
+ {
+- Pos = MAP_APPFONT ( 7 , 126 ) ;
++ Pos = MAP_APPFONT ( 137 , 139 ) ;
+ Size = MAP_APPFONT ( 86 , 10 ) ;
+ Text [ en-US ] = "E~nd quote:" ;
+ };
+ PushButton PB_ENDQUOTE
+ {
+- Pos = MAP_APPFONT ( 105 , 124 ) ;
++ Pos = MAP_APPFONT ( 140 , 151 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ Text = "\"" ;
+ TabStop = TRUE ;
+ };
+ FixedText FT_DBECEX
+ {
+- Pos = MAP_APPFONT ( 124 , 126 ) ;
++ Pos = MAP_APPFONT ( 156 , 153 ) ;
+ Size = MAP_APPFONT ( 50 , 8 ) ;
+ };
+ PushButton PB_DBL_STD
+ {
+- Pos = MAP_APPFONT ( 195 , 143 ) ;
++ Pos = MAP_APPFONT ( 137 , 167 ) ;
+ Size = MAP_APPFONT ( 50 , 14 ) ;
+ TabStop = TRUE ;
+ Text [ en-US ] = "De~fault" ;
+diff --git svx/source/dialog/simptabl.cxx svx/source/dialog/simptabl.cxx
+index 4a3ad5e..d8fbe2d 100644
+--- svx/source/dialog/simptabl.cxx
++++ svx/source/dialog/simptabl.cxx
+@@ -291,7 +291,7 @@ void SvxSimpleTable::ShowTable()
- /**************************************************************************/
+ void SvxSimpleTable::HideTable()
+ {
+- aPrivContainer.Show();
++ aPrivContainer.Hide();
+ }
+
+ BOOL SvxSimpleTable::IsVisible() const
diff --git svx/source/editeng/acorrcfg.cxx svx/source/editeng/acorrcfg.cxx
-index 95ecf61..4dca043 100644
+index 95ecf61..282500b 100644
--- svx/source/editeng/acorrcfg.cxx
+++ svx/source/editeng/acorrcfg.cxx
-@@ -128,9 +128,10 @@ Sequence<OUString> SvxBaseAutoCorrCfg::GetPropertyNames()
- "ReplaceDoubleQuote", // 14
- "DoubleQuoteAtStart", // 15
- "DoubleQuoteAtEnd", // 16
-- "CorrectAccidentalCapsLock" // 17
-+ "CorrectAccidentalCapsLock", // 17
-+ "AddNonBreakingSpace" // 18
- };
-- const int nCount = 18;
-+ const int nCount = 19;
- Sequence<OUString> aNames(nCount);
- OUString* pNames = aNames.getArray();
- for(int i = 0; i < nCount; i++)
-@@ -234,6 +235,10 @@ void SvxBaseAutoCorrCfg::Load(sal_Bool bInit)
+@@ -119,7 +119,7 @@ Sequence<OUString> SvxBaseAutoCorrCfg::GetPropertyNames()
+ "ChangeUnderlineWeight", // 5
+ "SetInetAttribute", // 6
+ "ChangeOrdinalNumber", // 7
+- "ChangeFraction", // 8
++ "AddNonBreakingSpace", // 8
+ "ChangeDash", // 9
+ "RemoveDoubleSpaces", // 10
+ "ReplaceSingleQuote", // 11
+@@ -190,17 +190,17 @@ void SvxBaseAutoCorrCfg::Load(sal_Bool bInit)
+ if(*(sal_Bool*)pValues[nProp].getValue())
+ nFlags |= ChgOrdinalNumber;
+ break;//"ChangeOrdinalNumber",
+- case 8:
++ case 8:
if(*(sal_Bool*)pValues[nProp].getValue())
- nFlags |= CorrectCapsLock;
- break;//"CorrectAccidentalCapsLock"
-+ case 18:
-+ if(*(sal_Bool*)pValues[nProp].getValue())
+- nFlags |= ChgFractionSymbol;
+- break;//"ChangeFraction",
+ nFlags |= AddNonBrkSpace;
-+ break;//"AddNonBreakingSpace"
- }
- }
- }
-@@ -408,8 +413,9 @@ Sequence<OUString> SvxSwAutoCorrCfg::GetPropertyNames()
- "Format/ByInput/ApplyNumbering/SpecialCharacter/FontFamily", //45
- "Format/ByInput/ApplyNumbering/SpecialCharacter/FontCharset", //46
- "Format/ByInput/ApplyNumbering/SpecialCharacter/FontPitch", //47
-+ "Format/Option/AddNonBreakingSpace", //48
++ break;//"AddNonBreakingSpace"
+ case 9:
+ if(*(sal_Bool*)pValues[nProp].getValue())
+ nFlags |= ChgToEnEmDash;
+ break;//"ChangeDash",
+ case 10:
+ if(*(sal_Bool*)pValues[nProp].getValue())
+- nFlags |= IngnoreDoubleSpace;
++ nFlags |= IgnoreDoubleSpace;
+ break;//"RemoveDoubleSpaces",
+ case 11:
+ if(*(sal_Bool*)pValues[nProp].getValue())
+@@ -306,16 +306,16 @@ void SvxBaseAutoCorrCfg::Commit()
+ bVal = 0 != (nFlags & ChgOrdinalNumber);
+ pValues[nProp].setValue(&bVal, rType);
+ break;//"ChangeOrdinalNumber",
+- case 8:
+- bVal = 0 != (nFlags & ChgFractionSymbol);
++ case 8:
++ bVal = 0 != (nFlags & AddNonBrkSpace);
+ pValues[nProp].setValue(&bVal, rType);
+- break;//"ChangeFraction",
++ break;//"AddNonBreakingSpace"
+ case 9:
+ bVal = 0 != (nFlags & ChgToEnEmDash);
+ pValues[nProp].setValue(&bVal, rType);
+ break;//"ChangeDash",
+ case 10:
+- bVal = 0 != (nFlags & IngnoreDoubleSpace);
++ bVal = 0 != (nFlags & IgnoreDoubleSpace);
+ pValues[nProp].setValue(&bVal, rType);
+ break;//"RemoveDoubleSpaces",
+ case 11:
+@@ -371,7 +371,7 @@ Sequence<OUString> SvxSwAutoCorrCfg::GetPropertyNames()
+ "Format/Option/ChangeUnderlineWeight", // 8
+ "Format/Option/SetInetAttribute", // 9
+ "Format/Option/ChangeOrdinalNumber", //10
+- "Format/Option/ChangeFraction", //11
++ "Format/Option/AddNonBreakingSpace", //11
+ "Format/Option/ChangeDash", //12
+ "Format/Option/DelEmptyParagraphs", //13
+ "Format/Option/ReplaceUserStyle", //14
+@@ -381,35 +381,34 @@ Sequence<OUString> SvxSwAutoCorrCfg::GetPropertyNames()
+ "Format/Option/ChangeToBullets/SpecialCharacter/FontFamily", //18
+ "Format/Option/ChangeToBullets/SpecialCharacter/FontCharset", //19
+ "Format/Option/ChangeToBullets/SpecialCharacter/FontPitch", //20
+- "Format/Option/ReplaceQuote", //21
+- "Format/Option/CombineParagraphs", //22
+- "Format/Option/CombineValue", //23
+- "Format/Option/DelSpacesAtStartEnd", //24
+- "Format/Option/DelSpacesBetween", //25
+- "Format/ByInput/Enable", //26
+- "Format/ByInput/ChangeDash", //27
+- "Format/ByInput/ApplyNumbering/Enable", //28
+- "Format/ByInput/ChangeToBorders", //29
+- "Format/ByInput/ChangeToTable", //30
+- "Format/ByInput/ReplaceStyle", //31
+- "Format/ByInput/DelSpacesAtStartEnd", //32
+- "Format/ByInput/DelSpacesBetween", //33
+- "Completion/Enable", //34
+- "Completion/MinWordLen", //35
+- "Completion/MaxListLen", //36
+- "Completion/CollectWords", //37
+- "Completion/EndlessList", //38
+- "Completion/AppendBlank", //39
+- "Completion/ShowAsTip", //40
+- "Completion/AcceptKey", //41
+- "Completion/KeepList", //42
+- "Format/ByInput/ApplyNumbering/SpecialCharacter/Char", //43
+- "Format/ByInput/ApplyNumbering/SpecialCharacter/Font", //44
+- "Format/ByInput/ApplyNumbering/SpecialCharacter/FontFamily", //45
+- "Format/ByInput/ApplyNumbering/SpecialCharacter/FontCharset", //46
+- "Format/ByInput/ApplyNumbering/SpecialCharacter/FontPitch", //47
++ "Format/Option/CombineParagraphs", //21
++ "Format/Option/CombineValue", //22
++ "Format/Option/DelSpacesAtStartEnd", //23
++ "Format/Option/DelSpacesBetween", //24
++ "Format/ByInput/Enable", //25
++ "Format/ByInput/ChangeDash", //26
++ "Format/ByInput/ApplyNumbering/Enable", //27
++ "Format/ByInput/ChangeToBorders", //28
++ "Format/ByInput/ChangeToTable", //29
++ "Format/ByInput/ReplaceStyle", //30
++ "Format/ByInput/DelSpacesAtStartEnd", //31
++ "Format/ByInput/DelSpacesBetween", //32
++ "Completion/Enable", //33
++ "Completion/MinWordLen", //34
++ "Completion/MaxListLen", //35
++ "Completion/CollectWords", //36
++ "Completion/EndlessList", //37
++ "Completion/AppendBlank", //38
++ "Completion/ShowAsTip", //39
++ "Completion/AcceptKey", //40
++ "Completion/KeepList", //41
++ "Format/ByInput/ApplyNumbering/SpecialCharacter/Char", //42
++ "Format/ByInput/ApplyNumbering/SpecialCharacter/Font", //43
++ "Format/ByInput/ApplyNumbering/SpecialCharacter/FontFamily", //44
++ "Format/ByInput/ApplyNumbering/SpecialCharacter/FontCharset", //45
++ "Format/ByInput/ApplyNumbering/SpecialCharacter/FontPitch" //46
};
- const int nCount = 48;
-+ const int nCount = 49;
++ const int nCount = 47;
Sequence<OUString> aNames(nCount);
OUString* pNames = aNames.getArray();
for(int i = 0; i < nCount; i++)
-@@ -561,6 +567,7 @@ void SvxSwAutoCorrCfg::Load(sal_Bool bInit)
- rSwFlags.aByInputBulletFont.SetPitch(FontPitch(nVal));
+@@ -447,7 +446,7 @@ void SvxSwAutoCorrCfg::Load(sal_Bool bInit)
+ case 8: rSwFlags.bChgWeightUnderl = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ChangeUnderlineWeight",
+ case 9: rSwFlags.bSetINetAttr = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/SetInetAttribute",
+ case 10: rSwFlags.bChgOrdinalNumber = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ChangeOrdinalNumber",
+- case 11: rSwFlags.bChgFracionSymbol = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ChangeFraction",
++ case 11: rSwFlags.bAddNonBrkSpace = *(sal_Bool*)pValues[nProp].getValue( ); break; // "Format/Option/AddNonBreakingSpace",
+ // it doesn't exist here - the common flags are used for that -> LM
+ // case 12: rSwFlags.bChgToEnEmDash = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ChangeDash",
+ case 13: rSwFlags.bDelEmptyNode = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/DelEmptyParagraphs",
+@@ -484,78 +483,77 @@ void SvxSwAutoCorrCfg::Load(sal_Bool bInit)
+ rSwFlags.aBulletFont.SetPitch(FontPitch(nVal));
}
- break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontPitch",
-+ case 48 : rSwFlags.bAddNonBrkSpace = *(sal_Bool*)pValues[nProp].getValue( ); break;// "Format/Output/AddNonBreakingSpace",
- }
- }
- }
-@@ -676,6 +683,9 @@ void SvxSwAutoCorrCfg::Commit()
- case 47 :
+ break; // "Format/Option/ChangeToBullets/SpecialCharacter/FontPitch",
+- case 21: rSwFlags.bReplaceQuote = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/ReplaceQuote",
+- case 22: rSwFlags.bRightMargin = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/CombineParagraphs",
+- case 23:
++ case 21: rSwFlags.bRightMargin = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/CombineParagraphs",
++ case 22:
+ {
+ sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
+ rSwFlags.nRightMargin =
+ sal::static_int_cast< BYTE >(nVal);
+ }
+ break; // "Format/Option/CombineValue",
+- case 24: rSwFlags.bAFmtDelSpacesAtSttEnd = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/DelSpacesAtStartEnd",
+- case 25: rSwFlags.bAFmtDelSpacesBetweenLines = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/DelSpacesBetween",
+- case 26: rParent.bAutoFmtByInput = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/Enable",
+- case 27: rSwFlags.bChgToEnEmDash = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ChangeDash",
+- case 28: rSwFlags.bSetNumRule = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ApplyNumbering/Enable",
+- case 29: rSwFlags.bSetBorder = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ChangeToBorders",
+- case 30: rSwFlags.bCreateTable = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ChangeToTable",
+- case 31: rSwFlags.bReplaceStyles = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ReplaceStyle",
+- case 32: rSwFlags.bAFmtByInpDelSpacesAtSttEnd = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/DelSpacesAtStartEnd",
+- case 33: rSwFlags.bAFmtByInpDelSpacesBetweenLines = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/DelSpacesBetween",
+- case 34: rSwFlags.bAutoCompleteWords = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/Enable",
+- case 35:
++ case 23: rSwFlags.bAFmtDelSpacesAtSttEnd = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/DelSpacesAtStartEnd",
++ case 24: rSwFlags.bAFmtDelSpacesBetweenLines = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/Option/DelSpacesBetween",
++ case 25: rParent.bAutoFmtByInput = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/Enable",
++ case 26: rSwFlags.bChgToEnEmDash = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ChangeDash",
++ case 27: rSwFlags.bSetNumRule = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ApplyNumbering/Enable",
++ case 28: rSwFlags.bSetBorder = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ChangeToBorders",
++ case 29: rSwFlags.bCreateTable = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ChangeToTable",
++ case 30: rSwFlags.bReplaceStyles = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/ReplaceStyle",
++ case 31: rSwFlags.bAFmtByInpDelSpacesAtSttEnd = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/DelSpacesAtStartEnd",
++ case 32: rSwFlags.bAFmtByInpDelSpacesBetweenLines = *(sal_Bool*)pValues[nProp].getValue(); break; // "Format/ByInput/DelSpacesBetween",
++ case 33: rSwFlags.bAutoCompleteWords = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/Enable",
++ case 34:
+ {
+ sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
+ rSwFlags.nAutoCmpltWordLen =
+ sal::static_int_cast< USHORT >(nVal);
+ }
+ break; // "Completion/MinWordLen",
+- case 36:
++ case 35:
+ {
+ sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
+ rSwFlags.nAutoCmpltListLen =
+ sal::static_int_cast< USHORT >(nVal);
+ }
+ break; // "Completion/MaxListLen",
+- case 37: rSwFlags.bAutoCmpltCollectWords = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/CollectWords",
+- case 38: rSwFlags.bAutoCmpltEndless = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/EndlessList",
+- case 39: rSwFlags.bAutoCmpltAppendBlanc = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/AppendBlank",
+- case 40: rSwFlags.bAutoCmpltShowAsTip = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/ShowAsTip",
+- case 41:
++ case 36: rSwFlags.bAutoCmpltCollectWords = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/CollectWords",
++ case 37: rSwFlags.bAutoCmpltEndless = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/EndlessList",
++ case 38: rSwFlags.bAutoCmpltAppendBlanc = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/AppendBlank",
++ case 39: rSwFlags.bAutoCmpltShowAsTip = *(sal_Bool*)pValues[nProp].getValue(); break; // "Completion/ShowAsTip",
++ case 40:
+ {
+ sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
+ rSwFlags.nAutoCmpltExpandKey =
+ sal::static_int_cast< USHORT >(nVal);
+ }
+ break; // "Completion/AcceptKey"
+- case 42 :rSwFlags.bAutoCmpltKeepList = *(sal_Bool*)pValues[nProp].getValue(); break;//"Completion/KeepList"
+- case 43 :
++ case 41 :rSwFlags.bAutoCmpltKeepList = *(sal_Bool*)pValues[nProp].getValue(); break;//"Completion/KeepList"
++ case 42 :
+ {
+ sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
+ rSwFlags.cByInputBullet =
+ sal::static_int_cast< sal_Unicode >(nVal);
+ }
+ break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/Char",
+- case 44 :
++ case 43 :
+ {
+ OUString sTemp; pValues[nProp] >>= sTemp;
+ rSwFlags.aByInputBulletFont.SetName(sTemp);
+ }
+ break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/Font",
+- case 45 :
++ case 44 :
+ {
+ sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
+ rSwFlags.aByInputBulletFont.SetFamily(FontFamily(nVal));
+ }
+ break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontFamily",
+- case 46 :
++ case 45 :
+ {
+ sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
+ rSwFlags.aByInputBulletFont.SetCharSet(CharSet(nVal));
+ }
+ break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontCharset",
+- case 47 :
++ case 46 :
+ {
+ sal_Int32 nVal = 0; pValues[nProp] >>= nVal;
+ rSwFlags.aByInputBulletFont.SetPitch(FontPitch(nVal));
+@@ -608,7 +606,7 @@ void SvxSwAutoCorrCfg::Commit()
+ case 8: bVal = rSwFlags.bChgWeightUnderl; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/ChangeUnderlineWeight",
+ case 9: bVal = rSwFlags.bSetINetAttr; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/SetInetAttribute",
+ case 10: bVal = rSwFlags.bChgOrdinalNumber; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/ChangeOrdinalNumber",
+- case 11: bVal = rSwFlags.bChgFracionSymbol; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/ChangeFraction",
++ case 11: bVal = rSwFlags.bAddNonBrkSpace; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/AddNonBreakingSpace",
+ // it doesn't exist here - the common flags are used for that -> LM
+ case 12:
+ bVal = sal_True; pValues[nProp].setValue(&bVal, rType);
+@@ -631,49 +629,48 @@ void SvxSwAutoCorrCfg::Commit()
+ case 20:
+ pValues[nProp] <<= (sal_Int32)rSwFlags.aBulletFont.GetPitch();
+ break; // "Format/Option/ChangeToBullets/SpecialCharacter/FontPitch",
+- case 21: bVal = rSwFlags.bReplaceQuote; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/ReplaceQuote",
+- case 22: bVal = rSwFlags.bRightMargin; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/CombineParagraphs",
+- case 23:
++ case 21: bVal = rSwFlags.bRightMargin; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/CombineParagraphs",
++ case 22:
+ pValues[nProp] <<= (sal_Int32)rSwFlags.nRightMargin;
+ break; // "Format/Option/CombineValue",
+- case 24: bVal = rSwFlags.bAFmtDelSpacesAtSttEnd; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/DelSpacesAtStartEnd",
+- case 25: bVal = rSwFlags.bAFmtDelSpacesBetweenLines; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/DelSpacesBetween",
+- case 26: bVal = rParent.bAutoFmtByInput; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/Enable",
+- case 27: bVal = rSwFlags.bChgToEnEmDash; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ChangeDash",
+- case 28: bVal = rSwFlags.bSetNumRule; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ApplyNumbering/Enable",
+- case 29: bVal = rSwFlags.bSetBorder; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ChangeToBorders",
+- case 30: bVal = rSwFlags.bCreateTable; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ChangeToTable",
+- case 31: bVal = rSwFlags.bReplaceStyles; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ReplaceStyle",
+- case 32: bVal = rSwFlags.bAFmtByInpDelSpacesAtSttEnd; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/DelSpacesAtStartEnd",
+- case 33: bVal = rSwFlags.bAFmtByInpDelSpacesBetweenLines; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/DelSpacesBetween",
+- case 34: bVal = rSwFlags.bAutoCompleteWords; pValues[nProp].setValue(&bVal, rType); break; // "Completion/Enable",
+- case 35:
++ case 23: bVal = rSwFlags.bAFmtDelSpacesAtSttEnd; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/DelSpacesAtStartEnd",
++ case 24: bVal = rSwFlags.bAFmtDelSpacesBetweenLines; pValues[nProp].setValue(&bVal, rType); break; // "Format/Option/DelSpacesBetween",
++ case 25: bVal = rParent.bAutoFmtByInput; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/Enable",
++ case 26: bVal = rSwFlags.bChgToEnEmDash; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ChangeDash",
++ case 27: bVal = rSwFlags.bSetNumRule; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ApplyNumbering/Enable",
++ case 28: bVal = rSwFlags.bSetBorder; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ChangeToBorders",
++ case 29: bVal = rSwFlags.bCreateTable; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ChangeToTable",
++ case 30: bVal = rSwFlags.bReplaceStyles; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/ReplaceStyle",
++ case 31: bVal = rSwFlags.bAFmtByInpDelSpacesAtSttEnd; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/DelSpacesAtStartEnd",
++ case 32: bVal = rSwFlags.bAFmtByInpDelSpacesBetweenLines; pValues[nProp].setValue(&bVal, rType); break; // "Format/ByInput/DelSpacesBetween",
++ case 33: bVal = rSwFlags.bAutoCompleteWords; pValues[nProp].setValue(&bVal, rType); break; // "Completion/Enable",
++ case 34:
+ pValues[nProp] <<= (sal_Int32)rSwFlags.nAutoCmpltWordLen;
+ break; // "Completion/MinWordLen",
+- case 36:
++ case 35:
+ pValues[nProp] <<= (sal_Int32)rSwFlags.nAutoCmpltListLen;
+ break; // "Completion/MaxListLen",
+- case 37: bVal = rSwFlags.bAutoCmpltCollectWords; pValues[nProp].setValue(&bVal, rType); break; // "Completion/CollectWords",
+- case 38: bVal = rSwFlags.bAutoCmpltEndless; pValues[nProp].setValue(&bVal, rType); break; // "Completion/EndlessList",
+- case 39: bVal = rSwFlags.bAutoCmpltAppendBlanc; pValues[nProp].setValue(&bVal, rType); break; // "Completion/AppendBlank",
+- case 40: bVal = rSwFlags.bAutoCmpltShowAsTip; pValues[nProp].setValue(&bVal, rType); break; // "Completion/ShowAsTip",
+- case 41:
++ case 36: bVal = rSwFlags.bAutoCmpltCollectWords; pValues[nProp].setValue(&bVal, rType); break; // "Completion/CollectWords",
++ case 37: bVal = rSwFlags.bAutoCmpltEndless; pValues[nProp].setValue(&bVal, rType); break; // "Completion/EndlessList",
++ case 38: bVal = rSwFlags.bAutoCmpltAppendBlanc; pValues[nProp].setValue(&bVal, rType); break; // "Completion/AppendBlank",
++ case 39: bVal = rSwFlags.bAutoCmpltShowAsTip; pValues[nProp].setValue(&bVal, rType); break; // "Completion/ShowAsTip",
++ case 40:
+ pValues[nProp] <<= (sal_Int32)rSwFlags.nAutoCmpltExpandKey;
+ break; // "Completion/AcceptKey"
+- case 42 :bVal = rSwFlags.bAutoCmpltKeepList; pValues[nProp].setValue(&bVal, rType); break;// "Completion/KeepList"
+- case 43 :
++ case 41 :bVal = rSwFlags.bAutoCmpltKeepList; pValues[nProp].setValue(&bVal, rType); break;// "Completion/KeepList"
++ case 42 :
+ pValues[nProp] <<= (sal_Int32)rSwFlags.cByInputBullet;
+ break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/Char",
+- case 44 :
++ case 43 :
+ pValues[nProp] <<= OUString(rSwFlags.aByInputBulletFont.GetName());
+ break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/Font",
+- case 45 :
++ case 44 :
+ pValues[nProp] <<= (sal_Int32)rSwFlags.aByInputBulletFont.GetFamily();
+ break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontFamily",
+- case 46 :
++ case 45 :
+ pValues[nProp] <<= (sal_Int32)rSwFlags.aByInputBulletFont.GetCharSet();
+ break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontCharset",
+- case 47 :
++ case 46 :
pValues[nProp] <<= (sal_Int32)rSwFlags.aByInputBulletFont.GetPitch();
break;// "Format/ByInput/ApplyNumbering/SpecialCharacter/FontPitch",
-+ case 48:
-+ bVal = rSwFlags.bAddNonBrkSpace; pValues[nProp].setValue(&bVal, rType);
-+ break; // "Format/Option/AddNonBreakingSpace",
}
- }
- PutProperties(aNames, aValues);
+diff --git svx/source/editeng/editeng.cxx svx/source/editeng/editeng.cxx
+index bf84fa2..e485c33 100644
+--- svx/source/editeng/editeng.cxx
++++ svx/source/editeng/editeng.cxx
+@@ -1146,9 +1146,7 @@ sal_Bool EditEngine::PostKeyEvent( const KeyEvent& rKeyEvent, EditView* pEditVie
+ pEditView->pImpEditView->DrawSelection();
+ // Autokorrektur ?
+ if ( ( pImpEditEngine->GetStatus().DoAutoCorrect() ) &&
+- ( ( nCharCode == ' ' ) || ( nCharCode == '*' ) ||
+- ( nCharCode == '\"' ) || ( nCharCode == '\'' ) ||
+- ( nCharCode == '_' ) ))
++ SvxAutoCorrect::IsAutoCorrectChar( nCharCode ) )
+ {
+ aCurSel = pImpEditEngine->AutoCorrect(
+ aCurSel, nCharCode, !pEditView->IsInsertMode(), pFrameWin );
diff --git svx/source/editeng/svxacorr.cxx svx/source/editeng/svxacorr.cxx
-index a6e7401..902e592 100644
+index a6e7401..8db1d87 100644
--- svx/source/editeng/svxacorr.cxx
+++ svx/source/editeng/svxacorr.cxx
@@ -33,6 +33,7 @@
@@ -283,21 +1202,98 @@ index a6e7401..902e592 100644
using namespace ::com::sun::star::ucb;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star;
-@@ -348,6 +351,7 @@ long SvxAutoCorrect::GetDefaultFlags()
- | ChgFractionSymbol
+@@ -334,7 +337,13 @@ sal_Bool SvxAutoCorrect::IsAutoCorrectChar( sal_Unicode cChar )
+ cChar == ' ' || cChar == '\'' || cChar == '\"' ||
+ cChar == '*' || cChar == '_' ||
+ cChar == '.' || cChar == ',' || cChar == ';' ||
+- cChar == ':' || cChar == '?' || cChar == '!';
++ cChar == ':' || cChar == '?' || cChar == '!' || cChar == '/';
++}
++
++sal_Bool SvxAutoCorrect::NeedsHardspaceAutocorr( sal_Unicode cChar )
++{
++ return cChar == ';' || cChar == ':' || cChar == '?' || cChar == '!' ||
++ cChar == '/' /*case for the urls exception*/;
+ }
+
+ /* -----------------19.11.98 10:15-------------------
+@@ -345,9 +354,9 @@ long SvxAutoCorrect::GetDefaultFlags()
+ long nRet = Autocorrect
+ | CptlSttSntnc
+ | CptlSttWrd
+- | ChgFractionSymbol
| ChgOrdinalNumber
| ChgToEnEmDash
+ | AddNonBrkSpace
| ChgWeightUnderl
| SetINetAttr
| ChgQuotes
-@@ -694,6 +698,54 @@ BOOL SvxAutoCorrect::FnChgToEnEmDash(
+@@ -385,9 +394,6 @@ SvxAutoCorrect::SvxAutoCorrect( const String& rShareAutocorrFile,
+ {
+ nFlags = SvxAutoCorrect::GetDefaultFlags();
+
+- c1Div2 = ByteString::ConvertToUnicode( '\xBD', RTL_TEXTENCODING_MS_1252 );
+- c1Div4 = ByteString::ConvertToUnicode( '\xBC', RTL_TEXTENCODING_MS_1252 );
+- c3Div4 = ByteString::ConvertToUnicode( '\xBE', RTL_TEXTENCODING_MS_1252 );
+ cEmDash = ByteString::ConvertToUnicode( '\x97', RTL_TEXTENCODING_MS_1252 );
+ cEnDash = ByteString::ConvertToUnicode( '\x96', RTL_TEXTENCODING_MS_1252 );
+ }
+@@ -405,7 +411,6 @@ SvxAutoCorrect::SvxAutoCorrect( const SvxAutoCorrect& rCpy )
+ nFlags( rCpy.nFlags & ~(ChgWordLstLoad|CplSttLstLoad|WrdSttLstLoad)),
+ cStartDQuote( rCpy.cStartDQuote ), cEndDQuote( rCpy.cEndDQuote ),
+ cStartSQuote( rCpy.cStartSQuote ), cEndSQuote( rCpy.cEndSQuote ),
+- c1Div2( rCpy.c1Div2 ), c1Div4( rCpy.c1Div4 ), c3Div4( rCpy.c3Div4 ),
+ cEmDash( rCpy.cEmDash ), cEnDash( rCpy.cEnDash )
+ {
+ }
+@@ -489,40 +494,6 @@ BOOL SvxAutoCorrect::FnCptlSttWrd( SvxAutoCorrDoc& rDoc, const String& rTxt,
+ }
+
+
+-BOOL SvxAutoCorrect::FnChgFractionSymbol(
+- SvxAutoCorrDoc& rDoc, const String& rTxt,
+- xub_StrLen nSttPos, xub_StrLen nEndPos )
+-{
+- sal_Unicode cChar = 0;
+-
+- for( ; nSttPos < nEndPos; ++nSttPos )
+- if( !lcl_IsInAsciiArr( sImplSttSkipChars, rTxt.GetChar( nSttPos ) ))
+- break;
+- for( ; nSttPos < nEndPos; --nEndPos )
+- if( !lcl_IsInAsciiArr( sImplEndSkipChars, rTxt.GetChar( nEndPos - 1 ) ))
+- break;
+-
+- // 1/2, 1/4, ... ersetzen durch das entsprechende Zeichen vom Font
+- if( 3 == nEndPos - nSttPos && '/' == rTxt.GetChar( nSttPos+1 ))
+- {
+- switch( ( rTxt.GetChar( nSttPos )) * 256 + rTxt.GetChar( nEndPos-1 ))
+- {
+- case '1' * 256 + '2': cChar = c1Div2; break;
+- case '1' * 256 + '4': cChar = c1Div4; break;
+- case '3' * 256 + '4': cChar = c3Div4; break;
+- }
+-
+- if( cChar )
+- {
+- // also austauschen:
+- rDoc.Delete( nSttPos+1, nEndPos );
+- rDoc.Replace( nSttPos, cChar );
+- }
+- }
+- return 0 != cChar;
+-}
+-
+-
+ BOOL SvxAutoCorrect::FnChgOrdinalNumber(
+ SvxAutoCorrDoc& rDoc, const String& rTxt,
+ xub_StrLen nSttPos, xub_StrLen nEndPos,
+@@ -694,6 +665,80 @@ BOOL SvxAutoCorrect::FnChgToEnEmDash(
return bRet;
}
+BOOL SvxAutoCorrect::FnAddNonBrkSpace(
+ SvxAutoCorrDoc& rDoc, const String& rTxt,
-+ xub_StrLen , xub_StrLen nEndPos,
++ xub_StrLen, xub_StrLen nEndPos,
+ LanguageType eLang )
+{
+ bool bRet = false;
@@ -307,38 +1303,64 @@ index a6e7401..902e592 100644
+
+ if ( rLocale.Language == OUString::createFromAscii( "fr" ) )
+ {
-+ OUString chars = OUString::createFromAscii( ":;!?" );
-+ if ( rLocale.Country == OUString::createFromAscii( "CA" ) )
++ bool bFrCA = rLocale.Country == OUString::createFromAscii( "CA" );
++ OUString allChars = OUString::createFromAscii( ":;!?" );
++ OUString chars( allChars );
++ if ( bFrCA )
+ chars = OUString::createFromAscii( ":" );
+
+ sal_Unicode cChar = rTxt.GetChar( nEndPos );
-+ if ( chars.indexOf( sal_Unicode( cChar ) ) != -1 )
++ bool bHasSpace = chars.indexOf( sal_Unicode( cChar ) ) != -1;
++ bool bIsSpecial = allChars.indexOf( sal_Unicode( cChar ) ) != -1;
++ if ( bIsSpecial )
+ {
-+ // Check the previous char
-+ sal_Unicode cPrevChar = rTxt.GetChar( nEndPos - 1 );
-+ if ( ( chars.indexOf( sal_Unicode( cPrevChar ) ) == -1 ) && cPrevChar != '\t' )
-+ {
-+ // Remove any previous normal space
-+ xub_StrLen nPos = nEndPos - 1;
-+ while ( cPrevChar == ' ' || cPrevChar == CHAR_HARDBLANK )
-+ {
-+ if ( nPos == 0 ) break;
-+ nPos--;
-+ cPrevChar = rTxt.GetChar( nPos );
-+ }
-+
-+ if ( nPos != 0 )
-+ {
-+ nPos++;
-+ if ( nEndPos - nPos > 0 )
-+ rDoc.Delete( nPos, nEndPos );
-+
-+ // Add the non-breaking space at the end pos
-+ rDoc.Insert( nPos, CHAR_HARDBLANK );
-+ bRet = true;
++ // Get the last word delimiter position
++ xub_StrLen nSttWdPos = nEndPos;
++ while( nSttWdPos && !IsWordDelim( rTxt.GetChar( --nSttWdPos )))
++ ;
++
++ // Check the presence of "://" in the word
++ xub_StrLen nStrPos = rTxt.Search( String::CreateFromAscii( "://" ), nSttWdPos + 1 );
++ if ( STRING_NOTFOUND == nStrPos )
++ {
++ // Check the previous char
++ sal_Unicode cPrevChar = rTxt.GetChar( nEndPos - 1 );
++ if ( ( chars.indexOf( sal_Unicode( cPrevChar ) ) == -1 ) && cPrevChar != '\t' )
++ {
++ // Remove any previous normal space
++ xub_StrLen nPos = nEndPos - 1;
++ while ( cPrevChar == ' ' || cPrevChar == CHAR_HARDBLANK )
++ {
++ if ( nPos == 0 ) break;
++ nPos--;
++ cPrevChar = rTxt.GetChar( nPos );
++ }
++
++ if ( nPos != 0 )
++ {
++ nPos++;
++ if ( nEndPos - nPos > 0 )
++ rDoc.Delete( nPos, nEndPos );
++
++ // Add the non-breaking space at the end pos
++ if ( bHasSpace )
++ rDoc.Insert( nPos, CHAR_HARDBLANK );
++ bRet = true;
++ }
+ }
+ }
+ }
++ else if ( cChar == '/' )
++ {
++ // Remove the hardspace right before to avoid formatting URLs
++ sal_Unicode cPrevChar = rTxt.GetChar( nEndPos - 1 );
++ sal_Unicode cMaybeSpaceChar = rTxt.GetChar( nEndPos - 2 );
++ if ( cPrevChar == ':' && cMaybeSpaceChar == CHAR_HARDBLANK )
++ {
++ rDoc.Delete( nEndPos - 2, nEndPos - 1 );
++ bRet = true;
++ }
++ }
+ }
+
+ return bRet;
@@ -346,35 +1368,254 @@ index a6e7401..902e592 100644
BOOL SvxAutoCorrect::FnSetINetAttr( SvxAutoCorrDoc& rDoc, const String& rTxt,
xub_StrLen nSttPos, xub_StrLen nEndPos,
-@@ -1347,6 +1399,8 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
- FnChgFractionSymbol( rDoc, rTxt, nCapLttrPos, nInsPos ) ) ||
- ( IsAutoCorrFlag( nRet = ChgOrdinalNumber ) &&
+@@ -1218,10 +1263,10 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
+ {
+ //JP 10.02.97: doppelte Spaces verhindern
+ if( nInsPos && ' ' == cChar &&
+- IsAutoCorrFlag( IngnoreDoubleSpace ) &&
++ IsAutoCorrFlag( IgnoreDoubleSpace ) &&
+ ' ' == rTxt.GetChar( nInsPos - 1 ) )
+ {
+- nRet = IngnoreDoubleSpace;
++ nRet = IgnoreDoubleSpace;
+ break;
+ }
+
+@@ -1249,6 +1294,13 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
+ rDoc.Insert( nInsPos, cChar );
+ else
+ rDoc.Replace( nInsPos, cChar );
++
++ // Hardspaces autocorrection
++ if ( NeedsHardspaceAutocorr( cChar ) && IsAutoCorrFlag( AddNonBrkSpace ) &&
++ FnAddNonBrkSpace( rDoc, rTxt, 0, nInsPos, rDoc.GetLanguage( nInsPos, FALSE ) ) )
++ {
++ nRet = AddNonBrkSpace;
++ }
+ }
+
+ if( !nInsPos )
+@@ -1286,7 +1338,7 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
+ // Bug 19285: Symbolzeichen nicht anfassen
+ if( lcl_IsSymbolChar( rCC, rTxt, nCapLttrPos, nInsPos ))
+ break;
+-
++
+ if( IsAutoCorrFlag( Autocorrect ) )
+ {
+ const String* pPara = 0;
+@@ -1343,9 +1395,7 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
+ }
+ }
+
+- if( ( IsAutoCorrFlag( nRet = ChgFractionSymbol ) &&
+- FnChgFractionSymbol( rDoc, rTxt, nCapLttrPos, nInsPos ) ) ||
+- ( IsAutoCorrFlag( nRet = ChgOrdinalNumber ) &&
++ if( ( IsAutoCorrFlag( nRet = ChgOrdinalNumber ) &&
FnChgOrdinalNumber( rDoc, rTxt, nCapLttrPos, nInsPos, eLang ) ) ||
-+ ( IsAutoCorrFlag( nRet = AddNonBrkSpace ) &&
-+ FnAddNonBrkSpace( rDoc, rTxt, nCapLttrPos, nInsPos - 1, eLang ) ) ||
( IsAutoCorrFlag( nRet = SetINetAttr ) &&
( ' ' == cChar || '\t' == cChar || 0x0a == cChar || !cChar ) &&
- FnSetINetAttr( rDoc, rTxt, nCapLttrPos, nInsPos, eLang ) ) )
+@@ -1405,9 +1455,9 @@ ULONG SvxAutoCorrect::AutoCorrect( SvxAutoCorrDoc& rDoc, const String& rTxt,
+ if( nRet & ChgQuotes) nHelpId = 16;
+ else if( nRet & ChgSglQuotes) nHelpId = 17;
+ else if( nRet & SetINetAttr) nHelpId = 18;
+- else if( nRet & IngnoreDoubleSpace) nHelpId = 19;
++ else if( nRet & IgnoreDoubleSpace) nHelpId = 19;
+ else if( nRet & ChgWeightUnderl) nHelpId = 20;
+- else if( nRet & ChgFractionSymbol ) nHelpId = 21;
++ else if( nRet & AddNonBrkSpace) nHelpId = 21;
+ else if( nRet & ChgOrdinalNumber) nHelpId = 22;
+ }
+
diff --git svx/source/editeng/swafopt.cxx svx/source/editeng/swafopt.cxx
-index 0940a4e..113e6e3 100644
+index 0940a4e..9cd98f5 100644
--- svx/source/editeng/swafopt.cxx
+++ svx/source/editeng/swafopt.cxx
-@@ -53,6 +53,7 @@ SvxSwAutoFmtFlags::SvxSwAutoFmtFlags()
+@@ -44,14 +44,13 @@ SvxSwAutoFmtFlags::SvxSwAutoFmtFlags()
+ RTL_CONSTASCII_STRINGPARAM( "StarSymbol" )),
+ Size( 0, 14 ) )
+ {
+- bReplaceQuote =
+ bAutoCorrect =
+ bCptlSttSntnc =
+ bCptlSttWrd =
+ bChkFontAttr =
+ bChgUserColl =
bChgEnumNum =
- bChgFracionSymbol =
+- bChgFracionSymbol =
++ bAddNonBrkSpace =
bChgOrdinalNumber =
-+ bAddNonBrkSpace =
bChgToEnEmDash =
bChgWeightUnderl =
- bSetINetAttr =
-@@ -117,6 +118,7 @@ SvxSwAutoFmtFlags& SvxSwAutoFmtFlags::operator=( const SvxSwAutoFmtFlags& rAFFla
+@@ -104,7 +103,6 @@ SvxSwAutoFmtFlags::SvxSwAutoFmtFlags()
+ SvxSwAutoFmtFlags& SvxSwAutoFmtFlags::operator=( const SvxSwAutoFmtFlags& rAFFlags )
+ {
+ bAutoCorrect = rAFFlags.bAutoCorrect;
+- bReplaceQuote = rAFFlags.bReplaceQuote;
+ bCptlSttSntnc = rAFFlags.bCptlSttSntnc;
+ bCptlSttWrd = rAFFlags.bCptlSttWrd;
+ bChkFontAttr = rAFFlags.bChkFontAttr;
+@@ -115,7 +113,7 @@ SvxSwAutoFmtFlags& SvxSwAutoFmtFlags::operator=( const SvxSwAutoFmtFlags& rAFFla
+ bSetNumRule = rAFFlags.bSetNumRule;
+ bAFmtByInput = rAFFlags.bAFmtByInput;
- bChgFracionSymbol = rAFFlags.bChgFracionSymbol;
- bChgOrdinalNumber = rAFFlags.bChgOrdinalNumber;
+- bChgFracionSymbol = rAFFlags.bChgFracionSymbol;
+ bAddNonBrkSpace = rAFFlags.bAddNonBrkSpace;
+ bChgOrdinalNumber = rAFFlags.bChgOrdinalNumber;
bChgToEnEmDash = rAFFlags.bChgToEnEmDash;
bChgWeightUnderl = rAFFlags.bChgWeightUnderl;
- bSetINetAttr = rAFFlags.bSetINetAttr;
+diff --git svx/source/tbxctrls/extrusioncontrols.cxx svx/source/tbxctrls/extrusioncontrols.cxx
+index 01f6824..a65f5a1 100644
+--- svx/source/tbxctrls/extrusioncontrols.cxx
++++ svx/source/tbxctrls/extrusioncontrols.cxx
+@@ -1474,9 +1474,16 @@ SfxPopupWindow* ExtrusionColorControl::CreatePopupWindow()
+ m_xFrame,
+ SVX_RESSTR( RID_SVXSTR_EXTRUSION_COLOR ),
+ &GetToolBox() );
++
++ pColorWin->EnableDocking(true);
++ pColorWin->GetDockingManager()->StartPopupMode(&GetToolBox(),pColorWin);
++
++#if 0
+ pColorWin->StartPopupMode( &GetToolBox(), FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
+- pColorWin->StartSelection();
+ SetPopupWindow( pColorWin );
++#endif
++ pColorWin->StartSelection();
++
+ return pColorWin;
+ }
+
+diff --git svx/source/tbxctrls/tbcontrl.cxx svx/source/tbxctrls/tbcontrl.cxx
+index 94494aa..feddd99 100644
+--- svx/source/tbxctrls/tbcontrl.cxx
++++ svx/source/tbxctrls/tbcontrl.cxx
+@@ -832,7 +832,7 @@ SvxColorWindow_Impl::SvxColorWindow_Impl( const OUString& rCommand,
+ const String& rWndTitle,
+ Window* pParentWindow ) :
+
+- SfxPopupWindow( nSlotId, rFrame, pParentWindow, WinBits( WB_BORDER | WB_STDFLOATWIN | WB_3DLOOK|WB_DIALOGCONTROL ) ),
++ SfxPopupWindow( nSlotId, rFrame, pParentWindow, WinBits( WB_DIALOGCONTROL | WB_SYSTEMWINDOW ) ),
+
+ theSlotId( nSlotId ),
+ aColorSet( this, WinBits( WB_ITEMBORDER | WB_NAMEFIELD | WB_3DLOOK | WB_NO_DIRECTSELECT) ),
+@@ -917,6 +917,9 @@ SvxColorWindow_Impl::SvxColorWindow_Impl( const OUString& rCommand,
+ AddStatusListener( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( ".uno:ColorTableState" )));
+ if ( bKillTable )
+ delete pColorTable;
++
++ WinBits nBits = GetStyle();
++ SetStyle( nBits & ~WB_MOVEABLE );
+ }
+
+ SvxColorWindow_Impl::~SvxColorWindow_Impl()
+@@ -1058,11 +1061,14 @@ void SvxColorWindow_Impl::StateChanged( USHORT nSID, SfxItemState eState, const
+
+ SvxFrameWindow_Impl::SvxFrameWindow_Impl( USHORT nId, const Reference< XFrame >& rFrame, Window* pParentWindow ) :
+
+- SfxPopupWindow( nId, rFrame, pParentWindow, WinBits( WB_BORDER | WB_STDFLOATWIN | WB_3DLOOK | WB_DIALOGCONTROL ) ),
++ SfxPopupWindow( nId, rFrame, pParentWindow, WinBits( WB_DIALOGCONTROL | WB_SYSTEMWINDOW ) ),
+ aFrameSet ( this, WinBits( WB_ITEMBORDER | WB_DOUBLEBORDER | WB_3DLOOK | WB_NO_DIRECTSELECT ) ),
+ bParagraphMode(sal_False)
+
+ {
++ WinBits nBits = GetStyle();
++ SetStyle( nBits & ~WB_MOVEABLE );
++
+ BindListener();
+ String sCommand(String::CreateFromAscii( ".uno:BorderReducedMode" ));
+ AddStatusListener( sCommand );
+@@ -1332,10 +1338,13 @@ BOOL SvxFrameWindow_Impl::Close()
+
+ SvxLineWindow_Impl::SvxLineWindow_Impl( USHORT nId, const Reference< XFrame >& rFrame, Window* pParentWindow ) :
+
+- SfxPopupWindow( nId, rFrame, pParentWindow, WinBits( WB_BORDER | WB_STDFLOATWIN | WB_3DLOOK | WB_DIALOGCONTROL ) ),
++ SfxPopupWindow( nId, rFrame, pParentWindow, WinBits( WB_DIALOGCONTROL | WB_SYSTEMWINDOW ) ),
+
+- aLineSet( this, WinBits( WB_3DLOOK | WB_ITEMBORDER | WB_DOUBLEBORDER | WB_NAMEFIELD | WB_NONEFIELD | WB_NO_DIRECTSELECT ) )
++ aLineSet( this, WinBits( WB_3DLOOK | WB_ITEMBORDER | WB_NAMEFIELD | WB_NONEFIELD | WB_NO_DIRECTSELECT ) )
+ {
++ WinBits nBits = GetStyle();
++ SetStyle( nBits & ~WB_MOVEABLE );
++
+ try
+ {
+ Reference< lang::XServiceInfo > xServices( rFrame->getController()->getModel(), UNO_QUERY_THROW );
+@@ -1344,6 +1353,13 @@ SvxLineWindow_Impl::SvxLineWindow_Impl( USHORT nId, const Reference< XFrame >& r
+ catch(const uno::Exception& )
+ {
+ }
++
++ FixedText aLabel( this, WinBits( WB_NOMULTILINE ) );
++ aLabel.SetText( SVX_RESSTR( RID_SVXSTR_FRAME_STYLE ) );
++ Size aTxtSize( 100, 15 );
++ aLabel.SetSizePixel( aTxtSize );
++ aLabel.SetPosPixel( Point( 3, 3 ) );
++
+ Size aBmpSize( 55, 12 );
+ CreateBitmaps();
+
+@@ -2351,10 +2367,11 @@ SfxPopupWindow* SvxFontColorToolBoxControl::CreatePopupWindow()
+ SVX_RESSTR( RID_SVXITEMS_EXTRAS_CHARCOLOR ),
+ &GetToolBox() );
+
+- pColorWin->StartPopupMode( &GetToolBox(),
+- FLOATWIN_POPUPMODE_GRABFOCUS|FLOATWIN_POPUPMODE_ALLOWTEAROFF );
++ pColorWin->EnableDocking(true);
++ pColorWin->GetDockingManager()->StartPopupMode(&GetToolBox(),pColorWin);
++
+ pColorWin->StartSelection();
+- SetPopupWindow( pColorWin );
++
+ return pColorWin;
+ }
+
+@@ -2640,9 +2657,13 @@ SfxPopupWindowType SvxFrameLineStyleToolBoxControl::GetPopupWindowType() const
+ SfxPopupWindow* SvxFrameLineStyleToolBoxControl::CreatePopupWindow()
+ {
+ SvxLineWindow_Impl* pLineWin = new SvxLineWindow_Impl( GetSlotId(), m_xFrame, &GetToolBox() );
++ pLineWin->EnableDocking( true );
++ pLineWin->GetDockingManager()->StartPopupMode(&GetToolBox(),pLineWin);
++#if 0
+ pLineWin->StartPopupMode( &GetToolBox(), TRUE );
+- pLineWin->StartSelection();
+ SetPopupWindow( pLineWin );
++#endif
++ pLineWin->StartSelection();
+
+ return pLineWin;
+ }
+diff --git svx/util/hidother.src svx/util/hidother.src
+index 5bce7c3..edb459c 100644
+--- svx/util/hidother.src
++++ svx/util/hidother.src
+@@ -133,7 +133,7 @@ hidspecial HID_HYPERDLG_DOC_PATH { HelpID = HID_HYPERDLG_DOC_PATH ;};
+ #define HID_AUTOCORR_HELP_SETINETATTR HID_AUTOCORR_HELP_START+17
+ #define HID_AUTOCORR_HELP_INGNOREDOUBLESPACE HID_AUTOCORR_HELP_START+18
+ #define HID_AUTOCORR_HELP_CHGWEIGHTUNDERL HID_AUTOCORR_HELP_START+19
+-#define HID_AUTOCORR_HELP_CHGFRACTIONSYMBOL HID_AUTOCORR_HELP_START+20
++#define HID_AUTOCORR_HELP_CHGNONBRKSPACE HID_AUTOCORR_HELP_START+20
+ #define HID_AUTOCORR_HELP_CHGORDINALNUMBER HID_AUTOCORR_HELP_START+21
+
+ hidspecial HID_AUTOCORR_HELP_WORD { HelpID = HID_AUTOCORR_HELP_WORD;};
+@@ -156,7 +156,7 @@ hidspecial HID_AUTOCORR_HELP_CHGSGLQUOTES { HelpID = HID_AUTOCORR_HELP_CHGSGLQ
+ hidspecial HID_AUTOCORR_HELP_SETINETATTR { HelpID = HID_AUTOCORR_HELP_SETINETATTR;};
+ hidspecial HID_AUTOCORR_HELP_INGNOREDOUBLESPACE { HelpID = HID_AUTOCORR_HELP_INGNOREDOUBLESPACE;};
+ hidspecial HID_AUTOCORR_HELP_CHGWEIGHTUNDERL { HelpID = HID_AUTOCORR_HELP_CHGWEIGHTUNDERL;};
+-hidspecial HID_AUTOCORR_HELP_CHGFRACTIONSYMBOL { HelpID = HID_AUTOCORR_HELP_CHGFRACTIONSYMBOL;};
++hidspecial HID_AUTOCORR_HELP_CHGNONBRKSPACE { HelpID = HID_AUTOCORR_HELP_CHGNONBRKSPACE;};
+ hidspecial HID_AUTOCORR_HELP_CHGORDINALNUMBER { HelpID = HID_AUTOCORR_HELP_CHGORDINALNUMBER;};
+
+ hidspecial HID_CLB_EDIT_MODULES_DICS { HelpID = HID_CLB_EDIT_MODULES_DICS ;};
+@@ -338,6 +338,8 @@ hidspecial HID_OFADLG_TREE_DRAWING { HelpId = HID_OFADLG_TREE_DRAWING
+ hidspecial HID_OFADLG_TREE_IMAGE { HelpId = HID_OFADLG_TREE_IMAGE ; };
+ hidspecial HID_OFADLG_TREE_FORMULA { HelpId = HID_OFADLG_TREE_FORMULA ; };
+ hidspecial HID_OFAPAGE_MSFLTR2_CLB { HelpId = HID_OFAPAGE_MSFLTR2_CLB ; };
++hidspecial HID_OFAPAGE_QUOTE_CLB { HelpId = HID_OFAPAGE_QUOTE_CLB; };
++hidspecial HID_OFAPAGE_QUOTE_SW_CLB { HelpId = HID_OFAPAGE_QUOTE_SW_CLB; };
+
+ hidspecial UID_OFA_CONNPOOL_DRIVERLIST_BACK { HelpId = UID_OFA_CONNPOOL_DRIVERLIST_BACK; };
+ hidspecial HID_OFA_CONNPOOL_DRIVERLIST { HelpId = HID_OFA_CONNPOOL_DRIVERLIST; };
diff --git sw/inc/comcore.hrc sw/inc/comcore.hrc
index 8260814..9122841 100644
--- sw/inc/comcore.hrc
@@ -391,7 +1632,7 @@ index 8260814..9122841 100644
#endif
diff --git sw/source/core/edit/autofmt.cxx sw/source/core/edit/autofmt.cxx
-index 114ae91..cfed93c 100644
+index 114ae91..62ebf86 100644
--- sw/source/core/edit/autofmt.cxx
+++ sw/source/core/edit/autofmt.cxx
@@ -316,6 +316,7 @@ void SwAutoFormat::_SetRedlineTxt( USHORT nActionId )
@@ -402,16 +1643,28 @@ index 114ae91..cfed93c 100644
nSeqNo = ++nRedlAutoFmtSeqId;
break;
}
-@@ -1896,7 +1897,7 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+@@ -1891,12 +1892,17 @@ void SwAutoFormat::BuildHeadLine( USHORT nLvl )
+ // dann lasse doch mal das AutoCorrect auf den akt. TextNode los
+ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+ {
++ SvxAutoCorrect* pATst = SvxAutoCorrCfg::Get()->GetAutoCorrect();
++ long aSvxFlags = pATst->GetFlags( );
++ bool bReplaceQuote = ( aSvxFlags & ChgQuotes ) > 0;
++ bool bReplaceSglQuote = ( aSvxFlags & ChgSglQuotes ) > 0;
++
+ if( aFlags.bAFmtByInput ||
+- (!aFlags.bAutoCorrect && !aFlags.bReplaceQuote &&
++ (!aFlags.bAutoCorrect && !bReplaceQuote && !bReplaceSglQuote &&
!aFlags.bCptlSttSntnc && !aFlags.bCptlSttWrd &&
- !aFlags.bChgFracionSymbol && !aFlags.bChgOrdinalNumber &&
+- !aFlags.bChgFracionSymbol && !aFlags.bChgOrdinalNumber &&
++ !aFlags.bChgOrdinalNumber &&
!aFlags.bChgToEnEmDash && !aFlags.bSetINetAttr &&
- !aFlags.bChgWeightUnderl) )
+ !aFlags.bChgWeightUnderl && !aFlags.bAddNonBrkSpace) )
return;
const String* pTxt = &pAktTxtNd->GetTxt();
-@@ -1905,7 +1906,8 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+@@ -1905,7 +1911,8 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
BOOL bGetLanguage = aFlags.bChgOrdinalNumber ||
aFlags.bChgToEnEmDash || aFlags.bSetINetAttr ||
@@ -421,16 +1674,115 @@ index 114ae91..cfed93c 100644
aDelPam.DeleteMark();
-@@ -2134,6 +2136,9 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+@@ -1913,7 +1920,6 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+ aDelPam.GetPoint()->nContent.Assign( pAktTxtNd, 0 );
+
+ SwAutoCorrDoc aACorrDoc( *pEditShell, aDelPam );
+- SvxAutoCorrect* pATst = SvxAutoCorrCfg::Get()->GetAutoCorrect();
+
+ SwTxtFrmInfo aFInfo( 0 );
+
+@@ -1929,8 +1935,8 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+ if( nPos == pTxt->Len() )
+ break; // das wars
+
+- if( aFlags.bReplaceQuote &&
+- ( '\"' == cChar || '\'' == cChar ) &&
++ if( ( ( bReplaceQuote && '\"' == cChar ) ||
++ ( bReplaceSglQuote && '\'' == cChar ) ) &&
+ ( !nPos || ' ' == pTxt->GetChar( nPos-1 ) ) )
+ {
+ // --------------------------------------
+@@ -1983,7 +1989,7 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+ {
+ case '\"':
+ case '\'':
+- if( aFlags.bReplaceQuote )
++ if( ( cChar == '\"' && bReplaceQuote ) || ( cChar == '\'' && bReplaceSglQuote ) )
+ {
+ // --------------------------------------
+ // beachte: Sonderfall Symbolfonts !!!
+@@ -2068,6 +2074,18 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+ }
+ }
+ break;
++ case '/':
++ if ( aFlags.bAddNonBrkSpace )
++ {
++ LanguageType eLang = (bGetLanguage && pAktTxtNd)
++ ? pAktTxtNd->GetLang( nSttPos )
++ : LANGUAGE_SYSTEM;
++
++ SetRedlineTxt( STR_AUTOFMTREDL_NON_BREAK_SPACE );
++ if ( pATst->FnAddNonBrkSpace( aACorrDoc, *pTxt, nSttPos, nPos, eLang ) )
++ --nPos;
++ }
++ break;
+
+ case '.':
+ case '!':
+@@ -2076,7 +2094,6 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+ bFirstSent = TRUE;
+ //alle Wortrenner loesen die Autokorrektur aus!
+ // break;
+-
+ default:
+ //alle Wortrenner loesen die Autokorrektur aus!
+ // case ' ':
+@@ -2124,11 +2141,14 @@ void SwAutoFormat::AutoCorrect( xub_StrLen nPos )
+ LanguageType eLang = (bGetLanguage && pAktTxtNd)
+ ? pAktTxtNd->GetLang( nSttPos )
+ : LANGUAGE_SYSTEM;
++
++ if ( aFlags.bAddNonBrkSpace )
++ {
++ SetRedlineTxt( STR_AUTOFMTREDL_NON_BREAK_SPACE );
++ pATst->FnAddNonBrkSpace( aACorrDoc, *pTxt, nSttPos, nPos, eLang );
++ }
+
+- if( ( aFlags.bChgFracionSymbol &&
+- SetRedlineTxt( STR_AUTOFMTREDL_FRACTION ) &&
+- pATst->FnChgFractionSymbol( aACorrDoc, *pTxt, nSttPos, nPos ) ) ||
+- ( aFlags.bChgOrdinalNumber &&
++ if( ( aFlags.bChgOrdinalNumber &&
+ SetRedlineTxt( STR_AUTOFMTREDL_ORDINAL ) &&
+ pATst->FnChgOrdinalNumber( aACorrDoc, *pTxt, nSttPos, nPos, eLang ) ) ||
( aFlags.bChgToEnEmDash &&
- SetRedlineTxt( STR_AUTOFMTREDL_DASH ) &&
- pATst->FnChgToEnEmDash( aACorrDoc, *pTxt, nSttPos, nPos, eLang ) ) ||
-+ ( aFlags.bAddNonBrkSpace &&
-+ SetRedlineTxt( STR_AUTOFMTREDL_NON_BREAK_SPACE ) &&
-+ pATst->FnAddNonBrkSpace( aACorrDoc, *pTxt, nSttPos, nPos, eLang ) ) ||
- ( aFlags.bSetINetAttr &&
- ( nPos == pTxt->Len() || IsSpace( pTxt->GetChar( nPos )) ) &&
- SetRedlineTxt( STR_AUTOFMTREDL_DETECT_URL ) &&
+diff --git sw/source/ui/docvw/edtwin.cxx sw/source/ui/docvw/edtwin.cxx
+index 6baa2d6..3adca95 100644
+--- sw/source/ui/docvw/edtwin.cxx
++++ sw/source/ui/docvw/edtwin.cxx
+@@ -2299,7 +2299,7 @@ KEYINPUT_CHECKTABLE_INSDEL:
+ else if( !aKeyEvent.GetRepeat() && pACorr && bIsAutoCorrectChar &&
+ pACfg->IsAutoFmtByInput() &&
+ pACorr->IsAutoCorrFlag( CptlSttSntnc | CptlSttWrd |
+- ChgFractionSymbol | ChgOrdinalNumber |
++ ChgOrdinalNumber |
+ ChgToEnEmDash | SetINetAttr |
+ Autocorrect ) &&
+ '\"' != aCh && '\'' != aCh && '*' != aCh && '_' != aCh &&
+@@ -2331,7 +2331,7 @@ KEYINPUT_CHECKTABLE_INSDEL:
+ {
+ if( pACorr && pACfg->IsAutoFmtByInput() &&
+ pACorr->IsAutoCorrFlag( CptlSttSntnc | CptlSttWrd |
+- ChgFractionSymbol | ChgOrdinalNumber |
++ ChgOrdinalNumber |
+ ChgToEnEmDash | SetINetAttr |
+ Autocorrect ) &&
+ !rSh.HasReadonlySel() )
+diff --git sw/source/ui/shells/textsh.cxx sw/source/ui/shells/textsh.cxx
+index 965b0f5..f65f0a2 100644
+--- sw/source/ui/shells/textsh.cxx
++++ sw/source/ui/shells/textsh.cxx
+@@ -202,7 +202,7 @@ void SwTextShell::ExecInsert(SfxRequest &rReq)
+ SvxAutoCorrect* pACorr = pACfg->GetAutoCorrect();
+ if( pACorr && pACfg->IsAutoFmtByInput() &&
+ pACorr->IsAutoCorrFlag( CptlSttSntnc | CptlSttWrd |
+- ChgFractionSymbol | ChgOrdinalNumber |
++ AddNonBrkSpace | ChgOrdinalNumber |
+ ChgToEnEmDash | SetINetAttr | Autocorrect ))
+ rSh.AutoCorrect( *pACorr, cIns );
+ else
diff --git sw/source/ui/utlui/utlui.src sw/source/ui/utlui/utlui.src
index 34d9186..03c4a84 100644
--- sw/source/ui/utlui/utlui.src
@@ -446,3 +1798,54 @@ index 34d9186..03c4a84 100644
};
+diff --git sw/source/ui/wrtsh/wrtsh1.cxx sw/source/ui/wrtsh/wrtsh1.cxx
+index e50d1b6..4aa6fff 100644
+--- sw/source/ui/wrtsh/wrtsh1.cxx
++++ sw/source/ui/wrtsh/wrtsh1.cxx
+@@ -162,7 +162,7 @@ SvxAutoCorrect* lcl_IsAutoCorr()
+ {
+ SvxAutoCorrect* pACorr = SvxAutoCorrCfg::Get()->GetAutoCorrect();
+ if( pACorr && !pACorr->IsAutoCorrFlag( CptlSttSntnc | CptlSttWrd |
+- ChgFractionSymbol | ChgOrdinalNumber |
++ AddNonBrkSpace | ChgOrdinalNumber |
+ ChgToEnEmDash | SetINetAttr | Autocorrect ))
+ pACorr = 0;
+ return pACorr;
+diff --git vcl/source/window/dockmgr.cxx vcl/source/window/dockmgr.cxx
+index 6d70c20..bec6e08 100644
+--- vcl/source/window/dockmgr.cxx
++++ vcl/source/window/dockmgr.cxx
+@@ -650,19 +650,22 @@ void ImplPopupFloatWin::DrawGrip()
+ aRect.nLeft+=3;
+ aRect.nRight-=3;
+
+- if( mbHighlight )
+- {
+- Erase( aRect );
+- DrawSelectionBackground( aRect, 2, FALSE, TRUE, FALSE );
+- }
+- else
+- {
+- SetFillColor( GetSettings().GetStyleSettings().GetFaceColor() );
+- SetLineColor();
+- DrawRect( aRect );
++ bool bMoveable = ( mpDockingWin->GetFloatStyle() & WB_MOVEABLE) > 0;
++ if ( bMoveable ) {
++ if( mbHighlight )
++ {
++ Erase( aRect );
++ DrawSelectionBackground( aRect, 2, FALSE, TRUE, FALSE );
++ }
++ else
++ {
++ SetFillColor( GetSettings().GetStyleSettings().GetFaceColor() );
++ SetLineColor();
++ DrawRect( aRect );
++ }
+ }
+
+- if( !ToolBox::AlwaysLocked() ) // no grip if toolboxes are locked
++ if( bMoveable && !ToolBox::AlwaysLocked() ) // no grip if toolboxes are locked
+ {
+ #ifdef TEAROFF_DASHED
+ // draw single dashed line
diff --git a/src/acor.csv b/src/acor.csv
new file mode 100644
index 0000000..f9e74fe
--- /dev/null
+++ b/src/acor.csv
@@ -0,0 +1,4 @@
+locale,string,replacement
+,"1/2","½"
+,"1/4","¼"
+,"3/4","¾"
diff --git a/src/acor_vi-VN.dat b/src/acor_vi-VN.dat
new file mode 100755
index 0000000..831f202
Binary files /dev/null and b/src/acor_vi-VN.dat differ
More information about the ooo-build-commit
mailing list