don't shrink sensitive area if there is no closebox near the pointer
This commit is contained in:
parent
058d27612b
commit
b5f3f4abd3
@ -125,6 +125,12 @@ AutoHideBrowser.prototype = {
|
|||||||
sensitiveArea : 7,
|
sensitiveArea : 7,
|
||||||
contentAreaScreenEnabled : true,
|
contentAreaScreenEnabled : true,
|
||||||
|
|
||||||
|
closeButtonsMode : -1,
|
||||||
|
CLOSE_BUTTONS_ONLY_ON_CURRENT_TAB : 0,
|
||||||
|
CLOSE_BUTTONS_ON_ALL_TABS : 1,
|
||||||
|
CLOSE_BUTTONS_DISABLED : 2,
|
||||||
|
CLOSE_BUTTONS_ON_TABBAR : 3,
|
||||||
|
|
||||||
get XOffset()
|
get XOffset()
|
||||||
{
|
{
|
||||||
var sv = this.treeStyleTab;
|
var sv = this.treeStyleTab;
|
||||||
@ -399,11 +405,13 @@ AutoHideBrowser.prototype = {
|
|||||||
var box = this.getContentsAreaBox();
|
var box = this.getContentsAreaBox();
|
||||||
|
|
||||||
var sensitiveArea = this.sensitiveArea;
|
var sensitiveArea = this.sensitiveArea;
|
||||||
|
if (this.shrunken) {
|
||||||
|
if (this.widthFromMode > 24 &&
|
||||||
|
this.isNearTabCloseBox(aEvent)) {
|
||||||
/* For resizing of shrunken tab bar and clicking closeboxes,
|
/* For resizing of shrunken tab bar and clicking closeboxes,
|
||||||
we have to shrink sensitive area. */
|
we have to shrink sensitive area. */
|
||||||
if (this.shrunken) {
|
|
||||||
if (this.widthFromMode > 24)
|
|
||||||
sensitiveArea = -24;
|
sensitiveArea = -24;
|
||||||
|
}
|
||||||
else if (this.resizer)
|
else if (this.resizer)
|
||||||
sensitiveArea = -this.resizer.boxObject.width;
|
sensitiveArea = -this.resizer.boxObject.width;
|
||||||
else
|
else
|
||||||
@ -456,6 +464,36 @@ AutoHideBrowser.prototype = {
|
|||||||
MOUSE_POSITION_INSIDE : (1 << 1),
|
MOUSE_POSITION_INSIDE : (1 << 1),
|
||||||
MOUSE_POSITION_NEAR : (1 << 2),
|
MOUSE_POSITION_NEAR : (1 << 2),
|
||||||
MOUSE_POSITION_SENSITIVE : (1 << 1) | (1 << 2),
|
MOUSE_POSITION_SENSITIVE : (1 << 1) | (1 << 2),
|
||||||
|
isNearTabCloseBox : function AHB_isNearTabCloseBox(aEvent)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (this.closeButtonsMode == this.CLOSE_BUTTONS_DISABLED ||
|
||||||
|
this.closeButtonsMode == this.CLOSE_BUTTONS_ON_TABBAR)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var sv = this.treeStyleTab;
|
||||||
|
var tab = sv.getTabFromCoordinate(aEvent[sv.screenPositionProp]);
|
||||||
|
if (!tab)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var closebox = sv.getTabClosebox(tab).boxObject;
|
||||||
|
if (!closebox.width && !closebox.height)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
var position = sv.invertedScreenPositionProp;
|
||||||
|
var size = sv.invertedSizeProp;
|
||||||
|
var coordinate = aEvent[sv.invertedScreenPositionProp];
|
||||||
|
var tabbox = tab.boxObject;
|
||||||
|
var padding = Math.min(
|
||||||
|
closebox[position] - tabbox[position],
|
||||||
|
(tabbox[position] + tabbox[size]) - (closebox[position] + closebox[size])
|
||||||
|
);
|
||||||
|
return (
|
||||||
|
closebox[position] - padding <= coordinate &&
|
||||||
|
closebox[position] + closebox[size] + padding >= coordinate
|
||||||
|
);
|
||||||
|
},
|
||||||
|
|
||||||
cancelShowHideOnMouseMove : function AHB_cancelShowHideOnMouseMove()
|
cancelShowHideOnMouseMove : function AHB_cancelShowHideOnMouseMove()
|
||||||
{
|
{
|
||||||
@ -1049,7 +1087,8 @@ AutoHideBrowser.prototype = {
|
|||||||
|
|
||||||
domains : [
|
domains : [
|
||||||
'extensions.treestyletab.',
|
'extensions.treestyletab.',
|
||||||
'browser.fullscreen.autohide'
|
'browser.fullscreen.autohide',
|
||||||
|
'browser.tabs.closeButtons'
|
||||||
],
|
],
|
||||||
|
|
||||||
onPrefChange : function AHB_onPrefChange(aPrefName)
|
onPrefChange : function AHB_onPrefChange(aPrefName)
|
||||||
@ -1112,6 +1151,9 @@ AutoHideBrowser.prototype = {
|
|||||||
this.start();
|
this.start();
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
case 'browser.tabs.closeButtons':
|
||||||
|
return this.closeButtonsMode = value;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -1470,6 +1512,7 @@ AutoHideBrowser.prototype = {
|
|||||||
b.setAttribute(this.kMODE+'-normal', sv.getTreePref('tabbar.autoHide.mode'));
|
b.setAttribute(this.kMODE+'-normal', sv.getTreePref('tabbar.autoHide.mode'));
|
||||||
b.setAttribute(this.kMODE+'-fullscreen', sv.getTreePref('tabbar.autoHide.mode.fullscreen'));
|
b.setAttribute(this.kMODE+'-fullscreen', sv.getTreePref('tabbar.autoHide.mode.fullscreen'));
|
||||||
sv.addPrefListener(this);
|
sv.addPrefListener(this);
|
||||||
|
this.onPrefChange('browser.tabs.closeButtons');
|
||||||
this.onPrefChange('extensions.treestyletab.tabbar.autoHide.area');
|
this.onPrefChange('extensions.treestyletab.tabbar.autoHide.area');
|
||||||
this.onPrefChange('extensions.treestyletab.tabbar.togglerSize');
|
this.onPrefChange('extensions.treestyletab.tabbar.togglerSize');
|
||||||
this.onPrefChange('extensions.treestyletab.tabbar.autoHide.contentAreaScreen.enabled');
|
this.onPrefChange('extensions.treestyletab.tabbar.autoHide.contentAreaScreen.enabled');
|
||||||
|
@ -343,13 +343,15 @@ TreeStyleTabBrowser.prototype = {
|
|||||||
this.getSplitterFromEvent(aEvent)
|
this.getSplitterFromEvent(aEvent)
|
||||||
)
|
)
|
||||||
return null;
|
return null;
|
||||||
|
return this.getTabFromCoordinate(aEvent[this.screenPositionProp]);
|
||||||
|
},
|
||||||
|
getTabFromCoordinate : function TSTBrowser_getTabFromCoordinate(aCoordinate)
|
||||||
|
{
|
||||||
var tab = null;
|
var tab = null;
|
||||||
var clickedPoint = aEvent[this.screenPositionProp];
|
|
||||||
this.getTabsArray(this.mTabBrowser).some(function(aTab) {
|
this.getTabsArray(this.mTabBrowser).some(function(aTab) {
|
||||||
var box = aTab.boxObject;
|
var box = aTab.boxObject;
|
||||||
if (box[this.screenPositionProp] > clickedPoint ||
|
if (box[this.screenPositionProp] > aCoordinate ||
|
||||||
box[this.screenPositionProp] + box[this.sizeProp] < clickedPoint) {
|
box[this.screenPositionProp] + box[this.sizeProp] < aCoordinate) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
tab = aTab;
|
tab = aTab;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user