diff options
Diffstat (limited to 'module/wmsrv.m')
| -rw-r--r-- | module/wmsrv.m | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/module/wmsrv.m b/module/wmsrv.m new file mode 100644 index 00000000..d1b82621 --- /dev/null +++ b/module/wmsrv.m @@ -0,0 +1,46 @@ +Wmsrv: module{ + PATH: con "/dis/lib/wmsrv.dis"; + + init: fn(): (chan of (string, chan of (string, ref Draw->Wmcontext)), + chan of (ref Client, chan of string), + chan of (ref Client, array of byte, Sys->Rwrite)); + + find: fn(p: Draw->Point): ref Client; + top: fn(): ref Client; + + Window: adt { + tag: string; + r: Rect; + img: ref Draw->Image; + }; + + Client: adt { + kbd: chan of int; + ptr: chan of ref Draw->Pointer; + ctl: chan of string; + stop: chan of int; + flags: int; # general purpose. + cursor: string; # hack. + wins: list of ref Window; + znext: cyclic ref Client; + + # private: + images: chan of (ref Draw->Point, ref Draw->Image, chan of int); + id: int; # index into clients array + fid: int; + token: int; + wmctxt: ref Draw->Wmcontext; + + window: fn(c: self ref Client, tag: string): ref Window; + contains: fn(c: self ref Client, p: Draw->Point): int; + image: fn(c: self ref Client, tag: string): ref Draw->Image; + setimage: fn(c: self ref Client, tag: string, i: ref Draw->Image): int; # only in response to some msgs. + setorigin: fn(c: self ref Client, tag: string, o: Draw->Point): int; # only in response to some msgs. + top: fn(c: self ref Client); # bring to top. + bottom: fn(c: self ref Client); # send to bottom. + hide: fn(w: self ref Client); # move offscreen. + unhide: fn(w: self ref Client); # move onscreen. + remove: fn(w: self ref Client); + }; +}; + |
