From beca2d26f3d797ea532dd6ef522352a7469ed05b Mon Sep 17 00:00:00 2001 From: Anthony Tseng Date: Mon, 1 Aug 2016 11:26:51 +0800 Subject: [PATCH] Swipe back/forward should respect system preferences --- atom/browser/native_window_mac.mm | 4 ++++ atom/common/platform_util.h | 7 +++++++ atom/common/platform_util_mac.mm | 7 +++++++ 3 files changed, 18 insertions(+) diff --git a/atom/browser/native_window_mac.mm b/atom/browser/native_window_mac.mm index 743e308d594a..5b2f30040d33 100644 --- a/atom/browser/native_window_mac.mm +++ b/atom/browser/native_window_mac.mm @@ -10,6 +10,7 @@ #include "atom/common/color_util.h" #include "atom/common/draggable_region.h" #include "atom/common/options_switches.h" +#include "atom/common/platform_util.h" #include "base/mac/mac_util.h" #include "base/mac/scoped_cftyperef.h" #include "base/strings/sys_string_conversions.h" @@ -577,6 +578,9 @@ NativeWindowMac::NativeWindowMac( if (!web_contents) return event; + if (!platform_util::IsSwipeTrackingFromScrollEventsEnabled()) + return event; + if (!began && (([event phase] == NSEventPhaseMayBegin) || ([event phase] == NSEventPhaseBegan))) { this->NotifyWindowScrollTouchBegin(); diff --git a/atom/common/platform_util.h b/atom/common/platform_util.h index 262f0a2e6e49..5c65ec77468e 100644 --- a/atom/common/platform_util.h +++ b/atom/common/platform_util.h @@ -42,6 +42,13 @@ bool MoveItemToTrash(const base::FilePath& full_path); void Beep(); +#if defined(OS_MACOSX) +// 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 + } // namespace platform_util #endif // ATOM_COMMON_PLATFORM_UTIL_H_ diff --git a/atom/common/platform_util_mac.mm b/atom/common/platform_util_mac.mm index d0146b11e085..2768230f0f95 100644 --- a/atom/common/platform_util_mac.mm +++ b/atom/common/platform_util_mac.mm @@ -11,6 +11,7 @@ #include "base/files/file_util.h" #include "base/logging.h" #include "base/mac/mac_logging.h" +#import "base/mac/sdk_forward_declarations.h" #include "base/mac/scoped_aedesc.h" #include "base/strings/sys_string_conversions.h" #include "net/base/mac/url_conversions.h" @@ -168,4 +169,10 @@ void Beep() { NSBeep(); } +bool IsSwipeTrackingFromScrollEventsEnabled() { + SEL selector = @selector(isSwipeTrackingFromScrollEventsEnabled); + return [NSEvent respondsToSelector:selector] + && [NSEvent performSelector:selector]; +} + } // namespace platform_util