# HG changeset patch # User Ziv Scully # Date 1428430733 14400 # Node ID 25c94de06e3c725ffb75f47465aef84214657151 # Parent adb49db02af479bab525a80d1bc247675f0362c6 New mouse events oncontextmenu, onmouseenter, and onmouseleave. diff -r adb49db02af4 -r 25c94de06e3c lib/js/urweb.js --- a/lib/js/urweb.js Tue Mar 31 04:10:46 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 adb49db02af4 -r 25c94de06e3c lib/ur/basis.urs --- a/lib/ur/basis.urs Tue Mar 31 04:10:46 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 adb49db02af4 -r 25c94de06e3c src/settings.sml --- a/src/settings.sml Tue Mar 31 04:10:46 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 adb49db02af4 -r 25c94de06e3c tests/docevents.ur --- a/tests/docevents.ur Tue Mar 31 04:10:46 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. - +