🍎 Add macOS native tab methods to window API

This commit is contained in:
Michael Kaylan 2017-08-21 00:46:10 -04:00
parent 796664ef1c
commit b4428e7e41
8 changed files with 179 additions and 0 deletions

View file

@ -907,6 +907,26 @@ void Window::SetAutoHideCursor(bool auto_hide) {
window_->SetAutoHideCursor(auto_hide);
}
void Window::SelectPreviousTab() {
window_->SelectPreviousTab();
}
void Window::SelectNextTab() {
window_->SelectNextTab();
}
void Window::MergeAllWindows() {
window_->MergeAllWindows();
}
void Window::MoveTabToNewWindow() {
window_->MoveTabToNewWindow();
}
void Window::ToggleTabBar() {
window_->ToggleTabBar();
}
void Window::SetVibrancy(mate::Arguments* args) {
std::string type;
@ -1047,6 +1067,11 @@ void Window::BuildPrototype(v8::Isolate* isolate,
&Window::IsVisibleOnAllWorkspaces)
#if defined(OS_MACOSX)
.SetMethod("setAutoHideCursor", &Window::SetAutoHideCursor)
.SetMethod("mergeAllWindows", &Window::MergeAllWindows)
.SetMethod("selectPreviousTab", &Window::SelectPreviousTab)
.SetMethod("selectNextTab", &Window::SelectNextTab)
.SetMethod("moveTabToNewWindow", &Window::MoveTabToNewWindow)
.SetMethod("toggleTabBar", &Window::ToggleTabBar)
#endif
.SetMethod("setVibrancy", &Window::SetVibrancy)
.SetMethod("_setTouchBarItems", &Window::SetTouchBar)

View file

@ -212,6 +212,12 @@ class Window : public mate::TrackableObject<Window>,
void SetAutoHideCursor(bool auto_hide);
void SelectPreviousTab();
void SelectNextTab();
void MergeAllWindows();
void MoveTabToNewWindow();
void ToggleTabBar();
void SetVibrancy(mate::Arguments* args);
void SetTouchBar(const std::vector<mate::PersistentDictionary>& items);
void RefreshTouchBarItem(const std::string& item_id);

View file

@ -336,6 +336,21 @@ void NativeWindow::SetParentWindow(NativeWindow* parent) {
void NativeWindow::SetAutoHideCursor(bool auto_hide) {
}
void NativeWindow::SelectPreviousTab() {
}
void NativeWindow::SelectNextTab() {
}
void NativeWindow::MergeAllWindows() {
}
void NativeWindow::MoveTabToNewWindow() {
}
void NativeWindow::ToggleTabBar() {
}
void NativeWindow::SetVibrancy(const std::string& filename) {
}

View file

@ -182,6 +182,13 @@ class NativeWindow : public base::SupportsUserData,
virtual void RefreshTouchBarItem(const std::string& item_id);
virtual void SetEscapeTouchBarItem(const mate::PersistentDictionary& item);
// Native Tab API
virtual void SelectPreviousTab();
virtual void SelectNextTab();
virtual void MergeAllWindows();
virtual void MoveTabToNewWindow();
virtual void ToggleTabBar();
// Webview APIs.
virtual void FocusOnWebView();
virtual void BlurWebView();

View file

@ -101,6 +101,12 @@ class NativeWindowMac : public NativeWindow,
void SetAutoHideCursor(bool auto_hide) override;
void SelectPreviousTab() override;
void SelectNextTab() override;
void MergeAllWindows() override;
void MoveTabToNewWindow() override;
void ToggleTabBar() override;
void SetVibrancy(const std::string& type) override;
void SetTouchBar(
const std::vector<mate::PersistentDictionary>& items) override;

View file

@ -469,6 +469,11 @@ enum {
@interface NSWindow (SierraSDK)
- (void)setTabbingMode:(NSInteger)mode;
- (void)setTabbingIdentifier:(NSString*)identifier;
- (IBAction)selectPreviousTab:(id)sender;
- (IBAction)selectNextTab:(id)sender;
- (IBAction)mergeAllWindows:(id)sender;
- (IBAction)moveTabToNewWindow:(id)sender;
- (IBAction)toggleTabBar:(id)sender;
@end
#endif // MAC_OS_X_VERSION_10_12
@ -1523,6 +1528,36 @@ void NativeWindowMac::SetAutoHideCursor(bool auto_hide) {
[window_ setDisableAutoHideCursor:!auto_hide];
}
void NativeWindowMac::SelectPreviousTab() {
if ([window_ respondsToSelector:@selector(selectPreviousTab:)]) {
[window_ selectPreviousTab:nil];
}
}
void NativeWindowMac::SelectNextTab() {
if ([window_ respondsToSelector:@selector(selectNextTab:)]) {
[window_ selectNextTab:nil];
}
}
void NativeWindowMac::MergeAllWindows() {
if ([window_ respondsToSelector:@selector(mergeAllWindows:)]) {
[window_ mergeAllWindows:nil];
}
}
void NativeWindowMac::MoveTabToNewWindow() {
if ([window_ respondsToSelector:@selector(moveTabToNewWindow:)]) {
[window_ moveTabToNewWindow:nil];
}
}
void NativeWindowMac::ToggleTabBar() {
if ([window_ respondsToSelector:@selector(toggleTabBar:)]) {
[window_ toggleTabBar:nil];
}
}
void NativeWindowMac::SetVibrancy(const std::string& type) {
if (!base::mac::IsAtLeastOS10_10()) return;