diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
index 88935e9..d4b40fe 100644
--- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
+++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/ExpandItem.java
@@ -73,7 +73,7 @@
  * @see Widget#getStyle
  */
 public ExpandItem (ExpandBar parent, int style) {
-	super (parent, style);
+	super (parent, checkStyle (parent, style));
 	this.parent = parent;
 	createWidget (parent.getItemCount ());
 }
@@ -109,11 +109,22 @@
  * @see Widget#getStyle
  */
 public ExpandItem (ExpandBar parent, int style, int index) {
-	super (parent, style);
+	super (parent, checkStyle (parent, style));
 	this.parent = parent;
 	createWidget (index);
 }
 
+static int checkStyle (ExpandBar parent, int style) {
+	style &= ~SWT.MIRRORED;
+	if ((style & (SWT.LEFT_TO_RIGHT | SWT.RIGHT_TO_LEFT)) == 0) {
+		if (parent != null) {
+			if ((parent.style & SWT.LEFT_TO_RIGHT) != 0) style |= SWT.LEFT_TO_RIGHT;
+			if ((parent.style & SWT.RIGHT_TO_LEFT) != 0) style |= SWT.RIGHT_TO_LEFT;
+		}
+	}
+	return Widget.checkBits (style, SWT.LEFT_TO_RIGHT, SWT.RIGHT_TO_LEFT, 0, 0, 0, 0);
+}
+
 protected void checkSubclass () {
 	if (!isValidSubclass ()) error (SWT.ERROR_INVALID_SUBCLASS);
 }
@@ -572,6 +583,14 @@
 	}
 }
 
+void setOrientation() {
+	super.setOrientation ();
+	if ((style & SWT.RIGHT_TO_LEFT) != 0) {
+		OS.gtk_widget_set_direction (handle, OS.GTK_TEXT_DIR_RTL);
+		OS.gtk_container_forall (handle, display.setDirectionProc, OS.GTK_TEXT_DIR_RTL);	
+	}
+}
+	
 public void setText (String string) {
 	super.setText (string);
 	if (OS.GTK_VERSION >= OS.VERSION (2, 4, 0)) {
