X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Ftaskbar%2Ftask.c;h=7a5212e794fe9191e8b240c93a11d80f07f2bf99;hb=c75069e03de761de15a6d74a4df0d7dbe6672b6e;hp=921f067ad4d9dd46ee4790e821281024b3a87f80;hpb=30d9caa5e980c128c45916e909031307e3acb67d;p=chaz%2Ftint2 diff --git a/src/taskbar/task.c b/src/taskbar/task.c index 921f067..7a5212e 100644 --- a/src/taskbar/task.c +++ b/src/taskbar/task.c @@ -209,7 +209,7 @@ void get_icon (Task *tsk) int i; Imlib_Image img = NULL; XWMHints *hints = 0; - long *data = 0; + gulong *data = 0; int k; for (k=0; kg_task.icon_size1); - #ifdef __x86_64__ DATA32 icon_data[w * h]; int length = w * h; @@ -343,6 +342,7 @@ void draw_task (void *obj, cairo_t *c) Color *config_text; int width=0, height; Panel *panel = (Panel*)tsk->area.panel; + //printf("draw_task %d %d\n", tsk->area.posx, tsk->area.posy); if (panel->g_task.text) { /* Layout */ @@ -386,6 +386,19 @@ void draw_task (void *obj, cairo_t *c) } +void on_change_task (void *obj) +{ + Task *tsk = obj; + Panel *panel = (Panel*)tsk->area.panel; + + long value[] = { panel->posx+tsk->area.posx, panel->posy+tsk->area.posy, tsk->area.width, tsk->area.height }; + XChangeProperty (server.dsp, tsk->win, server.atom._NET_WM_ICON_GEOMETRY, XA_CARDINAL, 32, PropModeReplace, (unsigned char*)value, 4); + + // reset Pixmap when position/size changed + set_task_redraw(tsk); +} + + Task *next_task(Task *tsk) { if (tsk == 0) @@ -444,9 +457,11 @@ void active_task() //printf("Change active task %ld\n", w1); if (w1) { - Window w2; - if (XGetTransientForHint(server.dsp, w1, &w2) != 0) - if (w2 && !task_get_tasks(w1)) w1 = w2; + if (!task_get_tasks(w1)) { + Window w2; + while (XGetTransientForHint(server.dsp, w1, &w2)) + w1 = w2; + } set_task_state((task_active = task_get_task(w1)), TASK_ACTIVE); } }