summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openbox/actions.c25
-rw-r--r--openbox/actions.h2
-rw-r--r--openbox/actions/execute.c1
-rw-r--r--openbox/event.h2
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;