feat: allow windows to be excluded from the windows menu (#17404)
* feat: allow windows to be excluded from the windows menu * excludedfromWindowsMenu => excludedFromShownWindowsMenu * implement no-op for win & linux
This commit is contained in:
parent
ec5e0ef06e
commit
4e57a732a8
8 changed files with 57 additions and 0 deletions
|
@ -567,6 +567,14 @@ void TopLevelWindow::SetSkipTaskbar(bool skip) {
|
||||||
window_->SetSkipTaskbar(skip);
|
window_->SetSkipTaskbar(skip);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TopLevelWindow::SetExcludedFromShownWindowsMenu(bool excluded) {
|
||||||
|
window_->SetExcludedFromShownWindowsMenu(excluded);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool TopLevelWindow::IsExcludedFromShownWindowsMenu() {
|
||||||
|
return window_->IsExcludedFromShownWindowsMenu();
|
||||||
|
}
|
||||||
|
|
||||||
void TopLevelWindow::SetSimpleFullScreen(bool simple_fullscreen) {
|
void TopLevelWindow::SetSimpleFullScreen(bool simple_fullscreen) {
|
||||||
window_->SetSimpleFullScreen(simple_fullscreen);
|
window_->SetSimpleFullScreen(simple_fullscreen);
|
||||||
}
|
}
|
||||||
|
@ -1133,6 +1141,9 @@ void TopLevelWindow::BuildPrototype(v8::Isolate* isolate,
|
||||||
.SetMethod("addTabbedWindow", &TopLevelWindow::AddTabbedWindow)
|
.SetMethod("addTabbedWindow", &TopLevelWindow::AddTabbedWindow)
|
||||||
.SetMethod("setWindowButtonVisibility",
|
.SetMethod("setWindowButtonVisibility",
|
||||||
&TopLevelWindow::SetWindowButtonVisibility)
|
&TopLevelWindow::SetWindowButtonVisibility)
|
||||||
|
.SetProperty("excludedFromShownWindowsMenu",
|
||||||
|
&TopLevelWindow::IsExcludedFromShownWindowsMenu,
|
||||||
|
&TopLevelWindow::SetExcludedFromShownWindowsMenu)
|
||||||
#endif
|
#endif
|
||||||
.SetMethod("setAutoHideMenuBar", &TopLevelWindow::SetAutoHideMenuBar)
|
.SetMethod("setAutoHideMenuBar", &TopLevelWindow::SetAutoHideMenuBar)
|
||||||
.SetMethod("isMenuBarAutoHide", &TopLevelWindow::IsMenuBarAutoHide)
|
.SetMethod("isMenuBarAutoHide", &TopLevelWindow::IsMenuBarAutoHide)
|
||||||
|
|
|
@ -145,6 +145,8 @@ class TopLevelWindow : public mate::TrackableObject<TopLevelWindow>,
|
||||||
std::string GetTitle();
|
std::string GetTitle();
|
||||||
void FlashFrame(bool flash);
|
void FlashFrame(bool flash);
|
||||||
void SetSkipTaskbar(bool skip);
|
void SetSkipTaskbar(bool skip);
|
||||||
|
void SetExcludedFromShownWindowsMenu(bool excluded);
|
||||||
|
bool IsExcludedFromShownWindowsMenu();
|
||||||
void SetSimpleFullScreen(bool simple_fullscreen);
|
void SetSimpleFullScreen(bool simple_fullscreen);
|
||||||
bool IsSimpleFullScreen();
|
bool IsSimpleFullScreen();
|
||||||
void SetKiosk(bool kiosk);
|
void SetKiosk(bool kiosk);
|
||||||
|
|
|
@ -136,6 +136,8 @@ class NativeWindow : public base::SupportsUserData,
|
||||||
virtual std::string GetTitle() = 0;
|
virtual std::string GetTitle() = 0;
|
||||||
virtual void FlashFrame(bool flash) = 0;
|
virtual void FlashFrame(bool flash) = 0;
|
||||||
virtual void SetSkipTaskbar(bool skip) = 0;
|
virtual void SetSkipTaskbar(bool skip) = 0;
|
||||||
|
virtual void SetExcludedFromShownWindowsMenu(bool excluded) = 0;
|
||||||
|
virtual bool IsExcludedFromShownWindowsMenu() = 0;
|
||||||
virtual void SetSimpleFullScreen(bool simple_fullscreen) = 0;
|
virtual void SetSimpleFullScreen(bool simple_fullscreen) = 0;
|
||||||
virtual bool IsSimpleFullScreen() = 0;
|
virtual bool IsSimpleFullScreen() = 0;
|
||||||
virtual void SetKiosk(bool kiosk) = 0;
|
virtual void SetKiosk(bool kiosk) = 0;
|
||||||
|
|
|
@ -87,6 +87,8 @@ class NativeWindowMac : public NativeWindow {
|
||||||
std::string GetTitle() override;
|
std::string GetTitle() override;
|
||||||
void FlashFrame(bool flash) override;
|
void FlashFrame(bool flash) override;
|
||||||
void SetSkipTaskbar(bool skip) override;
|
void SetSkipTaskbar(bool skip) override;
|
||||||
|
void SetExcludedFromShownWindowsMenu(bool excluded) override;
|
||||||
|
bool IsExcludedFromShownWindowsMenu() override;
|
||||||
void SetSimpleFullScreen(bool simple_fullscreen) override;
|
void SetSimpleFullScreen(bool simple_fullscreen) override;
|
||||||
bool IsSimpleFullScreen() override;
|
bool IsSimpleFullScreen() override;
|
||||||
void SetKiosk(bool kiosk) override;
|
void SetKiosk(bool kiosk) override;
|
||||||
|
|
|
@ -886,6 +886,16 @@ void NativeWindowMac::FlashFrame(bool flash) {
|
||||||
|
|
||||||
void NativeWindowMac::SetSkipTaskbar(bool skip) {}
|
void NativeWindowMac::SetSkipTaskbar(bool skip) {}
|
||||||
|
|
||||||
|
bool NativeWindowMac::IsExcludedFromShownWindowsMenu() {
|
||||||
|
NSWindow* window = GetNativeWindow().GetNativeNSWindow();
|
||||||
|
return [window isExcludedFromWindowsMenu];
|
||||||
|
}
|
||||||
|
|
||||||
|
void NativeWindowMac::SetExcludedFromShownWindowsMenu(bool excluded) {
|
||||||
|
NSWindow* window = GetNativeWindow().GetNativeNSWindow();
|
||||||
|
[window setExcludedFromWindowsMenu:excluded];
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindowMac::SetSimpleFullScreen(bool simple_fullscreen) {
|
void NativeWindowMac::SetSimpleFullScreen(bool simple_fullscreen) {
|
||||||
NSWindow* window = GetNativeWindow().GetNativeNSWindow();
|
NSWindow* window = GetNativeWindow().GetNativeNSWindow();
|
||||||
|
|
||||||
|
|
|
@ -721,6 +721,13 @@ bool NativeWindowViews::IsMaximizable() {
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindowViews::SetExcludedFromShownWindowsMenu(bool excluded) {}
|
||||||
|
|
||||||
|
bool NativeWindowViews::IsExcludedFromShownWindowsMenu() {
|
||||||
|
// return false on unsupported platforms
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindowViews::SetFullScreenable(bool fullscreenable) {
|
void NativeWindowViews::SetFullScreenable(bool fullscreenable) {
|
||||||
fullscreenable_ = fullscreenable;
|
fullscreenable_ = fullscreenable;
|
||||||
}
|
}
|
||||||
|
|
|
@ -97,6 +97,8 @@ class NativeWindowViews : public NativeWindow,
|
||||||
std::string GetTitle() override;
|
std::string GetTitle() override;
|
||||||
void FlashFrame(bool flash) override;
|
void FlashFrame(bool flash) override;
|
||||||
void SetSkipTaskbar(bool skip) override;
|
void SetSkipTaskbar(bool skip) override;
|
||||||
|
void SetExcludedFromShownWindowsMenu(bool excluded) override;
|
||||||
|
bool IsExcludedFromShownWindowsMenu() override;
|
||||||
void SetSimpleFullScreen(bool simple_fullscreen) override;
|
void SetSimpleFullScreen(bool simple_fullscreen) override;
|
||||||
bool IsSimpleFullScreen() override;
|
bool IsSimpleFullScreen() override;
|
||||||
void SetKiosk(bool kiosk) override;
|
void SetKiosk(bool kiosk) override;
|
||||||
|
|
|
@ -1648,3 +1648,24 @@ removed in future Electron releases.
|
||||||
[vibrancy-docs]: https://developer.apple.com/documentation/appkit/nsvisualeffectview?preferredLanguage=objc
|
[vibrancy-docs]: https://developer.apple.com/documentation/appkit/nsvisualeffectview?preferredLanguage=objc
|
||||||
[window-levels]: https://developer.apple.com/documentation/appkit/nswindow/level
|
[window-levels]: https://developer.apple.com/documentation/appkit/nswindow/level
|
||||||
[chrome-content-scripts]: https://developer.chrome.com/extensions/content_scripts#execution-environment
|
[chrome-content-scripts]: https://developer.chrome.com/extensions/content_scripts#execution-environment
|
||||||
|
|
||||||
|
### Properties
|
||||||
|
|
||||||
|
#### `win.excludedFromShownWindowsMenu` _macOS_
|
||||||
|
|
||||||
|
A `Boolean` property that determines whether the window is excluded from the application’s Windows menu. `false` by default.
|
||||||
|
|
||||||
|
```js
|
||||||
|
const win = new BrowserWindow({ height: 600, width: 600 })
|
||||||
|
|
||||||
|
const template = [
|
||||||
|
{
|
||||||
|
role: 'windowmenu'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
|
||||||
|
win.excludedFromShownWindowsMenu = true
|
||||||
|
|
||||||
|
const menu = Menu.buildFromTemplate(template)
|
||||||
|
Menu.setApplicationMenu(menu)
|
||||||
|
```
|
||||||
|
|
Loading…
Reference in a new issue