-module(swTopLevel). -export([make/4]). -include("sw.hrl"). -import(ex11_lib, [reply/2, rpc/2]). -export([make/4]). make(Display, Width, Ht, Color) -> S = self(), spawn_link(fun() -> init(S, Display, Width, Ht, Color) end). init(Pid, Display, Width, Ht, Color) -> Wargs = #win{parent=top,width=Width,ht=Ht,color=Color,type=top, mask=?EVENT_BUTTON_PRESS}, Wargs1 = sw:mkWindow(Display, Pid, Wargs), Win = Wargs1#win.win, process_flag(trap_exit, true), loop(Display, Wargs1, fun(_) -> void end). loop(Display, Wargs, Fun) -> receive {onClick, Fun1} -> loop(Display, Wargs, Fun1); {event,_,buttonPress, X} -> Fun(X), loop(Display, Wargs, Fun); {From, id} -> reply(From, {Display, Wargs#win.win}), loop(Display, Wargs, Fun); {'EXIT', Who,Why} -> io:format("swToplevel got Exit from:~p reason:~p~n", [Who,Why]), exit(killed); Any -> Wargs1 = sw:generic(Any, Display, Wargs), loop(Display, Wargs1, Fun) end.