diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-26 02:20:31 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-06-26 02:20:31 +0000 |
commit | 01c25692bcd51d81be1b5e8b215c25be5b3b1933 (patch) | |
tree | 0610f913264f716b8935dd7a01e424a83a51c039 /chrome/browser/gtk/menu_gtk.cc | |
parent | bc840fa656285f46874e17adef64a140dbd056e9 (diff) | |
download | chromium_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.cc | 10 |
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) |