From 55ce6c98924b4491e1ed084ff94a23831f757753 Mon Sep 17 00:00:00 2001 From: Pierre Pronchery Date: Fri, 18 May 2018 17:46:04 +0200 Subject: [PATCH] Detect desktop entries on the desktop --- src/desktop/desktop.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/src/desktop/desktop.c b/src/desktop/desktop.c index 98716df..c183bf9 100644 --- a/src/desktop/desktop.c +++ b/src/desktop/desktop.c @@ -3006,8 +3006,10 @@ static gint _categories_apps_compare(gconstpointer a, gconstpointer b) static int _refresh_loop_files(Desktop * desktop) { + const char ext[] = ".desktop"; struct dirent * de; String * p; + size_t len; gchar * q; DesktopIcon * desktopicon; GError * error = NULL; @@ -3032,8 +3034,14 @@ static int _refresh_loop_files(Desktop * desktop) if((p = string_new_append(desktop->path, "/", de->d_name, NULL)) == NULL) return -_desktop_serror(desktop, de->d_name, 1); + /* detect desktop entries */ + if((len = strlen(de->d_name)) > sizeof(ext) + && strcmp(&de->d_name[len - sizeof(ext) + 1], ext) == 0) + desktopicon = desktopicon_new_application(desktop, p, + desktop->refresh_dir); /* XXX not relative to the current folder */ - if((q = g_filename_to_utf8(de->d_name, -1, NULL, NULL, &error)) != NULL) + else if((q = g_filename_to_utf8(de->d_name, -1, NULL, NULL, &error)) + != NULL) desktopicon = desktopicon_new(desktop, q, p); else {