From 905fc2d147d1bc656c9e9fec74cda364a686d638 Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Wed, 8 Feb 2017 17:42:25 +0000 Subject: Fallback to storage.local if storage.sync is not available --- content_scripts/marks.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'content_scripts') diff --git a/content_scripts/marks.coffee b/content_scripts/marks.coffee index 808f0a1d..37b062ba 100644 --- a/content_scripts/marks.coffee +++ b/content_scripts/marks.coffee @@ -64,7 +64,7 @@ Marks = if @isGlobalMark event, markName # This key must match @getLocationKey() in the back end. key = "vimiumGlobalMark|#{markName}" - chrome.storage.sync.get key, (items) -> + Settings.storage.get key, (items) -> if key of items chrome.runtime.sendMessage handler: 'gotoMark', markName: markName HUD.showForDuration "Jumped to global mark '#{markName}'", 1000 -- cgit v1.2.3 From 8b37743fa6f924995bb5fce581c4c73ad886257d Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 16 Apr 2017 16:00:25 +0100 Subject: Catch errors thrown by window.find when it wraps/fails on FF This does NOT fix wrapping, only catches errors --- content_scripts/mode_find.coffee | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'content_scripts') diff --git a/content_scripts/mode_find.coffee b/content_scripts/mode_find.coffee index 0178527b..73b3a77a 100644 --- a/content_scripts/mode_find.coffee +++ b/content_scripts/mode_find.coffee @@ -178,7 +178,12 @@ class FindMode extends Mode # ignore the selectionchange event generated by find() document.removeEventListener("selectionchange", @restoreDefaultSelectionHighlight, true) - result = window.find(query, options.caseSensitive, options.backwards, true, false, true, false) + try + result = window.find(query, options.caseSensitive, options.backwards, true, false, true, false) + catch # Failed searches throw on Firefox. + # NOTE(mrmr1993): On Firefox, window.find moves the window focus away from the HUD. We put it back, so + # the user can continue typing. + try HUD.hudUI.iframeElement.contentWindow.focus() if options.colorSelection setTimeout( -- cgit v1.2.3 From 1df58a31b95705b2ea065c11af80fb2a667be1ec Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Sun, 16 Apr 2017 16:07:22 +0100 Subject: Rework FindMode HUD refocusing to not depend directly on the HUD --- content_scripts/hud.coffee | 4 +++- content_scripts/mode_find.coffee | 8 +++----- 2 files changed, 6 insertions(+), 6 deletions(-) (limited to 'content_scripts') diff --git a/content_scripts/hud.coffee b/content_scripts/hud.coffee index 407b90e1..c2170914 100644 --- a/content_scripts/hud.coffee +++ b/content_scripts/hud.coffee @@ -35,7 +35,9 @@ HUD = @tween.fade 1.0, 150 search: (data) -> - @findMode.findInPlace data.query + # NOTE(mrmr1993): On Firefox, window.find moves the window focus away from the HUD. We use postFindFocus + # to put it back, so the user can continue typing. + @findMode.findInPlace data.query, {"postFindFocus": @hudUI.iframeElement.contentWindow} # Show the number of matches in the HUD UI. matchCount = if FindMode.query.parsedQuery.length > 0 then FindMode.query.matchCount else 0 diff --git a/content_scripts/mode_find.coffee b/content_scripts/mode_find.coffee index 73b3a77a..d6835e6b 100644 --- a/content_scripts/mode_find.coffee +++ b/content_scripts/mode_find.coffee @@ -87,7 +87,7 @@ class FindMode extends Mode selection.removeAllRanges() selection.addRange range - findInPlace: (query) -> + findInPlace: (query, options) -> # If requested, restore the scroll position (so that failed searches leave the scroll position unchanged). @checkReturnToViewPort() FindMode.updateQuery query @@ -95,7 +95,7 @@ class FindMode extends Mode # match as the user adds matching characters, or removes previously-matched characters. See #1434. @restoreSelection() query = if FindMode.query.isRegex then FindMode.getNextQueryFromRegexMatches(0) else FindMode.query.parsedQuery - FindMode.query.hasResults = FindMode.execute query + FindMode.query.hasResults = FindMode.execute query, options @updateQuery: (query) -> @query.rawQuery = query @@ -181,9 +181,7 @@ class FindMode extends Mode try result = window.find(query, options.caseSensitive, options.backwards, true, false, true, false) catch # Failed searches throw on Firefox. - # NOTE(mrmr1993): On Firefox, window.find moves the window focus away from the HUD. We put it back, so - # the user can continue typing. - try HUD.hudUI.iframeElement.contentWindow.focus() + options.postFindFocus?.focus() if options.colorSelection setTimeout( -- cgit v1.2.3 From 42025fd9ceb7042e80b09744fdcdd47d447dec2f Mon Sep 17 00:00:00 2001 From: mrmr1993 Date: Mon, 17 Apr 2017 17:33:16 +0100 Subject: Clarify postFindFocus and obviously separate it from the try..catch --- content_scripts/mode_find.coffee | 3 +++ 1 file changed, 3 insertions(+) (limited to 'content_scripts') diff --git a/content_scripts/mode_find.coffee b/content_scripts/mode_find.coffee index d6835e6b..63825600 100644 --- a/content_scripts/mode_find.coffee +++ b/content_scripts/mode_find.coffee @@ -181,6 +181,9 @@ class FindMode extends Mode try result = window.find(query, options.caseSensitive, options.backwards, true, false, true, false) catch # Failed searches throw on Firefox. + + # window.find focuses the |window| that it is called on. This gives us an opportunity to (re-)focus + # another element/window, if that isn't the behaviour we want. options.postFindFocus?.focus() if options.colorSelection -- cgit v1.2.3