[gtk+] GtkLabel: Don't manually iterate over link list



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]