-
Notifications
You must be signed in to change notification settings - Fork 21
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Issue about default focus #5
Comments
Thanks for the bug report! I’ve never seen that behavior, even when testing on macOS. Which version are you on? I think my test box is on 10.12 or .13, both of which are old. But I wouldn’t think that would affect Chrome’s behavior much. Which version of Chrome are you on? It’s possible this is caused by a bad interaction with Vimium. If you turn it off (you can go into the Extensions page and click the toggle next to it, without uninstalling it), does this focus bug still happen? I’ll do some testing with it, too, though I’m out of town so it’ll be a bit delayed. |
macOS version: 10.14 I turned off all extensions, except QuicKey, but the focus bug still exist. Also I tested under Incognito mode with only QuicKey enabled and the issue remains the same. |
Thanks for the testing, I appreciate it! Just so I understand, if you select, say, the third tab in a window using QuicKey, what happens?
I’d been assuming result #1, but the screenshot looks maybe like #2. Do you see a difference between navigating to a previous tab using the CTRL-A shortcut vs pressing CTRL-Q, typing a tab name and then pressing enter to switch to it via the popup menu? They should be the same, but the two flows have slightly different code paths. |
I still can't reproduce it (it'll be several days before I can test on a Mac), but I have at least a theory of what might be causing it (though I've never seen it behave that way on Mac or Windows). I realized that my code for checking whether the tab you're focusing is in the current window or not has always been buggy, but it's never caused any issues for me. Basically, whenever you choose a tab to focus, it always also focuses the tab's window. It's supposed to do that only if the tab isn't in the current window. Conceptually, it's not crazy that focusing an already focused window could have some additional effect, though again I've never seen it. Do you have any accessibility features turned on in macOS, or any OS utilities that affect keyboard focus? It feels like something outside of Chrome is moving the focus, so I'm wondering if there's some utility that automatically focuses the first element in a window when the window is moved to the front. In the case of Chrome, I think that would be the first tab. I don't know how familiar you are with programming Chrome extensions, but if you wanted to try modifying a local copy of QuicKey, then commenting out these two lines may fix the issue: https://github.com/fwextensions/QuicKey/blob/master/src/js/background/recent-tabs.js#L425 https://github.com/fwextensions/QuicKey/blob/master/src/js/popup/app.js#L243 If you have more than one window open, commenting out these lines means switching to a tab in a background window won't focus that window, but if you just have one window, you'll avoid the unnecessary focus call. |
Also, I tried installing Vimium, but I can't reproduce the focus issues on Windows. After switching to a tab with QuicKey, the Vimium keys still work. |
The issue I described is the first case. I tested QuicKey on another two Mac notebook. One of them has the same problem of mine, the other one also has problem -- focus goes to the address bar. I did some more tests and found that switching between tabs in one window will cause the bug and switching to a tab in another window is ok. I'm not familiar with programming Chrome extensions, but I'd like to have a try :) |
Thanks for the further testing. Which versions of macOS are on those laptops? My bet is that something changed in a more recent version of macOS that causes the focus to change when you focus an already focused window. That sounds like either a bug in macOS or Chrome (most likely, Chrome hasn't caught up to this new behavior).
Interesting. Possibly this is due to focusing an already focused window while the popup menu is open, since that's not open when using the CTRL-A shortcut. Anyway, I think I have a workaround for this, so I'll create a new build and let you know how to test it. Might take a few days. |
Hi @fwextensions I simply changed the order of window focusing and tab activating and it worked as expected. I created a pull request and you can take a review. |
I just found that it works in that way, but I don't know why. After changed the updating order, I tried activating the tab, but not focusing the window and the bug appeared again. After some more testing I found that in order to avoid the bug, focusing window is essential and must be done before activating the tab.
No matter which window I am in, running above code in the |
Thanks for the PR! I added a comment. Yeah, To see the console output from the popup, you have to right-click in the popup and open devtools from there. Then you'll see the log calls from the popup code. That devtools window will get closed when the menu closes. It's a bit of a pain, so I also set up a |
I agree with your comment. Changing the order did solve the issue. It feels much better to use QuicKey now😄 |
Is this issue still waiting on #7 to be closed? I'm still experiencing the initial described issue. |
Also, a minor note, but the first tab does not get focused if the current tab is a "new tab" before I choose a tab to switch to. Steps:
Not sure how important this detail is though. |
When focusing a tab, focus the window before focusing the tab, which seems to avoid focus issues on macOS. In popups, call promisified update() methods in a chain instead of the non-callback versions. Remove code for opening options page after upgrade to 1.1.0. Check for error.lineno when tracking an exception, so we don't send undefineds.
I've pushed a new version that I think fixes this issue here: https://github.com/fwextensions/QuicKey/releases/download/v1.1.1/QuicKey.zip You can download that zip and load the extension locally if you'd like to test it. Let me know if you'd like instructions on running local extensions. |
Will the update be pushed to the Chrome store? I'd prefer just getting it that way. |
Yes, I'll push it to the store, but wanted to test it for a bit first. The Chrome store version will update automatically. |
Interestingly, I recreated something like this on Windows when updating the code. In the background page, which handles the tab navigation via the hotkeys, the tab and window were focused using the promisified API, while the popup was calling the So there does seem to be some subtle timing issues with focusing tabs and windows that I'd never run into before, and which I think became more apparent with new versions of macOS. |
@haokuixi, have you been able to try out this branch? The window is focused first, like in your PR, but the tab isn't focused until the window focus promise returns, which is how it works in the background page. So it should fix the issue, as you weren't seeing it when using the previous tab keyboard shortcut. |
I've published v1.1.1 to the webstore, which should fix this issue. Please let me know if you still see it after the extension updates. |
It works great. 👍 |
Squashed commit of the following: commit ee2c69a Author: John Dunning <fw@johndunning.com> Date: Sat Aug 31 17:03:51 2019 -0700 Update version to 1.1.1 Update releases, privacy policy and main home page. Don't focus current window when opening closed tab. Clean up .ignore file. Remove closed.svg, which is no longer used. commit 7879a9b Merge: 399ead1 07610f7 Author: John Dunning <fw@johndunning.com> Date: Sat Aug 31 14:12:56 2019 -0700 Merge branch 'bug/mac-focus-issue' into dev commit 07610f7 Author: John Dunning <fw@johndunning.com> Date: Sat Aug 31 14:07:59 2019 -0700 Change built test extension name commit adbc45a Author: John Dunning <fw@johndunning.com> Date: Sat Aug 24 17:18:26 2019 -0700 Fix issue #5 When focusing a tab, focus the window before focusing the tab, which seems to avoid focus issues on macOS. In popups, call promisified update() methods in a chain instead of the non-callback versions. Remove code for opening options page after upgrade to 1.1.0. Check for error.lineno when tracking an exception, so we don't send undefineds. commit 399ead1 Author: John Dunning <fw@johndunning.com> Date: Fri Aug 23 18:44:15 2019 -0700 Merge pull request #7 from haokuixi/master Fix focus issue commit ded0df9 Author: John Dunning <fw@johndunning.com> Date: Sun Jul 21 19:24:11 2019 -0700 Fix broken image paths commit 105d657 Author: John Dunning <fw@johndunning.com> Date: Sun Jun 9 23:20:50 2019 -0700 Update image paths on site Add history.svg to site. commit cab94e0 Author: John Dunning <fw@johndunning.com> Date: Sun Jun 9 20:11:13 2019 -0700 Update version to 1.1.0 Update releases/index.md. commit 1a07e8b Author: John Dunning <fw@johndunning.com> Date: Sun Jun 9 19:23:09 2019 -0700 Pass event.error to Tracker.exception() instead of event from the global error handler Check for tab.windowId before calling chrome.windows.update(). commit 2a68176 Author: John Dunning <fw@johndunning.com> Date: Sun Jun 9 13:40:15 2019 -0700 Check for error.stack before trying to use it. Wrap Tracker.exception() in a try/catch. Change decodeUriComponent failure to a log instead of an error. commit 52e71c2 Author: John Dunning <fw@johndunning.com> Date: Fri Jun 7 19:37:08 2019 -0700 Load error-handler.js before other scripts Retry if global require() is not available yet so we can load before RequireJS. Use a single string for logging errors, since the extensions page only lists the first argument to console.error(). Check runtime.lastError in init.js to avoid errors on extension page. Make global DEBUG a var instead of const, so it can be changed via the console. commit 605c02b Author: John Dunning <fw@johndunning.com> Date: Sun Jun 2 17:50:14 2019 -0700 Add timestamps to unhandled error messages commit 9e6b712 Author: John Dunning <fw@johndunning.com> Date: Sun Jun 2 16:05:23 2019 -0700 Fix build-popup.js script Update the props passed to <App /> to be the latest in build-popup.js. Add a noop chrome.extension.getBackgroundPage() to mock/cp.js, along with methods for getting commands. Update mock/popup.html to match the latest HTML. commit 12c0ab0 Author: John Dunning <fw@johndunning.com> Date: Sun Jun 2 15:13:02 2019 -0700 Remove object spread operator in tracker.js The esprima parser can't handle it. Throw an exception in the Tracker constructor if no id is supplied. Use shorthand properties in settings.js. commit 839db72 Author: John Dunning <fw@johndunning.com> Date: Sat Jun 1 20:06:47 2019 -0700 Fix Tracker to work if analytics.js loads after it's created Once the local ga was set, it was never updated, so if the GA file loaded slowly, events would never fire. Add timeout so that if the GA code never loads, the tracker will clear the queue and disable itself, so the queue doesn't grow forever. Refactor calling the ga object in Tracker. Change Tracker constructor to take an object instead of params. Change default tracker name to t0. commit b7c76b5 Author: John Dunning <fw@johndunning.com> Date: Mon May 27 20:13:51 2019 -0700 Track whether a recent tab is navigated to while the icon is inverted Add ability to send a label in Tracker.event(). commit 32a9ff4 Author: John Dunning <fw@johndunning.com> Date: Mon May 27 19:16:53 2019 -0700 Update releases/index.md Add subheads to release sections. Remove unneeded error handler from background.js. Change how state is handled in AppContainer. Update closed tab screenshot. commit a0ddbe8 Author: John Dunning <fw@johndunning.com> Date: Sat May 25 18:36:35 2019 -0700 Add error-handler to built HTML files Use babel to copy error-handler.js to common/. Add it to src/popup.html. commit d1b0e1a Merge: 0967263 7cd9b2b Author: John Dunning <fw@johndunning.com> Date: Tue May 21 19:10:08 2019 -0700 Merge branch 'feature/error-handler' into dev commit 7cd9b2b Author: John Dunning <fw@johndunning.com> Date: Tue May 21 15:34:06 2019 -0700 Fire events for exceptions cached before the handler inits Wrap tracker.exception() in try/catch. commit b5493f5 Author: John Dunning <fw@johndunning.com> Date: Sun May 19 17:10:58 2019 -0700 Add error-handler.js to background.html and options.html Clean up tracker.js. Support strings in tracker.exception(). commit 0967263 Merge: d4d0fa5 f52ca82 Author: John Dunning <fw@johndunning.com> Date: Sat May 18 19:40:15 2019 -0700 Merge branch 'feature/validate-storage' into dev commit f52ca82 Author: John Dunning <fw@johndunning.com> Date: Sat May 18 19:26:19 2019 -0700 Add version number to confirmation message commit 92da145 Author: John Dunning <fw@johndunning.com> Date: Sat May 18 19:09:36 2019 -0700 Handle onInstalled in the promise chain after setting lastUsedVersion The handler was always seeing an empty lastUsedVersion because it happened before the storage.set() task ran. Fix error when moving tabs, which was caused by not switching a remaining self to this. Update QK Test to 0.0.16. commit e2d9dc4 Author: John Dunning <fw@johndunning.com> Date: Fri May 17 15:38:41 2019 -0700 Validate required keys are on stored data after loading it Reverse order of params returned from storage updaters. Clean up update storage flow. Fire event when validation fails. Handle non-strings better in areShortcutsIdentical(). Add objects-have-same-keys.js module. Remove text-orig.js, which shouldn't have been committed. commit d4d0fa5 Author: John Dunning <fw@johndunning.com> Date: Mon May 13 11:53:45 2019 -0700 Fix font size of search field commit cd62291 Author: John Dunning <fw@johndunning.com> Date: Sun May 12 18:56:57 2019 -0700 Add support page Add link to support page from options and to website and Chrome store description. Tweak h2 spacing on options page. commit fffda19 Author: John Dunning <fw@johndunning.com> Date: Sun May 12 16:40:07 2019 -0700 Fix bugs in tab move command commit c53c89c Author: John Dunning <fw@johndunning.com> Date: Sat May 11 20:36:35 2019 -0700 Open the Options page when the extension updates to 1.1.10 Squashed commit of the following: commit 66d06f9 Author: John Dunning <fw@johndunning.com> Date: Sat May 11 20:35:24 2019 -0700 Send an event when an upgrade causes options to open Update qktest version to 0.0.11. commit 99d4cb2 Author: John Dunning <fw@johndunning.com> Date: Sat May 11 20:16:16 2019 -0700 Add grunt pack:test command Tweak background and position of upgrade message. Get rid of pack-test command. Update qktest to 0.0.9. commit 9017d2b Author: John Dunning <fw@johndunning.com> Date: Sat May 11 19:24:58 2019 -0700 Open options page when extension is upgraded to 1.1.0 Show a message at the top of the options page explaining what's new when there's an update param. Don't set lastUsedVersion in the storage updater to the current version, so the background page can detect it. Clean up how the onInstalled handler resolves the promise. Fix the QuicKey icon positioning next to the h1. commit 72edbcf Author: John Dunning <fw@johndunning.com> Date: Sat May 11 13:58:37 2019 -0700 Convert event handlers to arrow functions Convert vars to lets. commit bc0c582 Author: John Dunning <fw@johndunning.com> Date: Sat May 11 12:35:26 2019 -0700 Add grunt tasks for publishing to the web store Squashed commit of the following: commit 6beffe8 Author: John Dunning <fw@johndunning.com> Date: Fri May 10 19:56:30 2019 -0700 Require retyping the name of the package to upload it Update qktest version to 0.0.7. commit f8702a3 Author: John Dunning <fw@johndunning.com> Date: Fri May 10 18:27:54 2019 -0700 Refactor tasks to use targets Avoid duplicating tasks for quickey vs. qktest. Add confirmation step before uploading built package. Clean the full out directory before building. Separate the grunt config into a const so it's accessible. Add grunt-confirm and load-grunt-tasks modules. Update qktest version to 0.0.6. Add keys/ do .gitignore. commit d7496d6 Author: John Dunning <fw@johndunning.com> Date: Wed May 8 09:57:21 2019 -0700 Add task to publish QK Test Add chrome-webstore-upload package. commit 3348d7c Author: John Dunning <fw@johndunning.com> Date: Sat May 4 18:49:54 2019 -0700 Add grunt commands for building QK Test Refactor Gruntfile.js. Add chrome-webstore-upload and deepmerge. commit 80730df Author: John Dunning <fw@johndunning.com> Date: Sat May 4 16:53:17 2019 -0700 Update docs commit 1ac123b Author: John Dunning <fw@johndunning.com> Date: Sat May 4 13:15:41 2019 -0700 Move production files to build/prod Clean up .gitignore to just ignore all of build/out. Copy files from prod/ to out/. commit 308a3f5 Merge: 7f6624c 0ef327e Author: John Dunning <fw@johndunning.com> Date: Sat May 4 12:40:54 2019 -0700 Merge branch 'master' into dev commit 7f6624c Author: John Dunning <fw@johndunning.com> Date: Sat May 4 12:26:19 2019 -0700 Clean up navigate shortcut picker creation Add an error message for pressing a modifier key with the navigate key. commit aeed623 Author: John Dunning <fw@johndunning.com> Date: Sat May 4 11:49:23 2019 -0700 Update packages to remove vulnerabilities Squashed commit of the following: commit a374bb095ebea7de6bfd0aa3306d311a23c19416 Author: John Dunning <fw@johndunning.com> Date: Sat May 4 11:47:19 2019 -0700 Update modules to remove vulnerabilities commit 1ad614a Author: John Dunning <fw@johndunning.com> Date: Sat Apr 27 22:56:58 2019 -0700 Update packages to remove vulnerabilities Fix Gruntfile.js to not copy options.html from src, since we already have a checked in build version. commit caedfe1 Author: John Dunning <fw@johndunning.com> Date: Sat Apr 27 19:50:15 2019 -0700 Add Options page Offer options for space and esc behavior in search box, whether to include closed tabs, and customizable keyboard shortcuts. Squashed commit of the following: commit e13cfa6 Author: John Dunning <fw@johndunning.com> Date: Sat Apr 27 19:46:38 2019 -0700 Fix missing history.svg icon Don't use arguments in the URL scoring function in score-items.js, which should be a bit faster. Use ...arguments in tracker.js. commit b2cd729 Merge: adae9c5 24564ab Author: John Dunning <fw@johndunning.com> Date: Sat Apr 27 18:22:34 2019 -0700 Merge branch 'feature/custom-keyboard-shortcuts' of github.com:fwextensions/QuicKey into feature/custom-keyboard-shortcuts commit adae9c5 Author: John Dunning <fw@johndunning.com> Date: Sat Apr 27 18:22:03 2019 -0700 Merge feature/babel Squashed commit of the following: commit 24564ab Author: John Dunning <fw@johndunning.com> Date: Wed Apr 24 10:56:30 2019 -0700 Fix size of URL text commit 6d7c0dc Author: John Dunning <fw@johndunning.com> Date: Wed Apr 24 10:46:00 2019 -0700 Get rid of dangerouslySetInnerHTML in MatchedString commit f64d672 Author: John Dunning <fw@johndunning.com> Date: Tue Apr 23 19:35:35 2019 -0700 Start using ES6 where needed Make 51 the minimum version, to avoid transpiling array destructuring (whicb should be available in Chrome 49). Use computed properties in getDefaultSettings() and the popup keyboard handler. Add note about incognito icon to options screen. Remove fromPairs() from lodash build, which is no longer needed. Remove old options.js file. commit 79c0b37 Author: John Dunning <fw@johndunning.com> Date: Mon Apr 22 19:41:15 2019 -0700 Use babel to minify almond and init Be more stringent in filtering out comments. Clean up Gruntfile.js. Remove grunt-uglify. Update grunt-sync. commit 2f414a4 Author: John Dunning <fw@johndunning.com> Date: Mon Apr 22 18:27:34 2019 -0700 Minify code with babel-minify Fix long-standing bug where matchingItems was getting set as global. Add minify preset. Add core-js 3.0. Preserve license comments with custom function. Change minimum Chrome version to 49, which has destructuring. commit 1f5693e Author: John Dunning <fw@johndunning.com> Date: Sun Apr 21 23:07:30 2019 -0700 Add babel for transpilation commit 24564ab Author: John Dunning <fw@johndunning.com> Date: Wed Apr 24 10:56:30 2019 -0700 Fix size of URL text commit 6d7c0dc Author: John Dunning <fw@johndunning.com> Date: Wed Apr 24 10:46:00 2019 -0700 Get rid of dangerouslySetInnerHTML in MatchedString commit f64d672 Author: John Dunning <fw@johndunning.com> Date: Tue Apr 23 19:35:35 2019 -0700 Start using ES6 where needed Make 51 the minimum version, to avoid transpiling array destructuring (whicb should be available in Chrome 49). Use computed properties in getDefaultSettings() and the popup keyboard handler. Add note about incognito icon to options screen. Remove fromPairs() from lodash build, which is no longer needed. Remove old options.js file. commit 79c0b37 Author: John Dunning <fw@johndunning.com> Date: Mon Apr 22 19:41:15 2019 -0700 Use babel to minify almond and init Be more stringent in filtering out comments. Clean up Gruntfile.js. Remove grunt-uglify. Update grunt-sync. commit 2f414a4 Author: John Dunning <fw@johndunning.com> Date: Mon Apr 22 18:27:34 2019 -0700 Minify code with babel-minify Fix long-standing bug where matchingItems was getting set as global. Add minify preset. Add core-js 3.0. Preserve license comments with custom function. Change minimum Chrome version to 49, which has destructuring. commit 1f5693e Author: John Dunning <fw@johndunning.com> Date: Sun Apr 21 23:07:30 2019 -0700 Add babel for transpilation commit 7f715fb Author: John Dunning <fw@johndunning.com> Date: Sun Apr 21 17:01:18 2019 -0700 Update docs Add info about the Options page. Re-enable the install button and have it just open a tab to the Chrome Store. commit 07fc330 Author: John Dunning <fw@johndunning.com> Date: Sun Apr 21 15:44:06 2019 -0700 Add option to not include closed tabs in the search results Update storage version to 6. Add lastUsedVersion and includeClosedTabs keys to storage. Use the settings key constants in getDefaultSettings(). Add default onChange prop to Controls. Add tooltip to the shift enter keyboard shortcut. Force the value to be a string when tracking the setting changed event, to avoid errors. Pass in the version to the storage updaters so they can just increment that when passing the new version back. commit f9291f2 Author: John Dunning <fw@johndunning.com> Date: Sun Apr 21 14:14:12 2019 -0700 Use shared() with recent-tabs.js to avoid passing it in as a prop Change shared() to allow the init value to not be a function. Make the init functions anonymous. commit 867ba9b Author: John Dunning <fw@johndunning.com> Date: Sat Apr 20 12:22:11 2019 -0700 Add checkboxes for including closed tabs Add ControlGroup component. Tweak checkbox styling. commit 8468bfa Author: John Dunning <fw@johndunning.com> Date: Fri Apr 19 15:59:08 2019 -0700 Tweak shortcut picker error on Mac commit 7be4e7c Author: John Dunning <fw@johndunning.com> Date: Fri Apr 19 10:30:35 2019 -0700 Add common/base module for shared code Saves 370K of duplicated code. Rename lib/react-common to common/react. Add common/base module to contain most of the shared modules. Copy rjs/build.txt to build/. Remove old module config code. commit 46df233 Author: John Dunning <fw@johndunning.com> Date: Thu Apr 18 15:01:40 2019 -0700 Move React-related files to react-common module Don't include almond in every module. Instead, create one minified copy and load it explicitly in the HTML. Add lib/react-common.js to require the React modules. Add build/out/options.html. Copy the built lib/react-common module from rjs/ to out/. Remove options.html from .gitignore. commit 7ca3c7b Author: John Dunning <fw@johndunning.com> Date: Wed Apr 17 20:01:44 2019 -0700 Build the three modules using one requirejs config Add rjs to .gitignore. commit 46a15e5 Author: John Dunning <fw@johndunning.com> Date: Tue Apr 16 19:13:56 2019 -0700 Add config for creating background, popup and options modules commit 529ab18 Author: John Dunning <fw@johndunning.com> Date: Sun Apr 14 17:43:23 2019 -0700 Listen for the correct MRU modifier key Add the popupModifierEventName to settings, so the popup can listen for it. Show Mac modifier chars in the minimum modifier error message on Mac. commit 52b29a8 Author: John Dunning <fw@johndunning.com> Date: Sat Apr 13 19:08:43 2019 -0700 Fix using an existing shortcut not clearing it from another picker Refactor key-related constants into key-constants.js. Fix changing the shortcut picker props not causing it to show the new shortcut. Add are-shortcuts-identical.js to compare shortcut strings. commit aa21673 Author: John Dunning <fw@johndunning.com> Date: Sat Apr 13 18:19:15 2019 -0700 Fix flicker to old shortcut when new one is pressed Add some kludgy state to the shortcut picker to use the pressedKeys array to render if it's a valid shortcut. commit d2a8d33 Author: John Dunning <fw@johndunning.com> Date: Sat Apr 13 16:44:53 2019 -0700 Tweak size of radio buttons Fix spacing in options.css. commit 0540343 Author: John Dunning <fw@johndunning.com> Date: Fri Apr 12 19:31:07 2019 -0700 Use a history icon for closed tabs Make closed tabs lighter than suspended ones. commit 7282862 Author: John Dunning <fw@johndunning.com> Date: Fri Apr 12 15:35:13 2019 -0700 Use strikethrough on closed tab items Make closed tabs lighter. Don't put the suspended class on closed items. Tweak radio button size to make the pixels more even. Use percentages to center the radio button indicator. commit 9b70dac Author: John Dunning <fw@johndunning.com> Date: Thu Apr 11 11:18:41 2019 -0700 Fix clearing identical keyboard shortcuts Use the actual MRU key when handling keys that were captured during init. Extract the popup key and modifiers in settings module, so other modules don't have to replicate that. commit 4f1ba88 Author: John Dunning <fw@johndunning.com> Date: Wed Apr 10 20:16:51 2019 -0700 Add options/main.js to build Add alert icon and red color to error message. Add error about including at least ctrl or alt. Uppercase DOCTYPE. commit af86761 Author: John Dunning <fw@johndunning.com> Date: Sun Apr 7 17:27:13 2019 -0700 Move key validation into a validate() function prop Get rid of allowedModifiers, illegalCharacters, etc. regexes. Add optional error message to picker. Leave function keys uppercase. Don't repeatedly process the keydown while it repeats. Add screenshot of the Chrome shortcuts section of options. commit 87f6fd4 Author: John Dunning <fw@johndunning.com> Date: Sun Mar 24 11:55:06 2019 -0700 Fix resetting keyboard shortcuts Rename handle-keys to popup-shortcuts.js. commit 2db0f45 Author: John Dunning <fw@johndunning.com> Date: Sat Mar 23 20:23:24 2019 -0700 Use customized keyboard shortcuts in popup Handle space behavior setting. Add update() method to handle-keys.js. Add getDefaults() to settings module. Add fromPairs() to lodash. Rename navigateDown shortcut. commit dfb0540 Author: John Dunning <fw@johndunning.com> Date: Fri Mar 22 17:17:05 2019 -0700 Add Chrome shortcuts to output of settings.get() Add keyboard shortcut IDs to constants.js and use in getDefaultSettings. Use shortcut IDs in keyboard-shortcuts.js. Move get-chrome-shortcuts.js to /background. commit d78961f Author: John Dunning <fw@johndunning.com> Date: Fri Mar 22 12:02:29 2019 -0700 Add esc behavior setting handling into popup/app.js Get current esc behavior setting from settings module. Separate settings constants into constants.js. Use constants to set up the radio buttons. commit 6aa2b2b Author: John Dunning <fw@johndunning.com> Date: Sat Mar 16 15:58:33 2019 -0700 Blur a focused shortcut picker when clearing another Tweak ctrl-tab page text. commit ff4af1c Author: John Dunning <fw@johndunning.com> Date: Sat Mar 16 13:51:04 2019 -0700 Refactor settings handling into settings.js OptionsAppContainer doesn't access storage now. Enable calling storage.get() to get the data in a then handler instead of passing in a callback. Clean up storage. Add settings.js. commit fa1c4ce Author: John Dunning <fw@johndunning.com> Date: Fri Mar 15 19:01:06 2019 -0700 Ignore Windows key presses in shortcut picker commit bb60669 Author: John Dunning <fw@johndunning.com> Date: Mon Mar 11 19:19:44 2019 -0700 Fix regex for Mac Chrome shortcuts commit 74b3566 Author: John Dunning <fw@johndunning.com> Date: Sun Mar 10 20:02:45 2019 -0700 Refactor getting Chrome shortcuts and local storage into app-container.js Save the settings changes in the local storage. Add support for passing a this arg to storage.get/set. Remove shortcut-defaults.js. commit 0b4c907 Author: John Dunning <fw@johndunning.com> Date: Sat Mar 9 19:29:56 2019 -0800 Create a single instance of quickey-storage in the background tab using shared.js Require the popup and options trackers instead of getting them from the background page. Use shared with page-trackers.js and cp.js. Add shared.js. Remove background globals of the popup and options trackers. commit f4a1078 Author: John Dunning <fw@johndunning.com> Date: Sat Mar 9 17:01:21 2019 -0800 Refactor Chrome shortcut handling into get-shortcuts.js Refactor default settings into get-default-settings.js so it can be called from the OptionsApp as well. Remove defaults and convertChromeShorts() from keyboard-shortcuts.js. commit 750c3aa Author: John Dunning <fw@johndunning.com> Date: Sat Mar 9 14:56:57 2019 -0800 Store shortcuts under data.settings in storage Support more Mac keyboard shortcuts, where the arrow keys are just single character symbols. Fix the closeTab and copyTitleURL shortcuts on Mac. Add some bold text to the shortcut labels. Refactor default keyboard shortcuts into shortcut-defaults.js. Remove special options/require-config.js. Pass the platform and settings into OptionsApp. commit 879d8dc Author: John Dunning <fw@johndunning.com> Date: Sun Mar 3 15:17:41 2019 -0800 Update storage to version 5 with keyboard shortcuts Use mod instead of checking IsMac when showing ctrl vs. cmd. Remove "shortcut" from the shortcut setting names. commit 6b43f5d Author: John Dunning <fw@johndunning.com> Date: Sat Mar 2 14:34:28 2019 -0800 Support how Chrome returns Mac keyboard shortcuts Use single character modifiers on Mac. Support custom placeholder text in ShortcutPicker. commit ebf02e1 Author: John Dunning <fw@johndunning.com> Date: Sun Feb 24 17:10:25 2019 -0800 Refactor Key component Support more keys in <Key>, like page up/down, arrow keys, insert, etc. Convert the strings used for saving Chrome keyboard shortcuts to the same strings used in key codes. Change .char, .modifier, etc. into generic width classes. Rearrange Segoe fonts in font stack so left/right arrow emojis aren't used. Add key.js. Remove keys.js. commit ca9f0b2 Author: John Dunning <fw@johndunning.com> Date: Sat Feb 16 18:55:29 2019 -0800 Add support for filtering illegal chars to ShortcutPicker Get Chrome browser action shortcut and use that to control which chars are allowed in the navigateDown shortcut. Turn navigateDown shortcut label into a function so it can change based on the Chrome shortcut. Rename shortcut IDs to start with "shortcut". Rename shortcuts.js to keyboard-shortcuts.js. commit 962cddf Author: John Dunning <fw@johndunning.com> Date: Sat Feb 16 17:05:24 2019 -0800 Send GA events from options page Add buttons to reset the shortcuts to the defaults and open ctrl-tab page. Support showing tab key in Chrome shortcuts. Tweak ctrl-tab page. Make logo higher res. commit 839f3da Author: John Dunning <fw@johndunning.com> Date: Sun Feb 10 17:44:23 2019 -0800 Clear other keyboard shortcuts if the new one is identical Add default keys to shortcuts.js and use them in getInitialState(). Use OS-specific modifier strings in the returned shortcuts. Make shortcut picker wide enough for 4 keys. commit 754f850 Author: John Dunning <fw@johndunning.com> Date: Sat Feb 9 17:03:47 2019 -0800 Enable ShortcutPicker to allow or require certain modifiers Enable clicking anywhere on Chrome shortcuts area to open the shortcuts page. Add info about incognito windows and a button to open extension details tab. Add createEmptyKeysArray() and getDefaultProps() methods. Convert Chrome shortcuts in main.js and pass them in as props to OptionsApp. Remove shortcut-setting.js and create the markup in options/app.js. Set a fixed width on the app so paragraphs wrap. Move the large key font-size to .shortcut-display instead of the picker, so the picker can be specified in normal-sized ems. commit cf757d4 Author: John Dunning <fw@johndunning.com> Date: Sat Feb 9 12:43:47 2019 -0800 Wrap shortcut controls in list items Wrap labels in spans. Re-render options app when page is focused, so the Chrome keyboard shortcuts are updated to the latest. commit c18ff77 Author: John Dunning <fw@johndunning.com> Date: Sun Feb 3 19:23:18 2019 -0800 Show Chrome keyboard shortcuts in options Add button to open Chrome keyboard shortcuts page, passed in from main.js. Refactor shortcut config into shortcuts.js. commit d058d6f Author: John Dunning <fw@johndunning.com> Date: Sat Feb 2 17:26:29 2019 -0800 Use radio buttons for the space key behavior Change manifest to use a separate tab for options. Add label to RadioGroup. Indent radio button elements. Add Esc key component. commit 9e9285e Author: John Dunning <fw@johndunning.com> Date: Sat Feb 2 14:54:46 2019 -0800 Add checkbox and radio button components Show uncustomizable, disabled keyboard shortcuts. Add enter key. Clean up header formatting. commit 21d8562 Author: John Dunning <fw@johndunning.com> Date: Sun Jan 27 19:14:34 2019 -0800 Prevent certain modifiers in different shortcut pickers commit db9dbd1 Author: John Dunning <fw@johndunning.com> Date: Sun Jan 27 18:48:26 2019 -0800 Add other shortcuts Change keys to <kbd> element. Center contents on page. Change root to a section. Tweak chrome-store-description.txt. commit 38748c4 Author: John Dunning <fw@johndunning.com> Date: Sat Jan 26 19:21:17 2019 -0800 Fix clearing the shortcut on clicking the X commit a586f4c Author: John Dunning <fw@johndunning.com> Date: Sat Jan 26 19:00:37 2019 -0800 Create ShortcutSetting component with label Add onChange handler to ShortcutPicker. Store current shortcuts in OptionsApp state. Clean up shortcut picker rendering in the app. Rename event handlers. commit 996793d Author: John Dunning <fw@johndunning.com> Date: Sat Jan 26 16:22:54 2019 -0800 Save shortcut when single char is pressed Separate saved shortcut from pressed keys. Limit keys to single chars and function keys. Cancel shortcut on esc key. Add clear button and placeholder. Add hover state. Clean up CSS. commit 6e045be Author: John Dunning <fw@johndunning.com> Date: Mon Jan 21 18:48:00 2019 -0800 Handle pressed keys in ShortcutPicker Refactor key rendering to Shortcut component. Add options/require-config.js and text-orig.js, which should be temporary. commit 15a5dd5 Author: John Dunning <fw@johndunning.com> Date: Sun Jan 20 18:05:10 2019 -0800 Create ShortcutPicker component Switch to div instead of button for keys. commit 5d09b74 Author: John Dunning <fw@johndunning.com> Date: Sun Jan 20 15:57:38 2019 -0800 Add React to Options page Add app.js, keys.js, main.js for showing options UI. commit d842873 Author: John Dunning <fw@johndunning.com> Date: Sat Jan 12 18:33:04 2019 -0800 Add styling for keycaps Add options.css. Fix domtype in popup.html. commit f333fd1 Author: John Dunning <fw@johndunning.com> Date: Sat Jan 12 17:21:09 2019 -0800 Tweak description text commit 4d4bf32 Merge: 95d8e93 a1b47f1 Author: John Dunning <fw@johndunning.com> Date: Sun Jan 6 16:21:39 2019 -0800 Merge branch 'feature/intl-keyboards' into dev commit a1b47f1 Author: John Dunning <fw@johndunning.com> Date: Sun Jan 6 15:53:33 2019 -0800 Switch to var in for loop instead of let Old Uglify can't handle it. commit 097a7ef Author: John Dunning <fw@johndunning.com> Date: Sun Jan 6 15:37:24 2019 -0800 Add a comment commit 4e6df92 Author: John Dunning <fw@johndunning.com> Date: Sat Jan 5 18:19:37 2019 -0800 Fix other keyboard shortcuts Only use keyCode with A-Z and 0-9, so we don't do it with other keys like [, whose keyCode doesn't match its charCode. commit b9ea0b5 Author: John Dunning <fw@johndunning.com> Date: Sat Jan 5 16:06:12 2019 -0800 Fix key handling on non-QWERTY keyboards Use keyCode rather than key for normal keys. Clean up code. Switch to const/let.
Squashed commit of the following: commit ee2c69a Author: John Dunning <fw@johndunning.com> Date: Sat Aug 31 17:03:51 2019 -0700 Update version to 1.1.1 Update releases, privacy policy and main home page. Don't focus current window when opening closed tab. Clean up .ignore file. Remove closed.svg, which is no longer used. commit 7879a9b Merge: 399ead1 07610f7 Author: John Dunning <fw@johndunning.com> Date: Sat Aug 31 14:12:56 2019 -0700 Merge branch 'bug/mac-focus-issue' into dev commit 07610f7 Author: John Dunning <fw@johndunning.com> Date: Sat Aug 31 14:07:59 2019 -0700 Change built test extension name commit adbc45a Author: John Dunning <fw@johndunning.com> Date: Sat Aug 24 17:18:26 2019 -0700 Fix issue #5 When focusing a tab, focus the window before focusing the tab, which seems to avoid focus issues on macOS. In popups, call promisified update() methods in a chain instead of the non-callback versions. Remove code for opening options page after upgrade to 1.1.0. Check for error.lineno when tracking an exception, so we don't send undefineds. commit 399ead1 Author: John Dunning <fw@johndunning.com> Date: Fri Aug 23 18:44:15 2019 -0700 Merge pull request #7 from haokuixi/master Fix focus issue
Thanks for confirming. |
I found that, by default, focus moves to the first tab after selecting any tab via QuicKey.
This is inconvenient for users who use the Vimium extension.
The text was updated successfully, but these errors were encountered: