switch (priv->position)
{
case GTK_POS_LEFT:
- parent_anchor = GDK_GRAVITY_WEST;
- surface_anchor = GDK_GRAVITY_EAST;
+ switch (gtk_widget_get_valign (GTK_WIDGET (popover)))
+ {
+ case GTK_ALIGN_START:
+ parent_anchor = GDK_GRAVITY_NORTH_WEST;
+ surface_anchor = GDK_GRAVITY_NORTH_EAST;
+ break;
+
+ case GTK_ALIGN_END:
+ parent_anchor = GDK_GRAVITY_SOUTH_WEST;
+ surface_anchor = GDK_GRAVITY_SOUTH_EAST;
+ break;
+
+ case GTK_ALIGN_FILL:
+ case GTK_ALIGN_CENTER:
+ case GTK_ALIGN_BASELINE:
+ default:
+ parent_anchor = GDK_GRAVITY_WEST;
+ surface_anchor = GDK_GRAVITY_EAST;
+ break;
+ }
anchor_hints = GDK_ANCHOR_FLIP_X | GDK_ANCHOR_SLIDE_Y;
break;
case GTK_POS_RIGHT:
- parent_anchor = GDK_GRAVITY_EAST;
- surface_anchor = GDK_GRAVITY_WEST;
+ switch (gtk_widget_get_valign (GTK_WIDGET (popover)))
+ {
+ case GTK_ALIGN_START:
+ parent_anchor = GDK_GRAVITY_NORTH_EAST;
+ surface_anchor = GDK_GRAVITY_NORTH_WEST;
+ break;
+
+ case GTK_ALIGN_END:
+ parent_anchor = GDK_GRAVITY_SOUTH_EAST;
+ surface_anchor = GDK_GRAVITY_SOUTH_WEST;
+ break;
+
+ case GTK_ALIGN_FILL:
+ case GTK_ALIGN_CENTER:
+ case GTK_ALIGN_BASELINE:
+ default:
+ parent_anchor = GDK_GRAVITY_EAST;
+ surface_anchor = GDK_GRAVITY_WEST;
+ break;
+ }
anchor_hints = GDK_ANCHOR_FLIP_X | GDK_ANCHOR_SLIDE_Y;
break;