summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2002-05-16 22:48:44 +0000
committerDana Jansens <danakj@orodu.net>2002-05-16 22:48:44 +0000
commitde712f85676ca0a386c956165bb6460d65206c46 (patch)
treed0922eac5442e1f09b5b27a71d0e056456d4ac0d
parentae3dc273c4b42553208d230a775731df18058a4a (diff)
XDisplay's nextEvent completed
-rw-r--r--src/XDisplay.cc22
-rw-r--r--src/XDisplay.h2
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