aboutsummaryrefslogtreecommitdiffstats
path: root/lib/ephy-gui.c
diff options
context:
space:
mode:
authorChristian Persch <chpe@cvs.gnome.org>2003-12-20 22:09:21 +0800
committerChristian Persch <chpe@src.gnome.org>2003-12-20 22:09:21 +0800
commitc1563eced7a53f75f6dbddbba78a9245723e3b26 (patch)
tree23966e825f0b282ddb432fb40f6bd19113392f96 /lib/ephy-gui.c
parent2de282d4de16460ed3d812eedabf1bf843b4603a (diff)
downloadgsoc2013-epiphany-c1563eced7a53f75f6dbddbba78a9245723e3b26.tar
gsoc2013-epiphany-c1563eced7a53f75f6dbddbba78a9245723e3b26.tar.gz
gsoc2013-epiphany-c1563eced7a53f75f6dbddbba78a9245723e3b26.tar.bz2
gsoc2013-epiphany-c1563eced7a53f75f6dbddbba78a9245723e3b26.tar.lz
gsoc2013-epiphany-c1563eced7a53f75f6dbddbba78a9245723e3b26.tar.xz
gsoc2013-epiphany-c1563eced7a53f75f6dbddbba78a9245723e3b26.tar.zst
gsoc2013-epiphany-c1563eced7a53f75f6dbddbba78a9245723e3b26.zip
Fix popup coordinates in RTL mode.
2003-12-20 Christian Persch <chpe@cvs.gnome.org> * lib/ephy-gui.c: (ephy_gui_menu_position_under_widget): Fix popup coordinates in RTL mode.
Diffstat (limited to 'lib/ephy-gui.c')
-rw-r--r--lib/ephy-gui.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/lib/ephy-gui.c b/lib/ephy-gui.c
index 293da7c68..de7f7ba86 100644
--- a/lib/ephy-gui.c
+++ b/lib/ephy-gui.c
@@ -17,7 +17,7 @@
*/
#ifdef HAVE_CONFIG_H
-#include <config.h>
+#include "config.h"
#endif
#include "ephy-gui.h"
@@ -47,16 +47,28 @@ ephy_gui_menu_position_under_widget (GtkMenu *menu,
GtkWidget *w = GTK_WIDGET (user_data);
gint screen_width, screen_height;
GtkRequisition requisition;
+ gboolean rtl;
- gdk_window_get_origin (w->window, x, y);
- *x += w->allocation.x;
- *y += w->allocation.y + w->allocation.height;
+ rtl = (gtk_widget_get_direction (w) == GTK_TEXT_DIR_RTL);
+ gdk_window_get_origin (w->window, x, y);
gtk_widget_size_request (GTK_WIDGET (menu), &requisition);
+ /* FIXME multihead */
screen_width = gdk_screen_width ();
screen_height = gdk_screen_height ();
+ if (rtl)
+ {
+ *x += w->allocation.x + w->allocation.width - requisition.width;
+ }
+ else
+ {
+ *x += w->allocation.x;
+ }
+
+ *y += w->allocation.y + w->allocation.height;
+
*x = CLAMP (*x, 0, MAX (0, screen_width - requisition.width));
*y = CLAMP (*y, 0, MAX (0, screen_height - requisition.height));
}