diff --git a/ChangeLog b/ChangeLog index 9f4b254..3d3bd07 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,6 +1,19 @@ +2010-06-16 +- Set _NET_WM_ICON_GEOMETRY for every task + +2010-06-12 +- strut_policy=minimum is possible even if autohide is disabled + +2010-06-11 +- Added icons and a *.desktop file for tint2conf +- BSD fixes + 2010-06-09 - Add cmake build system +2010-06-08 +- Xrandr and Nvidia problems fixed + 2010-05-17 - Fix installation of examples diff --git a/src/server.c b/src/server.c index db50445..bfff48d 100644 --- a/src/server.c +++ b/src/server.c @@ -68,6 +68,7 @@ void server_init_atoms () server.atom._NET_WM_NAME = XInternAtom (server.dsp, "_NET_WM_NAME", False); server.atom._NET_WM_STRUT = XInternAtom (server.dsp, "_NET_WM_STRUT", False); server.atom._NET_WM_ICON = XInternAtom (server.dsp, "_NET_WM_ICON", False); + server.atom._NET_WM_ICON_GEOMETRY = XInternAtom(server.dsp, "_NET_WM_ICON_GEOMETRY", False ); server.atom._NET_CLOSE_WINDOW = XInternAtom (server.dsp, "_NET_CLOSE_WINDOW", False); server.atom.UTF8_STRING = XInternAtom (server.dsp, "UTF8_STRING", False); server.atom._NET_SUPPORTING_WM_CHECK = XInternAtom (server.dsp, "_NET_SUPPORTING_WM_CHECK", False); diff --git a/src/server.h b/src/server.h index 83501c7..5d96c3e 100644 --- a/src/server.h +++ b/src/server.h @@ -49,6 +49,7 @@ typedef struct Global_atom Atom _NET_WM_VISIBLE_NAME; Atom _NET_WM_STRUT; Atom _NET_WM_ICON; + Atom _NET_WM_ICON_GEOMETRY; Atom _NET_CLOSE_WINDOW; Atom UTF8_STRING; Atom _NET_SUPPORTING_WM_CHECK; diff --git a/src/taskbar/taskbar.c b/src/taskbar/taskbar.c index 4bf6db5..8ba7ac1 100644 --- a/src/taskbar/taskbar.c +++ b/src/taskbar/taskbar.c @@ -302,6 +302,9 @@ void resize_taskbar(void *obj) tsk->area.posx = x; set_task_redraw(tsk); // always redraw task, because the background could have changed (taskbar_active_id) tsk->area.width = pixel_width; + long value[] = { panel->posx+x, panel->posy, pixel_width, panel->area.height }; + XChangeProperty (server.dsp, tsk->win, server.atom._NET_WM_ICON_GEOMETRY, XA_CARDINAL, 32, PropModeReplace, (unsigned char*)value, 4); + if (modulo_width) { tsk->area.width++; modulo_width--; @@ -340,6 +343,9 @@ void resize_taskbar(void *obj) tsk->area.posy = y; set_task_redraw(tsk); // always redraw task, because the background could have changed (taskbar_active_id) tsk->area.height = pixel_height; + long value[] = { panel->posx, panel->posy+y, panel->area.width, pixel_height }; + XChangeProperty (server.dsp, tsk->win, server.atom._NET_WM_ICON_GEOMETRY, XA_CARDINAL, 32, PropModeReplace, (unsigned char*)value, 4); + if (modulo_height) { tsk->area.height++; modulo_height--; diff --git a/src/tint.c b/src/tint.c index fbe62ac..8199608 100644 --- a/src/tint.c +++ b/src/tint.c @@ -97,8 +97,8 @@ void init (int argc, char *argv[]) sigaction(SIGHUP, &sa, 0); // signal(SIGCHLD, SIG_IGN); // don't have to wait() after fork() - // BSD is too stupid to support pselect(), therefore we have to use select and hope that we do not - // end up in a race condition there + // BSD does not support pselect(), therefore we have to use select and hope that we do not + // end up in a race condition there (see 'man select()' on a linux machine for more information) // block all signals, such that no race conditions occur before pselect in our main loop // sigset_t block_mask; // sigaddset(&block_mask, SIGINT);