diff options
author | Timm Bäder <mail@baedert.org> | 2016-04-24 10:32:55 +0200 |
---|---|---|
committer | Matthias Clasen <mclasen@redhat.com> | 2016-05-05 15:03:58 -0400 |
commit | db17324d825ed1a762f6ab2675ad287b994119b6 (patch) | |
tree | 464d97784bc127b9d5c7f5da17f50ef2b3db7f97 | |
parent | d505df90b09cd67c2cc3cc4b019e754bb1683723 (diff) | |
download | gtk+-db17324d825ed1a762f6ab2675ad287b994119b6.tar.gz |
GtkLabel: Don't manually iterate over link list
There are various functions to access links based on their index for
a11y. We can spare quite a few lines of code by just using
g_list_nth_data instead of iterating over the list ourselves.
https://bugzilla.gnome.org/show_bug.cgi?id=765496
-rw-r--r-- | gtk/gtklabel.c | 51 |
1 files changed, 16 insertions, 35 deletions
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index a51d71f451..caf031c46d 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -7048,19 +7048,13 @@ _gtk_label_get_link_uri (GtkLabel *label, gint idx) { GtkLabelPrivate *priv = label->priv; - gint i; - GList *l; - GtkLabelLink *link; if (priv->select_info) - for (l = priv->select_info->links, i = 0; l; l = l->next, i++) - { - if (i == idx) - { - link = l->data; - return link->uri; - } - } + { + GtkLabelLink *link = g_list_nth_data (priv->select_info->links, idx); + if (link) + return link->uri; + } return NULL; } @@ -7113,24 +7107,18 @@ _gtk_label_get_link_at (GtkLabel *label, } void -_gtk_label_activate_link (GtkLabel *label, +_gtk_label_activate_link (GtkLabel *label, gint idx) { GtkLabelPrivate *priv = label->priv; - gint i; - GList *l; - GtkLabelLink *link; if (priv->select_info) - for (l = priv->select_info->links, i = 0; l; l = l->next, i++) - { - if (i == idx) - { - link = l->data; - emit_activate_link (label, link); - return; - } - } + { + GtkLabelLink *link = g_list_nth_data (priv->select_info->links, idx); + + if (link) + emit_activate_link (label, link); + } } gboolean @@ -7138,19 +7126,12 @@ _gtk_label_get_link_visited (GtkLabel *label, gint idx) { GtkLabelPrivate *priv = label->priv; - gint i; - GList *l; - GtkLabelLink *link; if (priv->select_info) - for (l = priv->select_info->links, i = 0; l; l = l->next, i++) - { - if (i == idx) - { - link = l->data; - return link->visited; - } - } + { + GtkLabelLink *link = g_list_nth_data (priv->select_info->links, idx); + return link ? link->visited : FALSE; + } return FALSE; } |