From 97589bbe33ddcab983db4134f000875e99e4c42a Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Mon, 5 Feb 2018 14:49:59 -0500 Subject: [PATCH 1/7] first pass at api method to enable window --- atom/browser/api/atom_api_window.cc | 11 +++++++---- atom/browser/api/atom_api_window.h | 1 + 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc index 7b7b1d87b9..7195abfdda 100644 --- a/atom/browser/api/atom_api_window.cc +++ b/atom/browser/api/atom_api_window.cc @@ -9,6 +9,7 @@ #include "atom/browser/api/atom_api_web_contents.h" #include "atom/browser/browser.h" #include "atom/browser/native_window.h" +#include "atom/browser/native_window_views.h" #include "atom/browser/web_contents_preferences.h" #include "atom/common/native_mate_converters/callback.h" #include "atom/common/native_mate_converters/file_path_converter.h" @@ -26,10 +27,6 @@ #include "native_mate/dictionary.h" #include "ui/gfx/geometry/rect.h" -#if defined(TOOLKIT_VIEWS) -#include "atom/browser/native_window_views.h" -#endif - #if defined(OS_WIN) #include "atom/browser/ui/win/taskbar_host.h" #include "ui/base/win/shell.h" @@ -393,6 +390,11 @@ bool Window::IsEnabled() { return window_->IsEnabled(); } +void Window::SetEnabled(bool enable) { + auto window = static_cast(window_.get()); + window->SetEnabled(enable); +} + void Window::Maximize() { window_->Maximize(); } @@ -1008,6 +1010,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 657688f128..f86c387a34 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(); From ae632193c0ba4c81b38dedd1a94bf53bf2d88214 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 6 Feb 2018 08:21:53 -0500 Subject: [PATCH 2/7] migrate to virtual void and start mac impl --- atom/browser/api/atom_api_window.cc | 3 +-- atom/browser/native_window.h | 1 + atom/browser/native_window_mac.mm | 8 ++++++++ atom/browser/native_window_views.h | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) 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(); } From faf08b2b7758a087a2972c5438823d189a16412e Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 6 Feb 2018 08:28:41 -0500 Subject: [PATCH 3/7] add documentation --- atom/browser/native_window_mac.mm | 6 +++--- docs/api/browser-window.md | 6 ++++++ 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index f50fd605fb..82135246b5 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -1136,10 +1136,10 @@ bool NativeWindowMac::IsEnabled() { } void NativeWindowMac::SetEnabled(bool enable) { - if (enable == false){ - [window_ attachedSheet] = nil; + if (enable){ + // TODO(codebytere): figure out how to implement window enabling } else { - [window_ beginSheet:window_]; + [window_ attachedSheet] = nil; } } diff --git a/docs/api/browser-window.md b/docs/api/browser-window.md index 1583aaa9cc..13cc2fdc0a 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(enabled)` + +* `enabled` Boolean + +Disable or enable the window. + #### `win.setSize(width, height[, animate])` * `width` Integer From 131aa38768a7a6ee746c595db2375c8cef869f25 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 6 Feb 2018 08:30:33 -0500 Subject: [PATCH 4/7] typo fix --- atom/browser/native_window_mac.mm | 2 +- docs/api/browser-window.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index 82135246b5..8234d7934b 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -1136,7 +1136,7 @@ bool NativeWindowMac::IsEnabled() { } void NativeWindowMac::SetEnabled(bool enable) { - if (enable){ + if (enable) { // TODO(codebytere): figure out how to implement window enabling } else { [window_ attachedSheet] = nil; diff --git a/docs/api/browser-window.md b/docs/api/browser-window.md index 13cc2fdc0a..cab2699000 100644 --- a/docs/api/browser-window.md +++ b/docs/api/browser-window.md @@ -847,9 +847,9 @@ the supplied bounds. Returns [`Rectangle`](structures/rectangle.md) -### `win.setEnabled(enabled)` +### `win.setEnabled(enable)` -* `enabled` Boolean +* `enable` Boolean Disable or enable the window. From 80aa399f8aff9325e5ea836217eaffb37189bf27 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 6 Feb 2018 09:16:22 -0500 Subject: [PATCH 5/7] updates to mac enable method --- atom/browser/native_window_mac.h | 1 + atom/browser/native_window_mac.mm | 9 +++++++-- docs/api/browser-window.md | 2 +- 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index b52b5fe67b..16b393d1b2 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 8234d7934b..ec873d2075 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -1045,6 +1045,8 @@ NativeWindowMac::NativeWindowMac( web_contents->GetWebContents()->GetRenderViewHost()); } +NSWindow* currentSheet; + NativeWindowMac::~NativeWindowMac() { [NSEvent removeMonitor:wheel_event_monitor_]; Observe(nullptr); @@ -1137,9 +1139,12 @@ bool NativeWindowMac::IsEnabled() { void NativeWindowMac::SetEnabled(bool enable) { if (enable) { - // TODO(codebytere): figure out how to implement window enabling + [window_ beginSheet: window_ completionHandler:^(NSModalResponse returnCode) { + NSLog(@"modal enabled"); + return; + }]; } else { - [window_ attachedSheet] = nil; + [window_ endSheet: [window_ attachedSheet]]; } } diff --git a/docs/api/browser-window.md b/docs/api/browser-window.md index cab2699000..cb5b895e9b 100644 --- a/docs/api/browser-window.md +++ b/docs/api/browser-window.md @@ -847,7 +847,7 @@ the supplied bounds. Returns [`Rectangle`](structures/rectangle.md) -### `win.setEnabled(enable)` +#### `win.setEnabled(enable)` * `enable` Boolean From 3f6d2eb3aba2405a83e546da75ef5d83d55c6e8a Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 6 Feb 2018 09:27:30 -0500 Subject: [PATCH 6/7] remove extraneous variable --- atom/browser/native_window_mac.mm | 2 -- 1 file changed, 2 deletions(-) diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index ec873d2075..ae2ee23943 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -1045,8 +1045,6 @@ NativeWindowMac::NativeWindowMac( web_contents->GetWebContents()->GetRenderViewHost()); } -NSWindow* currentSheet; - NativeWindowMac::~NativeWindowMac() { [NSEvent removeMonitor:wheel_event_monitor_]; Observe(nullptr); From 5b901d9f820b0e0e1607391614b88aaf0ae72c93 Mon Sep 17 00:00:00 2001 From: Shelley Vohr Date: Tue, 6 Feb 2018 13:34:27 -0500 Subject: [PATCH 7/7] revert TOOLKIT_VIEWS check change --- atom/browser/api/atom_api_window.cc | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/atom/browser/api/atom_api_window.cc b/atom/browser/api/atom_api_window.cc index 2158592ff2..e3ecb43acf 100644 --- a/atom/browser/api/atom_api_window.cc +++ b/atom/browser/api/atom_api_window.cc @@ -9,7 +9,6 @@ #include "atom/browser/api/atom_api_web_contents.h" #include "atom/browser/browser.h" #include "atom/browser/native_window.h" -#include "atom/browser/native_window_views.h" #include "atom/browser/web_contents_preferences.h" #include "atom/common/native_mate_converters/callback.h" #include "atom/common/native_mate_converters/file_path_converter.h" @@ -27,6 +26,10 @@ #include "native_mate/dictionary.h" #include "ui/gfx/geometry/rect.h" +#if defined(TOOLKIT_VIEWS) +#include "atom/browser/native_window_views.h" +#endif + #if defined(OS_WIN) #include "atom/browser/ui/win/taskbar_host.h" #include "ui/base/win/shell.h"