Commit 27248c07 authored by Mike Perry's avatar Mike Perry
Browse files

Another attempt at fixing bug 1152.

parent dcf4daa0
Loading
Loading
Loading
Loading
+9 −32
Original line number Diff line number Diff line
@@ -1348,27 +1348,10 @@ function torbutton_close_on_toggle(mode) {
    while(enumerator.hasMoreElements()) {
        var win = enumerator.getNext();
        var browser = win.getBrowser();

        if(!browser) {
          torbutton_log(3, "No browser..");
          continue;
        }

        if(!browser.browsers) {
          torbutton_log(3, "No browser.browsers..");
          continue;
        }

        var tabs = browser.browsers.length;

        torbutton_log(3, "Length: "+browser.browsers.length);

        if(!tabs) {
          torbutton_log(2, "No tabs to close in this window.");
          continue;
        }


        var remove = new Array();
        for(var i = 0; i < tabs; i++) {
            if(browser.browsers[i].__tb_tor_fetched != mode) {
@@ -1376,24 +1359,18 @@ function torbutton_close_on_toggle(mode) {
            }
        }

        for(var i = 0; i < remove.length; i++) {
            if(!remove[i].linkedBrowser) {
              torbutton_log(3, "Tab for "+remove[i].currentURI.spec+
                      " has no linked browser. Hacking one in.");
              remove[i].linkedBrowser = browser;
            }
            browser.removeTab(remove[i]);
        }

        if(browser.browsers.length == 1
                && browser.browsers[0].__tb_tor_fetched != mode) {
        if(browser.browsers.length == remove.length) {
            // It is a bad idea to alter the window list while
            // iterating over it.
            browser.addTab("about:blank");
            if(win != window) {
                closeWins.push(win);
            } else {
                var newb = browser.addTab("about:blank");
                browser.removeAllTabsBut(newb);
            }
        }

        for(var i = 0; i < remove.length; i++) {
            remove[i].contentWindow.close();
        }
    }

    torbutton_log(2, "Closing windows...");