// Copyright (c) 2010 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. #include "views/touchui/gesture_manager.h" #ifndef NDEBUG #include #endif #include "base/logging.h" #include "views/events/event.h" #include "views/view.h" namespace views { GestureManager::~GestureManager() { } GestureManager* GestureManager::GetInstance() { return Singleton::get(); } bool GestureManager::ProcessTouchEventForGesture(const TouchEvent& event, View* source, View::TouchStatus status) { if (status != View::TOUCH_STATUS_UNKNOWN) return false; // The event was consumed by a touch sequence. // TODO(rjkroege): A realistic version of the GestureManager will // appear in a subsequent CL. This interim version permits verifying that the // event distribution code works by turning all touch inputs into // mouse approximations. // TODO(sad): Clean this up. // This is currently only called where |source| is a RootView. Now, RootView // expects the mouse-events in the widget's coordinate system, and not in the // RV's coordinate system. But |event| is in the RV's coordinate system. So it // is necessary to construct the synthetic event in the widget's coordinate // system. gfx::Point location = event.location(); View::ConvertPointToWidget(source, &location); if (event.type() == ui::ET_TOUCH_PRESSED) { DVLOG(1) << "GestureManager::ProcessTouchEventForGesture: TouchPressed"; MouseEvent mouse_event(ui::ET_MOUSE_PRESSED, location.x(), location.y(), event.flags()); source->OnMousePressed(mouse_event); return true; } if (event.type() == ui::ET_TOUCH_RELEASED) { DVLOG(1) << "GestureManager::ProcessTouchEventForGesture: TouchReleased"; MouseEvent mouse_event(ui::ET_MOUSE_RELEASED, location.x(), location.y(), event.flags()); source->OnMouseReleased(mouse_event, false); return true; } if (event.type() == ui::ET_TOUCH_MOVED) { DVLOG(1) << "GestureManager::ProcessTouchEventForGesture: TouchMotion"; MouseEvent mouse_event(ui::ET_MOUSE_DRAGGED, location.x(), location.y(), event.flags()); source->OnMouseDragged(mouse_event); return true; } DVLOG(1) << "GestureManager::ProcessTouchEventForGesture: unhandled event"; return false; } GestureManager::GestureManager() { } } // namespace views