mac: Add win.disable/enable/isEnabled() API
This commit is contained in:
parent
214dd97165
commit
1a4b4a65c9
7 changed files with 76 additions and 0 deletions
|
@ -293,6 +293,18 @@ bool Window::IsVisible() {
|
||||||
return window_->IsVisible();
|
return window_->IsVisible();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Window::Disable() {
|
||||||
|
window_->Disable();
|
||||||
|
}
|
||||||
|
|
||||||
|
void Window::Enable() {
|
||||||
|
window_->Enable();
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Window::IsEnabled() {
|
||||||
|
return window_->IsEnabled();
|
||||||
|
}
|
||||||
|
|
||||||
void Window::Maximize() {
|
void Window::Maximize() {
|
||||||
window_->Maximize();
|
window_->Maximize();
|
||||||
}
|
}
|
||||||
|
@ -726,6 +738,9 @@ void Window::BuildPrototype(v8::Isolate* isolate,
|
||||||
.SetMethod("showInactive", &Window::ShowInactive)
|
.SetMethod("showInactive", &Window::ShowInactive)
|
||||||
.SetMethod("hide", &Window::Hide)
|
.SetMethod("hide", &Window::Hide)
|
||||||
.SetMethod("isVisible", &Window::IsVisible)
|
.SetMethod("isVisible", &Window::IsVisible)
|
||||||
|
.SetMethod("enable", &Window::Enable)
|
||||||
|
.SetMethod("disable", &Window::Disable)
|
||||||
|
.SetMethod("isEnabled", &Window::IsEnabled)
|
||||||
.SetMethod("maximize", &Window::Maximize)
|
.SetMethod("maximize", &Window::Maximize)
|
||||||
.SetMethod("unmaximize", &Window::Unmaximize)
|
.SetMethod("unmaximize", &Window::Unmaximize)
|
||||||
.SetMethod("isMaximized", &Window::IsMaximized)
|
.SetMethod("isMaximized", &Window::IsMaximized)
|
||||||
|
|
|
@ -95,6 +95,9 @@ class Window : public mate::TrackableObject<Window>,
|
||||||
void ShowInactive();
|
void ShowInactive();
|
||||||
void Hide();
|
void Hide();
|
||||||
bool IsVisible();
|
bool IsVisible();
|
||||||
|
void Disable();
|
||||||
|
void Enable();
|
||||||
|
bool IsEnabled();
|
||||||
void Maximize();
|
void Maximize();
|
||||||
void Unmaximize();
|
void Unmaximize();
|
||||||
bool IsMaximized();
|
bool IsMaximized();
|
||||||
|
|
|
@ -97,6 +97,9 @@ class NativeWindow : public base::SupportsUserData,
|
||||||
virtual void ShowInactive() = 0;
|
virtual void ShowInactive() = 0;
|
||||||
virtual void Hide() = 0;
|
virtual void Hide() = 0;
|
||||||
virtual bool IsVisible() = 0;
|
virtual bool IsVisible() = 0;
|
||||||
|
virtual void Disable() = 0;
|
||||||
|
virtual void Enable() = 0;
|
||||||
|
virtual bool IsEnabled() = 0;
|
||||||
virtual void Maximize() = 0;
|
virtual void Maximize() = 0;
|
||||||
virtual void Unmaximize() = 0;
|
virtual void Unmaximize() = 0;
|
||||||
virtual bool IsMaximized() = 0;
|
virtual bool IsMaximized() = 0;
|
||||||
|
|
|
@ -34,6 +34,9 @@ class NativeWindowMac : public NativeWindow {
|
||||||
void ShowInactive() override;
|
void ShowInactive() override;
|
||||||
void Hide() override;
|
void Hide() override;
|
||||||
bool IsVisible() override;
|
bool IsVisible() override;
|
||||||
|
void Disable() override;
|
||||||
|
void Enable() override;
|
||||||
|
bool IsEnabled() override;
|
||||||
void Maximize() override;
|
void Maximize() override;
|
||||||
void Unmaximize() override;
|
void Unmaximize() override;
|
||||||
bool IsMaximized() override;
|
bool IsMaximized() override;
|
||||||
|
|
|
@ -279,6 +279,7 @@ bool ScopedDisableResize::disable_resize_ = false;
|
||||||
@property BOOL acceptsFirstMouse;
|
@property BOOL acceptsFirstMouse;
|
||||||
@property BOOL disableAutoHideCursor;
|
@property BOOL disableAutoHideCursor;
|
||||||
@property BOOL disableKeyOrMainWindow;
|
@property BOOL disableKeyOrMainWindow;
|
||||||
|
@property BOOL disableMouseEvents;
|
||||||
|
|
||||||
- (void)setShell:(atom::NativeWindowMac*)shell;
|
- (void)setShell:(atom::NativeWindowMac*)shell;
|
||||||
- (void)setEnableLargerThanScreen:(bool)enable;
|
- (void)setEnableLargerThanScreen:(bool)enable;
|
||||||
|
@ -348,6 +349,29 @@ bool ScopedDisableResize::disable_resize_ = false;
|
||||||
return !self.disableKeyOrMainWindow;
|
return !self.disableKeyOrMainWindow;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
- (void)sendEvent:(NSEvent*)event {
|
||||||
|
// Drop all mouse events.
|
||||||
|
if (self.disableMouseEvents) {
|
||||||
|
switch([event type]) {
|
||||||
|
case NSLeftMouseUp:
|
||||||
|
case NSLeftMouseDown:
|
||||||
|
case NSRightMouseDown:
|
||||||
|
case NSRightMouseUp:
|
||||||
|
case NSOtherMouseUp:
|
||||||
|
case NSLeftMouseDragged:
|
||||||
|
case NSRightMouseDragged:
|
||||||
|
case NSOtherMouseDragged:
|
||||||
|
case NSMouseMoved:
|
||||||
|
case NSScrollWheel:
|
||||||
|
return;
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[super sendEvent:event];
|
||||||
|
}
|
||||||
|
|
||||||
@end
|
@end
|
||||||
|
|
||||||
@interface ControlRegionView : NSView
|
@interface ControlRegionView : NSView
|
||||||
|
@ -496,6 +520,7 @@ NativeWindowMac::NativeWindowMac(
|
||||||
backing:NSBackingStoreBuffered
|
backing:NSBackingStoreBuffered
|
||||||
defer:YES]);
|
defer:YES]);
|
||||||
[window_ setShell:this];
|
[window_ setShell:this];
|
||||||
|
[window_ setDisableMouseEvents:NO];
|
||||||
[window_ setEnableLargerThanScreen:enable_larger_than_screen()];
|
[window_ setEnableLargerThanScreen:enable_larger_than_screen()];
|
||||||
|
|
||||||
window_delegate_.reset([[AtomNSWindowDelegate alloc] initWithShell:this]);
|
window_delegate_.reset([[AtomNSWindowDelegate alloc] initWithShell:this]);
|
||||||
|
@ -647,6 +672,20 @@ bool NativeWindowMac::IsVisible() {
|
||||||
return [window_ isVisible];
|
return [window_ isVisible];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindowMac::Disable() {
|
||||||
|
[window_ setDisableKeyOrMainWindow:YES];
|
||||||
|
[window_ setDisableMouseEvents:YES];
|
||||||
|
}
|
||||||
|
|
||||||
|
void NativeWindowMac::Enable() {
|
||||||
|
[window_ setDisableKeyOrMainWindow:NO];
|
||||||
|
[window_ setDisableMouseEvents:NO];
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NativeWindowMac::IsEnabled() {
|
||||||
|
return ![window_ disableMouseEvents];
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindowMac::Maximize() {
|
void NativeWindowMac::Maximize() {
|
||||||
if (IsMaximized())
|
if (IsMaximized())
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -373,6 +373,16 @@ bool NativeWindowViews::IsVisible() {
|
||||||
return window_->IsVisible();
|
return window_->IsVisible();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void NativeWindowViews::Disable() {
|
||||||
|
}
|
||||||
|
|
||||||
|
void NativeWindowViews::Enable() {
|
||||||
|
}
|
||||||
|
|
||||||
|
bool NativeWindowViews::IsEnabled() {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
void NativeWindowViews::Maximize() {
|
void NativeWindowViews::Maximize() {
|
||||||
if (IsVisible())
|
if (IsVisible())
|
||||||
window_->Maximize();
|
window_->Maximize();
|
||||||
|
|
|
@ -54,6 +54,9 @@ class NativeWindowViews : public NativeWindow,
|
||||||
void ShowInactive() override;
|
void ShowInactive() override;
|
||||||
void Hide() override;
|
void Hide() override;
|
||||||
bool IsVisible() override;
|
bool IsVisible() override;
|
||||||
|
void Disable() override;
|
||||||
|
void Enable() override;
|
||||||
|
bool IsEnabled() override;
|
||||||
void Maximize() override;
|
void Maximize() override;
|
||||||
void Unmaximize() override;
|
void Unmaximize() override;
|
||||||
bool IsMaximized() override;
|
bool IsMaximized() override;
|
||||||
|
|
Loading…
Add table
Reference in a new issue