X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fpanel.c;h=f2e97464647a0d2a1fc511a3f8e2ff61bab9f698;hb=12a528312b41b057ca90efbec7fb95eb8ddda82b;hp=b5be1a234563a593d8650cbacc4889e1fc3a4fda;hpb=ad0010a813450116f875d943f36cd6c93d84cb04;p=chaz%2Ftint2 diff --git a/src/panel.c b/src/panel.c index b5be1a2..f2e9746 100644 --- a/src/panel.c +++ b/src/panel.c @@ -16,6 +16,7 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. **************************************************************************/ +#include #include #include #include @@ -115,9 +116,9 @@ void window_draw_panel () Window win; /* panel position determined here */ - if (panel.position & LEFT) server.posx = server.monitor[panel.monitor].x + panel.marginx; + if (panel.position & LEFT) server.posx = server.monitor[panel.monitor].x + panel.marginleft; else { - if (panel.position & RIGHT) server.posx = server.monitor[panel.monitor].x + server.monitor[panel.monitor].width - panel.area.width - panel.marginx; + if (panel.position & RIGHT) server.posx = server.monitor[panel.monitor].x + server.monitor[panel.monitor].width - panel.area.width - panel.marginright; else server.posx = server.monitor[panel.monitor].x + ((server.monitor[panel.monitor].width - panel.area.width) / 2); } if (panel.position & TOP) server.posy = server.monitor[panel.monitor].y + panel.marginy; @@ -173,6 +174,35 @@ void visible_object() } +Pixmap get_root_pixmap () +{ + Pixmap ret; + Window root = RootWindow(server.dsp, server.screen); + + ret = None; + int act_format, c = 2 ; + u_long nitems ; + u_long bytes_after ; + u_char *prop ; + Atom dummy_id; + + do { + if (XGetWindowProperty(server.dsp, root, server.atom._XROOTPMAP_ID, 0, 1, + False, XA_PIXMAP, &dummy_id, &act_format, + &nitems, &bytes_after, &prop) == Success) { + if (prop) { + ret = *((Pixmap *)prop); + XFree(prop); + break; + } + } + } while (--c > 0); + + if (ret == None) fprintf(stderr, "unknown background\n"); + return ret; +} + + void set_panel_background() { Pixmap wall = get_root_pixmap(); @@ -181,7 +211,7 @@ void set_panel_background() panel.area.pix.pmap = XCreatePixmap (server.dsp, server.root_win, panel.area.width, panel.area.height, server.depth); // add layer of root pixmap - XCopyArea (server.dsp, wall, panel.area.pix.pmap, server.gc, server.posx, server.posy, panel.area.width, panel.area.height, 0, 0); + XCopyArea(server.dsp, wall, panel.area.pix.pmap, server.gc, server.posx, server.posy, panel.area.width, panel.area.height, 0, 0); // draw background panel cairo_surface_t *cs; @@ -201,3 +231,4 @@ void set_panel_background() } +