Tuesday, October 16, 2007

Firefox modified!

Finally, i got it working. It took a little while but now with the correct build and the correct findings for the code change, the Firefox build with edited "tabBrowser.xml", the new tab opens between tabs rather than in the end !

It was quite an entertaining and informative experience!

Here is the edited code : tabBrowser.xml
------------------------------------------------------------------------------------------------
RCS file: /cvsroot/mozilla/browser/base/content/tabbrowser.xml,v
retrieving revision 1.243
diff -u -8 -p -r1.243 tabbrowser.xml
--- tabbrowser.xml 18 Sep 2007 00:59:41 -0000 1.243
+++ tabbrowser.xml 16 Oct 2007 22:11:17 -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;
]]>

@@ -1173,17 +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 */
@@ -1952,17 +1953,17 @@
this.mTabListeners.splice(aIndex, 0, this.mTabListeners.splice(aTab._tPos, 1)[0]);

var oldPosition = aTab._tPos;

aIndex = aIndex <>
this.mCurrentTab._selected = false;
// use .item() instead of [] because dragging to the end of the strip goes out of
// bounds: .item() returns null (so it acts like appendChild), but [] throws
- this.mTabContainer.insertBefore(aTab, this.mTabContainer.childNodes.item(aIndex));
+ this.mTabContainer. Before(aTab, this.mTabContainer.childNodes.item(aIndex));
// invalidate cache, because mTabContainer is about to change
this._browsers = null;

var i;
for (i = 0; i <>
this.mTabContainer.childNodes[i]._tPos = i;
this.mTabContainer.childNodes[i]._selected = false;
}

------------------------------------------------------------------------------------------------

2 comments:

dejan said...

You are doing the old IE7 tab trick, there are times when thats usefull.

AJ Rehman said...

Thats what i thought and it seemed like it worked better in this situation and i am sort of impressed with this new added feature rather than traditional Firefox behavior.