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)
This commit is contained in:
parent
d614bebf6a
commit
5ff0d07aba
3 changed files with 19 additions and 1 deletions
|
@ -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)
|
||||
|
|
|
@ -2246,3 +2246,8 @@ void event_reset_time(void)
|
|||
{
|
||||
next_time();
|
||||
}
|
||||
|
||||
void event_update_user_time(void)
|
||||
{
|
||||
event_last_user_time = event_time();
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue