Skip to content

Commit

Permalink
refactor: make autoHideMenuBar a property on BrowserWindows (#18555)
Browse files Browse the repository at this point in the history
  • Loading branch information
codebytere committed Jun 3, 2019
1 parent 4cb6be4 commit 52c76d7
Show file tree
Hide file tree
Showing 5 changed files with 31 additions and 5 deletions.
7 changes: 4 additions & 3 deletions atom/browser/api/atom_api_top_level_window.cc
Original file line number Diff line number Diff line change
Expand Up @@ -1146,9 +1146,10 @@ void TopLevelWindow::BuildPrototype(v8::Isolate* isolate,
&TopLevelWindow::IsExcludedFromShownWindowsMenu,
&TopLevelWindow::SetExcludedFromShownWindowsMenu)
#endif
.SetMethod("setAutoHideMenuBar", &TopLevelWindow::SetAutoHideMenuBar)
.SetMethod("isMenuBarAutoHide", &TopLevelWindow::IsMenuBarAutoHide)
.SetMethod("setMenuBarVisibility", &TopLevelWindow::SetMenuBarVisibility)
.SetMethod("_setAutoHideMenuBar", &TopLevelWindow::SetAutoHideMenuBar)
.SetMethod("_isMenuBarAutoHide", &TopLevelWindow::IsMenuBarAutoHide)
.SetProperty("autoHideMenuBar", &TopLevelWindow::IsMenuBarAutoHide,
&TopLevelWindow::SetAutoHideMenuBar)
.SetMethod("isMenuBarVisible", &TopLevelWindow::IsMenuBarVisible)
.SetMethod("setAspectRatio", &TopLevelWindow::SetAspectRatio)
.SetMethod("previewFile", &TopLevelWindow::PreviewFile)
Expand Down
11 changes: 11 additions & 0 deletions docs/api/browser-window.md
Original file line number Diff line number Diff line change
Expand Up @@ -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
hide it immediately.

**[Deprecated](modernization/property-updates.md)**

#### `win.isMenuBarAutoHide()`

Returns `Boolean` - Whether menu bar automatically hides itself.

**[Deprecated](modernization/property-updates.md)**

#### `win.setMenuBarVisibility(visible)` _Windows_ _Linux_

* `visible` Boolean
Expand Down Expand Up @@ -1642,6 +1646,13 @@ removed in future Electron releases.

### 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_

A `Boolean` property that determines whether the window is excluded from the application’s Windows menu. `false` by default.
Expand Down
3 changes: 2 additions & 1 deletion docs/api/modernization/property-updates.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ The Electron team is currently undergoing an initiative to convert separate gett
* `title`
* `documentEdited`
* `hasShadow`
* `autohideMenuBar`
* `menubarVisible`
* `visibleOnAllWorkspaces`
* `crashReporter` module
Expand Down Expand Up @@ -54,6 +53,8 @@ The Electron team is currently undergoing an initiative to convert separate gett
* `applicationMenu`
* `badgeCount`
* `name`
* `BrowserWindow` module
* `autohideMenuBar`
* `NativeImage`
* `isMacTemplateImage`
* `SystemPreferences` module
Expand Down
5 changes: 4 additions & 1 deletion lib/browser/api/browser-window.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
'use strict'

const electron = require('electron')
const { WebContentsView, TopLevelWindow } = electron
const { WebContentsView, TopLevelWindow, deprecate } = electron
const { BrowserWindow } = process.electronBinding('window')

Object.setPrototypeOf(BrowserWindow.prototype, TopLevelWindow.prototype)
Expand Down Expand Up @@ -191,4 +191,7 @@ Object.assign(BrowserWindow.prototype, {
}
})

// Deprecations
deprecate.fnToProperty(BrowserWindow.prototype, 'autoHideMenuBar', '_isMenuBarAutoHide', '_setAutoHideMenuBar')

module.exports = BrowserWindow
10 changes: 10 additions & 0 deletions spec/api-browser-window-spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -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()', () => {
it('should not steal focus', async () => {
const posDelta = 50
Expand Down

0 comments on commit 52c76d7

Please sign in to comment.