freebsd-ports/sysutils/wmbluecpu/files/patch-dockapp.c
Max Brazhnikov cc47097610 Fix after libxcb update.
PR:		ports/131309
Submitted by:	Eric Dedrick
Fixed by:	Benjamin Close (maintainer)
Approved by:	portmgr (pav)
2009-04-20 19:18:38 +00:00

107 lines
2.8 KiB
C

--- dockapp.c 2003-03-23 05:10:15.000000000 +1030
+++ dockapp.c 2009-02-11 12:34:18.897651000 +1030
@@ -238,9 +238,9 @@
32, PropModeReplace, (unsigned char *)&mwmhints, 5);
}
XMapWindow(display, mapwindow);
- signal(SIGINT, handle_signal);
- signal(SIGQUIT, handle_signal);
- signal(SIGTERM, handle_signal);
+ //signal(SIGINT, handle_signal);
+ //signal(SIGQUIT, handle_signal);
+ //signal(SIGTERM, handle_signal);
}
void update_window()
@@ -253,42 +253,55 @@
{
XEvent event;
int winx, winy;
+ fd_set fdset;
+ struct timeval timeout;
- XNextEvent(display, &event);
- switch(event.type)
- {
- case Expose:
- update_window();
- break;
- case ButtonPress:
- if(opt_window && (event.xbutton.button == 1))
- {
- XDefineCursor(display, mapwindow, fleur);
- moving = 1;
- oldx = event.xbutton.x;
- oldy = event.xbutton.y;
- }
- break;
- case MotionNotify:
- winx = event.xmotion.x_root - oldx;
- winy = event.xmotion.y_root - oldy;
- if(winx < 0) winx = 0;
- if(winy < 0) winy = 0;
- if(winx > (screenwidth - WINDOW_WIDTH)) winx = screenwidth - WINDOW_WIDTH;
- if(winy > (screenheight - WINDOW_HEIGHT)) winy = screenheight - WINDOW_HEIGHT;
- if(moving)
- XMoveWindow(display, mapwindow, winx, winy);
- break;
- case ButtonRelease:
- if(opt_window)
- {
- moving = 0;
- XUndefineCursor(display, mapwindow);
- }
- break;
- case ClientMessage:
- if(event.xclient.data.l[0] == wm_delete_window)
- exitloop = 1;
- break;
+ FD_ZERO(&fdset);
+ FD_SET(ConnectionNumber(display), &fdset);
+ timeout.tv_usec = opt_timer_miliseconds % 1000;
+ timeout.tv_sec = opt_timer_miliseconds/1000;
+
+ if( select(ConnectionNumber(display)+1, &fdset, NULL, NULL, &timeout) > 0 ){
+ while( XPending( display )){
+ XNextEvent(display, &event);
+ switch(event.type)
+ {
+ case Expose:
+ update_window();
+ break;
+ case ButtonPress:
+ if(opt_window && (event.xbutton.button == 1))
+ {
+ XDefineCursor(display, mapwindow, fleur);
+ moving = 1;
+ oldx = event.xbutton.x;
+ oldy = event.xbutton.y;
+ }
+ break;
+ case MotionNotify:
+ winx = event.xmotion.x_root - oldx;
+ winy = event.xmotion.y_root - oldy;
+ if(winx < 0) winx = 0;
+ if(winy < 0) winy = 0;
+ if(winx > (screenwidth - WINDOW_WIDTH)) winx = screenwidth - WINDOW_WIDTH;
+ if(winy > (screenheight - WINDOW_HEIGHT)) winy = screenheight - WINDOW_HEIGHT;
+ if(moving)
+ XMoveWindow(display, mapwindow, winx, winy);
+ break;
+ case ButtonRelease:
+ if(opt_window)
+ {
+ moving = 0;
+ XUndefineCursor(display, mapwindow);
+ }
+ break;
+ case ClientMessage:
+ if(event.xclient.data.l[0] == wm_delete_window)
+ exitloop = 1;
+ break;
+ }
+ }
+ } else {
+ handle_timer(SIGALRM);
}
}