Index: trunk/Ohana/src/kii/event/EventLoop.c
===================================================================
--- trunk/Ohana/src/kii/event/EventLoop.c	(revision 2892)
+++ trunk/Ohana/src/kii/event/EventLoop.c	(revision 3695)
@@ -1,3 +1,5 @@
 # include "Ximage.h"
+
+# define IgnoreMask (long) (ClientMessage | ButtonReleaseMask)
 
 int LastEvent (Display *display, int type, XEvent *event) {
@@ -33,12 +35,22 @@
     display = graphic[0].display;
 
-    /* only do the last entry for these events */
-    /* this ignores the return status from these functions */
+    /* grab the last entry for these events */
     if (LastEvent (display, ConfigureNotify, &event)) Reconfig (graphic, layout, &event);
+    if (LastEvent (display, CirculateNotify, &event)) Reconfig (graphic, layout, &event);
     if (LastEvent (display, Expose,          &event)) Refresh (graphic, layout, 1);
-    if (LastEvent (display, MappingNotify,   &event)) XRefreshKeyboardMapping ((XMappingEvent *) &event);
     if (LastEvent (display, MotionNotify,    &event)) UpdatePointer (graphic, layout, (XMotionEvent *) &event);
     if (LastEvent (display, ButtonPress,     &event)) InterpretPresses (graphic, layout, (XButtonEvent *) &event);
     if (LastEvent (display, KeyPress,        &event)) InterpretKeys (graphic, layout, &event);
+
+    if (LastEvent (display, MappingNotify,   &event)) XRefreshKeyboardMapping ((XMappingEvent *) &event);
+
+    /* drop and ignore the following StructureNotifyMask events */
+    LastEvent (display, GravityNotify, &event);
+    LastEvent (display, ReparentNotify, &event);
+    LastEvent (display, MapNotify, &event);
+    LastEvent (display, UnmapNotify, &event);
+
+    /* remove those events we will ignore */
+    while (XCheckMaskEvent (display, IgnoreMask, &event)) continue;
   }
   return (status);
