Fixed bug 467328: [BiDi] Add contextual base text direction support for BidiUtils.applyTextDirection(control, textDirection) API
Signed-off-by: Moshe WAJNBERG <wajnberg@il.ibm.com>
diff --git a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/BidiUtils.java b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/BidiUtils.java
index 38fa739..0cdd02f 100644
--- a/bundles/org.eclipse.jface/src/org/eclipse/jface/util/BidiUtils.java
+++ b/bundles/org.eclipse.jface/src/org/eclipse/jface/util/BidiUtils.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2012, 2014 IBM Corporation and others.
+ * Copyright (c) 2012, 2015 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -474,7 +474,8 @@
}
/**
- * Applies a Base Text Direction to the given control (and its descendants, if it's a {@link Composite}).
+ * Applies a Base Text Direction to the given control (and its descendants,
+ * if it's a {@link Composite}).
*
* <p>
* Possible values for <code>textDirection</code> are:
@@ -485,53 +486,53 @@
* <li>{@link BidiUtils#BTD_DEFAULT}</li>
* </ul>
* <p>
- * The 3 values {@link #LEFT_TO_RIGHT}, {@link #RIGHT_TO_LEFT}, and {@link BidiUtils#AUTO} are
- * usable whether {@link #getBidiSupport() bidi support} is enabled or disabled.
+ * The 3 values {@link #LEFT_TO_RIGHT}, {@link #RIGHT_TO_LEFT}, and
+ * {@link BidiUtils#AUTO} are usable whether {@link #getBidiSupport() bidi
+ * support} is enabled or disabled.
* <p>
- * {@link BidiUtils#AUTO} currently only works for {@link Text}, {@link StyledText}, and {@link Combo} controls.
- * <p>
- * The remaining value {@link BidiUtils#BTD_DEFAULT} only has an effect if bidi support is enabled.
+ * The remaining value {@link BidiUtils#BTD_DEFAULT} only has an effect if
+ * bidi support is enabled.
*
* <p>
- * <strong>Note:</strong>
- * If this method is called on a control, then no <code>applyBidiProcessing</code> method must be called on the same control.
+ * <strong>Note:</strong> If this method is called on a control, then no
+ * <code>applyBidiProcessing</code> method must be called on the same
+ * control.
* <p>
* <strong>Note:</strong>
- * {@link org.eclipse.swt.widgets.Control#setTextDirection(int)}
- * is currently only implemented on Windows, so the direction won't be inherited by descendants on GTK and Cocoa.
+ * {@link org.eclipse.swt.widgets.Control#setTextDirection(int)} is
+ * currently only implemented on Windows, so the direction won't be
+ * inherited by descendants on GTK and Cocoa.
* <p>
- * <strong>Note:</strong>
- * {@link BidiUtils#BTD_DEFAULT} is currently not inherited by descendants of the control if
- * {@link BidiUtils#getTextDirection()} is {@link BidiUtils#AUTO}.
*
- * @param control the control
- * @param textDirection the text direction
+ * @param control
+ * the control
+ * @param textDirection
+ * the text direction
*/
public static void applyTextDirection(Control control, String textDirection) {
int textDir = 0;
- boolean auto = false;
if (LEFT_TO_RIGHT.equals(textDirection)) {
textDir = SWT.LEFT_TO_RIGHT;
} else if (RIGHT_TO_LEFT.equals(textDirection)) {
textDir = SWT.RIGHT_TO_LEFT;
} else if (AUTO.equals(textDirection)) {
- auto = true;
+ textDir = SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT;
} else if (getBidiSupport() && BTD_DEFAULT.equals(textDirection)) {
if (LEFT_TO_RIGHT.equals(getTextDirection())) {
textDir = SWT.LEFT_TO_RIGHT;
} else if (RIGHT_TO_LEFT.equals(getTextDirection())) {
textDir = SWT.RIGHT_TO_LEFT;
} else if (AUTO.equals(getTextDirection())) {
- auto = true;
+ textDir = SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT;
}
}
- if (control instanceof Text && (auto || textDir != 0)) {
+ if (control instanceof Text && textDir != 0) {
applyBidiProcessing((Text) control, textDirection);
- } else if (control instanceof StyledText && (auto || textDir != 0)) {
+ } else if (control instanceof StyledText && textDir != 0) {
applyBidiProcessing((StyledText) control, textDirection);
- } else if (control instanceof Combo && (auto || textDir != 0)) {
+ } else if (control instanceof Combo && textDir != 0) {
applyBidiProcessing((Combo) control, textDirection);
} else if (textDir != 0) {
control.setTextDirection(textDir);