Implement window event onslient & onactivity
authorRui Guo <firemeteor.guo@gmail.com>
Tue, 4 Aug 2009 16:22:15 +0000 (5 00:22 +0800)
committerRui Guo <firemeteor.guo@gmail.com>
Tue, 4 Aug 2009 16:22:15 +0000 (5 00:22 +0800)
src/screen.c
src/script.c
src/window.c
src/window.h

index c445b12..d2ec650 100644 (file)
@@ -3239,6 +3239,9 @@ char *data;
              if (!(ACLBYTE(p->w_mon_notify, D_user->u_id) & ACLBIT(D_user->u_id)))
                continue;       /* user doesn't care */
 #endif
+#ifdef SCRIPT
+              if (!trigger_sevent(&p->w_sev.onactivity, display, p))
+#endif
              Msg(0, "%s", MakeWinMsg(ActivityString, p, '%'));
              p->w_monitor = MON_DONE;
            }
index 7b91e6d..d318286 100644 (file)
@@ -205,6 +205,7 @@ struct sev_description {
 
       /* Window events */
       {"window_can_resize", "", offsetof(struct win, w_sev.canresize)},
+      {"window_onactivity", "w", offsetof(struct win, w_sev.onactivity)},
       {"window_onclose", "w", offsetof(struct win, w_sev.onclose)},
       {"window_onfocus", "dw", offsetof(struct win, w_sev.onfocus)},
       /* last view of window w disappeared on display d. */
@@ -215,6 +216,7 @@ struct sev_description {
       /* window w first showed up on display d. When there are regions, it can
        * still be shown while losing focus. */
       {"window_onshow", "dw", offsetof(struct win, w_sev.onshow)},
+      {"window_onsilent", "w", offsetof(struct win, w_sev.onsilent)},
 };
 
 /* Get the event queue with the given name in the obj.  If the obj is NULL,
index 37a03fe..a6cc9fe 100644 (file)
@@ -2054,6 +2054,9 @@ char *data;
       if (!(ACLBYTE(p->w_lio_notify, D_user->u_id) & ACLBIT(D_user->u_id)))
        continue;
 #endif
+#ifdef SCRIPT
+      if (!trigger_sevent(&p->w_sev.onsilent, p))
+#endif
       Msg(0, "Window %d: silence for %d seconds", p->w_number, p->w_silencewait);
     }
 }
index 2183bb9..c8559a9 100644 (file)
@@ -290,6 +290,8 @@ struct win
       struct script_event onhide;
       struct script_event onshow;
       struct script_event onclose;
+      struct script_event onsilent;
+      struct script_event onactivity;
     } w_sev; /*For Script events. */
 #endif
 };