diff options
Diffstat (limited to 'Gui/wm/ws.c')
-rw-r--r-- | Gui/wm/ws.c | 15 |
1 files changed, 14 insertions, 1 deletions
diff --git a/Gui/wm/ws.c b/Gui/wm/ws.c index cf04488c92..d5d4e4821b 100644 --- a/Gui/wm/ws.c +++ b/Gui/wm/ws.c @@ -605,7 +605,20 @@ keypressed: #endif break; - case MotionNotify: i=wsMoveMouse; goto buttonreleased; + case MotionNotify: + i=wsMoveMouse; + { + /* pump all motion events from the display queue: + this way it works faster when moving the window */ + static XEvent e; + while(XCheckTypedWindowEvent(display,Event->xany.window,MotionNotify,&e)){ + /* FIXME: need to make sure we didn't release/press the button in between...*/ + /* FIXME: do we need some timeout here to make sure we don't spend too much time + removing events from the queue? */ + Event = &e; + } + } + goto buttonreleased; case ButtonRelease: i=Event->xbutton.button + 128; goto buttonreleased; case ButtonPress: i=Event->xbutton.button; goto buttonreleased; case EnterNotify: i=wsEnterWindow; goto buttonreleased; |