[gtk+] GtkLabel: Don't manually iterate over link list
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk+] GtkLabel: Don't manually iterate over link list
- Date: Tue, 26 Apr 2016 00:38:09 +0000 (UTC)
commit be5a105f2e8529bb56e193daaceac2aa0a9b8a8f
Author: Timm Bäder <mail baedert org>
Date: Sun Apr 24 10:32:55 2016 +0200
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
gtk/gtklabel.c | 51 ++++++++++++++++-----------------------------------
1 files changed, 16 insertions(+), 35 deletions(-)
---
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index a51d71f..caf031c 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;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]