make _NET_ACTIVE_WINDOW requests look at the timestamp when the user didn't request it
Dana Jansens danakj@orodu.net
2 files changed,
9 insertions(+),
5 deletions(-)
M
openbox/client.c
→
openbox/client.c
@@ -1859,6 +1859,8 @@ interaction, so in that case, don't change the last user time.
*/ if (new_event) client_last_user_time = time; + + /*ob_debug("window 0x%x user time %u\n", self->window, time);*/ } }@@ -2950,14 +2952,17 @@ focus_fallback(OB_FOCUS_FALLBACK_CLOSED);
} } -void client_activate(ObClient *self, gboolean here, gboolean user, - Time timestamp) +void client_activate(ObClient *self, gboolean here, gboolean user, Time time) { /* XXX do some stuff here if user is false to determine if we really want to activate it or not (a parent or group member is currently active)? */ - if (!user) + ob_debug("Want to activate window 0x%x with time %u (last time %u), " + "source=%s\n", + self->window, time, client_last_user_time, + (user ? "user" : "application")); + if (!user && time && time < client_last_user_time) client_hilite(self, TRUE); else { if (client_normal(self) && screen_showing_desktop)
M
openbox/client.h
→
openbox/client.h
@@ -486,8 +486,7 @@ @param user If true, then a user action is what requested the activation;
otherwise, it means an application requested it on its own @param timestamp The time at which the activate was requested. */ -void client_activate(ObClient *self, gboolean here, gboolean user, - Time timestamp); +void client_activate(ObClient *self, gboolean here, gboolean user, Time time); /*! Calculates the stacking layer for the client window */ void client_calc_layer(ObClient *self);