From ccfa17f3eb5d1ab9b8cee6df860d3054d15418cc Mon Sep 17 00:00:00 2001 From: "Michael D. Lowis" Date: Tue, 5 Sep 2017 16:09:25 -0400 Subject: [PATCH] removed resize event in favor of Update event with width+height --- edit.ml | 7 +++---- lib/x11.ml | 14 +++++++++----- lib/x11_prims.c | 12 +++++------- 3 files changed, 17 insertions(+), 16 deletions(-) diff --git a/edit.ml b/edit.ml index 2c40b47..244938f 100644 --- a/edit.ml +++ b/edit.ml @@ -1,9 +1,8 @@ open X11 let () = - X11.make_window 640 480; - X11.show_window true; - X11.event_loop 50 (fun x -> - match x with + let win = X11.make_window 640 480 in + X11.show_window win true; + X11.event_loop 50 (function | Focus _ -> print_endline "focus" | KeyPress _ -> print_endline "keypress" | MouseClick _ -> print_endline "mouseclick" diff --git a/lib/x11.ml b/lib/x11.ml index 78b9ed2..7753f98 100644 --- a/lib/x11.ml +++ b/lib/x11.ml @@ -7,12 +7,12 @@ type xevent = | MouseRelease of { mods: int; btn: int; x: int; y: int } | MouseDrag of { mods: int; x: int; y: int } | Paste of { text: string } - | Resize of { height: int; width: int } + (*| Resize of { height: int; width: int }*) | Command of { commands: string array } | PipeClosed of { fd: int } | PipeWriteReady of { fd: int } | PipeReadReady of { fd: int } - | Update + | Update of { width: int; height: int } | Shutdown external connect : unit -> unit @@ -21,13 +21,13 @@ external connect : unit -> unit external disconnect : unit -> unit = "x11_disconnect" -external make_window : int -> int -> unit +external make_window : int -> int -> xwin = "x11_make_window" -external make_dialog : int -> int -> unit +external make_dialog : int -> int -> xwin = "x11_make_dialog" -external show_window : bool -> unit +external show_window : xwin -> bool -> unit = "x11_show_window" external event_loop : int -> (xevent -> unit) -> unit @@ -43,6 +43,10 @@ external prop_get : xwin -> xatom -> string = "x11_prop_get" (* to be implemented + +void x11_draw_rect(int color, int x, int y, int width, int height) +external draw_rect : int -> int -> int -> int -> int -> unit + external sel_set : xatom -> string -> unit = "x11_sel_set" external sel_fetch : xatom -> unit diff --git a/lib/x11_prims.c b/lib/x11_prims.c index d5e67c9..afab8e7 100644 --- a/lib/x11_prims.c +++ b/lib/x11_prims.c @@ -17,7 +17,6 @@ enum { TMouseRelease, TMouseDrag, TPaste, - TResize, TCommand, TPipeClosed, TPipeWriteReady, @@ -152,12 +151,12 @@ CAMLprim value x11_make_dialog(value height, value width) { CAMLreturn(Val_int(X.self)); } -CAMLprim value x11_show_window(value state) { - CAMLparam1(state); +CAMLprim value x11_show_window(value win, value state) { + CAMLparam2(win,state); if (Bool_val(state)) - XMapWindow(X.display, X.self); + XMapWindow(X.display, (Window)Int_val(win)); else - XUnmapWindow(X.display, X.self); + XUnmapWindow(X.display, (Window)Int_val(win)); CAMLreturn(Val_unit); } @@ -185,7 +184,7 @@ CAMLprim value x11_event_loop(value ms, value cbfn) { } if (X.running) { - caml_callback(cbfn, mkrecord(TUpdate, 0)); + caml_callback(cbfn, mkrecord(TUpdate, 2, X.width, X.height)); XCopyArea(X.display, X.pixmap, X.self, X.gc, 0, 0, X.width, X.height, 0, 0); } } @@ -372,7 +371,6 @@ static value ev_configure(XEvent* e) { X.height = e->xconfigure.height; X.pixmap = XCreatePixmap(X.display, X.self, X.width, X.height, X.depth); X.xft = XftDrawCreate(X.display, X.pixmap, X.visual, X.colormap); - event = mkrecord(TResize, 2, X.height, X.width); } return event; } -- 2.52.0