fixed taskbar redrawing when pos/size changed

git-svn-id: http://tint2.googlecode.com/svn/trunk@583 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
thilor77 2010-10-24 12:41:35 +00:00
parent 86cfa07735
commit f9d2cc1b73
2 changed files with 17 additions and 0 deletions

View file

@ -113,6 +113,7 @@ void init_taskbar_panel(void *p)
panel->g_taskbar.area.size_mode = SIZE_BY_LAYOUT;
panel->g_taskbar.area._resize = resize_taskbar;
panel->g_taskbar.area._draw_foreground = draw_taskbar;
panel->g_taskbar.area._on_change_layout = on_change_taskbar;
panel->g_taskbar.area.redraw = 1;
panel->g_taskbar.area.on_screen = 1;
if (panel_horizontal) {
@ -299,6 +300,21 @@ int resize_taskbar(void *obj)
}
void on_change_taskbar (void *obj)
{
Taskbar *tskbar = obj;
int k;
// reset Pixmap when position/size changed
for (k=0; k<TASKBAR_STATE_COUNT; ++k) {
if (tskbar->state_pix[k]) XFreePixmap(server.dsp, tskbar->state_pix[k]);
tskbar->state_pix[k] = 0;
}
tskbar->area.pix = 0;
tskbar->area.redraw = 1;
}
void set_taskbar_state(Taskbar *tskbar, int state)
{
tskbar->area.bg = panel1[0].g_taskbar.background[state];

View file

@ -52,6 +52,7 @@ GPtrArray* task_get_tasks(Window win);
void task_refresh_tasklist ();
int resize_taskbar(void *obj);
void on_change_taskbar (void *obj);
void set_taskbar_state(Taskbar *tskbar, int state);
// show/hide taskbar according to current desktop