diff options
author | Felipe Heidrich <fheidric> | 2008-05-05 16:40:17 +0000 |
---|---|---|
committer | Felipe Heidrich <fheidric> | 2008-05-05 16:40:17 +0000 |
commit | a21ddb7b50dd9a7035cb8683a47b8959494422f7 (patch) | |
tree | a37cedc8a05c90eb2cd48d5935db1463c0eeb026 /bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java | |
parent | 3eb1df8c2ccd2e698959790af45070ca40160db2 (diff) | |
download | eclipse.platform.swt-a21ddb7b50dd9a7035cb8683a47b8959494422f7.tar.gz eclipse.platform.swt-a21ddb7b50dd9a7035cb8683a47b8959494422f7.tar.xz eclipse.platform.swt-a21ddb7b50dd9a7035cb8683a47b8959494422f7.zip |
Bug 222582 - [Perspectives] BIDI3.4:HCG Wrong caption alignment in Customize Perspecitve dialog with Hebrew translation
Diffstat (limited to 'bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java')
-rw-r--r-- | bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java | 39 |
1 files changed, 15 insertions, 24 deletions
diff --git a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java index 36f6434258..0c3262f6ad 100644 --- a/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java +++ b/bundles/org.eclipse.swt/Eclipse SWT/gtk/org/eclipse/swt/widgets/Label.java @@ -205,24 +205,7 @@ void createHandle (int index) { OS.gtk_label_set_line_wrap_mode (labelHandle, OS.PANGO_WRAP_WORD_CHAR); } } - if ((style & SWT.LEFT) != 0) { - OS.gtk_misc_set_alignment (labelHandle, 0.0f, 0.0f); - OS.gtk_label_set_justify (labelHandle, OS.GTK_JUSTIFY_LEFT); - OS.gtk_misc_set_alignment (imageHandle, 0.0f, 0.5f); - return; - } - if ((style & SWT.CENTER) != 0) { - OS.gtk_misc_set_alignment (labelHandle, 0.5f, 0.0f); - OS.gtk_label_set_justify (labelHandle, OS.GTK_JUSTIFY_CENTER); - OS.gtk_misc_set_alignment (imageHandle, 0.5f, 0.5f); - return; - } - if ((style & SWT.RIGHT) != 0) { - OS.gtk_misc_set_alignment (labelHandle, 1.0f, 0.0f); - OS.gtk_label_set_justify (labelHandle, OS.GTK_JUSTIFY_RIGHT); - OS.gtk_misc_set_alignment (imageHandle, 1.0f, 0.5f); - return; - } + setAlignment (); } void createWidget (int index) { @@ -392,7 +375,20 @@ public void setAlignment (int alignment) { if ((alignment & (SWT.LEFT | SWT.RIGHT | SWT.CENTER)) == 0) return; style &= ~(SWT.LEFT | SWT.RIGHT | SWT.CENTER); style |= alignment & (SWT.LEFT | SWT.RIGHT | SWT.CENTER); + setAlignment (); +} + +void setAlignment () { boolean isRTL = (style & SWT.RIGHT_TO_LEFT) != 0; + if (text != null && text.length () != 0) { + int /*long*/ layout = OS.gtk_label_get_layout (labelHandle); + int /*long*/ linePtr = OS.pango_layout_get_line (layout, 0); + PangoLayoutLine line = new PangoLayoutLine (); + OS.memmove (line, linePtr, PangoLayoutLine.sizeof); + if (line.resolved_dir == OS.PANGO_DIRECTION_RTL) { + isRTL = !isRTL; + } + } if ((style & SWT.LEFT) != 0) { OS.gtk_misc_set_alignment (labelHandle, 0.0f, 0.0f); OS.gtk_label_set_justify (labelHandle, isRTL ? OS.GTK_JUSTIFY_RIGHT : OS.GTK_JUSTIFY_LEFT); @@ -485,12 +481,6 @@ void setOrientation () { if ((style & SWT.RIGHT_TO_LEFT) != 0) { if (labelHandle != 0) OS.gtk_widget_set_direction (labelHandle, OS.GTK_TEXT_DIR_RTL); if (imageHandle != 0) OS.gtk_widget_set_direction (imageHandle, OS.GTK_TEXT_DIR_RTL); - if ((style & SWT.LEAD) != 0) { - if (labelHandle != 0) OS.gtk_label_set_justify (labelHandle, OS.GTK_JUSTIFY_RIGHT); - } - if ((style & SWT.TRAIL) != 0) { - if (labelHandle != 0) OS.gtk_label_set_justify (labelHandle, OS.GTK_JUSTIFY_LEFT); - } } } @@ -565,6 +555,7 @@ public void setText (String string) { OS.gtk_label_set_text_with_mnemonic (labelHandle, buffer); OS.gtk_widget_hide (imageHandle); OS.gtk_widget_show (labelHandle); + setAlignment (); } void showWidget () { |