diff options
author | Alexandr Miloslavskiy | 2019-10-22 09:35:13 +0000 |
---|---|---|
committer | Niraj Modi | 2019-10-23 06:20:21 +0000 |
commit | 3aa0cc06e3a9c7632bb4c7fe5cfc7f776fef8335 (patch) | |
tree | 585259cb4661c80c13d3621eb02487857ba66686 | |
parent | 969f688ac68be9c6a24e2d8d816137a85bfd53e1 (diff) | |
download | eclipse.platform.swt-3aa0cc06e3a9c7632bb4c7fe5cfc7f776fef8335.tar.gz eclipse.platform.swt-3aa0cc06e3a9c7632bb4c7fe5cfc7f776fef8335.tar.xz eclipse.platform.swt-3aa0cc06e3a9c7632bb4c7fe5cfc7f776fef8335.zip |
Bug 536562 - [win32] Text starting with space and containing Chinese characters displays unnormal
The bug was caused by outdated SWT definition for SCRIPT_CONTROL, which resulted in 2 fields having random values.
Thanks to Atsushi Nakagawa, who did the essential debugging.
Change-Id: I44e32488f13baf8f94198be4c41665951f72ac0f
Signed-off-by: Alexandr Miloslavskiy <alexandr.miloslavskiy@syntevo.com>
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c | 8 | ||||
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SCRIPT_CONTROL.java | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c index 4a8266ed5e..3bb1523d8c 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/library/os_structs.c @@ -5761,7 +5761,7 @@ void setSCRIPT_ANALYSISFields(JNIEnv *env, jobject lpObject, SCRIPT_ANALYSIS *lp typedef struct SCRIPT_CONTROL_FID_CACHE { int cached; jclass clazz; - jfieldID uDefaultLanguage, fContextDigits, fInvertPreBoundDir, fInvertPostBoundDir, fLinkStringBefore, fLinkStringAfter, fNeutralOverride, fNumericOverride, fLegacyBidiClass, fReserved; + jfieldID uDefaultLanguage, fContextDigits, fInvertPreBoundDir, fInvertPostBoundDir, fLinkStringBefore, fLinkStringAfter, fNeutralOverride, fNumericOverride, fLegacyBidiClass, fMergeNeutralItems, fUseStandardBidi, fReserved; } SCRIPT_CONTROL_FID_CACHE; SCRIPT_CONTROL_FID_CACHE SCRIPT_CONTROLFc; @@ -5779,6 +5779,8 @@ void cacheSCRIPT_CONTROLFields(JNIEnv *env, jobject lpObject) SCRIPT_CONTROLFc.fNeutralOverride = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fNeutralOverride", "Z"); SCRIPT_CONTROLFc.fNumericOverride = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fNumericOverride", "Z"); SCRIPT_CONTROLFc.fLegacyBidiClass = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fLegacyBidiClass", "Z"); + SCRIPT_CONTROLFc.fMergeNeutralItems = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fMergeNeutralItems", "Z"); + SCRIPT_CONTROLFc.fUseStandardBidi = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fUseStandardBidi", "Z"); SCRIPT_CONTROLFc.fReserved = (*env)->GetFieldID(env, SCRIPT_CONTROLFc.clazz, "fReserved", "I"); SCRIPT_CONTROLFc.cached = 1; } @@ -5795,6 +5797,8 @@ SCRIPT_CONTROL *getSCRIPT_CONTROLFields(JNIEnv *env, jobject lpObject, SCRIPT_CO lpStruct->fNeutralOverride = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fNeutralOverride); lpStruct->fNumericOverride = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fNumericOverride); lpStruct->fLegacyBidiClass = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fLegacyBidiClass); + lpStruct->fMergeNeutralItems = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fMergeNeutralItems); + lpStruct->fUseStandardBidi = (*env)->GetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fUseStandardBidi); lpStruct->fReserved = (*env)->GetIntField(env, lpObject, SCRIPT_CONTROLFc.fReserved); return lpStruct; } @@ -5811,6 +5815,8 @@ void setSCRIPT_CONTROLFields(JNIEnv *env, jobject lpObject, SCRIPT_CONTROL *lpSt (*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fNeutralOverride, (jboolean)lpStruct->fNeutralOverride); (*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fNumericOverride, (jboolean)lpStruct->fNumericOverride); (*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fLegacyBidiClass, (jboolean)lpStruct->fLegacyBidiClass); + (*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fMergeNeutralItems, (jboolean)lpStruct->fMergeNeutralItems); + (*env)->SetBooleanField(env, lpObject, SCRIPT_CONTROLFc.fUseStandardBidi, (jboolean)lpStruct->fUseStandardBidi); (*env)->SetIntField(env, lpObject, SCRIPT_CONTROLFc.fReserved, (jint)lpStruct->fReserved); } #endif diff --git a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SCRIPT_CONTROL.java b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SCRIPT_CONTROL.java index cba4c60633..2b7b0900a6 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SCRIPT_CONTROL.java +++ b/bundles/org.eclipse.swt/Eclipse SWT PI/win32/org/eclipse/swt/internal/win32/SCRIPT_CONTROL.java @@ -23,6 +23,8 @@ public class SCRIPT_CONTROL { public boolean fNeutralOverride; public boolean fNumericOverride; public boolean fLegacyBidiClass; + public boolean fMergeNeutralItems; + public boolean fUseStandardBidi; public int fReserved; public static final int sizeof = OS.SCRIPT_CONTROL_sizeof (); } |