From dd814d4fdd96f5b991e050025aa554bf61471db0 Mon Sep 17 00:00:00 2001 From: "smontagu%smontagu.org" Date: Tue, 25 May 2004 07:26:11 +0000 Subject: [PATCH] Correct flipping of Arabic text on copy/paste. Bug 197375, r+sr=bzbarsky, a=asa git-svn-id: svn://10.0.0.236/branches/MOZILLA_1_7_BRANCH@156910 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/base/src/nsCopySupport.cpp | 52 ------------------- mozilla/content/base/src/nsDocumentViewer.cpp | 21 -------- mozilla/content/shared/public/nsBidiUtils.h | 36 +++++-------- .../docshell/base/nsIMarkupDocumentViewer.idl | 8 --- mozilla/layout/base/public/nsIPresContext.h | 20 ------- mozilla/layout/base/src/nsCopySupport.cpp | 52 ------------------- mozilla/layout/base/src/nsPresContext.cpp | 32 ------------ mozilla/layout/base/src/nsPresContext.h | 7 --- mozilla/modules/libpref/src/init/all.js | 7 --- .../resources/locale/en-US/navigator.dtd | 4 -- .../resources/locale/en-US/pref-bidi.dtd | 7 --- 11 files changed, 12 insertions(+), 234 deletions(-) diff --git a/mozilla/content/base/src/nsCopySupport.cpp b/mozilla/content/base/src/nsCopySupport.cpp index 8220d7dc532..01c6448e459 100644 --- a/mozilla/content/base/src/nsCopySupport.cpp +++ b/mozilla/content/base/src/nsCopySupport.cpp @@ -138,58 +138,6 @@ nsresult nsCopySupport::HTMLCopy(nsISelection *aSel, nsIDocument *aDoc, PRInt16 return rv; } -#ifdef IBMBIDI //ahmed - rv = NS_OK; - PRBool arabicCharset; - - nsCOMPtr doc = do_QueryInterface(aDoc); - if (doc) { - nsIPresShell *shell = doc->GetShellAt(0); - if (shell) { - nsCOMPtr context; - shell->GetPresContext(getter_AddRefs(context) ); - if (context) { - context->IsArabicEncoding(arabicCharset); - if (arabicCharset) { - PRUint32 bidiOptions; - PRBool isBidiSystem = context->IsBidiSystem(); - PRBool isVisual = context->IsVisualMode(); - - context->GetBidi(&bidiOptions); - if ( (GET_BIDI_OPTION_CLIPBOARDTEXTMODE(bidiOptions) == IBMBIDI_CLIPBOARDTEXTMODE_LOGICAL)&&(isVisual) - ) { - nsAutoString newBuffer; - if (isBidiSystem) { - if (GET_BIDI_OPTION_DIRECTION(bidiOptions) == IBMBIDI_TEXTDIRECTION_RTL) { - Conv_FE_06(buffer, newBuffer); - } - else { - Conv_FE_06_WithReverse(buffer, newBuffer); - } - } - else { //nonbidisystem - HandleNumbers(buffer, newBuffer);//ahmed - } - buffer = newBuffer; - } - //Mohamed - else { - nsCAutoString bidiCharset; - context->GetBidiCharset(bidiCharset); - if (bidiCharset.EqualsIgnoreCase("UTF-8") || (!isVisual)) { - if ( (GET_BIDI_OPTION_CLIPBOARDTEXTMODE(bidiOptions) == IBMBIDI_CLIPBOARDTEXTMODE_VISUAL) || (!isBidiSystem) ) { - nsAutoString newBuffer; - Conv_06_FE_WithReverse(buffer, newBuffer, GET_BIDI_OPTION_DIRECTION(bidiOptions)); - HandleNumbers(newBuffer, buffer); - } - } - } - } - } - } - } -#endif // IBMBIDI - // Get the Clipboard nsCOMPtr clipboard(do_GetService(kCClipboardCID, &rv)); if (NS_FAILED(rv)) diff --git a/mozilla/content/base/src/nsDocumentViewer.cpp b/mozilla/content/base/src/nsDocumentViewer.cpp index abd8fe73197..6f07d0f623a 100644 --- a/mozilla/content/base/src/nsDocumentViewer.cpp +++ b/mozilla/content/base/src/nsDocumentViewer.cpp @@ -2607,27 +2607,6 @@ NS_IMETHODIMP DocumentViewerImpl::GetBidiControlsTextMode(PRUint8* aControlsText return NS_OK; } -NS_IMETHODIMP DocumentViewerImpl::SetBidiClipboardTextMode(PRUint8 aClipboardTextMode) -{ - PRUint32 bidiOptions; - - GetBidiOptions(&bidiOptions); - SET_BIDI_OPTION_CLIPBOARDTEXTMODE(bidiOptions, aClipboardTextMode); - SetBidiOptions(bidiOptions); - return NS_OK; -} - -NS_IMETHODIMP DocumentViewerImpl::GetBidiClipboardTextMode(PRUint8* aClipboardTextMode) -{ - PRUint32 bidiOptions; - - if (aClipboardTextMode) { - GetBidiOptions(&bidiOptions); - *aClipboardTextMode = GET_BIDI_OPTION_CLIPBOARDTEXTMODE(bidiOptions); - } - return NS_OK; -} - NS_IMETHODIMP DocumentViewerImpl::SetBidiNumeral(PRUint8 aNumeral) { PRUint32 bidiOptions; diff --git a/mozilla/content/shared/public/nsBidiUtils.h b/mozilla/content/shared/public/nsBidiUtils.h index 78077494dcb..c3c2f6124cf 100644 --- a/mozilla/content/shared/public/nsBidiUtils.h +++ b/mozilla/content/shared/public/nsBidiUtils.h @@ -103,7 +103,6 @@ #define IBMBIDI_TEXTDIRECTION_STR "bidi.direction" #define IBMBIDI_TEXTTYPE_STR "bidi.texttype" #define IBMBIDI_CONTROLSTEXTMODE_STR "bidi.controlstextmode" -#define IBMBIDI_CLIPBOARDTEXTMODE_STR "bidi.clipboardtextmode" #define IBMBIDI_NUMERAL_STR "bidi.numeral" #define IBMBIDI_SUPPORTMODE_STR "bidi.support" #define IBMBIDI_CHARSET_STR "bidi.characterset" @@ -111,10 +110,9 @@ #define IBMBIDI_TEXTDIRECTION 1 #define IBMBIDI_TEXTTYPE 2 #define IBMBIDI_CONTROLSTEXTMODE 3 -#define IBMBIDI_CLIPBOARDTEXTMODE 4 -#define IBMBIDI_NUMERAL 5 -#define IBMBIDI_SUPPORTMODE 6 -#define IBMBIDI_CHARSET 7 +#define IBMBIDI_NUMERAL 4 +#define IBMBIDI_SUPPORTMODE 5 +#define IBMBIDI_CHARSET 6 // ------------------ // Text Direction @@ -137,13 +135,6 @@ #define IBMBIDI_CONTROLSTEXTMODE_VISUAL 2 // 2 = visualcontrolstextmodeBidi #define IBMBIDI_CONTROLSTEXTMODE_CONTAINER 3 // 3 = containercontrolstextmodeBidi // ------------------ -// Clipboard Text Mode -// ------------------ -// bidi.clipboardtextmode -#define IBMBIDI_CLIPBOARDTEXTMODE_LOGICAL 1 // 1 = logicalclipboardtextmodeBidi -#define IBMBIDI_CLIPBOARDTEXTMODE_VISUAL 2 // 2 = visualclipboardtextmodeBidi -#define IBMBIDI_CLIPBOARDTEXTMODE_SOURCE 3 // 3 = sourceclipboardtextmodeBidi * -// ------------------ // Numeral Style // ------------------ // bidi.numeral @@ -170,27 +161,24 @@ ((IBMBIDI_TEXTDIRECTION_LTR<<0) | \ (IBMBIDI_TEXTTYPE_CHARSET<<4) | \ (IBMBIDI_CONTROLSTEXTMODE_LOGICAL<<8) | \ - (IBMBIDI_CLIPBOARDTEXTMODE_SOURCE<<12) | \ - (IBMBIDI_NUMERAL_NOMINAL<<16) | \ - (IBMBIDI_SUPPORTMODE_MOZILLA<<20) | \ - (IBMBIDI_CHARSET_BIDI<<24)) + (IBMBIDI_NUMERAL_NOMINAL<<12) | \ + (IBMBIDI_SUPPORTMODE_MOZILLA<<16) | \ + (IBMBIDI_CHARSET_BIDI<<20)) #define GET_BIDI_OPTION_DIRECTION(bo) (((bo)>>0) & 0x0000000F) /* 4 bits for DIRECTION */ #define GET_BIDI_OPTION_TEXTTYPE(bo) (((bo)>>4) & 0x0000000F) /* 4 bits for TEXTTYPE */ #define GET_BIDI_OPTION_CONTROLSTEXTMODE(bo) (((bo)>>8) & 0x0000000F) /* 4 bits for CONTROLTEXTMODE */ -#define GET_BIDI_OPTION_CLIPBOARDTEXTMODE(bo) (((bo)>>12) & 0x0000000F) /* 4 bits for CLIPBOARDTEXTMODE */ -#define GET_BIDI_OPTION_NUMERAL(bo) (((bo)>>16) & 0x0000000F) /* 4 bits for NUMERAL */ -#define GET_BIDI_OPTION_SUPPORT(bo) (((bo)>>20) & 0x0000000F) /* 4 bits for SUPPORT */ -#define GET_BIDI_OPTION_CHARACTERSET(bo) (((bo)>>24) & 0x0000000F) /* 4 bits for CHARACTERSET */ +#define GET_BIDI_OPTION_NUMERAL(bo) (((bo)>>12) & 0x0000000F) /* 4 bits for NUMERAL */ +#define GET_BIDI_OPTION_SUPPORT(bo) (((bo)>>16) & 0x0000000F) /* 4 bits for SUPPORT */ +#define GET_BIDI_OPTION_CHARACTERSET(bo) (((bo)>>20) & 0x0000000F) /* 4 bits for CHARACTERSET */ #define SET_BIDI_OPTION_DIRECTION(bo, dir) {(bo)=((bo) & 0xFFFFFFF0)|(((dir)& 0x0000000F)<<0);} #define SET_BIDI_OPTION_TEXTTYPE(bo, tt) {(bo)=((bo) & 0xFFFFFF0F)|(((tt)& 0x0000000F)<<4);} #define SET_BIDI_OPTION_CONTROLSTEXTMODE(bo, cotm) {(bo)=((bo) & 0xFFFFF0FF)|(((cotm)& 0x0000000F)<<8);} -#define SET_BIDI_OPTION_CLIPBOARDTEXTMODE(bo, cltm) {(bo)=((bo) & 0xFFFF0FFF)|(((cltm)& 0x0000000F)<<12);} -#define SET_BIDI_OPTION_NUMERAL(bo, num) {(bo)=((bo) & 0xFFF0FFFF)|(((num)& 0x0000000F)<<16);} -#define SET_BIDI_OPTION_SUPPORT(bo, sup) {(bo)=((bo) & 0xFF0FFFFF)|(((sup)& 0x0000000F)<<20);} -#define SET_BIDI_OPTION_CHARACTERSET(bo, cs) {(bo)=((bo) & 0xF0FFFFFF)|(((cs)& 0x0000000F)<<24);} +#define SET_BIDI_OPTION_NUMERAL(bo, num) {(bo)=((bo) & 0xFFFF0FFF)|(((num)& 0x0000000F)<<12);} +#define SET_BIDI_OPTION_SUPPORT(bo, sup) {(bo)=((bo) & 0xFFF0FFFF)|(((sup)& 0x0000000F)<<16);} +#define SET_BIDI_OPTION_CHARACTERSET(bo, cs) {(bo)=((bo) & 0xFF0FFFFF)|(((cs)& 0x0000000F)<<20);} /* Constants related to the position of numerics in the codepage */ #define START_HINDI_DIGITS 0x0660 diff --git a/mozilla/docshell/base/nsIMarkupDocumentViewer.idl b/mozilla/docshell/base/nsIMarkupDocumentViewer.idl index 519d0b91242..92751c321ec 100644 --- a/mozilla/docshell/base/nsIMarkupDocumentViewer.idl +++ b/mozilla/docshell/base/nsIMarkupDocumentViewer.idl @@ -113,14 +113,6 @@ interface nsIMarkupDocumentViewer : nsISupports */ attribute octet bidiControlsTextMode; - /** - * bidiClipboardTextMode: the order in which text is transferred to the clipboard. - * 1 - logical - * 2 - visual - * 3 - as source (unchanged) - */ - attribute octet bidiClipboardTextMode; - /** * bidiNumeral: the type of numerals to display. * 1 - depending on context, default is Arabic numerals diff --git a/mozilla/layout/base/public/nsIPresContext.h b/mozilla/layout/base/public/nsIPresContext.h index a375dc0be4a..5e3185c1777 100644 --- a/mozilla/layout/base/public/nsIPresContext.h +++ b/mozilla/layout/base/public/nsIPresContext.h @@ -441,19 +441,6 @@ public: * Get the Bidi options for the presentation context */ NS_IMETHOD GetBidi(PRUint32* aBidiOptions) const = 0; -//ahmed - - /** - * Check for Bidi text mode and direction - * @return aResult == TRUE if the text mode is visual and the direction is right-to-left - */ - NS_IMETHOD IsVisRTL(PRBool &aResult) const = 0; - - /** - * Check for Arabic encoding - * @return aResult == TRUE if the document encoding is an Arabic codepage - */ - NS_IMETHOD IsArabicEncoding(PRBool &aResult) const = 0; /** * Set the Bidi capabilities of the system @@ -470,13 +457,6 @@ public: * @return TRUE if the system has the capability of reordering Bidi text */ PRBool IsBidiSystem() const { return mIsBidiSystem; } - - /** - * Get the document charset - */ - NS_IMETHOD GetBidiCharset(nsACString &aCharSet) const = 0; - - #endif // IBMBIDI /** diff --git a/mozilla/layout/base/src/nsCopySupport.cpp b/mozilla/layout/base/src/nsCopySupport.cpp index 8220d7dc532..01c6448e459 100644 --- a/mozilla/layout/base/src/nsCopySupport.cpp +++ b/mozilla/layout/base/src/nsCopySupport.cpp @@ -138,58 +138,6 @@ nsresult nsCopySupport::HTMLCopy(nsISelection *aSel, nsIDocument *aDoc, PRInt16 return rv; } -#ifdef IBMBIDI //ahmed - rv = NS_OK; - PRBool arabicCharset; - - nsCOMPtr doc = do_QueryInterface(aDoc); - if (doc) { - nsIPresShell *shell = doc->GetShellAt(0); - if (shell) { - nsCOMPtr context; - shell->GetPresContext(getter_AddRefs(context) ); - if (context) { - context->IsArabicEncoding(arabicCharset); - if (arabicCharset) { - PRUint32 bidiOptions; - PRBool isBidiSystem = context->IsBidiSystem(); - PRBool isVisual = context->IsVisualMode(); - - context->GetBidi(&bidiOptions); - if ( (GET_BIDI_OPTION_CLIPBOARDTEXTMODE(bidiOptions) == IBMBIDI_CLIPBOARDTEXTMODE_LOGICAL)&&(isVisual) - ) { - nsAutoString newBuffer; - if (isBidiSystem) { - if (GET_BIDI_OPTION_DIRECTION(bidiOptions) == IBMBIDI_TEXTDIRECTION_RTL) { - Conv_FE_06(buffer, newBuffer); - } - else { - Conv_FE_06_WithReverse(buffer, newBuffer); - } - } - else { //nonbidisystem - HandleNumbers(buffer, newBuffer);//ahmed - } - buffer = newBuffer; - } - //Mohamed - else { - nsCAutoString bidiCharset; - context->GetBidiCharset(bidiCharset); - if (bidiCharset.EqualsIgnoreCase("UTF-8") || (!isVisual)) { - if ( (GET_BIDI_OPTION_CLIPBOARDTEXTMODE(bidiOptions) == IBMBIDI_CLIPBOARDTEXTMODE_VISUAL) || (!isBidiSystem) ) { - nsAutoString newBuffer; - Conv_06_FE_WithReverse(buffer, newBuffer, GET_BIDI_OPTION_DIRECTION(bidiOptions)); - HandleNumbers(newBuffer, buffer); - } - } - } - } - } - } - } -#endif // IBMBIDI - // Get the Clipboard nsCOMPtr clipboard(do_GetService(kCClipboardCID, &rv)); if (NS_FAILED(rv)) diff --git a/mozilla/layout/base/src/nsPresContext.cpp b/mozilla/layout/base/src/nsPresContext.cpp index 643477b23f1..45b81b6b4ec 100644 --- a/mozilla/layout/base/src/nsPresContext.cpp +++ b/mozilla/layout/base/src/nsPresContext.cpp @@ -518,9 +518,6 @@ nsPresContext::GetUserPreferences() if (NS_SUCCEEDED(mPrefs->GetIntPref("bidi.controlstextmode", &prefInt))) { SET_BIDI_OPTION_CONTROLSTEXTMODE(mBidi, prefInt); } - if (NS_SUCCEEDED(mPrefs->GetIntPref("bidi.clipboardtextmode", &prefInt))) { - SET_BIDI_OPTION_CLIPBOARDTEXTMODE(mBidi, prefInt); - } if (NS_SUCCEEDED(mPrefs->GetIntPref("bidi.numeral", &prefInt))) { SET_BIDI_OPTION_NUMERAL(mBidi, prefInt); } @@ -1013,25 +1010,6 @@ nsPresContext::GetContainer() } #ifdef IBMBIDI -//ahmed -NS_IMETHODIMP -nsPresContext::IsArabicEncoding(PRBool& aResult) const -{ - aResult=PR_FALSE; - if ( (mCharset.EqualsIgnoreCase("ibm864") )||(mCharset.EqualsIgnoreCase("ibm864i") )||(mCharset.EqualsIgnoreCase("windows-1256") )||(mCharset.EqualsIgnoreCase("iso-8859-6") )) - aResult=PR_TRUE; - return NS_OK; -} - -NS_IMETHODIMP -nsPresContext::IsVisRTL(PRBool& aResult) const -{ - aResult=PR_FALSE; - if ( (mIsVisual)&&(GET_BIDI_OPTION_DIRECTION(mBidi) == IBMBIDI_TEXTDIRECTION_RTL) ) - aResult=PR_TRUE; - return NS_OK; -} - NS_IMETHODIMP nsPresContext::GetBidiEnabled(PRBool* aBidiEnabled) const { @@ -1104,16 +1082,6 @@ NS_IMETHODIMP nsPresContext::GetBidi(PRUint32* aDest) const *aDest = mBidi; return NS_OK; } - -//Mohamed 17-1-01 -NS_IMETHODIMP -nsPresContext::GetBidiCharset(nsACString &aCharSet) const -{ - aCharSet = mCharset; - return NS_OK; -} -//Mohamed End - #endif //IBMBIDI NS_IMETHODIMP diff --git a/mozilla/layout/base/src/nsPresContext.h b/mozilla/layout/base/src/nsPresContext.h index 18f35791a69..ba4d2b9a712 100644 --- a/mozilla/layout/base/src/nsPresContext.h +++ b/mozilla/layout/base/src/nsPresContext.h @@ -109,13 +109,6 @@ public: NS_IMETHOD GetBidiUtils(nsBidiPresUtils** aBidiUtils); NS_IMETHOD SetBidi(PRUint32 aSource, PRBool aForceReflow = PR_FALSE); NS_IMETHOD GetBidi(PRUint32* aDest) const; - //ahmed - NS_IMETHOD IsVisRTL(PRBool &aResult) const; - NS_IMETHOD IsArabicEncoding(PRBool &aResult) const; - -//Mohamed 17-1-01 - NS_IMETHOD GetBidiCharset(nsACString &aCharSet) const; -//Mohamed End #endif // IBMBIDI NS_IMETHOD GetTheme(nsITheme** aResult); diff --git a/mozilla/modules/libpref/src/init/all.js b/mozilla/modules/libpref/src/init/all.js index 8036a8c9cc0..aaf5063ab48 100644 --- a/mozilla/modules/libpref/src/init/all.js +++ b/mozilla/modules/libpref/src/init/all.js @@ -740,13 +740,6 @@ pref("bidi.texttype", 1); // 3 = containercontrolstextmodeBidi * pref("bidi.controlstextmode", 1); // ------------------ -// Clipboard Text Mode -// ------------------ -// 1 = logicalclipboardtextmodeBidi -// 2 = visiualclipboardtextmodeBidi -// 3 = sourceclipboardtextmodeBidi * -pref("bidi.clipboardtextmode", 3); -// ------------------ // Numeral Style // ------------------ // 0 = nominalnumeralBidi * diff --git a/mozilla/xpfe/browser/resources/locale/en-US/navigator.dtd b/mozilla/xpfe/browser/resources/locale/en-US/navigator.dtd index 5e6ac64c8e7..00e4345adaf 100644 --- a/mozilla/xpfe/browser/resources/locale/en-US/navigator.dtd +++ b/mozilla/xpfe/browser/resources/locale/en-US/navigator.dtd @@ -95,10 +95,6 @@ - - - - diff --git a/mozilla/xpfe/components/prefwindow/resources/locale/en-US/pref-bidi.dtd b/mozilla/xpfe/components/prefwindow/resources/locale/en-US/pref-bidi.dtd index 568b085d010..840dddff19c 100644 --- a/mozilla/xpfe/components/prefwindow/resources/locale/en-US/pref-bidi.dtd +++ b/mozilla/xpfe/components/prefwindow/resources/locale/en-US/pref-bidi.dtd @@ -31,13 +31,6 @@ - - - - - - -