@@ -64,7 +64,6 @@ function addClick(e, handler) {
65function removeClick(e, handler) {
65function removeClick(e, handler) {
66 if (e.elm_click_trigger) {
66 if (e.elm_click_trigger) {
67− e.style.pointerEvents = 'none';
68 e.removeEventListener('click', e.elm_click_trigger);
67 e.removeEventListener('click', e.elm_click_trigger);
69 e.elm_click_trigger = null;
68 e.elm_click_trigger = null;
70 e.elm_click_handler = null;
69 e.elm_click_handler = null;
@@ -94,11 +93,14 @@ function addHover(e, handler) {
96function removeHover(e) {
95function removeHover(e) {
96+ e.elm_hover_handler = null;
97 if (e.elm_hover_over) {
97 if (e.elm_hover_over) {
98 e.removeEventListener('mouseover', e.elm_hover_over);
98 e.removeEventListener('mouseover', e.elm_hover_over);
99+ e.elm_hover_over = null;
100 if (e.elm_hover_out) {
101 if (e.elm_hover_out) {
101 e.removeEventListener('mouseout', e.elm_hover_out);
102 e.removeEventListener('mouseout', e.elm_hover_out);
103+ e.elm_hover_out = null;
@@ -419,8 +421,12 @@ function updateProps(node, curr, next) {
424+ // update click and hover handlers
425+ var removed = false;
422 // update hover handlers
427 // update hover handlers
423 if (nextProps.hover.ctor === '_Tuple0') {
428 if (nextProps.hover.ctor === '_Tuple0') {
424 removeHover(node);
430 removeHover(node);
425 } else if (node.elm_hover_handler) {
431 } else if (node.elm_hover_handler) {
426 node.elm_hover_handler = nextProps.hover;
432 node.elm_hover_handler = nextProps.hover;
@@ -430,12 +436,21 @@ function updateProps(node, curr, next) {
431 // update click handlers
437 // update click handlers
432 if (nextProps.click.ctor === '_Tuple0') {
438 if (nextProps.click.ctor === '_Tuple0') {
433 removeClick(node);
440 removeClick(node);
434 } else if (node.elm_click_handler) {
441 } else if (node.elm_click_handler) {
435 node.elm_click_handler = nextProps.click;
442 node.elm_click_handler = nextProps.click;
437 addClick(node, nextProps.click);
444 addClick(node, nextProps.click);
447+ // stop capturing clicks if
449+ && nextProps.hover.ctor === '_Tuple0'
450+ && nextProps.click.ctor === '_Tuple0')
452+ node.style.pointerEvents = 'none';
441return { render:render, update:update };
456return { render:render, update:update };