Commits

Anonymous committed 631d40b Merge

CWS-TOOLING: integrate CWS cbosdo01

Comments (0)

Files changed (76)

cui/source/inc/autocdlg.hxx

 	String		sBoldUnderline;
 	String		sURL;
 	String		sNoDblSpaces;
-	String		sHalf;
 	String		sDash;
+    String      sNonBrkSpace;
 	String		sFirst;
 
 public:
 	String			sUseReplaceTbl;
 	String			sCptlSttWord;
 	String			sCptlSttSent;
-	String			sTypo;
 	String			sUserStyle;
 	String			sBullet;
 	String			sByInputBullet;
 	String			sBoldUnder;
 	String			sNoDblSpaces;
-	String			sFraction;
 	String			sDetectURL;
 	String          sDash;
+    String          sNonBrkSpace;
 	String			sOrdinal;
 	String			sRightMargin;
 	String			sNum;
 	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;
 
 	String 				ChangeStringExt_Impl( sal_UCS4 );
 
+    SvLBoxEntry* CreateEntry(String& rTxt, USHORT nCol);
+
 						OfaQuoteTabPage( Window* pParent, const SfxItemSet& rSet );
 public:
 						~OfaQuoteTabPage();

cui/source/inc/helpid.hrc

 #define HID_GALLERY_ENTER_TITLE                     (HID_CUI_START + 336)
 #define HID_GALLERY_TITLE_EDIT                      (HID_CUI_START + 337)
 #define HID_THES_LANGUAGE                           (HID_CUI_START + 338)
+#define HID_OFAPAGE_QUOTE_SW_CLB                    (HID_CUI_START + 339)
+#define HID_OFAPAGE_QUOTE_CLB                       (HID_CUI_START + 340)
 
 // please adjust ACT_SVX_HID_END2 below if you add entries here!
 
 // Overrun check ---------------------------------------------------------
 // -----------------------------------------------------------------------
 
-#define ACT_CUI_HID_END     HID_CUI_START + 338
+#define ACT_CUI_HID_END     HID_CUI_START + 340
 
 #if ACT_CUI_HID_END > HID_CUI_END
 #error Resource-Ueberlauf in #line, #file

cui/source/tabpages/autocdlg.cxx

     sBoldUnderline      (CUI_RES(ST_BOLD_UNDER        )),
     sURL                (CUI_RES(ST_DETECT_URL        )),
     sNoDblSpaces        (CUI_RES(STR_NO_DBL_SPACES    )),
-    sHalf               (CUI_RES(ST_FRACTION          )),
-	sDash    			(CUI_RES(ST_DASH	         	)),
-    sFirst              (CUI_RES(ST_ORDINAL           ))
+	sDash    			(CUI_RES(ST_DASH	         	))
 {
 	FreeResource();
 
 	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(IngnoreDoubleSpace,	aCheckLB.IsChecked(nPos++));
+	pAutoCorrect->SetAutoCorrFlag(IgnoreDoubleSpace,	aCheckLB.IsChecked(nPos++));
 
 	BOOL bReturn = nFlags != pAutoCorrect->GetFlags();
 	if(bReturn )
 	aCheckLB.InsertEntry(sStartCap);
 	aCheckLB.InsertEntry(sBoldUnderline);
 	aCheckLB.InsertEntry(sURL);
-	aCheckLB.InsertEntry(sFirst);
-	aCheckLB.InsertEntry(sHalf);
 	aCheckLB.InsertEntry(sDash);
 	aCheckLB.InsertEntry(sNoDblSpaces);
 
 	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 & IngnoreDoubleSpace) );
+	aCheckLB.CheckEntryPos( nPos++, 0 != (nFlags & IgnoreDoubleSpace) );
 
 	aCheckLB.SetUpdateMode(TRUE);
 }
 	BEGIN_UPPER,
 	BOLD_UNDERLINE,
 	DETECT_URL,
-	REPLACE_1ST,
-	REPLACE_HALF,
 	REPLACE_DASHES,
 	DEL_SPACES_AT_STT_END,
 	DEL_SPACES_BETWEEN_LINES,
 	DEL_EMPTY_NODE,
 	REPLACE_USER_COLL,
 	REPLACE_BULLETS,
-	REPLACE_QUOTATION,
 	MERGE_SINGLE_LINE_PARA
 };
 
 	sUseReplaceTbl		(CUI_RES(	ST_USE_REPLACE  )),
 	sCptlSttWord		(CUI_RES(	ST_CPTL_STT_WORD)),
 	sCptlSttSent		(CUI_RES(	ST_CPTL_STT_SENT)),
-	sTypo				(CUI_RES(	ST_TYPO         )),
 	sUserStyle			(CUI_RES(	ST_USER_STYLE   )),
 	sBullet				(CUI_RES(	ST_BULLET       )),
 	sBoldUnder			(CUI_RES(	ST_BOLD_UNDER   )),
 	sNoDblSpaces		(CUI_RES(	STR_NO_DBL_SPACES)),
-	sFraction			(CUI_RES(	ST_FRACTION     )),
 	sDetectURL			(CUI_RES(	ST_DETECT_URL   )),
 	sDash				(CUI_RES(	ST_DASH         )),
-	sOrdinal			(CUI_RES(	ST_ORDINAL      )),
 	sRightMargin		(CUI_RES(	ST_RIGHT_MARGIN	)),
 	sNum				(CUI_RES(	STR_NUM			)),
 	sBorder				(CUI_RES(	STR_BORDER		)),
 
 	//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);
 /*                                                                   */
 /*********************************************************************/
 
-SvLBoxEntry* OfaSwAutoFmtOptionsPage::CreateEntry(String& rTxt, USHORT nCol)
+SvLBoxEntry* OfaSwAutoFmtOptionsPage::CreateEntry(String& rTxt, USHORT nCol) 
 {
 	SvLBoxEntry* pEntry = new SvLBoxEntry;
 
 	pAutoCorrect->SetAutoCorrFlag(ChgWeightUnderl,
 						aCheckLB.IsChecked(BOLD_UNDERLINE, CBCOL_SECOND));
 
-	pAutoCorrect->SetAutoCorrFlag(IngnoreDoubleSpace,
+	pAutoCorrect->SetAutoCorrFlag(IgnoreDoubleSpace,
 						aCheckLB.IsChecked(IGNORE_DBLSPACE, CBCOL_SECOND));
 
 	bCheck = aCheckLB.IsChecked(DETECT_URL, CBCOL_FIRST);
 	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;
 	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;
 	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(sDelSpaceAtSttEnd,	CBCOL_BOTH  ));
 	aCheckLB.GetModel()->Insert(CreateEntry(sDelSpaceBetweenLines, CBCOL_BOTH  ));
 	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	));
 
 	aCheckLB.CheckEntryPos( USE_REPLACE_TABLE, 	CBCOL_FIRST,	pOpt->bAutoCorrect );
 	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( 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( DEL_SPACES_AT_STT_END,		CBCOL_FIRST,	pOpt->bAFmtDelSpacesAtSttEnd );
 	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 );
 
 
 --------------------------------------------------*/
 
