X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=common%2Fcontent%2Fbrowser.js;h=a1b111094fd986cd1bb80763c2d9d862365fe984;hb=8b6fcae7eaa413bc62d645d2d0c99835c47265e6;hp=5a6ba5ef15a599c84f4a2e44acbfa9fa81e3271e;hpb=70740024f9c028c1fd63e1a1850ab062ff956054;p=dactyl.git diff --git a/common/content/browser.js b/common/content/browser.js index 5a6ba5e..a1b1110 100644 --- a/common/content/browser.js +++ b/common/content/browser.js @@ -1,6 +1,6 @@ // Copyright (c) 2006-2008 by Martin Stubenschrott // Copyright (c) 2007-2011 by Doug Kearns -// Copyright (c) 2008-2011 by Kris Maglione +// Copyright (c) 2008-2012 Kris Maglione // // This work is licensed for reuse under an MIT license. Details are // given in the LICENSE.txt file included with this file. @@ -13,8 +13,8 @@ */ var Browser = Module("browser", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), { init: function init() { - this.cleanupProgressListener = util.overlayObject(window.XULBrowserWindow, - this.progressListener); + this.cleanupProgressListener = overlay.overlayObject(window.XULBrowserWindow, + this.progressListener); util.addObserver(this); }, @@ -148,13 +148,16 @@ var Browser = Module("browser", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), let win = webProgress.DOMWindow; if (win && uri) { - let oldURI = win.document.dactylURI; - if (win.document.dactylLoadIdx === webProgress.loadedTransIndex + Buffer(win).updateZoom(); + + let oldURI = overlay.getData(win.document)["uri"]; + if (overlay.getData(win.document)["load-idx"] === webProgress.loadedTransIndex || !oldURI || uri.spec.replace(/#.*/, "") !== oldURI.replace(/#.*/, "")) for (let frame in values(buffer.allFrames(win))) - frame.document.dactylFocusAllowed = false; - win.document.dactylURI = uri.spec; - win.document.dactylLoadIdx = webProgress.loadedTransIndex; + overlay.setData(frame.document, "focus-allowed", false); + + overlay.setData(win.document, "uri", uri.spec); + overlay.setData(win.document, "load-idx", webProgress.loadedTransIndex); } // Workaround for bugs 591425 and 606877, dactyl bug #81 @@ -177,7 +180,7 @@ var Browser = Module("browser", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), setOverLink: util.wrapCallback(function setOverLink(link, b) { setOverLink.superapply(this, arguments); dactyl.triggerObserver("browser.overLink", link); - }), + }) } }, { }, { @@ -199,26 +202,48 @@ var Browser = Module("browser", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), commands.add(["redr[aw]"], "Redraw the screen", function () { - window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils) - .redraw(); + statusline.overLink = null; statusline.updateStatus(); commandline.clear(); + window.QueryInterface(Ci.nsIInterfaceRequestor).getInterface(Ci.nsIDOMWindowUtils) + .redraw(); }, { argCount: "0" }); }, mappings: function initMappings(dactyl, modules, window) { - // opening websites - mappings.add([modes.NORMAL], - ["o"], "Open one or more URLs", - function () { CommandExMode().open("open "); }); + let openModes = array.toObject([ + [dactyl.CURRENT_TAB, ""], + [dactyl.NEW_TAB, "tab"], + [dactyl.NEW_BACKGROUND_TAB, "background tab"], + [dactyl.NEW_WINDOW, "win"] + ]); + + function open(mode, args) { + if (dactyl.forceTarget in openModes) + mode = openModes[dactyl.forceTarget]; + + CommandExMode().open(mode + "open " + (args || "")) + } function decode(uri) util.losslessDecodeURI(uri) .replace(/%20(?!(?:%20)*$)/g, " ") .replace(RegExp(options["urlseparator"], "g"), encodeURIComponent); + mappings.add([modes.NORMAL], + ["o"], "Open one or more URLs", + function () { open(""); }); + mappings.add([modes.NORMAL], ["O"], "Open one or more URLs, based on current location", - function () { CommandExMode().open("open " + decode(buffer.uri.spec)); }); + function () { open("", decode(buffer.uri.spec)); }); + + mappings.add([modes.NORMAL], ["s"], + "Open a search prompt", + function () { open("", options["defsearch"] + " "); }); + + mappings.add([modes.NORMAL], ["S"], + "Open a search prompt for a new tab", + function () { open("tab", options["defsearch"] + " "); }); mappings.add([modes.NORMAL], ["t"], "Open one or more URLs in a new tab", @@ -226,15 +251,15 @@ var Browser = Module("browser", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), mappings.add([modes.NORMAL], ["T"], "Open one or more URLs in a new tab, based on current location", - function () { CommandExMode().open("tabopen " + decode(buffer.uri.spec)); }); + function () { open("tab", decode(buffer.uri.spec)); }); mappings.add([modes.NORMAL], ["w"], "Open one or more URLs in a new window", - function () { CommandExMode().open("winopen "); }); + function () { open("win"); }); mappings.add([modes.NORMAL], ["W"], "Open one or more URLs in a new window, based on current location", - function () { CommandExMode().open("winopen " + decode(buffer.uri.spec)); }); + function () { open("win", decode(buffer.uri.spec)); }); mappings.add([modes.NORMAL], ["", "~"], "Open home directory", @@ -242,12 +267,12 @@ var Browser = Module("browser", XPCOM(Ci.nsISupportsWeakReference, ModuleBase), mappings.add([modes.NORMAL], ["", "gh"], "Open homepage", - function () { BrowserHome(); }); + function () { window.BrowserHome(); }); mappings.add([modes.NORMAL], ["", "gH"], "Open homepage in a new tab", function () { - let homepages = gHomeButton.getHomePage(); + let homepages = window.gHomeButton.getHomePage(); dactyl.open(homepages, { from: "homepage", where: dactyl.NEW_TAB }); });