From: Khalid Abu Shawarib Date: Sat, 27 May 2023 13:19:28 +0000 (+0000) Subject: gtk/popover: Flip anchoring direction in RTL X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~1^2~217^2 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=d329b00bda7461f6c4db738f69f00b8aaf27b6e1;p=gtk4.git gtk/popover: Flip anchoring direction in RTL --- diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index bd3bc0c004..5093962aa1 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -483,6 +483,7 @@ create_popup_layout (GtkPopover *popover) GdkPopupLayout *layout; GtkCssStyle *style; GtkBorder shadow_width; + gboolean ltr = gtk_widget_get_direction (GTK_WIDGET (popover)) != GTK_TEXT_DIR_RTL; compute_surface_pointing_to (popover, &rect); @@ -545,13 +546,13 @@ create_popup_layout (GtkPopover *popover) switch (gtk_widget_get_halign (GTK_WIDGET (popover))) { case GTK_ALIGN_START: - parent_anchor = GDK_GRAVITY_NORTH_WEST; - surface_anchor = GDK_GRAVITY_SOUTH_WEST; + parent_anchor = ltr ? GDK_GRAVITY_NORTH_WEST : GDK_GRAVITY_NORTH_EAST; + surface_anchor = ltr ? GDK_GRAVITY_SOUTH_WEST : GDK_GRAVITY_SOUTH_EAST; break; case GTK_ALIGN_END: - parent_anchor = GDK_GRAVITY_NORTH_EAST; - surface_anchor = GDK_GRAVITY_SOUTH_EAST; + parent_anchor = ltr ? GDK_GRAVITY_NORTH_EAST : GDK_GRAVITY_NORTH_WEST; + surface_anchor = ltr ? GDK_GRAVITY_SOUTH_EAST : GDK_GRAVITY_SOUTH_WEST; break; case GTK_ALIGN_FILL: @@ -570,13 +571,13 @@ create_popup_layout (GtkPopover *popover) switch (gtk_widget_get_halign (GTK_WIDGET (popover))) { case GTK_ALIGN_START: - parent_anchor = GDK_GRAVITY_SOUTH_WEST; - surface_anchor = GDK_GRAVITY_NORTH_WEST; + parent_anchor = ltr ? GDK_GRAVITY_SOUTH_WEST : GDK_GRAVITY_SOUTH_EAST; + surface_anchor = ltr ? GDK_GRAVITY_NORTH_WEST : GDK_GRAVITY_NORTH_EAST; break; case GTK_ALIGN_END: - parent_anchor = GDK_GRAVITY_SOUTH_EAST; - surface_anchor = GDK_GRAVITY_NORTH_EAST; + parent_anchor = ltr ? GDK_GRAVITY_SOUTH_EAST : GDK_GRAVITY_SOUTH_WEST; + surface_anchor = ltr ? GDK_GRAVITY_NORTH_EAST : GDK_GRAVITY_NORTH_WEST; break; case GTK_ALIGN_FILL: