mirror of
https://ark.sudovanilla.org/Korbs/electron-tabs.git
synced 2024-12-22 19:43:53 +00:00
Add support for negative positions
This commit is contained in:
parent
f84908d4cb
commit
53dcb198f1
20
README.md
20
README.md
|
@ -138,11 +138,25 @@ Get current tab icon URL / icon.
|
|||
|
||||
#### `tab.setPosition(newPosition)`
|
||||
|
||||
Move tab to the specified position.
|
||||
Move tab to the specified position. A negative value is an offset from the right.
|
||||
|
||||
#### `tab.getPosition()`
|
||||
To move a tab to the leftmost position:
|
||||
|
||||
Get the tab position.
|
||||
```javascript
|
||||
tab.setPosition(1);
|
||||
```
|
||||
|
||||
> Note: a position of 0 also moves the tab to the leftmost position
|
||||
|
||||
To move a tab to the rightmost position:
|
||||
|
||||
```javascript
|
||||
tab.setPosition(-1);
|
||||
```
|
||||
|
||||
#### `tab.getPosition(fromRight)`
|
||||
|
||||
Get the tab position. If `fromRight` is true, then the index returned is negative and is the offset from the right.
|
||||
|
||||
#### `tab.activate()`
|
||||
|
||||
|
|
66
index.js
66
index.js
|
@ -209,6 +209,51 @@ class Tab extends EventEmitter {
|
|||
return this.icon;
|
||||
}
|
||||
|
||||
setPosition (newPosition) {
|
||||
let tabContainer = this.tabGroup.tabContainer;
|
||||
let tabs = tabContainer.children;
|
||||
let oldPosition = this.getPosition();
|
||||
|
||||
if (newPosition < 0) {
|
||||
newPosition += tabContainer.childElementCount;
|
||||
|
||||
if (newPosition < 0) {
|
||||
newPosition = 0;
|
||||
}
|
||||
} else {
|
||||
if (newPosition > tabContainer.childElementCount) {
|
||||
newPosition = tabContainer.childElementCount;
|
||||
}
|
||||
|
||||
// Make 1 be leftmost position
|
||||
newPosition--;
|
||||
}
|
||||
|
||||
if (newPosition > oldPosition) {
|
||||
newPosition++;
|
||||
}
|
||||
|
||||
tabContainer.insertBefore(tabs[oldPosition], tabs[newPosition]);
|
||||
|
||||
return this;
|
||||
}
|
||||
|
||||
getPosition (fromRight) {
|
||||
let position = 0;
|
||||
let tab = this.tab;
|
||||
while ((tab = tab.previousSibling) != null) position++;
|
||||
|
||||
if (fromRight === true) {
|
||||
position -= this.tabGroup.tabContainer.childElementCount;
|
||||
}
|
||||
|
||||
if (position === 0) {
|
||||
position = 1;
|
||||
}
|
||||
|
||||
return position;
|
||||
}
|
||||
|
||||
activate () {
|
||||
if (this.isClosed) return;
|
||||
let activeTab = this.tabGroup.getActiveTab();
|
||||
|
@ -271,27 +316,6 @@ class Tab extends EventEmitter {
|
|||
TabGroupPrivate.activateRecentTab.bind(tabGroup)();
|
||||
}
|
||||
}
|
||||
|
||||
getPosition () {
|
||||
let i = 0;
|
||||
let tab = this.tab;
|
||||
while ((tab = tab.previousSibling) != null) i++;
|
||||
return i;
|
||||
}
|
||||
|
||||
setPosition (newPosition) {
|
||||
let tabContainer = this.tabGroup.tabContainer;
|
||||
let tabs = tabContainer.children;
|
||||
let oldPosition = this.getPosition();
|
||||
|
||||
if (newPosition > oldPosition) {
|
||||
newPosition++;
|
||||
}
|
||||
|
||||
tabContainer.insertBefore(tabs[oldPosition], tabs[newPosition]);
|
||||
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
||||
const TabPrivate = {
|
||||
|
|
Loading…
Reference in a new issue