diff --git a/ChangeLog b/ChangeLog index da37fcb4f..d8ca2f025 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,16 @@ 2011-06-02 Francis Lachapelle + * UI/WebServerResources/generic.js (hideMenu): now fires a custom + event (contextmenu:hide) to properly define a callback function + when a contextual menu is hidden. + + * UI/WebServerResources/MailerUI.js (onFolderMenuClick): + registered the function onFolderMenuHide on the new event + "contextmenu:hide". This function was never called since it was + relying on an event never triggered ("hideMenu"). + + * UI/WebServerResources/ContactsUI.js (onContactContextMenu): idem. + * UI/WebServerResources/UIxPreferences.js (_setupEvents): reload main page when enabling or disabling mail threads. diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index e6425f28a..b89242493 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -225,10 +225,11 @@ function onContactContextMenu(event) { contacts = contactsList.getSelectedRows(); } - var menu = $("contactMenu"); - menu.observe("hideMenu", onContactContextMenuHide); - if (contactsList) + if (contactsList) { + var menu = $("contactMenu"); + menu.observe("contextmenu:hide", onContactContextMenuHide); popupMenu(event, "contactMenu", contacts); + } } function onContactContextMenuHide(event) { @@ -244,6 +245,8 @@ function onContactContextMenuHide(event) { $(nodes[i]).selectElement(); topNode.menuSelectedRows = null; } + + this.stopObserving("contextmenu:hide", onContactContextMenuHide); } function onFolderMenuHide(event) { diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index 76895db69..5b211ac17 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -1024,7 +1024,6 @@ function onMessageContextMenu(event) { selectedNodes = topNode.getSelectedRowsId(); } - menu.observe("hideMenu", onMessageContextMenuHide); if (selectedNodes.length > 1) popupMenu(event, "messagesListMenu", selectedNodes); else if (selectedNodes.length == 1) @@ -1033,21 +1032,6 @@ function onMessageContextMenu(event) { return false; } -function onMessageContextMenuHide(event) { - var topNode = $('messageList'); - - if (topNode.menuSelectedEntry) { - topNode.menuSelectedEntry.deselect(); - topNode.menuSelectedEntry = null; - } - if (topNode.menuSelectedRows) { - var nodes = topNode.menuSelectedRows; - for (var i = 0; i < nodes.length; i++) - nodes[i].selectElement(); - topNode.menuSelectedRows = null; - } -} - function onFolderMenuClick(event) { var onhide, menuName; @@ -1067,7 +1051,7 @@ function onFolderMenuClick(event) { } var menu = $(menuName); - menu.observe("hideMenu", onFolderMenuHide); + menu.on("contextmenu:hide", onFolderMenuHide); popupMenu(event, menuName, this.parentNode); var topNode = $("mailboxTree"); @@ -1090,6 +1074,8 @@ function onFolderMenuHide(event) { } if (topNode.selectedEntry) topNode.selectedEntry.selectElement(); + + this.stopObserving("contextmenu:hide", onFolderMenuHide); } function deleteCachedMailboxByType(type) { diff --git a/UI/WebServerResources/generic.js b/UI/WebServerResources/generic.js index 33133a380..617b16424 100644 --- a/UI/WebServerResources/generic.js +++ b/UI/WebServerResources/generic.js @@ -661,7 +661,7 @@ function popupMenu(event, menuId, target) { document.currentPopupMenu = popup; - $(document.body).observe("click", onBodyClickMenuHandler); + $(document.body).observe("mousedown", onBodyClickMenuHandler); } } @@ -727,6 +727,8 @@ function hideMenu(menuNode) { menuNode.parentMenu.submenu = null; menuNode.parentMenu = null; } + + Event.fire(menuNode, "contextmenu:hide"); } function onMenuEntryClick(event) { diff --git a/UI/WebServerResources/iefixes.css b/UI/WebServerResources/iefixes.css index d15884a26..dcc1dccc2 100644 --- a/UI/WebServerResources/iefixes.css +++ b/UI/WebServerResources/iefixes.css @@ -26,6 +26,9 @@ INPUT.button border-right: 1px solid #666; border-bottom: 1px solid #666; } +.menu LI.disabled:hover +{ background-color: #E6E7E6; } + UL#userList { top: 35px; }