Hi!

The patch doesn't work at my host (window hangs up).

PS:
I applied the other Your patch now.

On 10:08 Tue 03 Dec     , Andrew Shadura wrote:
> Package: xbattbar
> Version: 1.4.4-1

> Hello,

> Attached is the patch which enables xbattbar to react to screen size
> changes. However, probably, the proper way would be not to place in to
> the edge of a root window, but to the edge of primary screen; that
> would require to use Xinerama API or XRandR.

> --
> Cheers,
> Andrew

> Subject: Resize bar when the root window size changes.
> From: Andrew Shadura <andre...@debian.org>

> --- a/xbattbar.c
> +++ b/xbattbar.c
> @@ -92,6 +92,7 @@ int bi_thick = BI_THICKNESS;        /* t
> int bi_interval = PollingInterval;  /* interval of polling APM */

> Display *disp;
> +Window root;
> Window winbar;                  /* bar indicator window */
> Window winstat = -1;            /* battery status window */
> GC gcbar;
> @@ -163,21 +164,10 @@ Status AllocColor(char *name, unsigned l
> return(status);
> }

> -/*
> - * InitDisplay:
> - * create small window in top or bottom
> - */
> -void InitDisplay(void)
> +void ReshapeWindow(void)
> {
> -  Window root;
> int x,y;
> unsigned int border,depth;
> -  XSetWindowAttributes att;
> -
> -  if((disp = XOpenDisplay(NULL)) == NULL) {
> -      fprintf(stderr, "xbattbar: can't open display.\n");
> -      _exit(1);
> -  }

> if(XGetGeometry(disp, DefaultRootWindow(disp), &root, &x, &y,
> &width, &height, &border, &depth) == 0) {
> @@ -185,14 +175,6 @@ void InitDisplay(void)
> _exit(1);
> }

> -  if (!AllocColor(ONIN_C,&onin) ||
> -       !AllocColor(OFFOUT_C,&offout) ||
> -       !AllocColor(OFFIN_C,&offin) ||
> -       !AllocColor(ONOUT_C,&onout)) {
> -    fprintf(stderr, "xbattbar: can't allocate color resources\n");
> -    _exit(1);
> -  }
> -
> switch (bi_direction) {
> case BI_Top: /* (0,0) - (width, bi_thick) */
> bi_width = width;
> @@ -218,6 +200,30 @@ void InitDisplay(void)
> bi_x = width - bi_thick;
> bi_y = 0;
> }
> +}
> +
> +/*
> + * InitDisplay:
> + * create small window in top or bottom
> + */
> +void InitDisplay(void)
> +{
> +  XSetWindowAttributes att;
> +
> +  if((disp = XOpenDisplay(NULL)) == NULL) {
> +      fprintf(stderr, "xbattbar: can't open display.\n");
> +      _exit(1);
> +  }
> +
> +  if (!AllocColor(ONIN_C,&onin) ||
> +       !AllocColor(OFFOUT_C,&offout) ||
> +       !AllocColor(OFFIN_C,&offin) ||
> +       !AllocColor(ONOUT_C,&onout)) {
> +    fprintf(stderr, "xbattbar: can't allocate color resources\n");
> +    _exit(1);
> +  }
> +
> +  ReshapeWindow();

> winbar = XCreateSimpleWindow(disp, DefaultRootWindow(disp),
> bi_x, bi_y, bi_width, bi_height,
> @@ -314,6 +320,7 @@ main(int argc, char **argv)
> signal(SIGALRM, (void *)(battery_check));
> battery_check();
> XSelectInput(disp, winbar, myEventMask);
> +  XSelectInput(disp, root, StructureNotifyMask);
> while (1) {
> XWindowEvent(disp, winbar, myEventMask, &theEvent);
> switch (theEvent.type) {
> @@ -342,6 +349,12 @@ main(int argc, char **argv)
> "xbattbar: unknown event (%d) captured\n",
> theEvent.type);
> }
> +    XWindowEvent(disp, root, StructureNotifyMask, &theEvent);
> +    switch (theEvent.type) {
> +    case ConfigureNotify:
> +      ReshapeWindow();
> +      XMoveResizeWindow(disp, winbar, bi_x, bi_y, bi_width, bi_height);
> +    }
> }
> }
-- 

. ''`.                               Dmitry E. Oboukhov
: :’  :   email: un...@debian.org jabber://un...@uvw.ru
`. `~’              GPGKey: 1024D / F8E26537 2006-11-21
  `- 1B23 D4F8 8EC0 D902 0555  E438 AB8C 00CF F8E2 6537

Attachment: signature.asc
Description: Digital signature

Reply via email to