fixed bad background with fake transparency+hidden panel

git-svn-id: http://tint2.googlecode.com/svn/trunk@350 121b4492-b84c-0410-8b4c-0d4edfb3f3cc
This commit is contained in:
thilor77 2010-01-14 22:55:08 +00:00
parent 961229a64b
commit 99dc929a7c
2 changed files with 13 additions and 6 deletions

View file

@ -551,6 +551,12 @@ void set_panel_background(Panel *p)
if (p->area.pix) XFreePixmap (server.dsp, p->area.pix);
p->area.pix = XCreatePixmap (server.dsp, server.root_win, p->area.width, p->area.height, server.depth);
int xoff=0, yoff=0;
if (panel_horizontal && panel_position & BOTTOM)
yoff = p->area.height-p->hidden_height;
else if (!panel_horizontal && panel_position & RIGHT)
xoff = p->area.width-p->hidden_width;
if (real_transparency) {
clear_pixmap(p->area.pix, 0, 0, p->area.width, p->area.height);
}
@ -560,7 +566,12 @@ void set_panel_background(Panel *p)
Window dummy;
int x, y;
XTranslateCoordinates(server.dsp, p->main_win, server.root_win, 0, 0, &x, &y, &dummy);
XSetTSOrigin(server.dsp, server.gc, -x, -y) ;
if (panel_autohide && p->is_hidden) {
x -= xoff;
y -= yoff;
}
//printf("x %d, y %d\n", x, y);
XSetTSOrigin(server.dsp, server.gc, -x, -y);
XFillRectangle(server.dsp, p->area.pix, server.gc, 0, 0, p->area.width, p->area.height);
}
@ -576,11 +587,6 @@ void set_panel_background(Panel *p)
if (panel_autohide) {
if (p->hidden_pixmap) XFreePixmap(server.dsp, p->hidden_pixmap);
p->hidden_pixmap = XCreatePixmap(server.dsp, server.root_win, p->hidden_width, p->hidden_height, server.depth);
int xoff=0, yoff=0;
if (panel_horizontal && panel_position & BOTTOM)
yoff = p->area.height-p->hidden_height;
else if (!panel_horizontal && panel_position & RIGHT)
xoff = p->area.width-p->hidden_width;
XCopyArea(server.dsp, p->area.pix, p->hidden_pixmap, server.gc, xoff, yoff, p->hidden_width, p->hidden_height, 0, 0);
}

View file

@ -263,6 +263,7 @@ int tint2_handles_click(Panel* panel, XButtonEvent* e)
if (tskbar && e->button == 1 && panel_mode == MULTI_DESKTOP)
return 1;
if (click_clock(panel, e->x, e->y)) {
printf("ici 1 : %d\n", e->button);
if ( (e->button == 1 && clock_lclick_command) || (e->button == 3 && clock_rclick_command) )
return 1;
else