diff --git a/atom/browser/native_window_mac.h b/atom/browser/native_window_mac.h index b74f1b6238..926caf765a 100644 --- a/atom/browser/native_window_mac.h +++ b/atom/browser/native_window_mac.h @@ -17,6 +17,7 @@ @class AtomNSWindow; @class AtomNSWindowDelegate; +@class AtomTouchBar; @class FullSizeContentView; namespace atom { @@ -136,6 +137,7 @@ class NativeWindowMac : public NativeWindow { }; TitleBarStyle title_bar_style() const { return title_bar_style_; } + AtomTouchBar* atom_touch_bar() const { return atom_touch_bar_.get(); } bool zoom_to_page_width() const { return zoom_to_page_width_; } bool fullscreen_window_title() const { return fullscreen_window_title_; } bool simple_fullscreen() const { return always_simple_fullscreen_; } @@ -148,6 +150,7 @@ class NativeWindowMac : public NativeWindow { base::scoped_nsobject<AtomNSWindow> window_; base::scoped_nsobject<AtomNSWindowDelegate> window_delegate_; + base::scoped_nsobject<AtomTouchBar> atom_touch_bar_; std::unique_ptr<views::Widget> widget_; diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index c1f826a827..ffd1e9d705 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -213,7 +213,6 @@ enum { @private atom::NativeWindowMac* shell_; bool enable_larger_than_screen_; - base::scoped_nsobject<AtomTouchBar> atom_touch_bar_; CGFloat windowButtonsInterButtonSpacing_; } @property BOOL acceptsFirstMouse; @@ -226,9 +225,6 @@ enum { - (void)setShell:(atom::NativeWindowMac*)shell; - (void)setEnableLargerThanScreen:(bool)enable; - (void)enableWindowButtonsOffset; -- (void)resetTouchBar:(const std::vector<mate::PersistentDictionary>&)settings; -- (void)refreshTouchBarItem:(const std::string&)item_id; -- (void)setEscapeTouchBarItem:(const mate::PersistentDictionary&)item; @end @@ -249,43 +245,21 @@ enum { enable_larger_than_screen_ = enable; } -- (void)resetTouchBar:(const std::vector<mate::PersistentDictionary>&)settings - API_AVAILABLE(macosx(10.12.2)) { - if (![self respondsToSelector:@selector(touchBar)]) return; - - atom_touch_bar_.reset([[AtomTouchBar alloc] initWithDelegate:self - window:shell_ - settings:settings]); - self.touchBar = nil; -} - -- (void)refreshTouchBarItem:(const std::string&)item_id - API_AVAILABLE(macosx(10.12.2)) { - if (atom_touch_bar_ && self.touchBar) - [atom_touch_bar_ refreshTouchBarItem:self.touchBar id:item_id]; -} - - (NSTouchBar*)makeTouchBar API_AVAILABLE(macosx(10.12.2)) { - if (atom_touch_bar_) - return [atom_touch_bar_ makeTouchBar]; + if (shell_->atom_touch_bar()) + return [shell_->atom_touch_bar() makeTouchBar]; else return nil; } - (NSTouchBarItem*)touchBar:(NSTouchBar*)touchBar makeItemForIdentifier:(NSTouchBarItemIdentifier)identifier API_AVAILABLE(macosx(10.12.2)) { - if (touchBar && atom_touch_bar_) - return [atom_touch_bar_ makeItemForIdentifier:identifier]; + if (touchBar && shell_->atom_touch_bar()) + return [shell_->atom_touch_bar() makeItemForIdentifier:identifier]; else return nil; } -- (void)setEscapeTouchBarItem:(const mate::PersistentDictionary&)item - API_AVAILABLE(macosx(10.12.2)) { - if (atom_touch_bar_ && self.touchBar) - [atom_touch_bar_ setEscapeTouchBarItem:item forTouchBar:self.touchBar]; -} - // NSWindow overrides. - (void)swipeWithEvent:(NSEvent *)event { @@ -1538,15 +1512,24 @@ void NativeWindowMac::SetVibrancy(const std::string& type) { void NativeWindowMac::SetTouchBar( const std::vector<mate::PersistentDictionary>& items) { - [window_ resetTouchBar:items]; + if (![window_ respondsToSelector:@selector(touchBar)]) + return; + + atom_touch_bar_.reset([[AtomTouchBar alloc] initWithDelegate:window_.get() + window:this + settings:items]); + [window_ setTouchBar:nil]; } void NativeWindowMac::RefreshTouchBarItem(const std::string& item_id) { - [window_ refreshTouchBarItem:item_id]; + if (atom_touch_bar_ && [window_ touchBar]) + [atom_touch_bar_ refreshTouchBarItem:[window_ touchBar] id:item_id]; } -void NativeWindowMac::SetEscapeTouchBarItem(const mate::PersistentDictionary& item) { - [window_ setEscapeTouchBarItem:item]; +void NativeWindowMac::SetEscapeTouchBarItem( + const mate::PersistentDictionary& item) { + if (atom_touch_bar_ && [window_ touchBar]) + [atom_touch_bar_ setEscapeTouchBarItem:item forTouchBar:[window_ touchBar]]; } gfx::Rect NativeWindowMac::ContentBoundsToWindowBounds(