From 3f71659aa84679ede50e55824770eab7269f8342 Mon Sep 17 00:00:00 2001 From: Raymond Hill Date: Sun, 25 Dec 2022 10:34:53 -0500 Subject: [PATCH] Work related to keyboard shortcuts for page reload Related issue: - https://github.com/uBlockOrigin/uBlock-issues/issues/896 Additionally, added the keyboard shortcuts to reload the current tab to the logger. This changes the prior behavior of reloading the logger content itself. --- src/js/logger-ui.js | 33 +++++++++++++++++++++++++++++---- src/js/popup-fenix.js | 27 ++++++++++++++++++++++----- 2 files changed, 51 insertions(+), 9 deletions(-) diff --git a/src/js/logger-ui.js b/src/js/logger-ui.js index d9324726b..caec4b3fd 100644 --- a/src/js/logger-ui.js +++ b/src/js/logger-ui.js @@ -1123,16 +1123,42 @@ const pageSelectorFromURLHash = (( ) => { /******************************************************************************/ -const reloadTab = function(ev) { +const reloadTab = function(bypassCache = false) { const tabId = tabIdFromPageSelector(); if ( tabId <= 0 ) { return; } messaging.send('loggerUI', { what: 'reloadTab', - tabId: tabId, - bypassCache: ev && (ev.ctrlKey || ev.metaKey || ev.shiftKey), + tabId, + bypassCache, }); }; +dom.on('#refresh', 'click', ev => { + reloadTab(ev.ctrlKey || ev.metaKey || ev.shiftKey); +}); + +dom.on(document, 'keydown', ev => { + if ( ev.isComposing ) { return; } + let bypassCache = false; + switch ( ev.key ) { + case 'F5': + bypassCache = ev.ctrlKey || ev.metaKey || ev.shiftKey; + break; + case 'r': + if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } + break; + case 'R': + if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } + bypassCache = true; + break; + default: + return; + } + reloadTab(bypassCache); + ev.preventDefault(); + ev.stopPropagation(); +}, { capture: true }); + /******************************************************************************/ /******************************************************************************/ @@ -2824,7 +2850,6 @@ dom.on(window, 'beforeunload', releaseView); /******************************************************************************/ dom.on('#pageSelector', 'change', pageSelectorChanged); -dom.on('#refresh', 'click', reloadTab); dom.on('#netInspector .vCompactToggler', 'click', toggleVCompactView); dom.on('#pause', 'click', pauseNetInspector); diff --git a/src/js/popup-fenix.js b/src/js/popup-fenix.js index 32a89a421..bfdff75e3 100644 --- a/src/js/popup-fenix.js +++ b/src/js/popup-fenix.js @@ -1065,13 +1065,13 @@ const setFirewallRuleHandler = function(ev) { /******************************************************************************/ -const reloadTab = function(ev) { +const reloadTab = function(bypassCache = false) { messaging.send('popupPanel', { what: 'reloadTab', tabId: popupData.tabId, url: popupData.pageURL, select: vAPI.webextFlavor.soup.has('mobile'), - bypassCache: ev.ctrlKey || ev.metaKey || ev.shiftKey, + bypassCache, }); // Polling will take care of refreshing the popup content @@ -1084,12 +1084,29 @@ const reloadTab = function(ev) { hashFromPopupData(true); }; -dom.on('#refresh', 'click', reloadTab); +dom.on('#refresh', 'click', ev => { + reloadTab(ev.ctrlKey || ev.metaKey || ev.shiftKey); +}); // https://github.com/uBlockOrigin/uBlock-issues/issues/672 dom.on(document, 'keydown', ev => { - if ( ev.code !== 'F5' ) { return; } - reloadTab(ev); + if ( ev.isComposing ) { return; } + let bypassCache = false; + switch ( ev.key ) { + case 'F5': + bypassCache = ev.ctrlKey || ev.metaKey || ev.shiftKey; + break; + case 'r': + if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } + break; + case 'R': + if ( (ev.ctrlKey || ev.metaKey) !== true ) { return; } + bypassCache = true; + break; + default: + return; + } + reloadTab(bypassCache); ev.preventDefault(); ev.stopPropagation(); }, { capture: true });