Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(387)

Unified Diff: chrome/browser/ui/cocoa/gesture_utils.mm

Issue 7461080: [Mac] Respect natural/inverted scroll direction on Lion when gesturing. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: '' Created 9 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/cocoa/gesture_utils.mm
diff --git a/chrome/browser/ui/cocoa/gesture_utils.mm b/chrome/browser/ui/cocoa/gesture_utils.mm
new file mode 100644
index 0000000000000000000000000000000000000000..dbbd038ff70ac0c4365b22a54af45d7b7039ce66
--- /dev/null
+++ b/chrome/browser/ui/cocoa/gesture_utils.mm
@@ -0,0 +1,49 @@
+// Copyright (c) 2011 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#import "chrome/browser/ui/cocoa/gesture_utils.h"
+
+#include "base/mac/mac_util.h"
+
+namespace gesture_utils {
+
+BOOL RecognizeTwoFingerGestures() {
+ // Lion or higher will have support for two-finger swipe gestures.
+ if (!base::mac::IsOSLionOrLater())
+ return NO;
+
+ // A note about preferences:
+ // On Lion System Preferences, the swipe gesture behavior is controlled by the
+ // setting in Trackpad --> More Gestures --> Swipe between pages. This setting
+ // has three values:
+ // A) Scroll left or right with two fingers. This should perform a cool
+ // scrolling animation, but doesn't yet <http://crbug.com/90228>.
+ // B) Swipe left or right with three fingers.
+ // C) Swipe with two or three fingers.
+ //
+ // The three-finger gesture is controlled by the integer preference
+ // |com.apple.trackpad.threeFingerHorizSwipeGesture|. Its value is 0 for (A)
+ // and 1 for (B, C).
+ //
+ // The two-finger gesture is controlled by the preference below and is boolean
+ // YES for (A, C) and NO for (B).
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ return [defaults boolForKey:@"AppleEnableSwipeNavigateWithScrolls"];
+}
+
+// On Lion, returns YES if the scroll direction is "natural"/inverted. All other
+// OSes will return NO.
+BOOL IsScrollDirectionInverted() {
+ if (!base::mac::IsOSLionOrLater())
+ return NO;
+
+ NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults];
+ // The defaults must be synchronized here otherwise a stale value will be
+ // returned for an indeterminante amount of time. For some reason, this is
+ // not necessary in |-recognizeTwoFingerGestures|.
+ [defaults synchronize];
+ return [defaults boolForKey:@"com.apple.swipescrolldirection"];
+}
+
+} // namespace gesture_utils

Powered by Google App Engine
This is Rietveld 408576698