diff --git a/ChangeLog b/ChangeLog index 15142b923..6d03c50df 100644 --- a/ChangeLog +++ b/ChangeLog @@ -11,6 +11,14 @@ (onCalendarSelectEvent): don't clear the selection if the contextual menu is going to appear. + * UI/WebServerResources/ContactsUI.js (onDocumentKeydown): + improved character key identification to fix a bug with some + browsers. + + * UI/WebServerResources/MailerUI.js (onDocumentKeydown): idem. + + * UI/WebServerResources/SchedulerUI.js (onDocumentKeydown): idem. + 2010-10-08 Wolfgang Sourdeau * SoObjects/Appointments/SOGoAppointmentFolder.m diff --git a/UI/WebServerResources/ContactsUI.js b/UI/WebServerResources/ContactsUI.js index c1533ae9f..d47dc77eb 100644 --- a/UI/WebServerResources/ContactsUI.js +++ b/UI/WebServerResources/ContactsUI.js @@ -1159,18 +1159,25 @@ function onWindowResize(event) { function onDocumentKeydown(event) { var target = Event.element(event); - if (target.tagName != "INPUT") - if (event.keyCode == Event.KEY_DELETE || - event.keyCode == Event.KEY_BACKSPACE && isMac()) { + if (target.tagName != "INPUT") { + var keyCode = event.keyCode; + if (!keyCode) { + keyCode = event.charCode; + if (keyCode == "a".charCodeAt(0)) { + keyCode = "A".charCodeAt(0); + } + } + if (keyCode == Event.KEY_DELETE || + keyCode == Event.KEY_BACKSPACE && isMac()) { onToolbarDeleteSelectedContacts(); Event.stop(event); } - else if (event.keyCode == Event.KEY_DOWN || - event.keyCode == Event.KEY_UP) { + else if (keyCode == Event.KEY_DOWN || + keyCode == Event.KEY_UP) { if (Contact.currentContact) { var row = $(Contact.currentContact); var nextRow; - if (event.keyCode == Event.KEY_DOWN) + if (keyCode == Event.KEY_DOWN) nextRow = row.next("tr"); else nextRow = row.previous("tr"); @@ -1198,10 +1205,11 @@ function onDocumentKeydown(event) { } } else if (((isMac() && event.metaKey == 1) || (!isMac() && event.ctrlKey == 1)) - && event.keyCode == 65) { // Ctrl-A + && keyCode == "A".charCodeAt(0)) { // Ctrl-A $("contactsList").selectAll(); Event.stop(event); } + } } /*function fixSearchFieldPosition () { diff --git a/UI/WebServerResources/MailerUI.js b/UI/WebServerResources/MailerUI.js index a62f5eb3f..5f3770e8b 100644 --- a/UI/WebServerResources/MailerUI.js +++ b/UI/WebServerResources/MailerUI.js @@ -319,17 +319,25 @@ function onUnload(event) { function onDocumentKeydown(event) { var target = Event.element(event); if (target.tagName != "INPUT") { - if (event.keyCode == Event.KEY_DELETE || - event.keyCode == Event.KEY_BACKSPACE && isMac()) { + var keyCode = event.keyCode; + if (!keyCode) { + keyCode = event.charCode; + if (keyCode == "a".charCodeAt(0)) { + keyCode = "A".charCodeAt(0); + } + } + + if (keyCode == Event.KEY_DELETE || + keyCode == Event.KEY_BACKSPACE && isMac()) { deleteSelectedMessages(); Event.stop(event); } - else if (event.keyCode == Event.KEY_DOWN || - event.keyCode == Event.KEY_UP) { + else if (keyCode == Event.KEY_DOWN || + keyCode == Event.KEY_UP) { if (Mailer.currentMessages[Mailer.currentMailbox]) { var row = $("row_" + Mailer.currentMessages[Mailer.currentMailbox]); var nextRow; - if (event.keyCode == Event.KEY_DOWN) + if (keyCode == Event.KEY_DOWN) nextRow = row.next("tr"); else nextRow = row.previous("tr"); @@ -358,7 +366,7 @@ function onDocumentKeydown(event) { } } else if (((isMac() && event.metaKey == 1) || (!isMac() && event.ctrlKey == 1)) - && event.keyCode == 65) { // Ctrl-A + && keyCode == "A".charCodeAt(0)) { // Ctrl-A $("messageListBody").down("TBODY").selectAll(); Event.stop(event); } diff --git a/UI/WebServerResources/SchedulerUI.js b/UI/WebServerResources/SchedulerUI.js index 01f620852..cc288ca56 100644 --- a/UI/WebServerResources/SchedulerUI.js +++ b/UI/WebServerResources/SchedulerUI.js @@ -2863,23 +2863,33 @@ function drawNowLine () { function onDocumentKeydown(event) { var target = Event.element(event); if (target.tagName != "INPUT") { - if (event.keyCode == Event.KEY_DELETE - || (event.keyCode == Event.KEY_BACKSPACE && isMac())) { + var keyCode = event.keyCode; + if (!keyCode) { + keyCode = event.charCode; + if (keyCode == "a".charCodeAt(0)) + keyCode = "A".charCodeAt(0); + else if (keyCode == "c".charCodeAt(0)) + keyCode = "C".charCodeAt(0); + else if (keyCode == "v".charCodeAt(0)) + keyCode = "V".charCodeAt(0); + } + if (keyCode == Event.KEY_DELETE + || (keyCode == Event.KEY_BACKSPACE && isMac())) { $("eventDialog").hide(); deleteEvent(); event.stop(); } else if (((isMac() && event.metaKey == 1) || (!isMac() && event.ctrlKey == 1)) - && event.keyCode == 65) { // Ctrl-A + && keyCode == "A".charCodeAt(0)) { // Ctrl-A onSelectAll(event); Event.stop(event); } else if (((isMac() && event.metaKey == 1) || (!isMac() && event.ctrlKey == 1)) - && event.keyCode == 67) { // Ctrl-C + && keyCode == "C".charCodeAt(0)) { // Ctrl-C copyEventToClipboard(); } else if (((isMac() && event.metaKey == 1) || (!isMac() && event.ctrlKey == 1)) - && event.keyCode == 86) { // Ctrl-V + && keyCode == "V".charCodeAt(0)) { // Ctrl-V copyEventFromClipboard(); } }