X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Ftint2;a=blobdiff_plain;f=src%2Flauncher%2Flauncher.c;h=75388f1099b24fd9ee9975382610049336b7a8a6;hp=158e06c1ddac0a590253ed1b0b8709482b9c778a;hb=9daa525aab5dfb62788865e4cbe4d92ddf055e93;hpb=7f435e3a3592613e718eac626917d9ae32e37bcf diff --git a/src/launcher/launcher.c b/src/launcher/launcher.c index 158e06c..75388f1 100644 --- a/src/launcher/launcher.c +++ b/src/launcher/launcher.c @@ -70,8 +70,12 @@ void init_launcher_panel(void *p) launcher->area._resize = resize_launcher; launcher->area.resize = 1; launcher->area.redraw = 1; - launcher->area.on_screen = 1; + // check consistency + if (launcher->list_apps == NULL) + return; + + launcher->area.on_screen = 1; if (panel_horizontal) { // panel horizonal => fixed height and posy launcher->area.posy = panel->area.bg->border.width + panel->area.paddingy; @@ -149,7 +153,8 @@ void cleanup_launcher() launcher_enabled = 0; } -void resize_launcher(void *obj) + +int resize_launcher(void *obj) { Launcher *launcher = obj; Panel *panel = launcher->area.panel; @@ -222,9 +227,6 @@ void resize_launcher(void *obj) icons_per_row = count / icons_per_column + (count%icons_per_column != 0); launcher->area.width = (2 * launcher->area.bg->border.width) + (2 * launcher->area.paddingxlr) + (icon_size * icons_per_row) + ((icons_per_row-1) * launcher->area.paddingx); } - - launcher->area.posx = panel->area.bg->border.width + panel->area.paddingxlr; - launcher->area.posy = panel->area.bg->border.width; } else { if (!count) launcher->area.height = 0; @@ -236,9 +238,6 @@ void resize_launcher(void *obj) icons_per_column = count / icons_per_row+ (count%icons_per_row != 0); launcher->area.height = (2 * launcher->area.bg->border.width) + (2 * launcher->area.paddingxlr) + (icon_size * icons_per_column) + ((icons_per_column-1) * launcher->area.paddingx); } - - launcher->area.posx = panel->area.bg->border.width; - launcher->area.posy = panel->area.height - panel->area.bg->border.width - panel->area.paddingxlr - launcher->area.height; } int i, posx, posy; @@ -274,9 +273,7 @@ void resize_launcher(void *obj) } } } - - // resize force the redraw - launcher->area.redraw = 1; + return 1; } @@ -372,7 +369,7 @@ void expand_exec(DesktopEntry *entry, const char *path) // %c -> Name // %k -> path if (entry->exec) { - char *exec2 = malloc(strlen(entry->exec) + strlen(entry->name) + strlen(entry->icon) + 100); + char *exec2 = malloc(strlen(entry->exec) + (entry->name ? strlen(entry->name) : 1) + (entry->icon ? strlen(entry->icon) : 1) + 100); char *p, *q; // p will never point to an escaped char for (p = entry->exec, q = exec2; *p; p++, q++) { @@ -711,6 +708,7 @@ void launcher_load_themes(Launcher *launcher) launcher->icon_themes = g_slist_append(launcher->icon_themes, theme); GSList* item = theme->list_inherits; + int pos = 0; while (item != NULL) { char *parent = item->data; @@ -724,7 +722,8 @@ void launcher_load_themes(Launcher *launcher) queued_item = g_slist_next(queued_item); } if (!duplicate) { - queue = g_slist_append(queue, strdup(parent)); + queue = g_slist_insert(queue, strdup(parent), pos); + pos++; queued = g_slist_append(queued, strdup(parent)); } item = g_slist_next(item);