diff --git a/libmenu/desktop-entries.c b/libmenu/desktop-entries.c index 61551ab..07b5d24 100644 --- a/libmenu/desktop-entries.c +++ b/libmenu/desktop-entries.c @@ -767,7 +767,6 @@ DesktopEntry *entry, const char *file_id) { - const char *file_id_to_use; menu_verbose (" Adding to set %p entry %s\n", set, file_id); if (set->hash == NULL) @@ -778,14 +777,8 @@ (GDestroyNotify) desktop_entry_unref); } - if (desktop_entry_get_type (entry) == DESKTOP_ENTRY_DESKTOP) { - file_id_to_use = desktop_entry_get_id (entry); - } - else { - file_id_to_use = file_id; - } g_hash_table_replace (set->hash, - g_strdup (file_id_to_use), + g_strdup (file_id), desktop_entry_ref (entry)); } diff --git a/libmenu/entry-directories.c b/libmenu/entry-directories.c index 56791a0..23b8cac 100644 --- a/libmenu/entry-directories.c +++ b/libmenu/entry-directories.c @@ -923,7 +923,8 @@ static char * get_desktop_file_id_from_path (EntryDirectory *ed, DesktopEntryType entry_type, - const char *relative_path) + const char *relative_path, + DesktopEntry *entry) { char *retval; @@ -931,7 +932,16 @@ if (entry_type == DESKTOP_ENTRY_DESKTOP) { + GMenuDesktopAppInfo *appinfo; + appinfo = desktop_entry_get_app_info (entry); retval = g_strdelimit (g_strdup (relative_path), "/", '-'); + if (gmenu_desktopappinfo_get_is_flatpak (appinfo)) + { + char* tmp; + tmp = retval; + retval = g_strconcat (retval, GMENU_DESKTOPAPPINFO_FLATPAK_SUFFIX, NULL); + g_free (tmp); + } } else { @@ -978,7 +988,8 @@ file_id = get_desktop_file_id_from_path (ed, ed->entry_type, - relative_path->str); + relative_path->str, + entry); ret = func (ed, entry, file_id, set, user_data);