a11y: Fix get_bounds() implementation
authorEmmanuele Bassi <ebassi@gnome.org>
Thu, 2 Feb 2023 14:43:29 +0000 (15:43 +0100)
committerEmmanuele Bassi <ebassi@gnome.org>
Fri, 3 Feb 2023 10:49:17 +0000 (11:49 +0100)
Don't allocate graphene_rect_t, and fix the size retrieval.

gtk/gtkwidget.c

index 4e067f14e7480afabfd9d2f25031f7e218167232..ab75402d8cb92c428d353b1ec0e90a194db07917 100644 (file)
@@ -8494,19 +8494,18 @@ gtk_widget_accessible_get_bounds (GtkAccessible *self,
   GtkWidget *parent;
   GtkWidget *bounds_relative_to;
   double translated_x, translated_y;
-  graphene_rect_t *bounds;
-   
+  graphene_rect_t bounds = GRAPHENE_RECT_INIT_ZERO;
+
   widget = GTK_WIDGET (self);
   if (!gtk_widget_get_realized (widget))
-    return false;
+    return FALSE;
 
   parent = gtk_widget_get_parent (widget);
-
-  if (parent)
+  if (parent != NULL)
     {
       gtk_widget_translate_coordinates (widget, parent, 0., 0., &translated_x, &translated_y);
-      *x = (int)translated_x;
-      *y = (int)translated_y;
+      *x = floorf (translated_x);
+      *y = floorf (translated_y);
       bounds_relative_to = parent;
     }
   else
@@ -8515,14 +8514,18 @@ gtk_widget_accessible_get_bounds (GtkAccessible *self,
       bounds_relative_to = 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);
+  if (!gtk_widget_compute_bounds (widget, bounds_relative_to, &bounds))
+    {
+      *width = 0;
+      *height = 0;
+    }
+  else
+    {
+      *width = ceilf (graphene_rect_get_width (&bounds));
+      *height = ceilf (graphene_rect_get_height (&bounds));
+    }
 
-  return true;
+  return TRUE;
 }
 
 static void