# HG changeset patch # User Ziv Scully # Date 1428430733 14400 # Node ID e8863d9f8c5986056c7668592f5e770637c5ea22 # Parent e0843b2a636df70a9bc33a42a08e47270603450f New mouse events oncontextmenu, onmouseenter, and onmouseleave. diff -r e0843b2a636d -r e8863d9f8c59 lib/js/urweb.js --- a/lib/js/urweb.js Sun Mar 08 11:12:28 2015 -0400 +++ b/lib/js/urweb.js Tue Apr 07 14:18:53 2015 -0400 @@ -537,6 +537,10 @@ uw_handler("onclick", f); } +function uw_onContextmenu(f) { + uw_handler("oncontextmenu", f); +} + function uw_onDblclick(f) { uw_handler("ondblclick", f); } @@ -545,6 +549,14 @@ uw_handler("onmousedown", f); } +function uw_onMouseenter(f) { + uw_handler("onmouseenter", f); +} + +function uw_onMouseleave(f) { + uw_handler("onmouseleave", f); +} + function uw_onMousemove(f) { uw_handler("onmousemove", f); } diff -r e0843b2a636d -r e8863d9f8c59 lib/ur/basis.urs --- a/lib/ur/basis.urs Sun Mar 08 11:12:28 2015 -0400 +++ b/lib/ur/basis.urs Tue Apr 07 14:18:53 2015 -0400 @@ -833,7 +833,7 @@ Button : mouseButton } con mouseEvents = map (fn _ :: Unit => mouseEvent -> transaction unit) - [Onclick, Ondblclick, Onmousedown, Onmousemove, Onmouseout, Onmouseover, Onmouseup] + [Onclick, Oncontextmenu, Ondblclick, Onmousedown, Onmouseenter, Onmouseleave, Onmousemove, Onmouseout, Onmouseover, Onmouseup] type keyEvent = { KeyCode : int, CtrlKey : bool, ShiftKey : bool, AltKey : bool, MetaKey : bool } @@ -1120,10 +1120,13 @@ (* More standard document-level JavaScript handlers *) val onClick : (mouseEvent -> transaction unit) -> transaction unit val onDblclick : (mouseEvent -> transaction unit) -> transaction unit +val onContextmenu : (mouseEvent -> transaction unit) -> transaction unit val onKeydown : (keyEvent -> transaction unit) -> transaction unit val onKeypress : (keyEvent -> transaction unit) -> transaction unit val onKeyup : (keyEvent -> transaction unit) -> transaction unit val onMousedown : (mouseEvent -> transaction unit) -> transaction unit +val onMouseenter : (mouseEvent -> transaction unit) -> transaction unit +val onMouseleave : (mouseEvent -> transaction unit) -> transaction unit val onMousemove : (mouseEvent -> transaction unit) -> transaction unit val onMouseout : (mouseEvent -> transaction unit) -> transaction unit val onMouseover : (mouseEvent -> transaction unit) -> transaction unit diff -r e0843b2a636d -r e8863d9f8c59 src/settings.sml --- a/src/settings.sml Sun Mar 08 11:12:28 2015 -0400 +++ b/src/settings.sml Tue Apr 07 14:18:53 2015 -0400 @@ -176,10 +176,13 @@ "spawn", "onClick", "onDblclick", + "onContextmenu", "onKeydown", "onKeypress", "onKeyup", "onMousedown", + "onMouseenter", + "onMouseleave", "onMousemove", "onMouseout", "onMouseover", @@ -212,11 +215,14 @@ "mouseEvent", "keyEvent", "onClick", + "onContextmenu", "onDblclick", "onKeydown", "onKeypress", "onKeyup", "onMousedown", + "onMouseenter", + "onMouseleave", "onMousemove", "onMouseout", "onMouseover", @@ -349,11 +355,14 @@ ("onClick", "uw_onClick"), + ("onContextmenu", "uw_onContextmenu"), ("onDblclick", "uw_onDblclick"), ("onKeydown", "uw_onKeydown"), ("onKeypress", "uw_onKeypress"), ("onKeyup", "uw_onKeyup"), ("onMousedown", "uw_onMousedown"), + ("onMouseenter", "uw_onMouseenter"), + ("onMouseleave", "uw_onMouseleave"), ("onMousemove", "uw_onMousemove"), ("onMouseout", "uw_onMouseout"), ("onMouseover", "uw_onMouseover"), @@ -764,7 +773,7 @@ fun mangleSql s = if #name (currentDbms ()) = "mysql" then if !mangle then - "uw_" ^ allLower s + "uw_" ^ allLower s else allLower s else diff -r e0843b2a636d -r e8863d9f8c59 tests/docevents.ur --- a/tests/docevents.ur Sun Mar 08 11:12:28 2015 -0400 +++ b/tests/docevents.ur Tue Apr 07 14:18:53 2015 -0400 @@ -1,6 +1,7 @@ fun main () : transaction page = return - alert ("Keypress: " ^ show k))}> + alert "Double click"); + onContextmenu (fn _ => alert "Context menu"); + onKeypress (fn k => alert ("Keypress: " ^ show k.KeyCode))}> Nothing here. - +