X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/918dd5679f893313688dc2033fb8f46bf8463c0e..26b42dbe975dd6c49590eb764879d710e64efbb1:/public/javascripts/menu.js diff --git a/public/javascripts/menu.js b/public/javascripts/menu.js index d4e8bb65a..5b4c3050e 100644 --- a/public/javascripts/menu.js +++ b/public/javascripts/menu.js @@ -10,16 +10,26 @@ function openMenu(anchor, menu) { }); } +/* + * Close a menu. + */ +function closeMenu(menu) { + clearTimeout(menu.timer); + menu.style.display = "none"; +} + /* * Callback called when the mouse enters a menu anchor. */ function enterMenuAnchor(event, anchor, menu, delay) { - clearTimeout(menu.timer); + if (!anchor.hasClassName("disabled")) { + clearTimeout(menu.timer); - if (delay > 0) { - menu.timer = setTimeout(function () { openMenu(anchor, menu) }, delay); - } else { - openMenu(event, menu); + if (delay > 0) { + menu.timer = setTimeout(function () { openMenu(anchor, menu) }, delay); + } else { + openMenu(event, menu); + } } } @@ -56,7 +66,9 @@ function createMenu(anchorid, menuid, delay) { var anchor = $(anchorid); var menu = $(menuid); + anchor.observe("mouseup", function (event) { closeMenu(menu) }); anchor.observe("mouseover", function (event) { enterMenuAnchor(anchor, anchor, menu, delay) }); anchor.observe("mouseout", function (event) { leaveMenuAnchor(event, anchor, menu) }); + menu.observe("mouseup", function (event) { closeMenu(menu) }); menu.observe("mouseout", function (event) { leaveMenu(event, anchor, menu) }); }