diff --git a/atom/browser/api/atom_api_system_preferences.cc b/atom/browser/api/atom_api_system_preferences.cc index 618a9dff5b2e..b473d9f7ffb0 100644 --- a/atom/browser/api/atom_api_system_preferences.cc +++ b/atom/browser/api/atom_api_system_preferences.cc @@ -59,6 +59,8 @@ void SystemPreferences::BuildPrototype( .SetMethod("unsubscribeLocalNotification", &SystemPreferences::UnsubscribeLocalNotification) .SetMethod("getUserDefault", &SystemPreferences::GetUserDefault) + .SetMethod("isSwipeTrackingFromScrollEventsEnabled", + &SystemPreferences::IsSwipeTrackingFromScrollEventsEnabled) #endif .SetMethod("isDarkMode", &SystemPreferences::IsDarkMode); } diff --git a/atom/browser/api/atom_api_system_preferences.h b/atom/browser/api/atom_api_system_preferences.h index 0d1f954b7a06..fb180613a86e 100644 --- a/atom/browser/api/atom_api_system_preferences.h +++ b/atom/browser/api/atom_api_system_preferences.h @@ -40,6 +40,10 @@ class SystemPreferences : public mate::EventEmitter { void UnsubscribeLocalNotification(int request_id); v8::Local GetUserDefault(const std::string& name, const std::string& type); + // On 10.7+, back and forward swipe gestures can be triggered using a scroll + // gesture, if enabled in System Preferences. This function returns true if + // the feature is supported and enabled, and false otherwise. + bool IsSwipeTrackingFromScrollEventsEnabled(); #endif bool IsDarkMode(); diff --git a/atom/browser/api/atom_api_system_preferences_mac.mm b/atom/browser/api/atom_api_system_preferences_mac.mm index 6f7055ab9135..3fe109cc8646 100644 --- a/atom/browser/api/atom_api_system_preferences_mac.mm +++ b/atom/browser/api/atom_api_system_preferences_mac.mm @@ -11,6 +11,7 @@ #include "atom/browser/mac/dict_util.h" #include "atom/common/native_mate_converters/value_converter.h" #include "atom/common/native_mate_converters/gurl_converter.h" +#import "base/mac/sdk_forward_declarations.h" #include "base/strings/sys_string_conversions.h" #include "base/values.h" #include "net/base/mac/url_conversions.h" @@ -122,6 +123,12 @@ bool SystemPreferences::IsDarkMode() { return [mode isEqualToString:@"Dark"]; } +bool SystemPreferences::IsSwipeTrackingFromScrollEventsEnabled() { + SEL selector = @selector(isSwipeTrackingFromScrollEventsEnabled); + return [NSEvent respondsToSelector:selector] + && [NSEvent performSelector:selector]; +} + } // namespace api } // namespace atom diff --git a/docs/api/system-preferences.md b/docs/api/system-preferences.md index 8a2af28a295d..0ac63b1b3c6a 100644 --- a/docs/api/system-preferences.md +++ b/docs/api/system-preferences.md @@ -13,6 +13,10 @@ console.log(systemPreferences.isDarkMode()) This method returns `true` if the system is in Dark Mode, and `false` otherwise. +### `systemPreferences.isSwipeTrackingFromScrollEventsEnabled()` _macOS_ + +This method returns `true` if the Swipe between pages setting is on, and `false` otherwise. + ### `systemPreferences.subscribeNotification(event, callback)` _macOS_ * `event` String