diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc index 7195abfdda..2158592ff2 100644 --- a/atom/browser/api/atom_api_window.cc +++ b/atom/browser/api/atom_api_window.cc @@ -391,8 +391,7 @@ bool Window::IsEnabled() { } void Window::SetEnabled(bool enable) { - auto window = static_cast(window_.get()); - window->SetEnabled(enable); + window_->SetEnabled(enable); } void Window::Maximize() { diff --git a/atom/browser/native_window.h b/atom/browser/native_window.h index e63d0e3be9..d1cfa7cc35 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.mm b/atom/browser/native_window_mac.mm index e973a51c4f..f50fd605fb 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -1135,6 +1135,14 @@ bool NativeWindowMac::IsEnabled() { return [window_ attachedSheet] == nil; } +void NativeWindowMac::SetEnabled(bool enable) { + if (enable == false){ + [window_ attachedSheet] = nil; + } else { + [window_ beginSheet:window_]; + } +} + void NativeWindowMac::Maximize() { if (IsMaximized()) return; diff --git a/atom/browser/native_window_views.h b/atom/browser/native_window_views.h index f08603d123..2d24b50def 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(); }