Index: chrome/browser/ui/views/frame/browser_view.cc |
diff --git a/chrome/browser/ui/views/frame/browser_view.cc b/chrome/browser/ui/views/frame/browser_view.cc |
index f4dbf87a9b3440d7ce19808cf32bf6b2c92f3fe7..67a2a5e850362c7779d2535c19715b22bac7ff2f 100644 |
--- a/chrome/browser/ui/views/frame/browser_view.cc |
+++ b/chrome/browser/ui/views/frame/browser_view.cc |
@@ -1938,6 +1938,29 @@ void BrowserView::Layout() { |
IsToolbarVisible() ? FocusBehavior::ALWAYS : FocusBehavior::NEVER); |
} |
+void BrowserView::OnGestureEvent(ui::GestureEvent* event) { |
+#if defined(OS_MACOSX) |
+ auto get_gesture_command = [](ui::GestureEvent* event) { |
tapted
2017/02/15 22:25:52
Inferring the return type of a lambda is a C++14 f
|
+ if (event->details().type() == ui::ET_GESTURE_SWIPE) { |
+ if (event->details().swipe_left()) |
+ return base::Optional<int>(IDC_BACK); |
+ else if (event->details().swipe_right()) |
+ return base::Optional<int>(IDC_FORWARD); |
+ } |
+ return base::Optional<int>(); |
+ }; |
+ |
+ auto command = get_gesture_command(event); |
+ if (command.has_value() && chrome::IsCommandEnabled(browser(), *command)) { |
+ chrome::ExecuteCommandWithDisposition( |
+ browser(), *command, ui::DispositionFromEventFlags(event->flags())); |
+ return; |
+ } |
+#endif // OS_MACOSX |
+ |
+ ClientView::OnGestureEvent(event); |
+} |
+ |
void BrowserView::ViewHierarchyChanged( |
const ViewHierarchyChangedDetails& details) { |
if (!initialized_ && details.is_add && details.child == this && GetWidget()) { |