[Xfce4-commits] <xfce4-weather-plugin:master> Icon theme: Sort icon theme array using icon theme path names.

Harald Judt noreply at xfce.org
Thu Mar 28 23:10:01 CET 2013


Updating branch refs/heads/master
         to 034541e4cf6981c61a453c4054edff5eec42d3d1 (commit)
       from 9b9db55aebaefed83c41e18d6916e613b8d7d76c (commit)

commit 034541e4cf6981c61a453c4054edff5eec42d3d1
Author: Harald Judt <h.judt at gmx.at>
Date:   Thu Mar 28 23:07:48 2013 +0100

    Icon theme: Sort icon theme array using icon theme path names.
    
    Let's still list the themes in the user dir first, then those in the
    system dir.

 panel-plugin/weather-icon.c |   25 +++++++++++++++++++++++++
 1 files changed, 25 insertions(+), 0 deletions(-)

diff --git a/panel-plugin/weather-icon.c b/panel-plugin/weather-icon.c
index 6305782..b3c77e1 100644
--- a/panel-plugin/weather-icon.c
+++ b/panel-plugin/weather-icon.c
@@ -305,6 +305,30 @@ icon_theme_load(const gchar *dir)
 }
 
 
+/*
+ * Compare two icon_theme structs using their path names, returning
+ * the result as a qsort()-style comparison function (less than zero
+ * for first arg is less than second arg, zero for equal, greater zero
+ * if first arg is greater than second arg).
+ */
+static gint
+icon_theme_compare(gconstpointer a,
+                   gconstpointer b)
+{
+    icon_theme *it1 = *(icon_theme **) a;
+    icon_theme *it2 = *(icon_theme **) b;
+
+    if (G_UNLIKELY(it1 == NULL && it2 == NULL))
+        return 0;
+    if (G_UNLIKELY(it1 == NULL))
+        return -1;
+    if (G_UNLIKELY(it2 == NULL))
+        return 1;
+
+    return g_strcmp0(it1->dir, it2->dir);
+}
+
+
 static GArray *
 find_themes_in_dir(const gchar *path)
 {
@@ -339,6 +363,7 @@ find_themes_in_dir(const gchar *path)
         weather_debug("Found %d icon theme(s) in %s.", themes->len, path);
     } else
         weather_debug("Could not list directory %s.", path);
+    g_array_sort(themes, (GCompareFunc) icon_theme_compare);
     return themes;
 }
 


More information about the Xfce4-commits mailing list