mirror of
https://github.com/atom/atom.git
synced 2026-01-25 14:59:03 -05:00
48 lines
1.5 KiB
JavaScript
48 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)
|
|
}
|
|
}
|