diff --git a/ChangeLog b/ChangeLog index 21f0d34eb..aa3c0f813 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-05-31 Francis Lachapelle + * UI/WebServerResources/SchedulerUI.js (initCalendarSelector): use + events delegation in the calendars list. + * UI/WebServerResources/HTMLElement.js (selectElement): if element has no ID, keep track of it anyway. This fixes an issue when deleting attachments in the mail composition window. diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index 0fecbf8b8..a09fd3f6b 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -936,6 +936,7 @@ function configureAddressBooks() { if (contactFolders) { contactFolders.on("mousedown", onFolderSelectionChange); contactFolders.on("dblclick", onAddressBookModify); + contactFolders.on("selectstart", listRowMouseDownHandler); contactFolders.attachMenu("contactFoldersMenu"); lookupDeniedFolders(); diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 724167b6c..efa9b13f8 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -2478,15 +2478,15 @@ function initCalendarSelector() { selector.changeNotification = updateCalendarsList; var list = $("calendarList"); - list.multiselect = true; + list.on("mousedown", onCalendarSelectionChange); + list.on("dblclick", onCalendarModify); + list.on("selectstart", listRowMouseDownHandler); + list.attachMenu("calendarsMenu"); + var items = list.childNodesWithTag("li"); for (var i = 0; i < items.length; i++) { var input = items[i].childNodesWithTag("input")[0]; $(input).observe("click", updateCalendarStatus); - items[i].observe("mousedown", listRowMouseDownHandler); - items[i].observe("selectstart", listRowMouseDownHandler); - items[i].observe("click", onRowClick); - items[i].observe("dblclick", onCalendarModify); } var links = $("calendarSelectorButtons").childNodesWithTag("a"); @@ -2496,6 +2496,14 @@ function initCalendarSelector() { $(links[3]).observe("click", onCalendarRemove); } +function onCalendarSelectionChange(event) { + var target = Event.element(event); + if (target.tagName == 'SPAN') + target = target.parentNode; + + onRowClick(event, target); +} + function onCalendarModify(event) { var folders = $("calendarList"); var selected = folders.getSelectedNodes()[0]; @@ -2650,14 +2658,6 @@ function uploadCompleted(response) { $("uploadResults").show(); } -function setEventsOnCalendar(checkBox, li) { - li.observe("mousedown", listRowMouseDownHandler); - li.observe("selectstart", listRowMouseDownHandler); - li.observe("click", onRowClick); - li.observe("dblclick", onCalendarModify); - checkBox.observe("click", updateCalendarStatus); -} - function appendCalendar(folderName, folderPath) { var owner; @@ -2707,8 +2707,8 @@ function appendCalendar(folderName, folderPath) { // Check the checkbox (required for IE) li.getElementsByTagName("input")[0].checked = true; - // Register events (doesn't work with Safari) - setEventsOnCalendar($(checkBox), $(li)); + // Register event on checkbox + $(checkBox).on("click", updateCalendarStatus); var url = URLForFolderID(folderPath) + "/canAccessContent"; triggerAjaxRequest(url, calendarEntryCallback, folderPath); @@ -2971,7 +2971,6 @@ function initScheduler() { initCalendarSelector(); configureSearchField(); configureLists(); - $("calendarList").attachMenu("calendarsMenu"); $(document.body).observe("click", onBodyClickHandler); // Calendar import form $("uploadCancel").observe("click", hideCalendarImport); diff --git a/UI/WebServerResources/generic.css b/UI/WebServerResources/generic.css index 970005f89..ab675cca3 100644 --- a/UI/WebServerResources/generic.css +++ b/UI/WebServerResources/generic.css @@ -781,7 +781,9 @@ SPAN.caption DIV.tabsContainer { overflow: hidden; - padding: 0px 5px; } + padding: 0px 5px; + -moz-user-select: none; + -khtml-user-select: none; } DIV.tabsContainer > DIV.scrollToolbar { position: absolute;