feat: Implement BrowserWindow.setFocusable on macOS (#19033)
It was not implemented on Mac despite being available as a constructor option. Implementation already exists on Windows. Linux case can be separately. https://github.com/electron/electron/issues/19032 Notes: Implemented BrowserWindow.setFocusable on macOS.
This commit is contained in:
parent
e6a7a84834
commit
09c3277b42
3 changed files with 11 additions and 1 deletions
|
@ -1551,12 +1551,14 @@ Prevents the window contents from being captured by other apps.
|
||||||
On macOS it sets the NSWindow's sharingType to NSWindowSharingNone.
|
On macOS it sets the NSWindow's sharingType to NSWindowSharingNone.
|
||||||
On Windows it calls SetWindowDisplayAffinity with `WDA_MONITOR`.
|
On Windows it calls SetWindowDisplayAffinity with `WDA_MONITOR`.
|
||||||
|
|
||||||
#### `win.setFocusable(focusable)` _Windows_
|
#### `win.setFocusable(focusable)` _macOS_ _Windows_
|
||||||
|
|
||||||
* `focusable` Boolean
|
* `focusable` Boolean
|
||||||
|
|
||||||
Changes whether the window can be focused.
|
Changes whether the window can be focused.
|
||||||
|
|
||||||
|
On macOS it does not remove the focus from the window.
|
||||||
|
|
||||||
#### `win.setParentWindow(parent)`
|
#### `win.setParentWindow(parent)`
|
||||||
|
|
||||||
* `parent` BrowserWindow
|
* `parent` BrowserWindow
|
||||||
|
|
|
@ -104,6 +104,7 @@ class NativeWindowMac : public NativeWindow {
|
||||||
bool IsDocumentEdited() override;
|
bool IsDocumentEdited() override;
|
||||||
void SetIgnoreMouseEvents(bool ignore, bool forward) override;
|
void SetIgnoreMouseEvents(bool ignore, bool forward) override;
|
||||||
void SetContentProtection(bool enable) override;
|
void SetContentProtection(bool enable) override;
|
||||||
|
void SetFocusable(bool focusable) override;
|
||||||
void AddBrowserView(NativeBrowserView* browser_view) override;
|
void AddBrowserView(NativeBrowserView* browser_view) override;
|
||||||
void RemoveBrowserView(NativeBrowserView* browser_view) override;
|
void RemoveBrowserView(NativeBrowserView* browser_view) override;
|
||||||
void SetParentWindow(NativeWindow* parent) override;
|
void SetParentWindow(NativeWindow* parent) override;
|
||||||
|
|
|
@ -1076,6 +1076,13 @@ void NativeWindowMac::SetContentProtection(bool enable) {
|
||||||
setSharingType:enable ? NSWindowSharingNone : NSWindowSharingReadOnly];
|
setSharingType:enable ? NSWindowSharingNone : NSWindowSharingReadOnly];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindowMac::SetFocusable(bool focusable) {
|
||||||
|
// No known way to unfocus the window if it had the focus. Here we do not
|
||||||
|
// want to call Focus(false) because it moves the window to the back, i.e.
|
||||||
|
// at the bottom in term of z-order.
|
||||||
|
[window_ setDisableKeyOrMainWindow:!focusable];
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindowMac::AddBrowserView(NativeBrowserView* view) {
|
void NativeWindowMac::AddBrowserView(NativeBrowserView* view) {
|
||||||
[CATransaction begin];
|
[CATransaction begin];
|
||||||
[CATransaction setDisableActions:YES];
|
[CATransaction setDisableActions:YES];
|
||||||
|
|
Loading…
Reference in a new issue