1 /* ATK - Accessibility Toolkit
2 * Copyright 2001 Sun Microsystems Inc.
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2 of the License, or (at your option) any later version.
9 * This library is distributed in the hope that it will be useful,
10 * but WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the
16 * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
17 * Boston, MA 02111-1307, USA.
21 #include "atkcomponent.h"
23 static AtkObject* atk_component_real_get_accessible_at_point (AtkComponent *component,
28 atk_component_get_type ()
30 static GType type = 0;
33 static const GTypeInfo tinfo =
35 sizeof (AtkComponentIface),
41 type = g_type_register_static (G_TYPE_INTERFACE, "AtkComponent", &tinfo, 0);
51 atk_component_add_focus_handler (AtkComponent *component,
52 AtkFocusHandler handler)
54 AtkComponentIface *iface = NULL;
55 g_return_val_if_fail (component != NULL, 0);
56 g_return_val_if_fail (ATK_IS_COMPONENT (component), 0);
58 iface = ATK_COMPONENT_GET_IFACE (component);
60 if (iface->add_focus_handler)
61 return (iface->add_focus_handler) (component, handler);
70 atk_component_remove_focus_handler (AtkComponent *component,
73 AtkComponentIface *iface = NULL;
74 g_return_if_fail (component != NULL);
75 g_return_if_fail (ATK_IS_COMPONENT (component));
77 iface = ATK_COMPONENT_GET_IFACE (component);
79 if (iface->remove_focus_handler)
80 (iface->remove_focus_handler) (component, handler_id);
84 atk_component_contains (AtkComponent *component,
88 AtkComponentIface *iface = NULL;
89 g_return_val_if_fail (component != NULL, FALSE);
90 g_return_val_if_fail (ATK_IS_COMPONENT (component), FALSE);
92 iface = ATK_COMPONENT_GET_IFACE (component);
95 return (iface->contains) (component, x, y);
101 atk_component_get_accessible_at_point (AtkComponent *component,
105 AtkComponentIface *iface = NULL;
106 g_return_val_if_fail (component != NULL, NULL);
107 g_return_val_if_fail (ATK_IS_COMPONENT (component), NULL);
109 iface = ATK_COMPONENT_GET_IFACE (component);
111 if (iface->get_accessible_at_point)
112 return (iface->get_accessible_at_point) (component, x, y);
116 * if this method is not overridden use the default implementation.
118 return atk_component_real_get_accessible_at_point (component, x, y);
123 atk_component_get_extents (AtkComponent *component,
129 AtkComponentIface *iface = NULL;
130 g_return_if_fail (component != NULL);
131 g_return_if_fail (ATK_IS_COMPONENT (component));
133 iface = ATK_COMPONENT_GET_IFACE (component);
135 if (iface->get_extents)
136 (iface->get_extents) (component, x, y, width, height);
140 atk_component_get_position (AtkComponent *component,
144 AtkComponentIface *iface = NULL;
145 g_return_if_fail (component != NULL);
146 g_return_if_fail (ATK_IS_COMPONENT (component));
148 iface = ATK_COMPONENT_GET_IFACE (component);
150 if (iface->get_position)
151 (iface->get_position) (component, x, y);
155 atk_component_get_position_on_screen (AtkComponent *component,
159 AtkComponentIface *iface = NULL;
160 g_return_if_fail (component != NULL);
161 g_return_if_fail (ATK_IS_COMPONENT (component));
163 iface = ATK_COMPONENT_GET_IFACE (component);
165 if (iface->get_position_on_screen)
166 return (iface->get_position_on_screen) (component, x, y);
170 atk_component_get_size (AtkComponent *component,
174 AtkComponentIface *iface = NULL;
175 g_return_if_fail (component != NULL);
176 g_return_if_fail (ATK_IS_COMPONENT (component));
178 iface = ATK_COMPONENT_GET_IFACE (component);
181 (iface->get_size) (component, x, y);
185 atk_component_grab_focus (AtkComponent *component)
187 AtkComponentIface *iface = NULL;
188 g_return_if_fail (component != NULL);
189 g_return_if_fail (ATK_IS_COMPONENT (component));
191 iface = ATK_COMPONENT_GET_IFACE (component);
193 if (iface->grab_focus)
194 (iface->grab_focus) (component);
198 atk_component_set_extents (AtkComponent *component,
204 AtkComponentIface *iface = NULL;
205 g_return_if_fail (component != NULL);
206 g_return_if_fail (ATK_IS_COMPONENT (component));
208 iface = ATK_COMPONENT_GET_IFACE (component);
210 if (iface->set_extents)
211 (iface->set_extents) (component, x, y, width, height);
215 atk_component_set_position (AtkComponent *component,
219 AtkComponentIface *iface = NULL;
220 g_return_if_fail (component != NULL);
221 g_return_if_fail (ATK_IS_COMPONENT (component));
223 iface = ATK_COMPONENT_GET_IFACE (component);
225 if (iface->set_position)
226 (iface->set_position) (component, x, y);
230 atk_component_set_size (AtkComponent *component,
234 AtkComponentIface *iface = NULL;
235 g_return_if_fail (component != NULL);
236 g_return_if_fail (ATK_IS_COMPONENT (component));
238 iface = ATK_COMPONENT_GET_IFACE (component);
241 (iface->set_size) (component, x, y);
245 atk_component_real_get_accessible_at_point (AtkComponent *component,
251 count = atk_object_get_n_accessible_children (ATK_OBJECT (component));
253 g_return_val_if_fail (count != 0, NULL);
255 for (i = 0; i < count; i++)
259 obj = atk_object_ref_accessible_child (ATK_OBJECT (component), i);
263 if (atk_component_contains (ATK_COMPONENT (obj), x, y))
265 g_object_unref (obj);
270 g_object_unref (obj);