From bb064aa9cc5681283697da56c5ca9149bcc1e2d3 Mon Sep 17 00:00:00 2001 From: Alessandro Cosentino Date: Tue, 14 Jan 2014 10:34:21 +0100 Subject: activate shortcuts only when modifier keys are not pressed. fix #449 --- js/app/directives/itemshortcuts.coffee | 75 ++++++++++++++++++---------------- js/public/app.js | 50 ++++++++++++----------- 2 files changed, 65 insertions(+), 60 deletions(-) (limited to 'js') diff --git a/js/app/directives/itemshortcuts.coffee b/js/app/directives/itemshortcuts.coffee index e100b2dd2..49dc75b37 100644 --- a/js/app/directives/itemshortcuts.coffee +++ b/js/app/directives/itemshortcuts.coffee @@ -105,42 +105,45 @@ angular.module('News').directive 'itemShortcuts', ['$window', ($window) -> focused.is('checkbox') or focused.is('button')) - scrollArea = elm - # j or right or n - if e.keyCode == 74 or e.keyCode == 39 or e.keyCode == 78 - e.preventDefault() - jumpToNextItem(scrollArea) - - # k or left or p - else if e.keyCode == 75 or e.keyCode == 37 or e.keyCode == 80 - e.preventDefault() - jumpToPreviousItem(scrollArea) - - # u - else if e.keyCode == 85 - e.preventDefault() - keepUnreadCurrentItem(scrollArea) - - # e - else if e.keyCode == 69 - e.preventDefault() - expandCurrentItem(scrollArea) - - # s or i or l - else if e.keyCode == 73 or e.keyCode == 83 or e.keyCode == 76 - e.preventDefault() - starCurrentItem(scrollArea) - - # h - else if e.keyCode == 72 - e.preventDefault() - starCurrentItem(scrollArea) - jumpToNextItem(scrollArea) - - # o - else if e.keyCode == 79 - e.preventDefault() - openCurrentItem(scrollArea) + # activate shortcuts only if modifier keys are not pressed + if not(e.shiftKey or e.altKey or e.ctrlKey or e.metaKey) + + scrollArea = elm + # j or right or n + if e.keyCode == 74 or e.keyCode == 39 or e.keyCode == 78 + e.preventDefault() + jumpToNextItem(scrollArea) + + # k or left or p + else if e.keyCode == 75 or e.keyCode == 37 or e.keyCode == 80 + e.preventDefault() + jumpToPreviousItem(scrollArea) + + # u + else if e.keyCode == 85 + e.preventDefault() + keepUnreadCurrentItem(scrollArea) + + # e + else if e.keyCode == 69 + e.preventDefault() + expandCurrentItem(scrollArea) + + # s or i or l + else if e.keyCode == 73 or e.keyCode == 83 or e.keyCode == 76 + e.preventDefault() + starCurrentItem(scrollArea) + + # h + else if e.keyCode == 72 + e.preventDefault() + starCurrentItem(scrollArea) + jumpToNextItem(scrollArea) + + # o + else if e.keyCode == 79 + e.preventDefault() + openCurrentItem(scrollArea) ] diff --git a/js/public/app.js b/js/public/app.js index 5306dd0d8..f8002b608 100644 --- a/js/public/app.js +++ b/js/public/app.js @@ -2,7 +2,7 @@ /** * ownCloud News App - v0.0.1 * - * Copyright (c) 2013 - Bernhard Posselt + * Copyright (c) 2014 - Bernhard Posselt * * This file is licensed under the Affero General Public License version 3 or later. * See the COPYING file @@ -278,29 +278,31 @@ License along with this library. If not, see . var focused, scrollArea; focused = $(':focus'); if (!(focused.is('input') || focused.is('select') || focused.is('textarea') || focused.is('checkbox') || focused.is('button'))) { - scrollArea = elm; - if (e.keyCode === 74 || e.keyCode === 39 || e.keyCode === 78) { - e.preventDefault(); - return jumpToNextItem(scrollArea); - } else if (e.keyCode === 75 || e.keyCode === 37 || e.keyCode === 80) { - e.preventDefault(); - return jumpToPreviousItem(scrollArea); - } else if (e.keyCode === 85) { - e.preventDefault(); - return keepUnreadCurrentItem(scrollArea); - } else if (e.keyCode === 69) { - e.preventDefault(); - return expandCurrentItem(scrollArea); - } else if (e.keyCode === 73 || e.keyCode === 83 || e.keyCode === 76) { - e.preventDefault(); - return starCurrentItem(scrollArea); - } else if (e.keyCode === 72) { - e.preventDefault(); - starCurrentItem(scrollArea); - return jumpToNextItem(scrollArea); - } else if (e.keyCode === 79) { - e.preventDefault(); - return openCurrentItem(scrollArea); + if (!(e.shiftKey || e.altKey || e.ctrlKey || e.metaKey)) { + scrollArea = elm; + if (e.keyCode === 74 || e.keyCode === 39 || e.keyCode === 78) { + e.preventDefault(); + return jumpToNextItem(scrollArea); + } else if (e.keyCode === 75 || e.keyCode === 37 || e.keyCode === 80) { + e.preventDefault(); + return jumpToPreviousItem(scrollArea); + } else if (e.keyCode === 85) { + e.preventDefault(); + return keepUnreadCurrentItem(scrollArea); + } else if (e.keyCode === 69) { + e.preventDefault(); + return expandCurrentItem(scrollArea); + } else if (e.keyCode === 73 || e.keyCode === 83 || e.keyCode === 76) { + e.preventDefault(); + return starCurrentItem(scrollArea); + } else if (e.keyCode === 72) { + e.preventDefault(); + starCurrentItem(scrollArea); + return jumpToNextItem(scrollArea); + } else if (e.keyCode === 79) { + e.preventDefault(); + return openCurrentItem(scrollArea); + } } } }); -- cgit v1.2.3