mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
54 lines
1.5 KiB
JavaScript
54 lines
1.5 KiB
JavaScript
module.exports = class TitleBar {
|
|
constructor({ workspace, themes, applicationDelegate }) {
|
|
this.dblclickHandler = this.dblclickHandler.bind(this);
|
|
this.workspace = workspace;
|
|
this.themes = themes;
|
|
this.applicationDelegate = applicationDelegate;
|
|
this.element = document.createElement('div');
|
|
this.element.classList.add('title-bar');
|
|
|
|
this.titleElement = document.createElement('div');
|
|
this.titleElement.classList.add('title');
|
|
this.element.appendChild(this.titleElement);
|
|
|
|
this.element.addEventListener('dblclick', this.dblclickHandler);
|
|
|
|
this.workspace.onDidChangeWindowTitle(() => this.updateTitle());
|
|
this.themes.onDidChangeActiveThemes(() => this.updateWindowSheetOffset());
|
|
|
|
this.updateTitle();
|
|
this.updateWindowSheetOffset();
|
|
}
|
|
|
|
dblclickHandler() {
|
|
// User preference deciding which action to take on a title bar double-click
|
|
switch (
|
|
this.applicationDelegate.getUserDefault(
|
|
'AppleActionOnDoubleClick',
|
|
'string'
|
|
)
|
|
) {
|
|
case 'Minimize':
|
|
this.applicationDelegate.minimizeWindow();
|
|
break;
|
|
case 'Maximize':
|
|
if (this.applicationDelegate.isWindowMaximized()) {
|
|
this.applicationDelegate.unmaximizeWindow();
|
|
} else {
|
|
this.applicationDelegate.maximizeWindow();
|
|
}
|
|
break;
|
|
}
|
|
}
|
|
|
|
updateTitle() {
|
|
this.titleElement.textContent = document.title;
|
|
}
|
|
|
|
updateWindowSheetOffset() {
|
|
this.applicationDelegate
|
|
.getCurrentWindow()
|
|
.setSheetOffset(this.element.offsetHeight);
|
|
}
|
|
};
|