summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-03-11 14:17:14 +0000
committerDana Jansens <danakj@orodu.net>2007-03-11 14:17:14 +0000
commit2c98204dfedafcf3d2fa010c1b6ac72110256c8c (patch)
tree339da1c45aeb87f847cec02f2cdcd4fc1ce01ac0
parent6a61f0c433eeecfb289ab6c9db635e25958a6340 (diff)
make _NET_ACTIVE_WINDOW requests look at the timestamp when the user didn't
request it
-rw-r--r--openbox/client.c11
-rw-r--r--openbox/client.h3
2 files changed, 9 insertions, 5 deletions
diff --git a/openbox/client.c b/openbox/client.c
index cbef506e..c32a4635 100644
--- a/openbox/client.c
+++ b/openbox/client.c
@@ -1859,6 +1859,8 @@ void client_update_user_time(ObClient *self, gboolean new_event)
*/
if (new_event)
client_last_user_time = time;
+
+ /*ob_debug("window 0x%x user time %u\n", self->window, time);*/
}
}
@@ -2950,14 +2952,17 @@ void client_unfocus(ObClient *self)
}
}
-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)
diff --git a/openbox/client.h b/openbox/client.h
index 04849b63..043a6def 100644
--- a/openbox/client.h
+++ b/openbox/client.h
@@ -486,8 +486,7 @@ void client_unfocus(ObClient *self);
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);