a11y: Use existing clutter_actor_get_paint_visibility
Cally was initially created with Clutter 0.6 in mind. To check recursively the visibility of a actor a custom method was added. Since 0.8.4 clutter_actor_get_pain_visibility provides the same functionality. Also removed a dummy method. Lets add methods that provide a real functionality.
This commit is contained in:
parent
7f8838d7cc
commit
468f121f59
@ -153,8 +153,6 @@ static AtkObject* cally_actor_ref_child (AtkObject *obj,
|
||||
gint i);
|
||||
static AtkAttributeSet * cally_actor_get_attributes (AtkObject *obj);
|
||||
|
||||
static gboolean _cally_actor_all_parents_visible (ClutterActor *actor);
|
||||
|
||||
/* ClutterContainer */
|
||||
static gint cally_actor_add_actor (ClutterActor *container,
|
||||
ClutterActor *actor,
|
||||
@ -185,7 +183,6 @@ static void cally_actor_remove_focus_handler (AtkComponent *component,
|
||||
guint handler_id);
|
||||
static void cally_actor_focus_event (AtkObject *obj,
|
||||
gboolean focus_in);
|
||||
static gboolean _is_actor_on_screen (ClutterActor *actor);
|
||||
|
||||
/* AtkAction.h */
|
||||
static void cally_actor_action_interface_init (AtkActionIface *iface);
|
||||
@ -543,9 +540,11 @@ cally_actor_ref_state_set (AtkObject *obj)
|
||||
{
|
||||
atk_state_set_add_state (state_set, ATK_STATE_VISIBLE);
|
||||
|
||||
if (_is_actor_on_screen (actor) &&
|
||||
_cally_actor_all_parents_visible (actor))
|
||||
/* It would be good to also check if the actor is on screen,
|
||||
like the old and removed clutter_actor_is_on_stage*/
|
||||
if (clutter_actor_get_paint_visibility (actor))
|
||||
atk_state_set_add_state (state_set, ATK_STATE_SHOWING);
|
||||
|
||||
}
|
||||
|
||||
/* See focus section on implementation notes */
|
||||
@ -888,18 +887,6 @@ cally_actor_remove_focus_handler (AtkComponent *component,
|
||||
g_signal_handler_disconnect (component, handler_id);
|
||||
}
|
||||
|
||||
/* This method should check if the actor is currently on screen */
|
||||
static gboolean
|
||||
_is_actor_on_screen (ClutterActor *actor)
|
||||
{
|
||||
/* FIXME: FILL ME!!
|
||||
* You could get some ideas from clutter_actor_is_on_stage, a private clutter
|
||||
* function (note: it doesn't exists in the last versions of clutter)
|
||||
* A occlusion check could be a good idea too
|
||||
*/
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/*
|
||||
*
|
||||
@ -1138,41 +1125,6 @@ cally_actor_action_get_keybinding (AtkAction *action,
|
||||
|
||||
/* Misc functions */
|
||||
|
||||
/*
|
||||
* Checks if the parent actor, and his parent, etc is all visible
|
||||
* Used to check the showing property
|
||||
*
|
||||
* FIXME: the same functionality is implemented on clutter since version 0.8.4
|
||||
* by clutter_actor_get_paint_visibility, so we should change this function
|
||||
* if a clutter version update is made
|
||||
*/
|
||||
static gboolean
|
||||
_cally_actor_all_parents_visible (ClutterActor *actor)
|
||||
{
|
||||
ClutterActor *iter_parent = NULL;
|
||||
gboolean result = TRUE;
|
||||
ClutterActor *stage = NULL;
|
||||
|
||||
stage = clutter_actor_get_stage (actor);
|
||||
|
||||
for (iter_parent = clutter_actor_get_parent(actor); iter_parent;
|
||||
iter_parent = clutter_actor_get_parent(iter_parent))
|
||||
{
|
||||
if (!CLUTTER_ACTOR_IS_VISIBLE (iter_parent))
|
||||
{
|
||||
/* stage parent */
|
||||
if (iter_parent != stage)
|
||||
result = FALSE;
|
||||
else
|
||||
result = TRUE;
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/*
|
||||
* This function is a signal handler for key_focus_in and
|
||||
* key_focus_out signal which gets emitted on a ClutterActor
|
||||
|
Loading…
Reference in New Issue
Block a user