More accurate parsing of categories from desktop files
This commit is contained in:
parent
d12b37b51b
commit
d3f30d296e
|
@ -66,19 +66,18 @@ typedef struct _MainMenu
|
||||||
/* constants */
|
/* constants */
|
||||||
static const MainMenu _main_menus[] =
|
static const MainMenu _main_menus[] =
|
||||||
{
|
{
|
||||||
{ "Audio;", "Audio", "gnome-mime-audio", },
|
{ "Audio", "Audio", "gnome-mime-audio", },
|
||||||
{ "Development;","Development", "applications-development", },
|
{ "Development","Development", "applications-development", },
|
||||||
{ "Education;", "Education", "applications-science", },
|
{ "Education", "Education", "applications-science", },
|
||||||
{ "Game;", "Games", "applications-games", },
|
{ "Game", "Games", "applications-games", },
|
||||||
{ "Graphics;", "Graphics", "applications-graphics", },
|
{ "Graphics", "Graphics", "applications-graphics", },
|
||||||
{ "AudioVideo;","Multimedia", "applications-multimedia", },
|
{ "AudioVideo", "Multimedia", "applications-multimedia", },
|
||||||
{ "Network;", "Network", "applications-internet", },
|
{ "Network", "Network", "applications-internet", },
|
||||||
{ "Office;", "Office", "applications-office", },
|
{ "Office", "Office", "applications-office", },
|
||||||
{ "Settings;", "Settings", "gnome-settings", },
|
{ "Settings", "Settings", "gnome-settings", },
|
||||||
{ "System;", "System", "applications-system", },
|
{ "System", "System", "applications-system", },
|
||||||
{ "Utility;", "Utilities", "applications-utilities", },
|
{ "Utility", "Utilities", "applications-utilities", },
|
||||||
{ "Video;", "Video", "video", },
|
{ "Video", "Video", "video", }
|
||||||
{ NULL, NULL, NULL, }
|
|
||||||
};
|
};
|
||||||
#define MAIN_MENUS_COUNT (sizeof(_main_menus) / sizeof(*_main_menus))
|
#define MAIN_MENUS_COUNT (sizeof(_main_menus) / sizeof(*_main_menus))
|
||||||
|
|
||||||
|
@ -207,6 +206,7 @@ static GtkWidget * _main_applications(Main * main)
|
||||||
Config * config;
|
Config * config;
|
||||||
const char section[] = "Desktop Entry";
|
const char section[] = "Desktop Entry";
|
||||||
char const * q;
|
char const * q;
|
||||||
|
char const * r;
|
||||||
char const * path;
|
char const * path;
|
||||||
size_t i;
|
size_t i;
|
||||||
|
|
||||||
|
@ -238,9 +238,15 @@ static GtkWidget * _main_applications(Main * main)
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
for(i = 0; _main_menus[i].category != NULL && string_find(q,
|
for(i = 0; i < MAIN_MENUS_COUNT; i++)
|
||||||
_main_menus[i].category) == NULL; i++);
|
{
|
||||||
if(_main_menus[i].category == NULL)
|
if((r = string_find(q, _main_menus[i].category)) == NULL)
|
||||||
|
continue;
|
||||||
|
r += string_length(_main_menus[i].category);
|
||||||
|
if(*r == '\0' || *r == ';')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if(i == MAIN_MENUS_COUNT)
|
||||||
{
|
{
|
||||||
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
gtk_menu_shell_append(GTK_MENU_SHELL(menu), menuitem);
|
||||||
continue;
|
continue;
|
||||||
|
@ -367,7 +373,7 @@ static void _applications_categories(GtkWidget * menu, GtkWidget ** menus)
|
||||||
GtkWidget * menuitem;
|
GtkWidget * menuitem;
|
||||||
size_t pos = 0;
|
size_t pos = 0;
|
||||||
|
|
||||||
for(i = 0; _main_menus[i].category != NULL; i++)
|
for(i = 0; i < MAIN_MENUS_COUNT; i++)
|
||||||
{
|
{
|
||||||
if(menus[i] == NULL)
|
if(menus[i] == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user