Introduce canvas.showwin() interface.
authorRui Guo <firemeteor.guo@gmail.com>
Wed, 24 Jun 2009 14:29:09 +0000 (24 22:29 +0800)
committerRui Guo <firemeteor.guo@gmail.com>
Wed, 24 Jun 2009 14:29:09 +0000 (24 22:29 +0800)
src/drafts/scripting
src/lua.c

index adf676a..293acb8 100644 (file)
@@ -284,6 +284,9 @@ Methods:
 select()
   Get input focus for this canvas.
 
+showwin(win)
+  Show window 'win' on this canvas.
+
 F. Screen
 
  This is a pseudo object standing for the whole screen object. All other
index 94041c0..6155619 100644 (file)
--- a/src/lua.c
+++ b/src/lua.c
@@ -78,6 +78,7 @@ extern struct display *displays, *display;
 extern struct LayFuncs WinLf;
 extern struct layer *flayer;
 extern void AppendWinMsgRend(const char *str, const char *color);
+extern void FocusCanvas(struct canvas *cv);
 
 static int LuaDispatch(void *handler, const char *params, va_list va);
 static int LuaRegEvent(lua_State *L);
@@ -574,8 +575,23 @@ canvas_select(lua_State *L)
   return 0;
 }
 
+static int
+canvas_showwin(lua_State *L)
+{
+  struct canvas *c = check_canvas(L, 1);
+  if (lua_isnil(L, 2))
+    SetCanvasWindow(c, 0);
+  else
+    {
+      struct win *w = check_window(L, 2);
+      SetCanvasWindow(c, w);
+    }
+  return 0;
+}
+
 static const luaL_reg canvas_methods[] = {
   {"select", canvas_select},
+  {"showwin", canvas_showwin},
   {0, 0}
 };