X-Git-Url: https://git.dogcows.com/gitweb?p=chaz%2Fopenbox;a=blobdiff_plain;f=openbox%2Factions.c;h=ac849a9741b794070537ef1094e35787985628cd;hp=afbd9cb6445f07f395b6f6ac55e05404b03416fe;hb=af01da31502b20300222213e693457320e4158e4;hpb=6eb740cf119b14903afa3028e108dd98c57ff926 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);