]> Dogcows Code - chaz/tint2/blobdiff - src/taskbar/taskbar.c
lower battery drawing : update to 10s and battery_hide config
[chaz/tint2] / src / taskbar / taskbar.c
index ffc115a3d65b3ad6bce908c2301d06f10cf5b45b..32d080b028174bbc5f633e8331c38bb3734e26cb 100644 (file)
 #include "panel.h"
 
 
+/* win_to_task_table holds for every Window an array of tasks. Usually the array contains only one
+   element. However for omnipresent windows (windows which are visible in every taskbar) the array
+   contains to every Task* on each panel a pointer (i.e. GPtrArray.len == server.nb_desktop)
+*/
 GHashTable* win_to_task_table = 0;
 
 guint win_hash(gconstpointer key) { return (guint)*((Window*)key); }
 gboolean win_compare(gconstpointer a, gconstpointer b) { return (*((Window*)a) == *((Window*)b)); }
-
+void free_ptr_array(gpointer data) { g_ptr_array_free(data, 1); }
 
 void init_taskbar()
 {
@@ -45,7 +49,7 @@ void init_taskbar()
        int i, j;
 
        if (win_to_task_table == 0)
-               win_to_task_table = g_hash_table_new_full(win_hash, win_compare, free, g_ptr_array_unref);
+               win_to_task_table = g_hash_table_new_full(win_hash, win_compare, free, free_ptr_array);
 
        for (i=0 ; i < nb_panel ; i++) {
                panel = &panel1[i];
@@ -264,7 +268,7 @@ void resize_taskbar(void *obj)
                        tsk = l->data;
                        if (!tsk->area.on_screen) continue;
                        tsk->area.posx = x;
-                       if (tsk->area.width != pixel_width) set_task_redraw(tsk);
+                       set_task_redraw(tsk);  // always redraw task, because the background could have changed (taskbar_active_id)
                        tsk->area.width = pixel_width;
                        if (modulo_width) {
                                tsk->area.width++;
@@ -302,7 +306,7 @@ void resize_taskbar(void *obj)
                        tsk = l->data;
                        if (!tsk->area.on_screen) continue;
                        tsk->area.posy = y;
-                       if (tsk->area.height != pixel_height) set_task_redraw(tsk);
+                       set_task_redraw(tsk);  // always redraw task, because the background could have changed (taskbar_active_id)
                        tsk->area.height = pixel_height;
                        if (modulo_height) {
                                tsk->area.height++;
This page took 0.022833 seconds and 4 git commands to generate.