X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=7eef80174ad14a2084c4b60597294ec0c11682bc;hb=ebbcacae15d51a7e36ebc27a8bb80bbe2b7c0a5f;hp=ea8623abe60bf2109a8173704781d801fbddb1d9;hpb=d47c6a0979e420c74b4bfe1c38e9980517b3a29d;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index ea8623ab..7eef8017 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -78,11 +78,7 @@ static void focus_delay_client_dest(ObClient *client, gpointer data); static gboolean menu_hide_delay_func(gpointer data); -/* The most recent time at which an event with a timestamp occured. */ -static Time event_lasttime = 0; -/* The time for the current event being processed - (it's the event_lasttime for events without times, if this is a bug then - use CurrentTime instead, but it seems ok) */ +/* The time for the current event being processed */ Time event_curtime = CurrentTime; /*! The value of the mask for the NumLock modifier */ @@ -216,9 +212,9 @@ static Window event_get_window(XEvent *e) return window; } -static void event_set_lasttime(XEvent *e) +static void event_set_curtime(XEvent *e) { - Time t = 0; + Time t = CurrentTime; /* grab the lasttime and hack up the state */ switch (e->type) { @@ -248,14 +244,7 @@ static void event_set_lasttime(XEvent *e) break; } - if (t > event_lasttime) { - event_lasttime = t; - event_curtime = event_lasttime; - } else if (t == 0) { - event_curtime = event_lasttime; - } else { - event_curtime = t; - } + event_curtime = t; } #define STRIP_MODS(s) \ @@ -455,7 +444,7 @@ static void event_process(const XEvent *ec, gpointer data) } #endif - event_set_lasttime(e); + event_set_curtime(e); event_hack_mods(e); if (event_ignore(e, client)) { if (ed) @@ -532,6 +521,9 @@ static void event_process(const XEvent *ec, gpointer data) } } } + /* if something happens and it's not from an XEvent, then we don't know + the time */ + event_curtime = CurrentTime; } static void event_handle_root(XEvent *e) @@ -664,7 +656,7 @@ static void event_handle_client(ObClient *client, XEvent *e) /* Look for the followup FocusIn */ if (!XCheckIfEvent(ob_display, &ce, look_for_focusin, NULL)) { /* There is no FocusIn, move focus where we can still hear events*/ - focus_set_client(NULL); + focus_fallback(OB_FOCUS_FALLBACK_NOFOCUS); } else if (ce.xany.window == e->xany.window) { /* If focus didn't actually move anywhere, there is nothing to do*/ break;