summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/menu_gtk.cc
diff options
context:
space:
mode:
authorestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-26 02:20:31 +0000
committerestade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2009-06-26 02:20:31 +0000
commit01c25692bcd51d81be1b5e8b215c25be5b3b1933 (patch)
tree0610f913264f716b8935dd7a01e424a83a51c039 /chrome/browser/gtk/menu_gtk.cc
parentbc840fa656285f46874e17adef64a140dbd056e9 (diff)
downloadchromium_src-01c25692bcd51d81be1b5e8b215c25be5b3b1933.zip
chromium_src-01c25692bcd51d81be1b5e8b215c25be5b3b1933.tar.gz
chromium_src-01c25692bcd51d81be1b5e8b215c25be5b3b1933.tar.bz2
More BIDI support:
- mirror nine boxes - mirror menu positioning - mirror download item show/hide logic http://crbug.com/15406 is relevant, although I'm not sure this 100% fixes it. TEST=use download shelf in Hebrew chrome. Things should be mirrored. Use it in English and nothing should be borked. Review URL: http://codereview.chromium.org/147176 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@19333 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/menu_gtk.cc')
-rw-r--r--chrome/browser/gtk/menu_gtk.cc10
1 files changed, 6 insertions, 4 deletions
diff --git a/chrome/browser/gtk/menu_gtk.cc b/chrome/browser/gtk/menu_gtk.cc
index 6cecfcb..b3775df 100644
--- a/chrome/browser/gtk/menu_gtk.cc
+++ b/chrome/browser/gtk/menu_gtk.cc
@@ -269,10 +269,12 @@ void MenuGtk::MenuPositionFunc(GtkMenu* menu,
}
*y += widget->allocation.height;
- // g_object_get_data() returns NULL if no such object is found. |left_align|
- // acts as a boolean, but we can't actually cast it to bool because gcc
- // complains about losing precision.
- if (!g_object_get_data(G_OBJECT(widget), "left-align-popup"))
+ bool start_align =
+ !!g_object_get_data(G_OBJECT(widget), "left-align-popup");
+ if (gtk_widget_get_direction(GTK_WIDGET(menu)) == GTK_TEXT_DIR_RTL)
+ start_align = !start_align;
+
+ if (!start_align)
*x += widget->allocation.width - menu_req.width;
if (*y + menu_req.height >= screen_rect.height)