aboutsummaryrefslogtreecommitdiffstats
path: root/unload-tab.js
diff options
context:
space:
mode:
Diffstat (limited to 'unload-tab.js')
-rw-r--r--unload-tab.js36
1 files changed, 19 insertions, 17 deletions
diff --git a/unload-tab.js b/unload-tab.js
index 951c2b9..1bee8f4 100644
--- a/unload-tab.js
+++ b/unload-tab.js
@@ -3,9 +3,9 @@
* unload[tab] num
*/
-var INFO =
+var INFO = xml`
<plugin name="unloadTab"
- version="0.2"
+ version="0.3"
summary="Unload tab contents like (BarTab)"
xmlns="http://vimperator.org/namespaces/liberator">
<author email="teramako@gmail.com">teramako</author>
@@ -18,27 +18,29 @@ var INFO =
<p>Unload the tab contents.</p>
</description>
</item>
-</plugin>;
+</plugin>`;
if (!("SS" in this)) {
XPCOMUtils.defineLazyServiceGetter(this, "SS", "@mozilla.org/browser/sessionstore;1", "nsISessionStore");
}
function unloadTab (aTab) {
- var state = SS.getTabState(aTab);
- var tab = gBrowser.addTab(null, { skipAnimation: true });
- SS.setTabState(tab, state);
- if (aTab.pinned) {
- gBrowser.pinTab(tab);
- } else {
- let objState = JSON.parse(state);
- if (objState.hidden) {
- gBrowser.hideTab(tab);
- TabView.moveTabTo(tab, JSON.parse(objState.extData["tabview-tab"]).groupID);
- }
- }
- gBrowser.moveTabTo(tab, aTab._tPos + 1)
- gBrowser.removeTab(aTab);
+ var browser = aTab.linkedBrowser,
+ state = SS.getTabState(aTab),
+ shistory = browser.sessionHistory,
+ icon = aTab.getAttribute("image");
+
+ browser.addEventListener("load", function onload(){
+ this.removeEventListener("load", onload, true);
+ if (shistory.count > 1)
+ shistory.PurgeHistory(shistory.count -1);
+
+ aTab.ownerDocument.defaultView.setTimeout(function(){
+ aTab.setAttribute("image", icon);
+ }, 0);
+ SS.setTabState(aTab, state);
+ }, true);
+ browser.loadURI("about:blank");
}
commands.addUserCommand(["unload[tab]"], "Unload Tabs",