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();
|
||||
}
|
||||
|
||||
void Window::Disable() {
|
||||
window_->Disable();
|
||||
}
|
||||
|
||||
void Window::Enable() {
|
||||
window_->Enable();
|
||||
}
|
||||
|
||||
bool Window::IsEnabled() {
|
||||
return window_->IsEnabled();
|
||||
}
|
||||
|
||||
void Window::Maximize() {
|
||||
window_->Maximize();
|
||||
}
|
||||
|
@ -726,6 +738,9 @@ void Window::BuildPrototype(v8::Isolate* isolate,
|
|||
.SetMethod("showInactive", &Window::ShowInactive)
|
||||
.SetMethod("hide", &Window::Hide)
|
||||
.SetMethod("isVisible", &Window::IsVisible)
|
||||
.SetMethod("enable", &Window::Enable)
|
||||
.SetMethod("disable", &Window::Disable)
|
||||
.SetMethod("isEnabled", &Window::IsEnabled)
|
||||
.SetMethod("maximize", &Window::Maximize)
|
||||
.SetMethod("unmaximize", &Window::Unmaximize)
|
||||
.SetMethod("isMaximized", &Window::IsMaximized)
|
||||
|
|
|
@ -95,6 +95,9 @@ class Window : public mate::TrackableObject<Window>,
|
|||
void ShowInactive();
|
||||
void Hide();
|
||||
bool IsVisible();
|
||||
void Disable();
|
||||
void Enable();
|
||||
bool IsEnabled();
|
||||
void Maximize();
|
||||
void Unmaximize();
|
||||
bool IsMaximized();
|
||||
|
|
|
@ -97,6 +97,9 @@ class NativeWindow : public base::SupportsUserData,
|
|||
virtual void ShowInactive() = 0;
|
||||
virtual void Hide() = 0;
|
||||
virtual bool IsVisible() = 0;
|
||||
virtual void Disable() = 0;
|
||||
virtual void Enable() = 0;
|
||||
virtual bool IsEnabled() = 0;
|
||||
virtual void Maximize() = 0;
|
||||
virtual void Unmaximize() = 0;
|
||||
virtual bool IsMaximized() = 0;
|
||||
|
|
|
@ -34,6 +34,9 @@ class NativeWindowMac : public NativeWindow {
|
|||
void ShowInactive() override;
|
||||
void Hide() override;
|
||||
bool IsVisible() override;
|
||||
void Disable() override;
|
||||
void Enable() override;
|
||||
bool IsEnabled() override;
|
||||
void Maximize() override;
|
||||
void Unmaximize() override;
|
||||
bool IsMaximized() override;
|
||||
|
|
|
@ -279,6 +279,7 @@ bool ScopedDisableResize::disable_resize_ = false;
|
|||
@property BOOL acceptsFirstMouse;
|
||||
@property BOOL disableAutoHideCursor;
|
||||
@property BOOL disableKeyOrMainWindow;
|
||||
@property BOOL disableMouseEvents;
|
||||
|
||||
- (void)setShell:(atom::NativeWindowMac*)shell;
|
||||
- (void)setEnableLargerThanScreen:(bool)enable;
|
||||
|
@ -348,6 +349,29 @@ bool ScopedDisableResize::disable_resize_ = false;
|
|||
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
|
||||
|
||||
@interface ControlRegionView : NSView
|
||||
|
@ -496,6 +520,7 @@ NativeWindowMac::NativeWindowMac(
|
|||
backing:NSBackingStoreBuffered
|
||||
defer:YES]);
|
||||
[window_ setShell:this];
|
||||
[window_ setDisableMouseEvents:NO];
|
||||
[window_ setEnableLargerThanScreen:enable_larger_than_screen()];
|
||||
|
||||
window_delegate_.reset([[AtomNSWindowDelegate alloc] initWithShell:this]);
|
||||
|
@ -647,6 +672,20 @@ bool NativeWindowMac::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() {
|
||||
if (IsMaximized())
|
||||
return;
|
||||
|
|
|
@ -373,6 +373,16 @@ bool NativeWindowViews::IsVisible() {
|
|||
return window_->IsVisible();
|
||||
}
|
||||
|
||||
void NativeWindowViews::Disable() {
|
||||
}
|
||||
|
||||
void NativeWindowViews::Enable() {
|
||||
}
|
||||
|
||||
bool NativeWindowViews::IsEnabled() {
|
||||
return true;
|
||||
}
|
||||
|
||||
void NativeWindowViews::Maximize() {
|
||||
if (IsVisible())
|
||||
window_->Maximize();
|
||||
|
|
|
@ -54,6 +54,9 @@ class NativeWindowViews : public NativeWindow,
|
|||
void ShowInactive() override;
|
||||
void Hide() override;
|
||||
bool IsVisible() override;
|
||||
void Disable() override;
|
||||
void Enable() override;
|
||||
bool IsEnabled() override;
|
||||
void Maximize() override;
|
||||
void Unmaximize() override;
|
||||
bool IsMaximized() override;
|
||||
|
|
Loading…
Add table
Reference in a new issue