Skip to content

Commit

Permalink
libview: Make EvLinkAccessible implement AtkAction
Browse files Browse the repository at this point in the history
  • Loading branch information
Carlos Garcia Campos committed Jan 20, 2013
1 parent 6c1d1a2 commit 0291193
Showing 1 changed file with 53 additions and 1 deletion.
54 changes: 53 additions & 1 deletion libview/ev-link-accessible.c
Original file line number Diff line number Diff line change
Expand Up @@ -192,9 +192,11 @@ ev_hyperlink_init (EvHyperlink *link)
}

static void ev_link_accessible_hyperlink_impl_iface_init (AtkHyperlinkImplIface *iface);
static void ev_link_accessible_action_interface_init (AtkActionIface *iface);

G_DEFINE_TYPE_WITH_CODE (EvLinkAccessible, ev_link_accessible, ATK_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (ATK_TYPE_HYPERLINK_IMPL, ev_link_accessible_hyperlink_impl_iface_init))
G_IMPLEMENT_INTERFACE (ATK_TYPE_HYPERLINK_IMPL, ev_link_accessible_hyperlink_impl_iface_init)
G_IMPLEMENT_INTERFACE (ATK_TYPE_ACTION, ev_link_accessible_action_interface_init))

static void
ev_link_accessible_finalize (GObject *object)
Expand Down Expand Up @@ -244,6 +246,56 @@ ev_link_accessible_hyperlink_impl_iface_init (AtkHyperlinkImplIface *iface)
iface->get_hyperlink = ev_link_accessible_get_hyperlink;
}

static gboolean
ev_link_accessible_action_do_action (AtkAction *atk_action,
gint i)
{
EvLinkAccessiblePrivate *priv = EV_LINK_ACCESSIBLE (atk_action)->priv;
GtkWidget *widget;

widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (priv->view));
if (widget == NULL)
/* State is defunct */
return FALSE;

if (!ev_link_get_action (priv->link))
return FALSE;

ev_view_handle_link (EV_VIEW (widget), priv->link);

return TRUE;
}

static gint
ev_link_accessible_action_get_n_actions (AtkAction *atk_action)
{
return 1;
}

static const gchar *
ev_link_accessible_action_get_description (AtkAction *atk_action,
gint i)
{
/* TODO */
return NULL;
}

static const gchar *
ev_link_accessible_action_get_name (AtkAction *atk_action,
gint i)
{
return i == 0 ? "activate" : NULL;
}

static void
ev_link_accessible_action_interface_init (AtkActionIface *iface)
{
iface->do_action = ev_link_accessible_action_do_action;
iface->get_n_actions = ev_link_accessible_action_get_n_actions;
iface->get_description = ev_link_accessible_action_get_description;
iface->get_name = ev_link_accessible_action_get_name;
}

EvLinkAccessible *
ev_link_accessible_new (EvViewAccessible *view,
EvLink *link,
Expand Down

0 comments on commit 0291193

Please sign in to comment.