XDisplay's nextEvent completed
This commit is contained in:
parent
ae3dc273c4
commit
de712f8567
2 changed files with 24 additions and 0 deletions
|
@ -131,3 +131,25 @@ void XDisplay::ungrab() {
|
||||||
if (--_grabs == 0)
|
if (--_grabs == 0)
|
||||||
XUngrabServer(_display);
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -77,6 +77,8 @@ public:
|
||||||
|
|
||||||
void grab();
|
void grab();
|
||||||
void ungrab();
|
void ungrab();
|
||||||
|
|
||||||
|
bool nextEvent(XEvent &e);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // _XDisplay_h
|
#endif // _XDisplay_h
|
||||||
|
|
Loading…
Reference in a new issue