diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc index 7b7b1d87b918..e3ecb43acf17 100644 --- a/atom/browser/api/atom_api_window.cc +++ b/atom/browser/api/atom_api_window.cc @@ -393,6 +393,10 @@ bool Window::IsEnabled() { return window_->IsEnabled(); } +void Window::SetEnabled(bool enable) { + window_->SetEnabled(enable); +} + void Window::Maximize() { window_->Maximize(); } @@ -1008,6 +1012,7 @@ void Window::BuildPrototype(v8::Isolate* isolate, .SetMethod("hide", &Window::Hide) .SetMethod("isVisible", &Window::IsVisible) .SetMethod("isEnabled", &Window::IsEnabled) + .SetMethod("setEnabled", & Window::SetEnabled) .SetMethod("maximize", &Window::Maximize) .SetMethod("unmaximize", &Window::Unmaximize) .SetMethod("isMaximized", &Window::IsMaximized) diff --git a/atom/browser/api/atom_api_window.h b/atom/browser/api/atom_api_window.h index 657688f128b0..f86c387a34af 100644 --- a/atom/browser/api/atom_api_window.h +++ b/atom/browser/api/atom_api_window.h @@ -112,6 +112,7 @@ class Window : public mate::TrackableObject, void Hide(); bool IsVisible(); bool IsEnabled(); + void SetEnabled(bool enable); void Maximize(); void Unmaximize(); bool IsMaximized(); diff --git a/atom/browser/native_window.h b/atom/browser/native_window.h index e63d0e3be91d..d1cfa7cc3529 100644 --- a/atom/browser/native_window.h +++ b/atom/browser/native_window.h @@ -80,6 +80,7 @@ class NativeWindow : public base::SupportsUserData, virtual void Hide() = 0; virtual bool IsVisible() = 0; virtual bool IsEnabled() = 0; + virtual void SetEnabled(bool enable) = 0; virtual void Maximize() = 0; virtual void Unmaximize() = 0; virtual bool IsMaximized() = 0; diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index b52b5fe67b1b..16b393d1b25b 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -38,6 +38,7 @@ class NativeWindowMac : public NativeWindow, void Hide() override; bool IsVisible() override; bool IsEnabled() override; + void SetEnabled(bool enable) override; void Maximize() override; void Unmaximize() override; bool IsMaximized() override; diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index e973a51c4fcb..ae2ee23943ab 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -1135,6 +1135,17 @@ bool NativeWindowMac::IsEnabled() { return [window_ attachedSheet] == nil; } +void NativeWindowMac::SetEnabled(bool enable) { + if (enable) { + [window_ beginSheet: window_ completionHandler:^(NSModalResponse returnCode) { + NSLog(@"modal enabled"); + return; + }]; + } else { + [window_ endSheet: [window_ attachedSheet]]; + } +} + void NativeWindowMac::Maximize() { if (IsMaximized()) return; diff --git a/atom/browser/native_window_views.h b/atom/browser/native_window_views.h index f08603d1234e..2d24b50deffb 100644 --- a/atom/browser/native_window_views.h +++ b/atom/browser/native_window_views.h @@ -132,7 +132,7 @@ class NativeWindowViews : public NativeWindow, void SetIcon(const gfx::ImageSkia& icon); #endif - void SetEnabled(bool enable); + void SetEnabled(bool enable) override; views::Widget* widget() const { return window_.get(); } diff --git a/docs/api/browser-window.md b/docs/api/browser-window.md index 1583aaa9cc05..cb5b895e9b61 100644 --- a/docs/api/browser-window.md +++ b/docs/api/browser-window.md @@ -847,6 +847,12 @@ the supplied bounds. Returns [`Rectangle`](structures/rectangle.md) +#### `win.setEnabled(enable)` + +* `enable` Boolean + +Disable or enable the window. + #### `win.setSize(width, height[, animate])` * `width` Integer