Bug 443863 - ctrl-9 to select last tab is klugishly implemented. r=gavin

This commit is contained in:
Dão Gottwald 2008-09-02 10:50:22 +02:00
parent 65a67ae803
commit 2934add284
5 changed files with 51 additions and 26 deletions

View File

@ -330,15 +330,15 @@
#define NUM_SELECT_TAB_MODIFIER accel
#endif
#expand <key id="key_selectTab1" oncommand="BrowserNumberTabSelection(event, 0);" key="1" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab2" oncommand="BrowserNumberTabSelection(event, 1);" key="2" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab3" oncommand="BrowserNumberTabSelection(event, 2);" key="3" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab4" oncommand="BrowserNumberTabSelection(event, 3);" key="4" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab5" oncommand="BrowserNumberTabSelection(event, 4);" key="5" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab6" oncommand="BrowserNumberTabSelection(event, 5);" key="6" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab7" oncommand="BrowserNumberTabSelection(event, 6);" key="7" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab8" oncommand="BrowserNumberTabSelection(event, 7);" key="8" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab9" oncommand="BrowserNumberTabSelection(event, 8);" key="9" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab1" oncommand="gBrowser.selectTabAtIndex(0, event);" key="1" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab2" oncommand="gBrowser.selectTabAtIndex(1, event);" key="2" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab3" oncommand="gBrowser.selectTabAtIndex(2, event);" key="3" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab4" oncommand="gBrowser.selectTabAtIndex(3, event);" key="4" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab5" oncommand="gBrowser.selectTabAtIndex(4, event);" key="5" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab6" oncommand="gBrowser.selectTabAtIndex(5, event);" key="6" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab7" oncommand="gBrowser.selectTabAtIndex(6, event);" key="7" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectTab8" oncommand="gBrowser.selectTabAtIndex(7, event);" key="8" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
#expand <key id="key_selectLastTab" oncommand="gBrowser.selectTabAtIndex(-1, event);" key="9" modifiers="__NUM_SELECT_TAB_MODIFIER__"/>
</keyset>

View File

@ -1311,23 +1311,6 @@ SanitizeListener.prototype =
}
}
function BrowserNumberTabSelection(event, index)
{
// [Ctrl]+[9] always selects the last tab
if (index == 8)
index = gBrowser.tabContainer.childNodes.length - 1;
else if (index >= gBrowser.tabContainer.childNodes.length)
return;
var oldTab = gBrowser.selectedTab;
var newTab = gBrowser.tabContainer.childNodes[index];
if (newTab != oldTab)
gBrowser.selectedTab = newTab;
event.preventDefault();
event.stopPropagation();
}
function gotoHistoryIndex(aEvent)
{
var index = aEvent.target.getAttribute("index");

View File

@ -1729,6 +1729,28 @@
</body>
</method>
<method name="selectTabAtIndex">
<parameter name="aIndex"/>
<parameter name="aEvent"/>
<body>
<![CDATA[
// count backwards for aIndex < 0
if (aIndex < 0)
aIndex += this.mTabs.length;
if (aIndex > 0 &&
aIndex < this.mTabs.length &&
aIndex != this.tabContainer.selectedIndex)
this.selectedTab = this.mTabs[aIndex];
if (aEvent) {
aEvent.preventDefault();
aEvent.stopPropagation();
}
]]>
</body>
</method>
<property name="tabContainer" readonly="true">
<getter>
return this.mTabContainer;

View File

@ -63,6 +63,7 @@ _BROWSER_FILES = browser_bug321000.js \
browser_page_style_menu.js \
page_style_sample.html \
browser_ctrlTab.js \
browser_selectTabAtIndex.js \
$(NULL)
ifneq (,$(filter mac cocoa,$(MOZ_WIDGET_TOOLKIT)))

View File

@ -0,0 +1,19 @@
function test() {
for (let i = 0; i < 9; i++)
gBrowser.addTab();
var isLinux = navigator.platform.indexOf("Linux") == 0;
for (let i = 1; i <= 9; i++) {
EventUtils.synthesizeKey(i.toString(), { altKey: isLinux, accelKey: !isLinux });
is(gBrowser.tabContainer.selectedIndex, (i == 9 ? gBrowser.mTabs.length : i) - 1,
(isLinux ? "Alt" : "Accel") + "+" + i + " selects expected tab");
}
gBrowser.selectTabAtIndex(-3);
is(gBrowser.tabContainer.selectedIndex, gBrowser.mTabs.length - 3,
"gBrowser.selectTabAtIndex(-3) selects expected tab");
for (let i = 0; i < 9; i++)
gBrowser.removeCurrentTab();
}