static DBusMessage * impl_GetAccessibleAtPoint (DBusConnection * bus, DBusMessage * message, void *user_data) { AtkComponent *component = (AtkComponent *) user_data; dbus_int32_t x, y; dbus_uint32_t coord_type; DBusMessage *reply; DBusError error; AtkObject *child; g_return_val_if_fail (ATK_IS_COMPONENT (user_data), droute_not_yet_handled_error (message)); dbus_error_init (&error); if (!dbus_message_get_args (message, &error, DBUS_TYPE_INT32, &x, DBUS_TYPE_INT32, &y, DBUS_TYPE_UINT32, &coord_type, DBUS_TYPE_INVALID)) { return droute_invalid_arguments_error (message); } child = atk_component_ref_accessible_at_point (component, x, y, (AtkCoordType) coord_type); reply = spi_object_return_reference (message, child); g_object_unref (child); return reply; }
AccessibilityUIElement AccessibilityUIElement::elementAtPoint(int x, int y) { if (!m_element) return 0; return AccessibilityUIElement(atk_component_ref_accessible_at_point(ATK_COMPONENT(m_element), x, y, ATK_XY_WINDOW)); }
static VALUE rg_ref_accessible_at_point(VALUE self, VALUE x, VALUE y, VALUE coord_type) { return GOBJ2RVAL(atk_component_ref_accessible_at_point( _SELF(self), NUM2INT(x), NUM2INT(y), RVAL2GENUM(coord_type, ATK_TYPE_COORD_TYPE))); }
PassRefPtr<AccessibilityUIElement> AccessibilityUIElement::elementAtPoint(int x, int y) { if (!ATK_IS_COMPONENT(m_element.get())) return nullptr; GRefPtr<AtkObject> objectAtPoint = adoptGRef(atk_component_ref_accessible_at_point(ATK_COMPONENT(m_element.get()), x, y, ATK_XY_WINDOW)); return AccessibilityUIElement::create(objectAtPoint ? objectAtPoint.get() : m_element.get()); }