summaryrefslogtreecommitdiff
path: root/client
diff options
context:
space:
mode:
authorJari Vetoniemi <mailroxas@gmail.com>2014-10-25 20:57:30 +0300
committerJari Vetoniemi <mailroxas@gmail.com>2014-10-25 20:57:30 +0300
commit9ad69fb4b4f7ddad68045733bd90588acde1570a (patch)
tree92771da4ffcf4791c57414a53f07e0a99c32f207 /client
parent9f13ca2e6d4fd6ce388c9cf5cb098abba01d6a0a (diff)
downloadbemenu-9ad69fb4b4f7ddad68045733bd90588acde1570a.tar.gz
bemenu-9ad69fb4b4f7ddad68045733bd90588acde1570a.tar.bz2
bemenu-9ad69fb4b4f7ddad68045733bd90588acde1570a.zip
Sort items in bemenu-run.
Diffstat (limited to 'client')
-rw-r--r--client/bemenu-run.c13
1 files changed, 12 insertions, 1 deletions
diff --git a/client/bemenu-run.c b/client/bemenu-run.c
index 6c7228d..3ffb28d 100644
--- a/client/bemenu-run.c
+++ b/client/bemenu-run.c
@@ -84,6 +84,13 @@ get_paths(const char *env, const char *default_paths, struct paths *state)
return strip_slash(path);
}
+static int
+compare(const void *a, const void *b)
+{
+ const struct bm_item *ia = *(struct bm_item**)a, *ib = *(struct bm_item**)b;
+ return strcmp(bm_item_get_text(ia), bm_item_get_text(ib));
+}
+
static void
read_items_to_menu_from_dir(struct bm_menu *menu, const char *path)
{
@@ -98,7 +105,7 @@ read_items_to_menu_from_dir(struct bm_menu *menu, const char *path)
memset(&file, 0, sizeof(file));
tinydir_readfile(&dir, &file);
- if (!file.is_dir) {
+ if (!file.is_dir && file.name) {
struct bm_item *item;
if (!(item = bm_item_new(file.name)))
break;
@@ -110,6 +117,10 @@ read_items_to_menu_from_dir(struct bm_menu *menu, const char *path)
}
tinydir_close(&dir);
+
+ uint32_t count;
+ struct bm_item **items = bm_menu_get_items(menu, &count);
+ qsort(items, count, sizeof(struct bm_item*), compare);
}
static void