diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index bddca8559de..5f948ddf679 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -10,8 +10,8 @@ #include #include -#include "base/mac/scoped_nsobject.h" #include "atom/browser/native_window.h" +#include "base/mac/scoped_nsobject.h" #include "content/public/browser/render_widget_host.h" @class AtomNSWindow; @@ -88,12 +88,16 @@ class NativeWindowMac : public NativeWindow, void SetProgressBar(double progress) override; void SetOverlayIcon(const gfx::Image& overlay, const std::string& description) override; - void SetVisibleOnAllWorkspaces(bool visible) override; bool IsVisibleOnAllWorkspaces() override; + // content::RenderWidgetHost::InputEventObserver: void OnInputEvent(const blink::WebInputEvent& event) override; + // content::WebContentsObserver: + void RenderViewHostChanged(content::RenderViewHost* old_host, + content::RenderViewHost* new_host) override; + // Refresh the DraggableRegion views. void UpdateDraggableRegionViews() { UpdateDraggableRegionViews(draggable_regions_); @@ -132,8 +136,6 @@ class NativeWindowMac : public NativeWindow, void RegisterInputEventObserver(content::RenderViewHost* host); void UnregisterInputEventObserver(content::RenderViewHost* host); - void RenderViewHostChanged(content::RenderViewHost* old_host, - content::RenderViewHost* new_host); base::scoped_nsobject window_; base::scoped_nsobject window_delegate_; @@ -156,6 +158,7 @@ class NativeWindowMac : public NativeWindow, // The "titleBarStyle" option. TitleBarStyle title_bar_style_; + // Whether user has scrolled the page to edge. bool is_edge_; DISALLOW_COPY_AND_ASSIGN(NativeWindowMac); diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index e5c0453980f..98e8b7c36dc 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -429,10 +429,10 @@ struct Converter { namespace atom { NativeWindowMac::NativeWindowMac( - brightray::InspectableWebContents* iWeb_contents, + brightray::InspectableWebContents* web_contents, const mate::Dictionary& options, NativeWindow* parent) - : NativeWindow(iWeb_contents, options, parent), + : NativeWindow(web_contents, options, parent), is_kiosk_(false), attention_request_id_(0), title_bar_style_(NORMAL), @@ -575,11 +575,11 @@ NativeWindowMac::NativeWindowMac( if ([[event window] windowNumber] != [window_ windowNumber]) return event; - if (!iWeb_contents) + if (!web_contents) return event; if (!began && is_edge_ && (([event phase] == NSEventPhaseMayBegin) || - ([event phase] == NSEventPhaseBegan))) { + ([event phase] == NSEventPhaseBegan))) { this->NotifyWindowScrollTouchBegin(); began = YES; is_edge_ = false; @@ -598,25 +598,8 @@ NativeWindowMac::NativeWindowMac( // by calls to other APIs. SetMaximizable(maximizable); - RegisterInputEventObserver(web_contents()->GetRenderViewHost()); -} -void NativeWindowMac::RegisterInputEventObserver( - content::RenderViewHost* host) { - if (host != nullptr) - host->GetWidget()->AddInputEventObserver(this); -} - -void NativeWindowMac::UnregisterInputEventObserver( - content::RenderViewHost* host) { - if (host != nullptr) - host->GetWidget()->RemoveInputEventObserver(this); -} - -void NativeWindowMac::RenderViewHostChanged( - content::RenderViewHost* old_host, - content::RenderViewHost* new_host) { - UnregisterInputEventObserver(old_host); - RegisterInputEventObserver(new_host); + RegisterInputEventObserver( + web_contents->GetWebContents()->GetRenderViewHost()); } NativeWindowMac::~NativeWindowMac() { @@ -1047,6 +1030,25 @@ bool NativeWindowMac::IsVisibleOnAllWorkspaces() { return collectionBehavior & NSWindowCollectionBehaviorCanJoinAllSpaces; } +void NativeWindowMac::OnInputEvent(const blink::WebInputEvent& event) { + switch (event.type) { + case blink::WebInputEvent::GestureScrollBegin: + case blink::WebInputEvent::GestureScrollUpdate: + case blink::WebInputEvent::GestureScrollEnd: + is_edge_ = true; + break; + default: + break; + } +} + +void NativeWindowMac::RenderViewHostChanged( + content::RenderViewHost* old_host, + content::RenderViewHost* new_host) { + UnregisterInputEventObserver(old_host); + RegisterInputEventObserver(new_host); +} + std::vector NativeWindowMac::CalculateNonDraggableRegions( const std::vector& regions, int width, int height) { std::vector result; @@ -1220,18 +1222,16 @@ void NativeWindowMac::SetCollectionBehavior(bool on, NSUInteger flag) { SetMaximizable(was_maximizable); } -void NativeWindowMac::OnInputEvent(const blink::WebInputEvent& event) { - switch (event.type) { - case blink::WebInputEvent::GestureScrollBegin: - case blink::WebInputEvent::GestureScrollUpdate: - case blink::WebInputEvent::GestureScrollEnd: - { - is_edge_ = true; - break; - } - default: - break; - } +void NativeWindowMac::RegisterInputEventObserver( + content::RenderViewHost* host) { + if (host) + host->GetWidget()->AddInputEventObserver(this); +} + +void NativeWindowMac::UnregisterInputEventObserver( + content::RenderViewHost* host) { + if (host) + host->GetWidget()->RemoveInputEventObserver(this); } // static