From 5ff0d07aba5399e1c8eeb8064d1d800e78c4fe9b Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Wed, 29 Sep 2010 16:04:53 -0400 Subject: [PATCH] update the user-interaction timestamp when running a (non-interactive) action on the focused window update it at the end of running actions instead of multiple times (once for each action) --- openbox/actions.c | 7 +++++++ openbox/event.c | 5 +++++ openbox/event.h | 8 +++++++- 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/openbox/actions.c b/openbox/actions.c index 125084e8..674e22c0 100644 --- a/openbox/actions.c +++ b/openbox/actions.c @@ -23,6 +23,7 @@ #include "event.h" #include "config.h" #include "client.h" +#include "focus.h" #include "openbox.h" #include "debug.h" @@ -300,6 +301,7 @@ void actions_run_acts(GSList *acts, struct _ObClient *client) { GSList *it; + gboolean update_user_time; /* Don't allow saving the initial state when running things from the menu */ @@ -309,6 +311,7 @@ void actions_run_acts(GSList *acts, if (x < 0 && y < 0) screen_pointer_pos(&x, &y); + update_user_time = FALSE; for (it = acts; it; it = g_slist_next(it)) { ObActionsData data; ObActionsAct *act = it->data; @@ -337,6 +340,8 @@ void actions_run_acts(GSList *acts, if (!act->def->run(&data, act->options)) { if (actions_act_is_interactive(act)) actions_interactive_end_act(); + if (client && client == focus_client) + update_user_time = TRUE; } else { /* make sure its interactive if it returned TRUE */ g_assert(act->i_input); @@ -346,6 +351,8 @@ void actions_run_acts(GSList *acts, } } } + if (update_user_time) + event_update_user_time(); } gboolean actions_interactive_act_running(void) diff --git a/openbox/event.c b/openbox/event.c index 0d67fce0..1ceb25db 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -2246,3 +2246,8 @@ void event_reset_time(void) { next_time(); } + +void event_update_user_time(void) +{ + event_last_user_time = event_time(); +} diff --git a/openbox/event.h b/openbox/event.h index f0e2d397..a0b7b504 100644 --- a/openbox/event.h +++ b/openbox/event.h @@ -76,7 +76,13 @@ void event_reset_time(void); /*! A time at which an event happened that caused this current event to be generated. This is a user-provided time and not to be trusted. Returns CurrentTime if there was no source time provided. - */ +*/ Time event_source_time(void); +/*! Update the timestamp for when the user has last used the focused window. + This updates the timestamp to the time of the last event, given by + event_time(). +*/ +void event_update_user_time(void); + #endif -- 2.45.2