Open main menu

CDOT Wiki β

Changes

User:Pcallaghan

3,366 bytes added, 14:11, 8 November 2007
m
added tabs lab
== FSOSS paper ==
[[Open content at fsoss07]]
 
==Tabs Lab==
opens new tabs adjacent to the current tab, rather than at the end all the current tabs.
Still has problems with closing tabs. Sometimes they close, sometimes they don't.
I thought it had something to do with line 1234.
<pre>
? tabslab.diff
Index: content/tabbrowser.xml
===================================================================
RCS file: /cvsroot/mozilla/browser/base/content/tabbrowser.xml,v
retrieving revision 1.243
diff -u -8 -p -r1.243 tabbrowser.xml
--- content/tabbrowser.xml 18 Sep 2007 00:59:41 -0000 1.243
+++ content/tabbrowser.xml 7 Nov 2007 17:42:50 -0000
@@ -1088,17 +1088,17 @@
if (!bgLoad) {
function selectNewForegroundTab(browser, tab) {
browser.selectedTab = tab;
}
setTimeout(selectNewForegroundTab, 0, getBrowser(), tab);
}
if (!bgLoad)
this.selectedTab = tab;
-
+ var position = currentTabIndex + 1;
return tab;
]]>
</body>
</method>
<method name="loadTabs">
<parameter name="aURIs"/>
<parameter name="aLoadInBackground"/>
@@ -1173,18 +1173,18 @@
t.maxWidth = this.mTabContainer.mTabMaxWidth;
t.minWidth = this.mTabContainer.mTabMinWidth;
t.width = 0;
t.setAttribute("flex", "100");
t.setAttribute("validate", "never");
t.setAttribute("onerror", "this.parentNode.parentNode.parentNode.parentNode.addToMissedIconCache(this.getAttribute('image')); this.removeAttribute('image');");
t.className = "tabbrowser-tab";
- this.mTabContainer.appendChild(t);
-
+ var currentTabIndex = this.mTabContainer.selectedIndex;
+ this.mTabContainer.insertBefore(t, this.mTabContainer.childNodes.item(currentTabIndex + 1));
if (document.defaultView
.getComputedStyle(this.mTabContainer, "")
.direction == "rtl") {
/* In RTL UI, the tab is visually added to the left side of the
* tabstrip. This means the tabstip has to be scrolled back in
* order to make sure the same set of tabs is visible before and
* after the new tab is added */
@@ -1234,17 +1234,17 @@
b.addEventListener("DOMTitleChanged", this.onTitleChanged, true);
if (this.mStrip.collapsed)
this.setStripVisibilityTo(true);
this.mPrefs.setBoolPref("browser.tabs.forceHide", false);
// wire up a progress listener for the new browser object.
- var position = this.mTabContainer.childNodes.length-1;
+ var position = currentTabIndex + 1;
var tabListener = this.mTabProgressListener(t, b, blank);
const filter = Components.classes["@mozilla.org/appshell/component/browser-status-filter;1"]
.createInstance(Components.interfaces.nsIWebProgress);
filter.addProgressListener(tabListener, Components.interfaces.nsIWebProgress.NOTIFY_ALL);
b.webProgress.addProgressListener(filter, Components.interfaces.nsIWebProgress.NOTIFY_ALL);
this.mTabListeners[position] = tabListener;
this.mTabFilters[position] = filter;
 
</pre>