Fixed launcher behavior for .desktop files with multiple shortcut groups; fixed launcher memory leak

git-svn-id: http://tint2.googlecode.com/svn/trunk@640 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
o9000 2011-10-07 08:23:04 +00:00 committed by mrovi%interfete-web-club.com@gtempaccount.com
parent cfd2bde7e4
commit 9c90f80ff1

View file

@ -424,17 +424,21 @@ int launcher_read_desktop_file(const char *path, DesktopEntry *entry)
return 0;
}
int inside_desktop_entry = 0;
while (getline(&line, &line_size, fp) >= 0) {
int len = strlen(line);
if (len == 0)
continue;
line[len - 1] = '\0';
if (parse_dektop_line(line, &key, &value)) {
if (strcmp(key, "Name") == 0) {
if (line[0] == '[') {
inside_desktop_entry = (strcmp(line, "[Desktop Entry]") == 0);
}
if (inside_desktop_entry && parse_dektop_line(line, &key, &value)) {
if (!entry->name && strcmp(key, "Name") == 0) {
entry->name = strdup(value);
} else if (strcmp(key, "Exec") == 0) {
} else if (!entry->exec && strcmp(key, "Exec") == 0) {
entry->exec = strdup(value);
} else if (strcmp(key, "Icon") == 0) {
} else if (!entry->icon && strcmp(key, "Icon") == 0) {
entry->icon = strdup(value);
}
}
@ -702,9 +706,9 @@ void launcher_load_themes(Launcher *launcher)
if (!icon_theme_name) {
fprintf(stderr, "Missing launcher theme, default to 'hicolor'.\n");
icon_theme_name = strdup("hicolor");
}
else
} else {
fprintf(stderr, "Loading %s. Icon theme :", icon_theme_name);
}
GSList *queue = g_slist_append(NULL, strdup(icon_theme_name));
GSList *queued = g_slist_append(NULL, strdup(icon_theme_name));