reposition status panel completely

This commit is contained in:
SHIMODA Hiroshi 2011-04-07 15:13:10 +09:00
parent 06e0fe501d
commit 626260d70f
3 changed files with 208 additions and 87 deletions

View File

@ -363,10 +363,6 @@ var TreeStyleTabService = {
appcontent.addEventListener('SubBrowserAdded', this, false);
appcontent.addEventListener('SubBrowserRemoveRequest', this, false);
var statusPanel = document.getElementById('statusbar-display');
if (statusPanel)
statusPanel.addEventListener('DOMAttrModified', this, false);
window.addEventListener('UIOperationHistoryUndo:TabbarOperations', this, false);
window.addEventListener('UIOperationHistoryRedo:TabbarOperations', this, false);
@ -813,26 +809,6 @@ var TreeStyleTabService = {
items[aIndex].style.paddingLeft = aTab.getAttribute(this.kNEST)+'em';
}, this);
},
updateStatusPanel : function TSTService_updateStatusPanel(aPanel)
{
if (!this.getTreePref('autoRepositionStatusPanel'))
return;
switch (this.position)
{
case 'left':
aPanel.setAttribute('mirror', true);
break;
case 'right':
aPanel.removeAttribute('mirror');
break;
default:
break;
}
},
destroy : function TSTService_destroy()
{
@ -861,10 +837,6 @@ var TreeStyleTabService = {
appcontent.removeEventListener('SubBrowserAdded', this, false);
appcontent.removeEventListener('SubBrowserRemoveRequest', this, false);
var statusPanel = document.getElementById('statusbar-display');
if (statusPanel)
statusPanel.removeEventListener('DOMAttrModified', this, false);
window.removeEventListener('UIOperationHistoryUndo:TabbarOperations', this, false);
window.removeEventListener('UIOperationHistoryRedo:TabbarOperations', this, false);
@ -912,11 +884,6 @@ var TreeStyleTabService = {
case 'popuphiding':
return this.onPopupHidden(aEvent.originalTarget);
case 'DOMAttrModified':
if (aEvent.attrName == 'label')
this.updateStatusPanel(aEvent.currentTarget);
return;
case this.kEVENT_TYPE_TAB_COLLAPSED_STATE_CHANGED:
return this.updateAeroPeekPreviews();

View File

@ -1505,8 +1505,10 @@ TreeStyleTabBrowser.prototype = {
}
var strip = this.tabStrip;
var stripStyle = strip.style;
var tabContainerBox = this.getTabContainerBox(this.mTabBrowser);
var statusPanel = document.getElementById('statusbar-display');
var statusPanelStyle = statusPanel ? statusPanel.style : null ;
var pos = this.position;
if (pos != 'top' ||
this.mTabBrowser.getAttribute(this.kFIXED) != 'true') {
@ -1536,11 +1538,11 @@ TreeStyleTabBrowser.prototype = {
let xOffset = pos == 'right' ? width - realWidth : 0 ;
let yOffset = pos == 'bottom' ? height - realHeight : 0 ;
strip.style.top = (box.screenY - root.screenY + root.y - yOffset)+'px';
strip.style.left = (box.screenX - root.screenX + root.x - xOffset)+'px';
stripStyle.top = (box.screenY - root.screenY + root.y - yOffset)+'px';
stripStyle.left = (box.screenX - root.screenX + root.x - xOffset)+'px';
strip.style.width = (tabContainerBox.width = width)+'px';
strip.style.height = (tabContainerBox.height = height)+'px';
stripStyle.width = (tabContainerBox.width = width)+'px';
stripStyle.height = (tabContainerBox.height = height)+'px';
this._updateFloatingTabbarResizer({
width : width,
@ -1551,23 +1553,38 @@ TreeStyleTabBrowser.prototype = {
tabContainerBox.collapsed = (this.splitter && this.splitter.getAttribute('state') == 'collapsed');
if (statusPanel) {
statusPanel.style.marginTop = (pos == 'bottom') ?
if (statusPanel && this.getTreePref('repositionStatusPanel')) {
statusPanelStyle.marginTop = (pos == 'bottom') ?
'-moz-calc(0px - ' + height + 'px - 3em)' :
'' ;
statusPanelStyle.marginLeft = (pos == 'left') ?
width+'px' :
'' ;
statusPanelStyle.marginRight = (pos == 'right') ?
width+'px' :
'' ;
statusPanelStyle.maxWidth = this.isVertical ?
parseInt(this.mTabBrowser.mPanelContainer.boxObject.width / 2)+'px' :
'' ;
statusPanel.__treestyletab__repositioned = true;
}
this.mTabBrowser.tabContainer.setAttribute('context', this.mTabBrowser.tabContextMenu.id);
}
else {
tabContainerBox.collapsed = false;
strip.style.top = '';
strip.style.left = '';
strip.style.width = '';
strip.style.height = '';
stripStyle.top = stripStyle.left = stripStyle.width = stripStyle.height = '';
if (statusPanel) {
statusPanel.style.marginTop = '';
if (
statusPanel &&
(
this.getTreePref('repositionStatusPanel') ||
statusPanel.__treestyletab__repositioned
)
) {
statusPanelStyle.marginTop = statusPanelStyle.marginLeft =
statusPanelStyle.marginRight = statusPanelStyle.maxWidth = '';
statusPanel.__treestyletab__repositioned = false;
}
strip.removeAttribute('layer'); // https://bugzilla.mozilla.org/show_bug.cgi?id=590468

View File

@ -321,68 +321,199 @@ pref("extensions.treestyletab.show.context-item-toggleAutoHide", true);
pref("extensions.treestyletab.show.context-item-toggleFixed", true);
pref("extensions.treestyletab.show.context-item-bookmarkTabSubtree", true);
// 0 = always ask, 1 = load into the tab, 2 = open new child tab
/**
* How to treat a dropped link on a tab.
* 0 = Always ask how to open the link.
* 1 = Load the link into the tab.
* 2 = Open the link as a new child tab of the tab.
*/
pref("extensions.treestyletab.dropLinksOnTab.behavior", 0);
// value = Basic | Structure | Collapse/expand
// Basic behavior:
// 0 = always ask
// 1 = tree
// 2 = separate
// 4 = replace
// Structure:
// 256 = use dummy tab (for subtree)
// 1024 = use dummy tab, only if there is any orphan
// 512 = do not restore tree structure
// Collapse/expand:
// 2048 = expand all tree
/**
* How to treat new tabs opened from a bookmark group.
* The value is an union of following flags:
* Basic flags:
* 0 = Always ask how to open tabs.
* 1 = Open tabs as a new tree.
* 2 = Open tabs as a normal tabs (not tree).
* 4 = Replace all existing tabs.
* Structure flags:
* 256 = Restore tree structure based on information stored in the Places DB,
* and use a dummy tab as the parent, only if there is any orphan.
* (When a bookmark has no tree information, it will be opened as an
* orphan tab - top-level and with no child.)
* 1024 = Restore tree structure based on information stored in the Places DB,
* and use a dummy tab as the parent always.
* 512 = Ignore tree structure stored in the Places DB.
* State flags:
* 2048 = Expand all tree.
* (otherwise) = Collapse all tree.
*
* Examples:
* 1 | 256 | 2048 = Open as a new tree, restore tree structure, and expand.
* 1 | 512 = Open as a new tree, as a flat group.
*/
pref("extensions.treestyletab.openGroupBookmark.behavior", 2304); /* 0 | 256 | 2048 */
// 0 = always ask, 1 = bookmark all, 2 = bookmark only the parent tab
/**
* How to treat tabs dropped to the Bookmarks menu or Bookmarks toolbar.
* 0 = Always ask how bookmark the tree.
* 1 = Bookmark all tabs in the tree of the dragged tab.
* 2 = Bookmark only the parent tab you dragged.
*/
pref("extensions.treestyletab.bookmarkDroppedTabs.behavior", 0);
/**
* On Windows, "AeroPeak" can show all of tabs from the task bar. If this is
* "true", only visible tabs will be shown in the AeroPeak list. Otherwise
* you'll see all of tabs including collapsed ones.
*/
pref("extensions.treestyletab.taskbarPreviews.hideCollapsedTabs", true);
/**
* If this is "true", TST expands the focused tree when it is collapsed, and
* collapses all other trees automatically. This doesn't affect for cases from
* twisties in tabs.
* If this is "false" trees never be expanded/collapsed automatically, so
* you'll have to click twisties in tabs always to collapse/expand them.
*/
pref("extensions.treestyletab.autoCollapseExpandSubtreeOnSelect", true);
/**
* When you close a tab and Firefox focuses to the nearest tab, the focus
* changing possibly causes collapsing/expanding of trees. If you set this
* to "false", TST ignores focus changings caused by removing of the current
* tab.
*/
pref("extensions.treestyletab.autoCollapseExpandSubtreeOnSelect.onCurrentTabRemove", true);
/**
* When you press Ctrl-Tab/Shift-Ctrl-Tab, Firefox advances focus of tabs.
* If this is "true", TST doesn't collapse/expand trees while you are switching
* tab focus by those keyboard shortcuts. And then, after you release the Ctrl
* key, TST will expand the tree if the newly selected tab have its collapsed
* tree.
* If this is "false", TST dynamiclaly collapses/expands focused tree even if
* you are browsing tabs by those shortcuts.
*/
pref("extensions.treestyletab.autoCollapseExpandSubtreeOnSelect.whileFocusMovingByShortcut", false);
/**
* If this is "true", TST expands/collapses tree by double-clicking on tabs.
* Otherwise TST simply ignores such actions.
*/
pref("extensions.treestyletab.collapseExpandSubtree.dblclick", false);
// -1 = restore last state, 0 = always collapse, 1 = always expand
/**
* Collapsed state of restored tree.
* -1 = Restore the last state.
* 0 = Collapse all restored tree.
* 1 = Expand all restored tree.
*/
pref("extensions.treestyletab.collapseExpandSubtree.sessionRestore", -1);
/**
* When a collapsed tab is focused, if this is "true", TST expands the tree
* automatically. If this is "false", TST prevents to focus to a collapsed tab,
* and re-focuses to the parent tab automatically.
*/
pref("extensions.treestyletab.autoExpandSubtreeOnCollapsedChildFocused", true);
/**
* When a tab is newly attached to an existing collapsed tree, if this is
* "true", TST expands the tree automatically. Otherwise TST simply attaches
* the tab into the collapsed tree.
*/
pref("extensions.treestyletab.autoExpandSubtreeOnAppendChild", true);
/**
* This controlls readyToOpenChildTab() and other APIs to open new child tabs.
* If this is "true", new tabs opened after the API readyToOpenChildTab() is
* called, they become children of the specified parent tab or the current tab.
* If this is "false", tabs are not attached automatically, so you have to
* manage tree of tabs by your hand. "true" IS STRONGLY RECOMMENDED.
*/
pref("extensions.treestyletab.autoAttach", true);
// 0 = don't attach
// 1 = attach if the search term equals to the selection in the current tab
// 2 = always attach
/**
* How to treat new tabs from the Web search bar.
* 0 = Do nothing for new tabs for search results.
* 1 = Open the search result tab as a child of the current tab, only if the
* search term equals to the selection in the current tab.
* In other words, if you do select => copy => search, then the result
* will be grouped to the current tab automatically.
* 2 = Open any search result tab as a child of the current tab.
* NOTE: This pref doesn't open new tabs from the Web search bar. You have to
* use Alt-Enter, middle click, or "browser.search.openintab" to open
* the search result as a new tab.
*/
pref("extensions.treestyletab.autoAttach.searchResult", 1);
// 0 = don't attach (open as an independent tab)
// 1 = attach to the current tab (open as a child)
// 2 = attach to the parent of the current tab (open as a sibling)
/**
* How to treat new tabs from Ctrl-T.
* 0 = Open as an independent tab.
* 1 = Open as a child tab of the current tab.
* 2 = Open as a sibling tab of the current tab.
*/
pref("extensions.treestyletab.autoAttach.newTabCommand", 0);
// 0 = default, 1 = only visible tabs
/**
* Focus targets for Ctrl-Tab/Ctrl-Shift-Tab.
* 0 = Focus to both visible and collapsed tabs. (If a collapsed tab is
* focused, the tree will be expanded by another pref "autoExpandSubtreeOnCollapsedChildFocused".
* 1 = Focus to visible tabs. Collapsed tabs will be skipped. (But if the tree
* is expanded by "autoCollapseExpandSubtreeOnSelect.whileFocusMovingByShortcut",
* visible tabs in the tree can be focused.)
*/
pref("extensions.treestyletab.focusMode", 1);
/*
3 = promote only the first child tab as the parent level
0 = promote all children as the parent level
1 = detach all children
2 = close all children too
*/
/**
* How to treat children of a closed parent tab.
* 3 = Promote the first child tab to the new parent.
* 0 = Promote all children to the parent level.
* 1 = Detach all children from the tree.
* 2 = Close all children too.
*/
pref("extensions.treestyletab.closeParentBehavior", 3);
/**
* How to treat detached tabs by "closeParentBehavior" == 1. If this is "true",
* detached tabs are moved to the bottom of the tab bar. If "false", tabs are
* moved to the position next to the tree. For example:
* +[A]
* +[A-1]
* +[A-1-1]
* +[A-2]
* +[A-2-1]
* +[A-2-2]
* +[B]
* When the tab [A-1] is closed, [A-1-1] is moved to the position next to [B]
* if this is "true". Otherwise the new position is between [A-2-2] and [B].
*/
pref("extensions.treestyletab.closeParentBehavior.moveDetachedTabsToBottom", false);
/*
3 = promote only the first child tab as the root level
1 = promote all children as new roots (=detach all children)
Note: this affects only when closeParentBehavior == 0
*/
/**
* How to treat children of a closed root tab (which has no parent).
* 3 = Promote the first child tab to the new root.
* 1 = Detach all children from the tree. Children become new root tabs.
* NOTE: This affects only when "closeParentBehavior" == 0.
*/
pref("extensions.treestyletab.closeRootBehavior", 3);
pref("extensions.treestyletab.createSubtree.underParent", true);
/*
0 = do nothing.
1 = always ask.
2 = reopen all tabs of the tree if a member of tree is reopened.
256 = don't reopen tree if some tabs are overflowed and lost from the history.
*/
/**
* How to treat restored tab by "Undo Close Tab", if the tab was a member of
* a closed tree.
* 1 = Always ask how to treat it.
* 0 = Don't restore other tabs.
* 2 = Restore all other tabs of the closed tree, even if some tabs cannot
* be restored. (because out of "undo close tabs" history, etc.)
* 256 = Restore all other tabs of the closed tree, only if all of members
* of the tree is in the "undo close tabs" history.
*/
pref("extensions.treestyletab.undoCloseTabSet.behavior", 3);
pref("extensions.treestyletab.autoRepositionStatusPanel", true);
/**
* On Firefox 4 or later, status panel possibly covers the tab bar. If "true",
* TST repositions (and resizes) the status panel automatically.
* For compatibility, you can set this to "false". Then TST doesn't controll
* the status panel.
*/
pref("extensions.treestyletab.repositionStatusPanel", true);
/**
* EXPERIMENTAL, DON'T SET THIS "true" !!
* If this is "true", TST restores tree structure before SSTabRestoring events
* are fired. Otherwise TST restores tree structure based by SSTabRestoring
* events.
*/
pref("extensions.treestyletab.restoreTreeOnStartup", false);
/**
@ -395,10 +526,16 @@ pref("browser.tabs.insertRelatedAfterCurrent.override", false);
pref("browser.tabs.insertRelatedAfterCurrent.override.force", true);
/**
*
* Extra commands for selected tabs (Multiple Tab Handler)
*/
pref("extensions.multipletab.show.multipletab-selection-item-removeTabSubtree", true);
pref("extensions.multipletab.show.multipletab-selection-item-createSubtree", true);
/**
* How to create a new tree from selected tabs. If "true", a new dummy tab is
* automatically opened and selected tabs become children of the tab. Otherwise
* the first selected tab becomes the parent.
*/
pref("extensions.treestyletab.createSubtree.underParent", true);
/**
* Compatibility hack flags for other addons. They can be disabled by each