From: Lukáš Tyrychtr Date: Thu, 5 Jan 2023 15:06:24 +0000 (+0100) Subject: Take the widget transform into account when computing the bounds for a11y X-Git-Tag: archive/raspbian/4.12.3+ds-1+rpi1~1^2^2^2~22^2~8^2~9^2~3 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=01549e3c91aa823f077cf11a026675577153c01e;p=gtk4.git Take the widget transform into account when computing the bounds for a11y --- diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c index 606f2d352f..4e067f14e7 100644 --- a/gtk/gtkwidget.c +++ b/gtk/gtkwidget.c @@ -8492,7 +8492,9 @@ gtk_widget_accessible_get_bounds (GtkAccessible *self, { GtkWidget *widget; GtkWidget *parent; + GtkWidget *bounds_relative_to; double translated_x, translated_y; + graphene_rect_t *bounds; widget = GTK_WIDGET (self); if (!gtk_widget_get_realized (widget)) @@ -8505,12 +8507,20 @@ gtk_widget_accessible_get_bounds (GtkAccessible *self, gtk_widget_translate_coordinates (widget, parent, 0., 0., &translated_x, &translated_y); *x = (int)translated_x; *y = (int)translated_y; + bounds_relative_to = parent; } else - *x = *y = 0; + { + *x = *y = 0; + bounds_relative_to = widget; + } - *width = gtk_widget_get_width (widget); - *height = gtk_widget_get_height (widget); + bounds = graphene_rect_alloc (); + if (!gtk_widget_compute_bounds (widget, bounds_relative_to, bounds)) + *width, *height = 0; + *width = (int)graphene_rect_get_width (bounds); + *height = (int)graphene_rect_get_height (bounds); + graphene_rect_free (bounds); return true; }