refactor: make autoHideMenuBar a property on BrowserWindows (#18555)

This commit is contained in:
Shelley Vohr 2019-06-03 09:09:47 -07:00 committed by GitHub
parent 4cb6be453a
commit 52c76d737a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 31 additions and 5 deletions

View file

@ -1146,9 +1146,10 @@ void TopLevelWindow::BuildPrototype(v8::Isolate* isolate,
&TopLevelWindow::IsExcludedFromShownWindowsMenu, &TopLevelWindow::IsExcludedFromShownWindowsMenu,
&TopLevelWindow::SetExcludedFromShownWindowsMenu) &TopLevelWindow::SetExcludedFromShownWindowsMenu)
#endif #endif
.SetMethod("setAutoHideMenuBar", &TopLevelWindow::SetAutoHideMenuBar) .SetMethod("_setAutoHideMenuBar", &TopLevelWindow::SetAutoHideMenuBar)
.SetMethod("isMenuBarAutoHide", &TopLevelWindow::IsMenuBarAutoHide) .SetMethod("_isMenuBarAutoHide", &TopLevelWindow::IsMenuBarAutoHide)
.SetMethod("setMenuBarVisibility", &TopLevelWindow::SetMenuBarVisibility) .SetProperty("autoHideMenuBar", &TopLevelWindow::IsMenuBarAutoHide,
&TopLevelWindow::SetAutoHideMenuBar)
.SetMethod("isMenuBarVisible", &TopLevelWindow::IsMenuBarVisible) .SetMethod("isMenuBarVisible", &TopLevelWindow::IsMenuBarVisible)
.SetMethod("setAspectRatio", &TopLevelWindow::SetAspectRatio) .SetMethod("setAspectRatio", &TopLevelWindow::SetAspectRatio)
.SetMethod("previewFile", &TopLevelWindow::PreviewFile) .SetMethod("previewFile", &TopLevelWindow::PreviewFile)

View file

@ -1470,10 +1470,14 @@ menu bar will only show when users press the single `Alt` key.
If the menu bar is already visible, calling `setAutoHideMenuBar(true)` won't If the menu bar is already visible, calling `setAutoHideMenuBar(true)` won't
hide it immediately. hide it immediately.
**[Deprecated](modernization/property-updates.md)**
#### `win.isMenuBarAutoHide()` #### `win.isMenuBarAutoHide()`
Returns `Boolean` - Whether menu bar automatically hides itself. Returns `Boolean` - Whether menu bar automatically hides itself.
**[Deprecated](modernization/property-updates.md)**
#### `win.setMenuBarVisibility(visible)` _Windows_ _Linux_ #### `win.setMenuBarVisibility(visible)` _Windows_ _Linux_
* `visible` Boolean * `visible` Boolean
@ -1642,6 +1646,13 @@ removed in future Electron releases.
### Properties ### Properties
#### `win.autoHideMenuBar`
A `Boolean` property that determines whether the window menu bar should hide itself automatically. Once set, the menu bar will only show when users press the single `Alt` key.
If the menu bar is already visible, setting this property to `true` won't
hide it immediately.
#### `win.excludedFromShownWindowsMenu` _macOS_ #### `win.excludedFromShownWindowsMenu` _macOS_
A `Boolean` property that determines whether the window is excluded from the applications Windows menu. `false` by default. A `Boolean` property that determines whether the window is excluded from the applications Windows menu. `false` by default.

View file

@ -22,7 +22,6 @@ The Electron team is currently undergoing an initiative to convert separate gett
* `title` * `title`
* `documentEdited` * `documentEdited`
* `hasShadow` * `hasShadow`
* `autohideMenuBar`
* `menubarVisible` * `menubarVisible`
* `visibleOnAllWorkspaces` * `visibleOnAllWorkspaces`
* `crashReporter` module * `crashReporter` module
@ -54,6 +53,8 @@ The Electron team is currently undergoing an initiative to convert separate gett
* `applicationMenu` * `applicationMenu`
* `badgeCount` * `badgeCount`
* `name` * `name`
* `BrowserWindow` module
* `autohideMenuBar`
* `NativeImage` * `NativeImage`
* `isMacTemplateImage` * `isMacTemplateImage`
* `SystemPreferences` module * `SystemPreferences` module

View file

@ -1,7 +1,7 @@
'use strict' 'use strict'
const electron = require('electron') const electron = require('electron')
const { WebContentsView, TopLevelWindow } = electron const { WebContentsView, TopLevelWindow, deprecate } = electron
const { BrowserWindow } = process.electronBinding('window') const { BrowserWindow } = process.electronBinding('window')
Object.setPrototypeOf(BrowserWindow.prototype, TopLevelWindow.prototype) Object.setPrototypeOf(BrowserWindow.prototype, TopLevelWindow.prototype)
@ -191,4 +191,7 @@ Object.assign(BrowserWindow.prototype, {
} }
}) })
// Deprecations
deprecate.fnToProperty(BrowserWindow.prototype, 'autoHideMenuBar', '_isMenuBarAutoHide', '_setAutoHideMenuBar')
module.exports = BrowserWindow module.exports = BrowserWindow

View file

@ -513,6 +513,16 @@ describe('BrowserWindow module', () => {
}) })
}) })
describe('BrowserWindow autoHideMenuBar property', () => {
it('has an autoHideMenuBar property', () => {
expect(w).to.have.a.property('autoHideMenuBar')
// TODO(codebytere): remove when propertyification is complete
expect(w.setAutoHideMenuBar).to.be.a('function')
expect(w.isMenuBarAutoHide).to.be.a('function')
})
})
describe('BrowserWindow.moveTop()', () => { describe('BrowserWindow.moveTop()', () => {
it('should not steal focus', async () => { it('should not steal focus', async () => {
const posDelta = 50 const posDelta = 50