From ee44133fb0f028dbdba7b23a140c0750b628d2d2 Mon Sep 17 00:00:00 2001 From: Rui Guo Date: Tue, 11 Aug 2009 00:36:45 +0800 Subject: [PATCH] Add two events Screen.oncreatewindow window.onoutput --- src/ansi.c | 6 ++++++ src/lua.c | 2 ++ src/script.c | 2 ++ src/script.h | 1 + src/window.c | 3 +++ src/window.h | 1 + 6 files changed, 15 insertions(+) diff --git a/src/ansi.c b/src/ansi.c index 29fbe0d..9370160 100644 --- a/src/ansi.c +++ b/src/ansi.c @@ -307,6 +307,12 @@ register int len; return; if (wp->w_log) WLogString(wp, buf, len); +#ifdef SCRIPT + /*May it cause buffer overrun?*/ + if (buf[len]) + buf[len]=0; + trigger_sevent(&wp->w_sev.onoutput, wp, buf); +#endif /* set global variables (yuck!) */ curr = wp; diff --git a/src/lua.c b/src/lua.c index 3539cda..03dacd0 100644 --- a/src/lua.c +++ b/src/lua.c @@ -483,6 +483,8 @@ window_activate(lua_State *L) return 0; } +static void push_canvas(lua_State *L, struct canvas **t); + static int window_get_showing_canvases(lua_State *L) { diff --git a/src/script.c b/src/script.c index d318286..8d25a69 100644 --- a/src/script.c +++ b/src/script.c @@ -201,6 +201,7 @@ struct sev_description { /* fore window changed to window w on display d. */ {"global_forechanged", "dw", offsetof(struct gevents, forechanged)}, {"global_onattach", "d", offsetof(struct gevents, onattach)}, + {"global_oncreatewindow", "w", offsetof(struct gevents, window_create)}, {"global_processcaption", "c", offsetof(struct gevents, processcaption)}, /* Window events */ @@ -212,6 +213,7 @@ struct sev_description { {"window_onhide", "dw", offsetof(struct win, w_sev.onhide)}, /* window w lost its focus on display d. */ {"window_onleave", "dw", offsetof(struct win, w_sev.onleave)}, + {"window_onoutput", "ws", offsetof(struct win, w_sev.onoutput)}, {"window_onresize", "w", offsetof(struct win, w_sev.onresize)}, /* window w first showed up on display d. When there are regions, it can * still be shown while losing focus. */ diff --git a/src/script.h b/src/script.h index ec47f42..e1addd4 100644 --- a/src/script.h +++ b/src/script.h @@ -102,6 +102,7 @@ struct gevents struct script_event onattach; struct script_event forechanged; struct script_event processcaption; + struct script_event window_create; }; extern struct gevents globalevents; #endif diff --git a/src/window.c b/src/window.c index 8eb1edb..1aa14dc 100644 --- a/src/window.c +++ b/src/window.c @@ -841,6 +841,9 @@ struct NewWindow *newwin; evenq(&p->w_silenceev); } +#ifdef SCRIPT + trigger_sevent(&globalevents.window_create, p); +#endif SetForeWindow(p); Activate(p->w_norefresh); WindowChanged((struct win*)0, 'w'); diff --git a/src/window.h b/src/window.h index c8559a9..4afd4be 100644 --- a/src/window.h +++ b/src/window.h @@ -292,6 +292,7 @@ struct win struct script_event onclose; struct script_event onsilent; struct script_event onactivity; + struct script_event onoutput; } w_sev; /*For Script events. */ #endif }; -- 2.11.4.GIT