Browse Source

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

Shelley Vohr 5 years ago
parent
commit
52c76d737a

+ 4 - 3
atom/browser/api/atom_api_top_level_window.cc

@@ -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)

+ 11 - 0
docs/api/browser-window.md

@@ -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
@@ -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.

+ 2 - 1
docs/api/modernization/property-updates.md

@@ -22,7 +22,6 @@ The Electron team is currently undergoing an initiative to convert separate gett
   * `title`
   * `documentEdited`
   * `hasShadow`
-  * `autohideMenuBar`
   * `menubarVisible`
   * `visibleOnAllWorkspaces`
 * `crashReporter` module
@@ -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

+ 4 - 1
lib/browser/api/browser-window.js

@@ -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)
@@ -191,4 +191,7 @@ Object.assign(BrowserWindow.prototype, {
   }
 })
 
+// Deprecations
+deprecate.fnToProperty(BrowserWindow.prototype, 'autoHideMenuBar', '_isMenuBarAutoHide', '_setAutoHideMenuBar')
+
 module.exports = BrowserWindow

+ 10 - 0
spec/api-browser-window-spec.js

@@ -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