+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, CUI_RES( RID_OFAPAGE_AUTOCORR_QUOTE ), rSet),
+	aCheckLB			(this, CUI_RES(CLB_SETTINGS     )),
+	aSwCheckLB			(this, CUI_RES(CLB_SETTINGS     )),
+	sHeader1			(CUI_RES( STR_HEADER1		    )),
+	sHeader2			(CUI_RES( STR_HEADER2		    )),
+    sNonBrkSpace		(CUI_RES( ST_NON_BREAK_SPACE    )),
+	sOrdinal			(CUI_RES( ST_ORDINAL            )),
+    pCheckButtonData    ( NULL ),
+
 	aSingleFL           (this, CUI_RES(FL_SINGLE		 )),
     aSingleTypoCB       (this, CUI_RES(CB_SGL_TYPO     )),
     aSglStartQuoteFT    (this, CUI_RES(FT_SGL_STARTQUOTE )),
     sStandard(CUI_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));
 --------------------------------------------------*/
 OfaQuoteTabPage::~OfaQuoteTabPage()
 {
+    delete( pCheckButtonData );
 }
 /*-----------------03.07.97 13:17-------------------
 
 	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();
 		pAutoCorrect->SetEndSingleQuote(cUCS2);
 	}
 
-	if(bReturn )
+	if( bModified || bReturn )
     {
         SvxAutoCorrCfg* pCfg = SvxAutoCorrCfg::Get();
         pCfg->SetModified();
 	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();

cui/source/tabpages/autocdlg.hrc

 #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

cui/source/tabpages/autocdlg.src

 			PageItem
 			{
 				Identifier = RID_OFAPAGE_AUTOCORR_QUOTE ;
-				Text [ en-US ] = "Custom Quotes" ;
+				Text [ en-US ] = "Localized Options" ;
 			};
 			PageItem
 			{
     { \
         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" ; \
-	};
+    };
 
 /**************************************************************************/
 /*                                                                        */
 		/* ### 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" ;
 	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" ;

cui/util/hidother.src

 hidspecial HID_OFAPAGE_AUTOCORR_CLB                 { HelpId = HID_OFAPAGE_AUTOCORR_CLB; };
 hidspecial HID_OFAPAGE_AUTOFORMAT_CLB               { HelpId = HID_OFAPAGE_AUTOFORMAT_CLB; };
 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 HID_OFA_CONNPOOL_DRIVERLIST              { HelpId = HID_OFA_CONNPOOL_DRIVERLIST; };
 hidspecial HID_OFA_FONT_SUBST_CLB                   { HelpId = HID_OFA_FONT_SUBST_CLB; };
 hidspecial HID_OPTIONS_COLORCONFIG_COLORLIST_WIN    { HelpID = HID_OPTIONS_COLORCONFIG_COLORLIST_WIN ;};

editeng/inc/editeng/svxacorr.hxx

 // 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
 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 ChgWordLstLoad	= 0x20000000;	// Ersetzungsliste geladen
 
 	long nFlags;
 	sal_Unicode cStartDQuote, cEndDQuote, cStartSQuote, cEndSQuote,
-				c1Div2, c1Div4, c3Div4,
 				cEmDash, cEnDash;
 
 
 	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 );
+    BOOL FnAddNonBrkSpace( SvxAutoCorrDoc&, const String&,
+                                xub_StrLen nSttPos, xub_StrLen nEndPos,
+                                LanguageType eLang = LANGUAGE_SYSTEM );
 	BOOL FnSetINetAttr( SvxAutoCorrDoc&, const String&,
 								xub_StrLen nSttPos, xub_StrLen nEndPos,
 								LanguageType eLang = LANGUAGE_SYSTEM );
 // (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 )

editeng/inc/editeng/swafopt.hxx

 
 	BYTE nRightMargin;
 
-	BOOL bReplaceQuote : 1;
 	BOOL bAutoCorrect : 1;
 	BOOL bCptlSttSntnc : 1;
 	BOOL bCptlSttWrd : 1;
 	BOOL bDelEmptyNode : 1;
 	BOOL bSetNumRule : 1;
 
-	BOOL bChgFracionSymbol : 1;
 	BOOL bChgOrdinalNumber : 1;
 	BOOL bChgToEnEmDash : 1;
+    BOOL bAddNonBrkSpace : 1;
 	BOOL bChgWeightUnderl : 1;
 	BOOL bSetINetAttr : 1;
 

editeng/source/editeng/editeng.cxx

 					pEditView->pImpEditView->DrawSelection();
 					// Autokorrektur ?
 					if ( ( pImpEditEngine->GetStatus().DoAutoCorrect() ) &&
-						 (  ( nCharCode == ' ' ) || ( nCharCode == '*' ) ||
-						 	( nCharCode == '\"' ) || ( nCharCode == '\'' ) ||
-							( nCharCode == '_' )  ))
+                        SvxAutoCorrect::IsAutoCorrectChar( nCharCode ) )
 					{
 						aCurSel = pImpEditEngine->AutoCorrect( aCurSel, nCharCode, !pEditView->IsInsertMode() );
 					}

editeng/source/misc/acorrcfg.cxx

 		"ChangeUnderlineWeight",				//  5
 		"SetInetAttribute",						//  6
 		"ChangeOrdinalNumber",					//  7
-		"ChangeFraction",						//  8
+        "AddNonBreakingSpace",                  //  8
 		"ChangeDash",							//  9
 		"RemoveDoubleSpaces",					// 10
 		"ReplaceSingleQuote",					// 11
 						if(*(sal_Bool*)pValues[nProp].getValue())
 							nFlags |= ChgOrdinalNumber;
 					break;//"ChangeOrdinalNumber",
-					case  8:
-						if(*(sal_Bool*)pValues[nProp].getValue())
-							nFlags |= ChgFractionSymbol;
-					break;//"ChangeFraction",
+                    case 8:
+                        if(*(sal_Bool*)pValues[nProp].getValue())
+                             nFlags |= AddNonBrkSpace;
+                    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())
                 bVal = 0 != (nFlags & ChgOrdinalNumber);
 				pValues[nProp].setValue(&bVal, rType);
 			break;//"ChangeOrdinalNumber",
-			case  8:
-                bVal = 0 != (nFlags & ChgFractionSymbol);
-				pValues[nProp].setValue(&bVal, rType);
-			break;//"ChangeFraction",
+			case 8:
+                bVal = 0 != (nFlags & AddNonBrkSpace);
+                pValues[nProp].setValue(&bVal, rType);
+			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:
         "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
         "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 = 47;
 	Sequence<OUString> aNames(nCount);
 	OUString* pNames = aNames.getArray();
 	for(int i = 0; i < nCount; i++)
                     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",
 						rSwFlags.aBulletFont.SetPitch(FontPitch(nVal));
 					}
 					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));
             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);
             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",
 		}

editeng/source/misc/svxacorr.cxx

 
 
 #include <com/sun/star/io/XStream.hpp>
+#include <com/sun/star/lang/Locale.hpp>
 #include <tools/urlobj.hxx>
 #include <tools/table.hxx>
 #include <i18npool/mslangid.hxx>
 #include <xmloff/xmltoken.hxx>
 #include <vcl/help.hxx>
 
+#define CHAR_HARDBLANK		((sal_Unicode)0x00A0)
+
 using namespace ::com::sun::star::ucb;
 using namespace ::com::sun::star::uno;
 using namespace ::com::sun::star;
             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-------------------
 	long nRet = Autocorrect
 					| CptlSttSntnc
 					| CptlSttWrd
-					| ChgFractionSymbol
 					| ChgOrdinalNumber
 					| ChgToEnEmDash
+                    | AddNonBrkSpace
 					| ChgWeightUnderl
 					| SetINetAttr
 					| ChgQuotes
 {
 	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 );
 }
 	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 )
 {
 }
 }
 
 
-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,
 	return bRet;
 }
 
+BOOL SvxAutoCorrect::FnAddNonBrkSpace(
+                                SvxAutoCorrDoc& rDoc, const String& rTxt,
+                                xub_StrLen, xub_StrLen nEndPos,
+                                LanguageType eLang )
+{
+    bool bRet = false;
+    
+    CharClass& rCC = GetCharClass( eLang );
+    const lang::Locale rLocale = rCC.getLocale( );
+
+    if ( rLocale.Language == OUString::createFromAscii( "fr" ) )
+    {
+        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 );
+        bool bHasSpace = chars.indexOf( sal_Unicode( cChar ) ) != -1;
+        bool bIsSpecial = allChars.indexOf( sal_Unicode( cChar ) ) != -1;
+        if ( bIsSpecial )
+        {
+            // 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;
+}
 
 BOOL SvxAutoCorrect::FnSetINetAttr( SvxAutoCorrDoc& rDoc, const String& rTxt,
 									xub_StrLen nSttPos, xub_StrLen nEndPos,
 		{
 			//JP 10.02.97: doppelte Spaces verhindern
 			if( nInsPos && ' ' == cChar &&
-				IsAutoCorrFlag( IngnoreDoubleSpace ) &&
+				IsAutoCorrFlag( IgnoreDoubleSpace ) &&
 				' ' == rTxt.GetChar( nInsPos - 1 ) )
 			{
-				nRet = IngnoreDoubleSpace;
+				nRet = IgnoreDoubleSpace;
 				break;
 			}
 
 				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 )
 		// Bug 19285: Symbolzeichen nicht anfassen
 		if( lcl_IsSymbolChar( rCC, rTxt, nCapLttrPos, nInsPos ))
 			break;
-
+            
 		if( IsAutoCorrFlag( Autocorrect ) )
 		{
 			const String* pPara = 0;
 			}
 		}
 
-		if( ( IsAutoCorrFlag( nRet = ChgFractionSymbol ) &&
-				FnChgFractionSymbol( rDoc, rTxt, nCapLttrPos, nInsPos ) ) ||
-			( IsAutoCorrFlag( nRet = ChgOrdinalNumber ) &&
+		if( ( IsAutoCorrFlag( nRet = ChgOrdinalNumber ) &&
 				FnChgOrdinalNumber( rDoc, rTxt, nCapLttrPos, nInsPos, eLang ) ) ||
 			( IsAutoCorrFlag( nRet = SetINetAttr ) &&
 				( ' ' == cChar || '\t' == cChar || 0x0a == cChar || !cChar ) &&
 			     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;
 		}
 

editeng/source/misc/swafopt.cxx

 						RTL_CONSTASCII_STRINGPARAM( "StarSymbol" )),
 					Size( 0, 14 ) )
 {
-	bReplaceQuote =
 	bAutoCorrect =
 	bCptlSttSntnc =
 	bCptlSttWrd =
 	bChkFontAttr =
 	bChgUserColl =
 	bChgEnumNum =
-	bChgFracionSymbol =
-	bChgOrdinalNumber =
+	bAddNonBrkSpace =
+    bChgOrdinalNumber =
 	bChgToEnEmDash =
 	bChgWeightUnderl =
 	bSetINetAttr =
 SvxSwAutoFmtFlags& SvxSwAutoFmtFlags::operator=( const SvxSwAutoFmtFlags& rAFFlags )
 {
 	bAutoCorrect = rAFFlags.bAutoCorrect;
-	bReplaceQuote = rAFFlags.bReplaceQuote;
 	bCptlSttSntnc = rAFFlags.bCptlSttSntnc;
 	bCptlSttWrd = rAFFlags.bCptlSttWrd;
 	bChkFontAttr = rAFFlags.bChkFontAttr;
 	bSetNumRule = rAFFlags.bSetNumRule;
 	bAFmtByInput = rAFFlags.bAFmtByInput;
 
-	bChgFracionSymbol = rAFFlags.bChgFracionSymbol;
+    bAddNonBrkSpace = rAFFlags.bAddNonBrkSpace;
 	bChgOrdinalNumber = rAFFlags.bChgOrdinalNumber;
 	bChgToEnEmDash = rAFFlags.bChgToEnEmDash;
 	bChgWeightUnderl = rAFFlags.bChgWeightUnderl;

extras/source/autotext/lang/af-ZA/acor_af-ZA.dat

Binary file modified.

extras/source/autotext/lang/bg/acor_bg-BG.dat

Binary file modified.

extras/source/autotext/lang/cs/acor_cs-CZ.dat

Binary file modified.

extras/source/autotext/lang/da/acor_da-DK.dat

Binary file modified.

extras/source/autotext/lang/de/acor_de-DE.dat

Binary file modified.

extras/source/autotext/lang/en-AU/acor_en-AU.dat

Binary file modified.

extras/source/autotext/lang/en-GB/acor_en-GB.dat

Binary file modified.

extras/source/autotext/lang/en-US/acor_en-US.dat

Binary file modified.

extras/source/autotext/lang/en-ZA/acor_en-ZA.dat

Binary file modified.

extras/source/autotext/lang/es/acor_es-ES.dat

Binary file modified.

extras/source/autotext/lang/eu/acor_eu.dat

Binary file modified.

extras/source/autotext/lang/fa/acor_fa-IR.dat

Binary file modified.

extras/source/autotext/lang/fi/acor_fi-FI.dat

Binary file modified.

extras/source/autotext/lang/fr/acor_fr-FR.dat

Binary file modified.

extras/source/autotext/lang/hu/acor_hu-HU.dat

Binary file modified.

extras/source/autotext/lang/it/acor_it-IT.dat

Binary file modified.

extras/source/autotext/lang/ja/acor_ja-JP.dat

Binary file modified.

extras/source/autotext/lang/ko/acor_ko-KR.dat

Binary file modified.

extras/source/autotext/lang/lb-LU/acor_lb-LU.dat

Binary file modified.

extras/source/autotext/lang/mn/acor_mn-MN.dat

Binary file modified.

extras/source/autotext/lang/nl/acor_nl-NL.dat

Binary file modified.

extras/source/autotext/lang/pl/acor_pl-PL.dat

Binary file modified.

extras/source/autotext/lang/pt-BR/acor_pt-BR.dat

Binary file modified.

extras/source/autotext/lang/pt/acor_pt-PT.dat

Binary file modified.

extras/source/autotext/lang/ru/acor_ru-RU.dat

Binary file modified.

extras/source/autotext/lang/sk/acor_sk-SK.dat

Binary file modified.

extras/source/autotext/lang/sl/acor_sl-SI.dat

Binary file modified.

extras/source/autotext/lang/sv/acor_sv-SE.dat

Binary file modified.

extras/source/autotext/lang/tr/acor_tr-TR.dat

Binary file modified.

extras/source/autotext/lang/vi/acor_vi-VN.dat

Binary file modified.

extras/source/autotext/lang/zh-CN/acor_zh-CN.dat

Binary file modified.

extras/source/autotext/lang/zh-TW/acor_zh-TW.dat

Binary file modified.

helpcontent2/source/text/scalc/guide/auto_off.xhp

 <?xml version="1.0" encoding="UTF-8"?>
 <helpdocument version="1.0">
-	
+
 <!--
 ***********************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * Copyright 2008 by Sun Microsystems, Inc.
  *
  * OpenOffice.org - a multi-platform office productivity suite
  *
  ************************************************************************
  -->
- 
-	
+
+
 <meta>
       <topic id="textscalcguideauto_offxml" indexer="include">
          <title xml-lang="en-US" id="tit">Deactivating Automatic Changes</title>
       <paragraph xml-lang="en-US" id="par_id3153707" role="paragraph" l10n="U" oldref="22">$[officename] Calc automatically converts certain entries to dates. For example, the entry <emph>1.1</emph> may be interpreted as January 1 of the current year, according to the locale settings of your operating system, and then displayed according to the date format applied to the cell.<comment>for sure 1.1 will not be interpreted as a date in the USofA !!</comment></paragraph>
       <paragraph xml-lang="en-US" id="par_id3159267" role="paragraph" l10n="U" oldref="23">To ensure that an entry is interpreted as text, add an apostrophe at the beginning of the entry. The apostrophe is not displayed in the cell.</paragraph>
       <paragraph xml-lang="en-US" id="hd_id3150043" role="heading" level="2" l10n="U" oldref="7">Quotation Marks Replaced by Custom Quotes</paragraph>
-      <paragraph xml-lang="en-US" id="par_id3155333" role="paragraph" l10n="U" oldref="9">Choose <emph>Tools - AutoCorrect Options</emph>. Go to the <emph>Custom Quotes</emph> tab and unmark <emph>Replace</emph>.</paragraph>
+      <paragraph xml-lang="en-US" id="par_id3155333" role="paragraph" l10n="U" oldref="9">Choose <emph>Tools - AutoCorrect Options</emph>. Go to the <emph>Localized Options</emph> tab and unmark <emph>Replace</emph>.</paragraph>
       <paragraph xml-lang="en-US" id="hd_id3149565" role="heading" level="2" l10n="U"
                  oldref="11">Cell Content Always Begins With Uppercase</paragraph>
       <paragraph xml-lang="en-US" id="par_id3147001" role="paragraph" l10n="U" oldref="13">Choose <item type="menuitem">Tools - AutoCorrect Options</item>. Go to the <item type="menuitem">Options</item> tab. Unmark <item type="menuitem">Capitalize first letter of every sentence</item>.</paragraph>

helpcontent2/source/text/shared/00/00000406.xhp

 <?xml version="1.0" encoding="UTF-8"?>
 <helpdocument version="1.0">
-	
+
 <!--
 ***********************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * Copyright 2008 by Sun Microsystems, Inc.
  *
  * OpenOffice.org - a multi-platform office productivity suite
  *
  ************************************************************************
  -->
- 
-	
+
+
 <meta>
 <topic id="textshared0000000406xml" indexer="exclude">
 <title id="tit" xml-lang="en-US">Tools Menu</title>
 
          </section>
       </section>
-      <paragraph xml-lang="en-US" id="par_id3146957" role="paragraph" l10n="U" oldref="130"><variable id="galleryregisterdateien">Choose <emph>Tools - Gallery</emph> or click the <emph>Gallery </emph>icon on the <emph>Standard</emph> Bar - <emph>New Theme</emph> button - <emph>Files</emph> tab 
+      <paragraph xml-lang="en-US" id="par_id3146957" role="paragraph" l10n="U" oldref="130"><variable id="galleryregisterdateien">Choose <emph>Tools - Gallery</emph> or click the <emph>Gallery </emph>icon on the <emph>Standard</emph> Bar - <emph>New Theme</emph> button - <emph>Files</emph> tab
 </variable></paragraph>
 <section id="rechtschreibung">
 <paragraph role="paragraph" id="par_id3166411" xml-lang="en-US" l10n="CHG" oldref="2">Choose <emph>Tools - Spelling and Grammar</emph>
 
          </section>
       </section>
-      <paragraph xml-lang="en-US" id="par_id3156326" role="paragraph" l10n="CHG" oldref="164"><variable id="hangul">Choose <emph>Tools - Language - Hangul/Hanja Conversion</emph> (Asian language support must be enabled) 
+      <paragraph xml-lang="en-US" id="par_id3156326" role="paragraph" l10n="CHG" oldref="164"><variable id="hangul">Choose <emph>Tools - Language - Hangul/Hanja Conversion</emph> (Asian language support must be enabled)
 </variable></paragraph>
-      <paragraph xml-lang="en-US" id="par_idN10705" role="paragraph" l10n="NEW"><variable id="chinese">Choose <emph>Tools - Language - Chinese Translation</emph> (Asian language support must be enabled) 
+      <paragraph xml-lang="en-US" id="par_idN10705" role="paragraph" l10n="NEW"><variable id="chinese">Choose <emph>Tools - Language - Chinese Translation</emph> (Asian language support must be enabled)
 </variable></paragraph>
-      <paragraph xml-lang="en-US" id="par_idN1071E" role="paragraph" l10n="NEW"><variable id="chineseedit">Choose <emph>Tools - Language - Chinese Translation</emph> (Asian language support must be enabled) - <emph>Edit terms</emph> button 
+      <paragraph xml-lang="en-US" id="par_idN1071E" role="paragraph" l10n="NEW"><variable id="chineseedit">Choose <emph>Tools - Language - Chinese Translation</emph> (Asian language support must be enabled) - <emph>Edit terms</emph> button
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3155419" role="paragraph" l10n="U" oldref="5"><variable id="rechtschreibungmenue">Choose <emph>Tools - Spelling and Grammar</emph>
 </variable></paragraph>
       <section id="thesaurus">
          <paragraph xml-lang="en-US" id="par_id3151338" role="paragraph" l10n="CHG" oldref="8">Choose <emph>Tools - Language - Thesaurus</emph>
 </paragraph>
-         <paragraph xml-lang="en-US" id="par_id3149884" role="paragraph" l10n="U" oldref="70"><switchinline select="sys"><caseinline select="MAC">Command 
+         <paragraph xml-lang="en-US" id="par_id3149884" role="paragraph" l10n="U" oldref="70"><switchinline select="sys"><caseinline select="MAC">Command
 </caseinline><defaultinline>Ctrl</defaultinline></switchinline>+F7</paragraph>
       </section>
       <section id="etpip">
       </section>
       <paragraph xml-lang="en-US" id="par_idN107E9" role="paragraph" l10n="NEW"><variable id="mediaplayer">Choose <emph>Tools - Media Player</emph>
 </variable></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3151385" role="paragraph" l10n="CHG" oldref="13"><variable id="makro">Choose <emph>Tools - Macros - Organize Macros - %PRODUCTNAME Basic</emph>, or press <switchinline select="sys"><caseinline select="MAC">Option 
-</caseinline><defaultinline>Alt</defaultinline></switchinline>+F11 (if not assigned by your system) 
+      <paragraph xml-lang="en-US" id="par_id3151385" role="paragraph" l10n="CHG" oldref="13"><variable id="makro">Choose <emph>Tools - Macros - Organize Macros - %PRODUCTNAME Basic</emph>, or press <switchinline select="sys"><caseinline select="MAC">Option
+</caseinline><defaultinline>Alt</defaultinline></switchinline>+F11 (if not assigned by your system)
 </variable></paragraph>
       <section id="recordmacro">
          <paragraph xml-lang="en-US" id="par_id3149456" role="paragraph" l10n="U" oldref="155">Choose <emph>Tools - Macros - Record Macro</emph>
 </paragraph>
       </section>
-      <paragraph xml-lang="en-US" id="par_id3150398" role="paragraph" l10n="CHG" oldref="14"><variable id="passwort">Choose <emph>Tools - Macros - Organize Macros - %PRODUCTNAME Basic</emph>, click the <emph>Organizer</emph> button, click the <emph>Libraries</emph> tab, and then click the <emph>Password</emph> button 
+      <paragraph xml-lang="en-US" id="par_id3150398" role="paragraph" l10n="CHG" oldref="14"><variable id="passwort">Choose <emph>Tools - Macros - Organize Macros - %PRODUCTNAME Basic</emph>, click the <emph>Organizer</emph> button, click the <emph>Libraries</emph> tab, and then click the <emph>Password</emph> button
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_idN10843" role="paragraph" l10n="CHG"><variable id="packagemanager">Choose <emph>Tools - Extension Manager</emph>
 </variable></paragraph>
-      <paragraph xml-lang="en-US" id="par_id9988402" role="paragraph" l10n="NEW"><variable id="packagemanager_eu">Choose <emph>Tools - Extension Manager</emph>, click <emph>Updates</emph> button 
+      <paragraph xml-lang="en-US" id="par_id9988402" role="paragraph" l10n="NEW"><variable id="packagemanager_eu">Choose <emph>Tools - Extension Manager</emph>, click <emph>Updates</emph> button
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3151106" role="paragraph" l10n="U" oldref="161"><variable id="xmlfilter">Choose <emph>Tools - XML Filter Settings</emph>
 </variable></paragraph>
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3148672" role="paragraph" l10n="CHG" oldref="15"><variable id="anpassen">Choose <emph>Tools - Customize</emph>
 </variable></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3147230" role="paragraph" l10n="CHG" oldref="16"><variable id="menue">Choose <emph>Tools - Customize - Menu</emph> tab 
+      <paragraph xml-lang="en-US" id="par_id3147230" role="paragraph" l10n="CHG" oldref="16"><variable id="menue">Choose <emph>Tools - Customize - Menu</emph> tab
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_idN108E9" role="paragraph" l10n="NEW"><variable id="menuenew">Choose <emph>Tools - Customize - Menu</emph> tab, click <emph>New</emph>
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_idN10919" role="paragraph" l10n="NEW"><variable id="menuemove">Choose <emph>Tools - Customize - Menu</emph> tab, click <emph>Menu - Move</emph>
 </variable></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3145171" role="paragraph" l10n="CHG" oldref="129"><variable id="tastatur">Choose <emph>Tools - Customize - Keyboard</emph> tab (a document must be opened) 
+      <paragraph xml-lang="en-US" id="par_id3145171" role="paragraph" l10n="CHG" oldref="129"><variable id="tastatur">Choose <emph>Tools - Customize - Keyboard</emph> tab (a document must be opened)
 </variable></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3153968" role="paragraph" l10n="CHG" oldref="19"><variable id="symbole">Choose <emph>Tools - Customize - Toolbars</emph> tab 
+      <paragraph xml-lang="en-US" id="par_id3153968" role="paragraph" l10n="CHG" oldref="19"><variable id="symbole">Choose <emph>Tools - Customize - Toolbars</emph> tab
 </variable></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3144432" role="paragraph" l10n="CHG" oldref="22"><variable id="events">Choose <emph>Tools - Customize - Events</emph> tab 
+      <paragraph xml-lang="en-US" id="par_id3144432" role="paragraph" l10n="CHG" oldref="22"><variable id="events">Choose <emph>Tools - Customize - Events</emph> tab
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3157895" role="paragraph" l10n="U" oldref="50"><variable id="autokorr">Choose <emph>Tools - AutoCorrect</emph>
 <emph> Options</emph>
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3153768" role="paragraph" l10n="U" oldref="51"><variable id="autokooptionen">Choose <emph>Tools - AutoCorrect</emph>
-<emph>- Options</emph>tab 
+<emph>- Options</emph>tab
 </variable></paragraph>
-      <paragraph xml-lang="en-US" id="par_id1978514" role="paragraph" l10n="NEW"><variable id="autokosmarttags">Choose <emph>Tools - AutoCorrect Options- Smart Tags</emph> tab 
+      <paragraph xml-lang="en-US" id="par_id1978514" role="paragraph" l10n="NEW"><variable id="autokosmarttags">Choose <emph>Tools - AutoCorrect Options- Smart Tags</emph> tab
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3155368" role="paragraph" l10n="U" oldref="52"><variable id="autokoersetzung">Choose <emph>Tools - AutoCorrect</emph>
 <emph> Options</emph>
-<emph>- Replace</emph> tab 
+<emph>- Replace</emph> tab
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3155860" role="paragraph" l10n="U" oldref="53"><variable id="autokoausnahmen">Choose <emph>Tools - AutoCorrect</emph>
 <emph> Options</emph>
-<emph>- Exceptions</emph> tab 
+<emph>- Exceptions</emph> tab
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3153094" role="paragraph" l10n="U" oldref="58"><variable id="autokotyafz">Choose <emph>Tools - AutoCorrect</emph>
 <emph> Options</emph>
-<emph>- Custom Quotes</emph> tab 
+<emph>- Localized Options</emph> tab
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3153945" role="paragraph" l10n="U" oldref="114"><variable id="autokoworterg">Choose <emph>Tools - AutoCorrect</emph>
 <emph> Options</emph>
-<emph> - Word Completion</emph> tab 
+<emph> - Word Completion</emph> tab
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_id3151352" role="paragraph" l10n="U" oldref="80"><variable id="exopas">Choose <emph><switchinline select="sys"><caseinline select="MAC">%PRODUCTNAME - Preferences</caseinline><defaultinline>Tools - Options</defaultinline></switchinline> - %PRODUCTNAME Calc - View</emph>
 </variable></paragraph>
       <paragraph xml-lang="en-US" id="par_idN1120D" role="paragraph" l10n="NEW"><variable id="registered">Choose <emph><switchinline select="sys"><caseinline select="MAC">%PRODUCTNAME - Preferences</caseinline><defaultinline>Tools - Options</defaultinline></switchinline> - %PRODUCTNAME Base - Databases</emph>
 </variable></paragraph>
    </body>
-</helpdocument>
+</helpdocument>

helpcontent2/source/text/shared/01/06040100.xhp

 <?xml version="1.0" encoding="UTF-8"?>
 <helpdocument version="1.0">
-	
+
 <!--
 ***********************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- * 
+ *
  * Copyright 2008 by Sun Microsystems, Inc.
  *
  * OpenOffice.org - a multi-platform office productivity suite
  *
  ************************************************************************
  -->
- 
-	
+
+
 <meta>
       <topic id="textshared0106040100xml" indexer="include">
          <title xml-lang="en-US" id="tit">Options</title>
          <bookmark_value>capital letters; AutoCorrect function</bookmark_value>
          <bookmark_value>bold; AutoFormat function</bookmark_value>
          <bookmark_value>underlining; AutoFormat function</bookmark_value>
-         <bookmark_value>1/2 replacement</bookmark_value>
          <bookmark_value>spaces; ignoring double</bookmark_value>
          <bookmark_value>numbering; using automatically</bookmark_value>
          <bookmark_value>paragraphs; numbering automatically</bookmark_value>
          <bookmark_value>styles; replacing automatically</bookmark_value>
          <bookmark_value>user-defined styles; automatically replacing</bookmark_value>
          <bookmark_value>bullets; replacing</bookmark_value>
-         <bookmark_value>quotation marks; replacing</bookmark_value>
-         <bookmark_value>typographical quotes in $[officename] Writer</bookmark_value>
          <bookmark_value>paragraphs; joining</bookmark_value>
          <bookmark_value>joining; paragraphs</bookmark_value>
-</bookmark><comment>removed two bookmarks "automatic..."</comment><comment>MW removed "numbering;paragraphs"</comment>
+</bookmark><comment>removed two bookmarks "automatic..." and two more entries about quotes and 1/2 replacement</comment><comment>MW removed "numbering;paragraphs"</comment>
 <bookmark xml-lang="en-US" branch="hid/HID_OFAPAGE_AUTOCORR_CLB" id="bm_id3148765" localize="false"/>
 <bookmark xml-lang="en-US" branch="hid/HID_OFAPAGE_AUTOCORR_OPTIONS" id="bm_id3147527" localize="false"/>
 <bookmark xml-lang="en-US" branch="hid/HID_OFAPAGE_AUTOFMT_OPTIONS" id="bm_id3149962" localize="false"/>
       <paragraph xml-lang="en-US" id="hd_id3150275" role="heading" level="3" l10n="U"
                  oldref="17">URL Recognition</paragraph>
       <paragraph xml-lang="en-US" id="par_id3158430" role="paragraph" l10n="U" oldref="18">Automatically creates a hyperlink when you type a <link href="text/shared/00/00000002.xhp#url" name="URL">URL</link>.</paragraph>
-      <paragraph xml-lang="en-US" id="hd_id3151338" role="heading" level="3" l10n="U"
-                 oldref="15">Replace 1/2 ... with ½ ...</paragraph>
-      <paragraph xml-lang="en-US" id="par_id3149235" role="paragraph" l10n="U" oldref="16">Replaces 1/2, 1/4, 3/4 with the corresponding fraction characters.</paragraph>
-      <paragraph xml-lang="en-US" id="hd_id3159400" role="heading" level="3" l10n="U"
-                 oldref="25">Replace 1st ... with 1^st ...</paragraph>
-      <paragraph xml-lang="en-US" id="par_id3154173" role="paragraph" l10n="U" oldref="27">Displays the text characters of ordinals, such as 1st, 2nd, or 3rd, as superscripts.</paragraph>
+<comment>UFI: moved "replace 1st" to Localized Options tab page, cws cbosdo01</comment>
       <paragraph xml-lang="en-US" id="hd_id3148473" role="heading" level="3" l10n="U"
                  oldref="19">Replace Dashes<comment>UFI: changed switches, added table, #61325#</comment></paragraph><comment>UFI: see i73558 for name: not the dashes are replaced but the hyphens (or even better the minus signs)</comment>
 <paragraph xml-lang="en-US" id="par_id3144439" role="paragraph" l10n="CHG" oldref="20">Replaces one or two hyphens with a long dash (see the following table).</paragraph>
 
       <paragraph xml-lang="en-US" id="par_id1416974" role="note" l10n="NEW">If the text has the Hungarian or Finnish language attribute, then two hyphens in the sequence A--B are replaced by an en-dash instead of an em-dash.<comment>i71908</comment></paragraph>
       <paragraph xml-lang="en-US" id="hd_id3152472" role="heading" level="3" l10n="U"
-                 oldref="99"><switchinline select="appl"><caseinline select="WRITER">Delete spaces and tabs at beginning and end of paragraph 
+                 oldref="99"><switchinline select="appl"><caseinline select="WRITER">Delete spaces and tabs at beginning and end of paragraph
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3156024" role="paragraph" l10n="U" oldref="100"><switchinline select="appl"><caseinline select="WRITER">Removes spaces and tabs at the beginning of a paragraph. To use this option, the <emph>Apply Styles</emph> option must also be selected. 
+      <paragraph xml-lang="en-US" id="par_id3156024" role="paragraph" l10n="U" oldref="100"><switchinline select="appl"><caseinline select="WRITER">Removes spaces and tabs at the beginning of a paragraph. To use this option, the <emph>Apply Styles</emph> option must also be selected.
 </caseinline></switchinline></paragraph>
       <paragraph xml-lang="en-US" id="hd_id3147303" role="heading" level="3" l10n="U"
-                 oldref="101"><switchinline select="appl"><caseinline select="WRITER">Delete blanks and tabs at end and start of lines 
+                 oldref="101"><switchinline select="appl"><caseinline select="WRITER">Delete blanks and tabs at end and start of lines
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3150866" role="paragraph" l10n="U" oldref="102"><switchinline select="appl"><caseinline select="WRITER">Removes spaces and tabs at the beginning of each line. To use this option, the <emph>Apply Styles</emph> option must also be selected. 
+      <paragraph xml-lang="en-US" id="par_id3150866" role="paragraph" l10n="U" oldref="102"><switchinline select="appl"><caseinline select="WRITER">Removes spaces and tabs at the beginning of each line. To use this option, the <emph>Apply Styles</emph> option must also be selected.
 </caseinline></switchinline></paragraph>
       <paragraph xml-lang="en-US" id="hd_id3150400" role="heading" level="3" l10n="U"
                  oldref="28">Ignore double spaces</paragraph>
       <paragraph xml-lang="en-US" id="par_id3154938" role="paragraph" l10n="U" oldref="29">Replaces two or more consecutive spaces with a single space.</paragraph>
       <paragraph xml-lang="en-US" id="hd_id3145116" role="heading" level="3" l10n="U"
-                 oldref="33"><switchinline select="appl"><caseinline select="WRITER">Apply numbering - symbol 
+                 oldref="33"><switchinline select="appl"><caseinline select="WRITER">Apply numbering - symbol
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3150870" role="paragraph" l10n="U" oldref="34"><switchinline select="appl"><caseinline select="WRITER">Automatically creates a numbered list when you press Enter at the end of a line that starts with a number followed by a period, a space, and text. If a line starts with a hyphen (-), a plus sign (+), or an asterisk (*), followed by a space, and text, a bulleted list is created when you press Enter. 
+      <paragraph xml-lang="en-US" id="par_id3150870" role="paragraph" l10n="U" oldref="34"><switchinline select="appl"><caseinline select="WRITER">Automatically creates a numbered list when you press Enter at the end of a line that starts with a number followed by a period, a space, and text. If a line starts with a hyphen (-), a plus sign (+), or an asterisk (*), followed by a space, and text, a bulleted list is created when you press Enter.
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3146874" role="paragraph" l10n="U" oldref="92"><switchinline select="appl"><caseinline select="WRITER">To cancel automatic numbering when you press Enter at the end of a line that starts with a numbering symbol, press Enter again. 
+      <paragraph xml-lang="en-US" id="par_id3146874" role="paragraph" l10n="U" oldref="92"><switchinline select="appl"><caseinline select="WRITER">To cancel automatic numbering when you press Enter at the end of a line that starts with a numbering symbol, press Enter again.
 </caseinline></switchinline></paragraph>
 <switch select="appl">
 <case select="WRITER">
 </case>
 </switch>
 <paragraph xml-lang="en-US" id="hd_id3149064" role="heading" level="3" l10n="U"
-                 oldref="49"><switchinline select="appl"><caseinline select="WRITER">Create table 
+                 oldref="49"><switchinline select="appl"><caseinline select="WRITER">Create table
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3146119" role="paragraph" l10n="U" oldref="50"><switchinline select="appl"><caseinline select="WRITER">Creates a table when you press Enter after typing a series of hyphens (-) or tabs separated by plus signs, that is, +------+---+. Plus signs indicate column dividers, while hyphens and tabs indicate the width of a column. 
+      <paragraph xml-lang="en-US" id="par_id3146119" role="paragraph" l10n="U" oldref="50"><switchinline select="appl"><caseinline select="WRITER">Creates a table when you press Enter after typing a series of hyphens (-) or tabs separated by plus signs, that is, +------+---+. Plus signs indicate column dividers, while hyphens and tabs indicate the width of a column.
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3147219" role="paragraph" l10n="U" oldref="53"><switchinline select="appl"><caseinline select="WRITER">+-----------------+---------------+------+ 
+      <paragraph xml-lang="en-US" id="par_id3147219" role="paragraph" l10n="U" oldref="53"><switchinline select="appl"><caseinline select="WRITER">+-----------------+---------------+------+
 </caseinline></switchinline></paragraph>
       <paragraph xml-lang="en-US" id="hd_id3153334" role="heading" level="3" l10n="U"
-                 oldref="55"><switchinline select="appl"><caseinline select="WRITER">Apply Styles 
+                 oldref="55"><switchinline select="appl"><caseinline select="WRITER">Apply Styles
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3147396" role="paragraph" l10n="U" oldref="56"><switchinline select="appl"><caseinline select="WRITER">Automatically replaces the "Default" paragraph style with the Heading 1 to Heading 8 paragraph styles. To apply the Heading 1 paragraph style, type the text that you want to use as a heading (without a period), and then press Enter twice. To apply a sub-heading, press Tab one or more times, type the text (without a period), and then press Enter. 
+      <paragraph xml-lang="en-US" id="par_id3147396" role="paragraph" l10n="U" oldref="56"><switchinline select="appl"><caseinline select="WRITER">Automatically replaces the "Default" paragraph style with the Heading 1 to Heading 8 paragraph styles. To apply the Heading 1 paragraph style, type the text that you want to use as a heading (without a period), and then press Enter twice. To apply a sub-heading, press Tab one or more times, type the text (without a period), and then press Enter.
 </caseinline></switchinline></paragraph>
       <paragraph xml-lang="en-US" id="hd_id3151075" role="heading" level="3" l10n="U"
-                 oldref="58"><switchinline select="appl"><caseinline select="WRITER">Remove blank paragraphs 
-</caseinline></switchinline></paragraph><comment>UFI: test if this also only applies to Default, body and body indented, or to all para styles</comment>
-<paragraph xml-lang="en-US" id="par_id3145728" role="paragraph" l10n="U" oldref="59"><switchinline select="appl"><caseinline select="WRITER">Removes empty paragraphs from the current document when you choose <emph>Format - AutoCorrect - Apply</emph>. 
+                 oldref="58"><switchinline select="appl"><caseinline select="WRITER">Remove blank paragraphs
+</caseinline></switchinline></paragraph>
+<paragraph xml-lang="en-US" id="par_id3145728" role="paragraph" l10n="U" oldref="59"><switchinline select="appl"><caseinline select="WRITER">Removes empty paragraphs from the current document when you choose <emph>Format - AutoCorrect - Apply</emph>.
 </caseinline></switchinline></paragraph>
       <paragraph xml-lang="en-US" id="hd_id3152375" role="heading" level="3" l10n="U"
-                 oldref="60"><switchinline select="appl"><caseinline select="WRITER">Replace Custom Styles 
+                 oldref="60"><switchinline select="appl"><caseinline select="WRITER">Replace Custom Styles
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3156299" role="paragraph" l10n="U" oldref="61"><switchinline select="appl"><caseinline select="WRITER">Replaces the custom paragraph styles in the current document with the "Default", the "Text Body", or the "Text Body Indent" paragraph style. 
+      <paragraph xml-lang="en-US" id="par_id3156299" role="paragraph" l10n="U" oldref="61"><switchinline select="appl"><caseinline select="WRITER">Replaces the custom paragraph styles in the current document with the "Default", the "Text Body", or the "Text Body Indent" paragraph style.
 </caseinline></switchinline></paragraph>
       <paragraph xml-lang="en-US" id="hd_id3147045" role="heading" level="3" l10n="U"
-                 oldref="62"><switchinline select="appl"><caseinline select="WRITER">Replace bullets with 
+                 oldref="62"><switchinline select="appl"><caseinline select="WRITER">Replace bullets with
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3150420" role="paragraph" l10n="U" oldref="63"><switchinline select="appl"><caseinline select="WRITER">Converts paragraphs that start with a hyphen (-), a plus sign (+), or an asterisk (*) directly followed by a space or a tab, to bulleted lists. This option only works on paragraphs that are formatted with the "Default", "Text Body", or "Text Body Indent" paragraph styles. To change the bullet style that is used, select this option, and then click <emph>Edit</emph>. 
+      <paragraph xml-lang="en-US" id="par_id3150420" role="paragraph" l10n="U" oldref="63"><switchinline select="appl"><caseinline select="WRITER">Converts paragraphs that start with a hyphen (-), a plus sign (+), or an asterisk (*) directly followed by a space or a tab, to bulleted lists. This option only works on paragraphs that are formatted with the "Default", "Text Body", or "Text Body Indent" paragraph styles. To change the bullet style that is used, select this option, and then click <emph>Edit</emph>.
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="hd_id3154792" role="heading" level="3" l10n="U"
-                 oldref="64"><switchinline select="appl"><caseinline select="WRITER">Replace standard quotes with custom quotes 
+<comment>removed "replace standard quotes..." cws cbosdo01</comment>
+<paragraph xml-lang="en-US" id="hd_id3151019" role="heading" level="3" l10n="U"
+                 oldref="66"><switchinline select="appl"><caseinline select="WRITER">Combine single line paragraphs if length greater than ...
 </caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3156180" role="paragraph" l10n="U" oldref="65"><switchinline select="appl"><caseinline select="WRITER">Changes quotation marks in the text to the quotation marks that you specify in the <link href="text/shared/01/06040400.xhp" name="Custom Quotes">Custom Quotes</link> tab of this dialog. 
-</caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="hd_id3151019" role="heading" level="3" l10n="U"
-                 oldref="66"><switchinline select="appl"><caseinline select="WRITER">Combine single line paragraphs if length greater than ... 
-</caseinline></switchinline></paragraph>
-      <paragraph xml-lang="en-US" id="par_id3154162" role="paragraph" l10n="U" oldref="67"><switchinline select="appl"><caseinline select="WRITER">Combines consecutive single-line paragraphs into a single paragraph. This option only works on paragraphs that use the "Default" paragraph style. If a paragraph is longer than the specified length value, the paragraph is combined with the next paragraph. To enter a different length value, select the option, and then click <link href="text/swriter/01/05150104.xhp"><emph>Edit</emph></link>. 
+      <paragraph xml-lang="en-US" id="par_id3154162" role="paragraph" l10n="U" oldref="67"><switchinline select="appl"><caseinline select="WRITER">Combines consecutive single-line paragraphs into a single paragraph. This option only works on paragraphs that use the "Default" paragraph style. If a paragraph is longer than the specified length value, the paragraph is combined with the next paragraph. To enter a different length value, select the option, and then click <link href="text/swriter/01/05150104.xhp"><emph>Edit</emph></link>.
 </caseinline></switchinline></paragraph>
 <bookmark xml-lang="en-US" branch="hid/OFFMGR:PUSHBUTTON:RID_OFAPAGE_AUTOFMT_APPLY:PB_EDIT" id="bm_id3156334" localize="false"/>
 <bookmark xml-lang="en-US" branch="hid/svx_PushButton_RID_OFAPAGE_AUTOFMT_APPLY_PB_EDIT" id="bm_id9193700" localize="false"/>
 <paragraph xml-lang="en-US" id="hd_id3144749" role="heading" level="2" l10n="U"
-                 oldref="75"><switchinline select="appl"><caseinline select="WRITER">Edit 
+                 oldref="75"><switchinline select="appl"><caseinline select="WRITER">Edit
 </caseinline></switchinline></paragraph>
       <paragraph xml-lang="en-US" id="par_id3153841" role="paragraph" l10n="U" oldref="76"><switchinline select="appl"><caseinline select="WRITER"><ahelp hid="OFFMGR:PUSHBUTTON:RID_OFAPAGE_AUTOFMT_APPLY:PB_EDIT">Modifies the selected AutoCorrect option.</ahelp>
 </caseinline></switchinline></paragraph>

helpcontent2/source/text/shared/01/06040400.xhp

 <?xml version="1.0" encoding="UTF-8"?>
 <helpdocument version="1.0">
-	
+
 <!--
 ***********************************************************************
  *
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.