summaryrefslogtreecommitdiff
path: root/gtk/gtkpopover.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2014-08-21 11:57:19 -0400
committerMatthias Clasen <mclasen@redhat.com>2014-08-21 11:59:44 -0400
commit7645d201d408964f8ade769e59517e6a98a02364 (patch)
tree7715798eb5751ab906df654b1e75b3a4c6140670 /gtk/gtkpopover.c
parent09286cf96876a61f42dcef98385aeb277b2db7d2 (diff)
downloadgtk+-7645d201d408964f8ade769e59517e6a98a02364.tar.gz
GtkPopover: Fix rtl positioning
There was some confusion between unflipped and flipped positions. Both final_position and current_position are meant to be unflipped, and get_effective_position() needs to be applied to them to get a flipped position. _gtk_window_set_popover_position() also expects an unflipped position. https://bugzilla.gnome.org/show_bug.cgi?id=735014
Diffstat (limited to 'gtk/gtkpopover.c')
-rw-r--r--gtk/gtkpopover.c11
1 files changed, 6 insertions, 5 deletions
diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c
index 0acb1337b9..bdb8c6aaf0 100644
--- a/gtk/gtkpopover.c
+++ b/gtk/gtkpopover.c
@@ -771,7 +771,7 @@ gtk_popover_update_position (GtkPopover *popover)
GtkRequisition req;
GtkPositionType pos;
gint overshoot[4];
- gint i;
+ gint i, j;
gint best;
if (!priv->window)
@@ -791,11 +791,11 @@ gtk_popover_update_position (GtkPopover *popover)
if (overshoot[pos] <= 0)
{
- priv->final_position = pos;
+ priv->final_position = priv->preferred_position;
}
else if (overshoot[opposite_position (pos)] <= 0)
{
- priv->final_position = opposite_position (pos);
+ priv->final_position = opposite_position (priv->preferred_position);
}
else
{
@@ -803,10 +803,11 @@ gtk_popover_update_position (GtkPopover *popover)
pos = 0;
for (i = 0; i < 4; i++)
{
- if (overshoot[i] < best)
+ j = get_effective_position (popover, i);
+ if (overshoot[j] < best)
{
pos = i;
- best = overshoot[i];
+ best = overshoot[j];
}
}
priv->final_position = pos;