update the user-interaction timestamp when running a (non-interactive) action on...
authorDana Jansens <danakj@orodu.net>
Wed, 29 Sep 2010 20:04:53 +0000 (16:04 -0400)
committerDana Jansens <danakj@orodu.net>
Mon, 24 Jan 2011 19:19:22 +0000 (14:19 -0500)
update it at the end of running actions instead of multiple times (once for
 each action)

openbox/actions.c
openbox/event.c
openbox/event.h

index 125084e..674e22c 100644 (file)
@@ -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)
index 0d67fce..1ceb25d 100644 (file)
@@ -2246,3 +2246,8 @@ void event_reset_time(void)
 {
     next_time();
 }
+
+void event_update_user_time(void)
+{
+    event_last_user_time = event_time();
+}
index f0e2d39..a0b7b50 100644 (file)
@@ -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