diff options
| -rw-r--r-- | background_scripts/settings.coffee | 2 | ||||
| -rw-r--r-- | content_scripts/vimium_frontend.coffee | 15 | ||||
| -rw-r--r-- | pages/options.coffee | 1 | ||||
| -rw-r--r-- | pages/options.html | 34 |
4 files changed, 45 insertions, 7 deletions
diff --git a/background_scripts/settings.coffee b/background_scripts/settings.coffee index 3528e8a9..50a6a9f4 100644 --- a/background_scripts/settings.coffee +++ b/background_scripts/settings.coffee @@ -114,6 +114,8 @@ root.Settings = Settings = searchEngines: "w: http://www.wikipedia.org/w/index.php?title=Special:Search&search=%s wikipedia" newTabUrl: "chrome://newtab" grabBackFocus: false + # Vimium Labs settings + vomnibarInTopFrame: false settingsVersion: Utils.getCurrentVersion() diff --git a/content_scripts/vimium_frontend.coffee b/content_scripts/vimium_frontend.coffee index 81e0e3b2..95c508ef 100644 --- a/content_scripts/vimium_frontend.coffee +++ b/content_scripts/vimium_frontend.coffee @@ -44,7 +44,7 @@ settings = loadedValues: 0 valuesToLoad: [ "scrollStepSize", "linkHintCharacters", "linkHintNumbers", "filterLinkHints", "hideHud", "previousPatterns", "nextPatterns", "regexFindMode", "userDefinedLinkHintCss", - "helpDialog_showAdvancedCommands", "smoothScroll", "grabBackFocus" ] + "helpDialog_showAdvancedCommands", "smoothScroll", "grabBackFocus", "vomnibarInTopFrame" ] isLoaded: false eventListeners: {} @@ -254,7 +254,7 @@ initializeOnDomReady = -> # Tell the background page we're in the dom ready state. chrome.runtime.connect({ name: "domReady" }) CursorHider.init() - Vomnibar.init() if DomUtils.isTopFrame() + Vomnibar.init() # if DomUtils.isTopFrame() registerFrame = -> # Don't register frameset containers; focusing them is no use. @@ -273,11 +273,12 @@ unregisterFrame = -> executePageCommand = (request) -> # Vomnibar commands are handled in the tab's main/top frame. if request.command.split(".")[0] == "Vomnibar" - if DomUtils.isTopFrame() - # We pass the frameId from request. That's the frame which originated the request, so that's the frame - # which should receive the focus when the vomnibar closes. - Utils.invokeCommandString request.command, [ request.frameId ] - refreshCompletionKeys request + if (DomUtils.isTopFrame() and settings.get "vomnibarInTopFrame") or + (frameId == request.frameId and not settings.get "vomnibarInTopFrame") + # We pass the frameId from request. That's the frame which originated the request, so that's the frame + # which should receive the focus when the vomnibar closes. + Utils.invokeCommandString request.command, [ request.frameId ] + refreshCompletionKeys request return # All other commands are handled in their frame. diff --git a/pages/options.coffee b/pages/options.coffee index d2950348..55b5b63a 100644 --- a/pages/options.coffee +++ b/pages/options.coffee @@ -261,6 +261,7 @@ initOptionsPage = -> searchEngines: TextOption searchUrl: NonEmptyTextOption userDefinedLinkHintCss: TextOption + vomnibarInTopFrame: CheckBoxOption # Populate options. The constructor adds each new object to "Option.all". for name, type of options diff --git a/pages/options.html b/pages/options.html index f89ddcbb..19298189 100644 --- a/pages/options.html +++ b/pages/options.html @@ -71,6 +71,11 @@ b: http://b.com/?q=%s description </tr> <tbody id='advancedOptions'> <tr> + <td colspan="3"> + <header>Advanced Options</header> + </td> + </tr> + <tr> <td class="caption">Scroll step size</td> <td> <div class="help"> @@ -233,6 +238,35 @@ b: http://b.com/?q=%s description <div class="nonEmptyTextOption"> </td> </tr> + <tr> + <td colspan="3"> + <header>Vimium Labs</header> + <p> + These features are awesome! However, they're also not yet fully baked. They might + not always work, may be subject to substantial change in a future release, and could even be + withdrawn entirely. + </p> + + <p> + Please provide feedback or suggestions on + <a href="https://github.com/philc/vimium/issues" target="_blank">github</a>. + </p> + </td> + </tr> + <tr> + <td class="caption">Experiments</td> + <td verticalAlign="top" class="booleanOption"> + <div class="help"> + <div class="example"> + On pages with multiple frames, always open a full-size vomnibar in the tab's main frame. + </div> + </div> + <label> + <input id="vomnibarInTopFrame" type="checkbox"/> + Open vomnibar in top frame + </label> + </td> + </tr> </tbody> </table> </div> |
