diff options
Diffstat (limited to 'openbox')
| -rw-r--r-- | openbox/actions.c | 25 | ||||
| -rw-r--r-- | openbox/actions.h | 2 | ||||
| -rw-r--r-- | openbox/actions/execute.c | 1 | ||||
| -rw-r--r-- | openbox/event.h | 2 |
4 files changed, 27 insertions, 3 deletions
diff --git a/openbox/actions.c b/openbox/actions.c index afbd9cb6..ac849a97 100644 --- a/openbox/actions.c +++ b/openbox/actions.c @@ -51,6 +51,7 @@ struct _ObActionsDefinition { ObActionsDataFreeFunc free; ObActionsRunFunc run; ObActionsShutdownFunc shutdown; + gboolean modifies_focused_window; }; struct _ObActionsAct { @@ -103,12 +104,13 @@ ObActionsDefinition* do_register(const gchar *name, return NULL; } - def = g_slice_new(ObActionsDefinition); + def = g_slice_new0(ObActionsDefinition); def->ref = 1; def->name = g_strdup(name); def->free = free; def->run = run; def->shutdown = NULL; + def->modifies_focused_window = TRUE; registered = g_slist_prepend(registered, def); return def; @@ -156,6 +158,22 @@ gboolean actions_set_shutdown(const gchar *name, return FALSE; } +gboolean actions_set_modifies_focused_window(const gchar *name, + gboolean modifies) +{ + GSList *it; + ObActionsDefinition *def; + + for (it = registered; it; it = g_slist_next(it)) { + def = it->data; + if (!g_ascii_strcasecmp(name, def->name)) { + def->modifies_focused_window = modifies; + return TRUE; + } + } + return FALSE; +} + static void actions_definition_ref(ObActionsDefinition *def) { ++def->ref; @@ -340,8 +358,11 @@ 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) + if (client && client == focus_client && + act->def->modifies_focused_window) + { update_user_time = TRUE; + } } else { /* make sure its interactive if it returned TRUE */ g_assert(act->i_input); diff --git a/openbox/actions.h b/openbox/actions.h index e03bc577..f413ad82 100644 --- a/openbox/actions.h +++ b/openbox/actions.h @@ -82,6 +82,8 @@ gboolean actions_register(const gchar *name, gboolean actions_set_shutdown(const gchar *name, ObActionsShutdownFunc shutdown); +gboolean actions_set_modifies_focused_window(const gchar *name, + gboolean modifies); ObActionsAct* actions_parse(xmlNodePtr node); ObActionsAct* actions_parse_string(const gchar *name); diff --git a/openbox/actions/execute.c b/openbox/actions/execute.c index 380ffa00..df600fa0 100644 --- a/openbox/actions/execute.c +++ b/openbox/actions/execute.c @@ -33,6 +33,7 @@ void action_execute_startup(void) { actions_register("Execute", setup_func, free_func, run_func); actions_set_shutdown("Execute", shutdown_func); + actions_set_modifies_focused_window("Execute", FALSE); client_add_destroy_notify(client_dest, NULL); } diff --git a/openbox/event.h b/openbox/event.h index 4d9984e1..cc441405 100644 --- a/openbox/event.h +++ b/openbox/event.h @@ -26,7 +26,7 @@ struct _ObClient; /*! The amount of time before a window appears that is checked for user input to determine if the user is working in another window */ -#define OB_EVENT_USER_TIME_DELAY (1000) /* 1.0 seconds */ +#define OB_EVENT_USER_TIME_DELAY (1000) /* milliseconds */ /*! The last user-interaction time, as given by the clients */ extern Time event_last_user_time; |
