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)
Dana Jansens danakj@orodu.net
3 files changed,
19 insertions(+),
1 deletions(-)
M
openbox/actions.c
→
openbox/actions.c
@@ -23,6 +23,7 @@ #include "screen.h"
#include "event.h" #include "config.h" #include "client.h" +#include "focus.h" #include "openbox.h" #include "debug.h"@@ -300,6 +301,7 @@ ObFrameContext con,
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 @@ /* If x and y are < 0 then use the current pointer position */
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 @@ if (ok) {
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 @@ break;
} } } + if (update_user_time) + event_update_user_time(); } gboolean actions_interactive_act_running(void)
M
openbox/event.c
→
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(); +}
M
openbox/event.h
→
openbox/event.h
@@ -76,7 +76,13 @@
/*! 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