| OLD | NEW |
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #include "ui/aura/root_window.h" | 5 #include "ui/aura/root_window.h" |
| 6 | 6 |
| 7 #include <vector> | 7 #include <vector> |
| 8 | 8 |
| 9 #include "base/auto_reset.h" | 9 #include "base/auto_reset.h" |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 209 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 220 event.type() == ui::ET_GESTURE_TAP_DOWN); | 220 event.type() == ui::ET_GESTURE_TAP_DOWN); |
| 221 // We allow for only one outstanding repostable event. This is used | 221 // We allow for only one outstanding repostable event. This is used |
| 222 // in exiting context menus. A dropped repost request is allowed. | 222 // in exiting context menus. A dropped repost request is allowed. |
| 223 if (event.type() == ui::ET_MOUSE_PRESSED) { | 223 if (event.type() == ui::ET_MOUSE_PRESSED) { |
| 224 held_repostable_event_.reset( | 224 held_repostable_event_.reset( |
| 225 new ui::MouseEvent( | 225 new ui::MouseEvent( |
| 226 static_cast<const ui::MouseEvent&>(event), | 226 static_cast<const ui::MouseEvent&>(event), |
| 227 static_cast<aura::Window*>(event.target()), | 227 static_cast<aura::Window*>(event.target()), |
| 228 static_cast<aura::Window*>(this))); | 228 static_cast<aura::Window*>(this))); |
| 229 } else { | 229 } else { |
| 230 const ui::GestureEvent* gesture_event = | 230 held_repostable_event_.reset( |
| 231 static_cast<const ui::GestureEvent*>(&event); | 231 new ui::GestureEvent( |
| 232 held_repostable_event_.reset(new ui::GestureEvent( | 232 static_cast<const ui::GestureEvent&>(event), |
| 233 gesture_event->type(), | 233 static_cast<aura::Window*>(event.target()), |
| 234 gesture_event->root_location().x(), | 234 static_cast<aura::Window*>(this))); |
| 235 gesture_event->root_location().y(), | |
| 236 gesture_event->flags(), | |
| 237 gesture_event->time_stamp(), | |
| 238 gesture_event->details(), | |
| 239 gesture_event->touch_ids_bitfield())); | |
| 240 } | 235 } |
| 241 base::MessageLoop::current()->PostTask( | 236 base::MessageLoop::current()->PostTask( |
| 242 FROM_HERE, | 237 FROM_HERE, |
| 243 base::Bind(&RootWindow::DispatchHeldEvents, | 238 base::Bind(&RootWindow::DispatchHeldEvents, |
| 244 repostable_event_factory_.GetWeakPtr())); | 239 repostable_event_factory_.GetWeakPtr())); |
| 245 } | 240 } |
| 246 | 241 |
| 247 RootWindowHostDelegate* RootWindow::AsRootWindowHostDelegate() { | 242 RootWindowHostDelegate* RootWindow::AsRootWindowHostDelegate() { |
| 248 return this; | 243 return this; |
| 249 } | 244 } |
| (...skipping 776 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1026 if (event->type() != ui::ET_GESTURE_TAP_DOWN) | 1021 if (event->type() != ui::ET_GESTURE_TAP_DOWN) |
| 1027 return false; | 1022 return false; |
| 1028 | 1023 |
| 1029 // Cleanup stale gesture events for the old gesture target. | 1024 // Cleanup stale gesture events for the old gesture target. |
| 1030 GestureConsumer* old_consumer = GetGestureTarget(event); | 1025 GestureConsumer* old_consumer = GetGestureTarget(event); |
| 1031 if (old_consumer) | 1026 if (old_consumer) |
| 1032 CleanupGestureRecognizerState(static_cast<aura::Window*>(old_consumer)); | 1027 CleanupGestureRecognizerState(static_cast<aura::Window*>(old_consumer)); |
| 1033 | 1028 |
| 1034 Window* new_consumer = GetEventHandlerForPoint(event->root_location()); | 1029 Window* new_consumer = GetEventHandlerForPoint(event->root_location()); |
| 1035 if (new_consumer) { | 1030 if (new_consumer) { |
| 1031 ui::GestureEvent begin_gesture( |
| 1032 ui::ET_GESTURE_BEGIN, |
| 1033 event->x(), |
| 1034 event->y(), |
| 1035 event->flags(), |
| 1036 event->time_stamp(), |
| 1037 ui::GestureEventDetails(ui::ET_GESTURE_BEGIN, 0, 0), |
| 1038 event->touch_ids_bitfield()); |
| 1039 ProcessEvent(new_consumer, &begin_gesture); |
| 1036 ProcessEvent(new_consumer, event); | 1040 ProcessEvent(new_consumer, event); |
| 1037 return event->handled(); | 1041 return event->handled(); |
| 1038 } | 1042 } |
| 1039 return false; | 1043 return false; |
| 1040 } | 1044 } |
| 1041 | 1045 |
| 1042 bool RootWindow::DispatchMouseEventToTarget(ui::MouseEvent* event, | 1046 bool RootWindow::DispatchMouseEventToTarget(ui::MouseEvent* event, |
| 1043 Window* target) { | 1047 Window* target) { |
| 1044 client::CursorClient* cursor_client = client::GetCursorClient(this); | 1048 client::CursorClient* cursor_client = client::GetCursorClient(this); |
| 1045 if (cursor_client && | 1049 if (cursor_client && |
| (...skipping 173 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1219 } | 1223 } |
| 1220 | 1224 |
| 1221 gfx::Transform RootWindow::GetInverseRootTransform() const { | 1225 gfx::Transform RootWindow::GetInverseRootTransform() const { |
| 1222 float scale = ui::GetDeviceScaleFactor(layer()); | 1226 float scale = ui::GetDeviceScaleFactor(layer()); |
| 1223 gfx::Transform transform; | 1227 gfx::Transform transform; |
| 1224 transform.Scale(1.0f / scale, 1.0f / scale); | 1228 transform.Scale(1.0f / scale, 1.0f / scale); |
| 1225 return transformer_->GetInverseTransform() * transform; | 1229 return transformer_->GetInverseTransform() * transform; |
| 1226 } | 1230 } |
| 1227 | 1231 |
| 1228 } // namespace aura | 1232 } // namespace aura |
| OLD | NEW |