@@ -64,7 +64,6 @@ function addClick(e, handler) {
6464
6565function removeClick(e, handler) {
6666 if (e.elm_click_trigger) {
67− e.style.pointerEvents = 'none';
6867 e.removeEventListener('click', e.elm_click_trigger);
6968 e.elm_click_trigger = null;
7069 e.elm_click_handler = null;
@@ -94,11 +93,14 @@ function addHover(e, handler) {
9493}
9594
9695function removeHover(e) {
96+ e.elm_hover_handler = null;
9797 if (e.elm_hover_over) {
9898 e.removeEventListener('mouseover', e.elm_hover_over);
99+ e.elm_hover_over = null;
99100 }
100101 if (e.elm_hover_out) {
101102 e.removeEventListener('mouseout', e.elm_hover_out);
103+ e.elm_hover_out = null;
102104 }
103105}
104106
@@ -419,8 +421,12 @@ function updateProps(node, curr, next) {
419421 }
420422 }
421423
424+ // update click and hover handlers
425+ var removed = false;
426+
422427 // update hover handlers
423428 if (nextProps.hover.ctor === '_Tuple0') {
429+ removed = true;
424430 removeHover(node);
425431 } else if (node.elm_hover_handler) {
426432 node.elm_hover_handler = nextProps.hover;
@@ -430,12 +436,21 @@ function updateProps(node, curr, next) {
430436
431437 // update click handlers
432438 if (nextProps.click.ctor === '_Tuple0') {
439+ removed = true;
433440 removeClick(node);
434441 } else if (node.elm_click_handler) {
435442 node.elm_click_handler = nextProps.click;
436443 } else {
437444 addClick(node, nextProps.click);
438445 }
446+
447+ // stop capturing clicks if
448+ if (removed
449+ && nextProps.hover.ctor === '_Tuple0'
450+ && nextProps.click.ctor === '_Tuple0')
451+ {
452+ node.style.pointerEvents = 'none';
453+ }
439454}
440455
441456return { render:render, update:update };