diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index 55d2c26382..65936708d0 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -377,6 +377,7 @@ update_popover_layout (GtkPopover *popover, GdkRectangle final_rect; gboolean flipped_x; gboolean flipped_y; + gboolean attachment_point_changed; GdkPopup *popup = GDK_POPUP (priv->surface); GtkPositionType position; @@ -401,6 +402,9 @@ update_popover_layout (GtkPopover *popover, did_flip_vertically (gdk_popup_layout_get_surface_anchor (layout), gdk_popup_get_surface_anchor (popup)); + attachment_point_changed = final_rect.x != priv->final_rect.x || + final_rect.y != priv->final_rect.y; + priv->final_rect = final_rect; position = priv->final_position; @@ -426,7 +430,8 @@ update_popover_layout (GtkPopover *popover, if (priv->final_position != position || priv->final_rect.width != width || - priv->final_rect.height != height) + priv->final_rect.height != height || + attachment_point_changed) { gtk_widget_queue_allocate (GTK_WIDGET (popover)); g_clear_pointer (&priv->arrow_render_node, gsk_render_node_unref);