diff options
| author | Dana Jansens <danakj@orodu.net> | 2002-05-16 22:48:44 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2002-05-16 22:48:44 +0000 |
| commit | de712f85676ca0a386c956165bb6460d65206c46 (patch) | |
| tree | d0922eac5442e1f09b5b27a71d0e056456d4ac0d /src | |
| parent | ae3dc273c4b42553208d230a775731df18058a4a (diff) | |
XDisplay's nextEvent completed
Diffstat (limited to 'src')
| -rw-r--r-- | src/XDisplay.cc | 22 | ||||
| -rw-r--r-- | src/XDisplay.h | 2 |
2 files changed, 24 insertions, 0 deletions
diff --git a/src/XDisplay.cc b/src/XDisplay.cc index 1dfd55d0..822f244a 100644 --- a/src/XDisplay.cc +++ b/src/XDisplay.cc @@ -131,3 +131,25 @@ void XDisplay::ungrab() { if (--_grabs == 0) XUngrabServer(_display); } + + +/* + * Gets the next event on the queue from the X server. + * + * Returns: true if e contains a new event; false if there is no event to be + * returned. + */ +bool XDisplay::nextEvent(XEvent &e) { + if(!XPending(_display)) + return false; + XNextEvent(_display, &e); + if (_last_bad_window != None) { + if (e.xany.window == _last_bad_window) { + cerr << "XDisplay::nextEvent(): Removing event for bad window from " << + "event queue\n"; + return false; + } else + _last_bad_window = None; + } + return true; +} diff --git a/src/XDisplay.h b/src/XDisplay.h index a506eee9..b736fd42 100644 --- a/src/XDisplay.h +++ b/src/XDisplay.h @@ -77,6 +77,8 @@ public: void grab(); void ungrab(); + + bool nextEvent(XEvent &e); }; #endif // _XDisplay_h |
