Use >= instead of > when comparing timestamps, or we will ignore some events
[dana/openbox.git] / openbox / event.c
index eb69d09..0d67fce 100644 (file)
@@ -1792,8 +1792,9 @@ static gboolean event_handle_menu_input(XEvent *ev)
     if (ev->type == ButtonRelease || ev->type == ButtonPress) {
         ObMenuEntryFrame *e;
 
-        if (menu_hide_delay_reached() &&
-            (ev->xbutton.button < 4 || ev->xbutton.button > 5))
+        if ((ev->xbutton.button < 4 || ev->xbutton.button > 5) &&
+            ((ev->type == ButtonRelease && menu_hide_delay_reached()) ||
+             ev->type == ButtonPress))
         {
             if ((e = menu_entry_frame_under(ev->xbutton.x_root,
                                             ev->xbutton.y_root)))
@@ -1804,23 +1805,11 @@ static gboolean event_handle_menu_input(XEvent *ev)
                 if (ev->type == ButtonRelease)
                     menu_entry_frame_execute(e, ev->xbutton.state);
             }
-            else if (ev->type == ButtonRelease)
+            else
                 menu_frame_hide_all();
         }
         ret = TRUE;
     }
-    else if (ev->type == MotionNotify) {
-        ObMenuFrame *f;
-        ObMenuEntryFrame *e;
-
-        if ((e = menu_entry_frame_under(ev->xmotion.x_root,
-                                        ev->xmotion.y_root)))
-            if (!(f = find_active_menu()) ||
-                f == e->frame ||
-                f->parent == e->frame ||
-                f->child == e->frame)
-                menu_frame_select(e->frame, e, FALSE);
-    }
     else if (ev->type == KeyPress || ev->type == KeyRelease) {
         guint mods;
         ObMenuFrame *frame;
@@ -2073,7 +2062,6 @@ static gboolean focus_delay_func(gpointer data)
     if (client_focus(d->client) && config_focus_raise)
         stacking_raise(CLIENT_AS_WINDOW(d->client));
     event_curtime = old;
-    XFlush(obt_display);
     return FALSE; /* no repeat */
 }
 
@@ -2086,7 +2074,6 @@ static gboolean unfocus_delay_func(gpointer data)
     event_curserial = d->serial;
     focus_nothing();
     event_curtime = old;
-    XFlush(obt_display);
     return FALSE; /* no repeat */
 }
 
@@ -2215,7 +2202,7 @@ gboolean event_time_after(guint32 t1, guint32 t2)
 gboolean find_timestamp(XEvent *e, gpointer data)
 {
     const Time t = event_get_timestamp(e);
-    if (t > event_curtime) {
+    if (t >= event_curtime) {
         event_curtime = t;
         return TRUE;
     }