@@ -58,15 +58,27 @@ Elm.Native.Graphics.Input = function(elm) {
58 btn.elmHover = Render.render(model.hover);
58 btn.elmHover = Render.render(model.hover);
59 btn.elmDown = Render.render(model.down);
59 btn.elmDown = Render.render(model.down);
61− function replace(node) { return function() {
61+ function replace(node) {
62 if (node !== btn.firstChild) btn.replaceChild(node, btn.firstChild);
62 if (node !== btn.firstChild) btn.replaceChild(node, btn.firstChild);
66+ if (overCount++ > 0) return;
65− var hover = replace(btn.elmHover);
67+ replace(btn.elmHover);
70+ if (btn.contains(e.toElement || e.relatedTarget)) return;
75+ replace(btn.elmHover);
66− function up() { hover(); elm.notify(events.id, btn.elmEvent); }
76+ elm.notify(events.id, btn.elmEvent);
78+ function down() { replace(btn.elmDown); }
67− btn.addEventListener('mouseover', hover);
79+ btn.addEventListener('mouseover', over);
68− btn.addEventListener('mouseout' , replace(btn.elmUp));
80+ btn.addEventListener('mouseout' , out);
69− btn.addEventListener('mousedown', replace(btn.elmDown));
81+ btn.addEventListener('mousedown', down);
70 btn.addEventListener('mouseup' , up);
82 btn.addEventListener('mouseup' , up);
72 btn.appendChild(btn.elmUp);
84 btn.appendChild(btn.elmUp);