]> Dogcows Code - chaz/openbox/blobdiff - src/XDisplay.cc
XDisplay's nextEvent completed
[chaz/openbox] / src / XDisplay.cc
index 1dfd55d04341d4aae3249ba3f7dbb99af7bf2cce..822f244a62899b920bba1ec670a5dd2f29f43c05 100644 (file)
@@ -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;
+}
This page took 0.019482 seconds and 4 git commands to generate.