mirror of
https://github.com/zen-browser/desktop.git
synced 2025-10-03 08:28:38 +00:00
Added preference to disable tab renaming, refactored inline styles to css files, changed listener to blur, refactored code
This commit is contained in:
@@ -186,7 +186,6 @@ var gZenUIManager = {
|
||||
};
|
||||
|
||||
var gZenVerticalTabsManager = {
|
||||
_tabEdited: null,
|
||||
init() {
|
||||
this._multiWindowFeature = new ZenMultiWindowFeature();
|
||||
this._initWaitPromise();
|
||||
@@ -224,7 +223,8 @@ var gZenVerticalTabsManager = {
|
||||
document.documentElement.setAttribute('zen-window-buttons-reversed', true);
|
||||
}
|
||||
|
||||
//this._insertDoubleClickListenerPinnedTabs();
|
||||
this._tabEdited = null;
|
||||
this._renameTabHalt = this.renameTabHalt.bind(this);
|
||||
gBrowser.tabContainer.addEventListener('dblclick', this.renameTabStart.bind(this));
|
||||
},
|
||||
|
||||
@@ -586,13 +586,6 @@ var gZenVerticalTabsManager = {
|
||||
target.appendChild(child);
|
||||
},
|
||||
|
||||
//_insertDoubleClickListenerPinnedTabs() {
|
||||
// const tabs = gBrowser.tabs;
|
||||
// for (const tab of tabs) {
|
||||
// tab.addEventListener('dblclick', this.renameTabStart.bind(this));
|
||||
// }
|
||||
//},
|
||||
|
||||
renameTabKeydown(event) {
|
||||
if (event.key === 'Enter') {
|
||||
let label = this._tabEdited.querySelector('.tab-label-container-editing');
|
||||
@@ -604,41 +597,37 @@ var gZenVerticalTabsManager = {
|
||||
this._tabEdited.label = newName;
|
||||
this._tabEdited.setAttribute('zen-has-static-label', 'true');
|
||||
} else {
|
||||
// If the page is loaded, get the title of the page. Otherwise, keep name as is
|
||||
this._tabEdited.label = gBrowser.getBrowserForTab(this._tabEdited).contentTitle || this._tabEdited.label;
|
||||
// If the page had a title, reset the zen-has-static-label attribute
|
||||
if (gBrowser.getBrowserForTab(this._tabEdited).contentTitle) {
|
||||
this._tabEdited.removeAttribute('zen-has-static-label');
|
||||
}
|
||||
this._tabEdited.removeAttribute('zen-has-static-label');
|
||||
gBrowser.setTabTitle(this._tabEdited);
|
||||
}
|
||||
|
||||
this._tabEdited.querySelector('.tab-editor-container').remove();
|
||||
label.style.display = '';
|
||||
label.className = label.className.replace(' tab-label-container-editing', '');
|
||||
document.removeEventListener('click', this.renameTabHalt.bind(this));
|
||||
label.classList.remove('tab-label-container-editing');
|
||||
|
||||
this._tabEdited = null;
|
||||
} else if (event.key === 'Escape') {
|
||||
let label = this._tabEdited.querySelector('.tab-label-container-editing');
|
||||
this._tabEdited.querySelector('.tab-editor-container').remove();
|
||||
|
||||
label.style.display = '';
|
||||
label.className = label.className.replace(' tab-label-container-editing', '');
|
||||
document.removeEventListener('click', this.renameTabHalt.bind(this));
|
||||
label.classList.remove('tab-label-container-editing');
|
||||
this._tabEdited = null;
|
||||
}
|
||||
},
|
||||
|
||||
renameTabStart(event) {
|
||||
if (this._tabEdited) return;
|
||||
if (
|
||||
this._tabEdited ||
|
||||
!Services.prefs.getBoolPref('zen.tabs.rename-tabs') ||
|
||||
Services.prefs.getBoolPref('browser.tabs.closeTabByDblclick')
|
||||
)
|
||||
return;
|
||||
this._tabEdited = event.target.closest('.tabbrowser-tab');
|
||||
if (!this._tabEdited || !this._tabEdited.pinned) {
|
||||
if (!this._tabEdited || !this._tabEdited.pinned || this._tabEdited.hasAttribute('zen-essential')) {
|
||||
this._tabEdited = null;
|
||||
return;
|
||||
}
|
||||
const label = this._tabEdited.querySelector('.tab-label-container');
|
||||
label.style.display = 'none';
|
||||
label.className += ' tab-label-container-editing';
|
||||
label.classList.add('tab-label-container-editing');
|
||||
|
||||
const container = window.MozXULElement.parseXULToFragment(`
|
||||
<vbox class="tab-label-container tab-editor-container" flex="1" align="start" pack="center"></vbox>
|
||||
@@ -649,31 +638,22 @@ var gZenVerticalTabsManager = {
|
||||
input.id = 'tab-label-input';
|
||||
input.value = this._tabEdited.label;
|
||||
input.addEventListener('keydown', this.renameTabKeydown.bind(this));
|
||||
input.style['white-space'] = 'nowrap';
|
||||
input.style['overflow-x'] = 'scroll';
|
||||
input.style['margin'] = '0';
|
||||
|
||||
containerHtml.appendChild(input);
|
||||
input.focus();
|
||||
input.select();
|
||||
|
||||
document.addEventListener('click', this.renameTabHalt.bind(this));
|
||||
input.addEventListener('blur', this._renameTabHalt);
|
||||
},
|
||||
|
||||
renameTabHalt(event) {
|
||||
// Ignore click event if it's clicking the input
|
||||
if (event.target.closest('#tab-label-input')) {
|
||||
return;
|
||||
}
|
||||
if (!this._tabEdited) {
|
||||
if (document.activeElement === event.target || !this._tabEdited) {
|
||||
return;
|
||||
}
|
||||
this._tabEdited.querySelector('.tab-editor-container').remove();
|
||||
const label = this._tabEdited.querySelector('.tab-label-container-editing');
|
||||
label.style.display = '';
|
||||
label.className = label.className.replace(' tab-label-container-editing', '');
|
||||
label.classList.remove('tab-label-container-editing');
|
||||
|
||||
document.removeEventListener('click', this.renameTabHalt.bind(this));
|
||||
this._tabEdited = null;
|
||||
},
|
||||
};
|
||||
|
Reference in New Issue
Block a user