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/bind.h" | 9 #include "base/bind.h" |
10 #include "base/command_line.h" | 10 #include "base/command_line.h" |
(...skipping 262 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
273 client::EventClient* client = client::GetEventClient(GetRootWindow()); | 273 client::EventClient* client = client::GetEventClient(GetRootWindow()); |
274 if (client && !client->CanProcessEventsWithinSubtree(focused_window_)) { | 274 if (client && !client->CanProcessEventsWithinSubtree(focused_window_)) { |
275 SetFocusedWindow(NULL, NULL); | 275 SetFocusedWindow(NULL, NULL); |
276 return false; | 276 return false; |
277 } | 277 } |
278 return ProcessKeyEvent(focused_window_, &translated_event); | 278 return ProcessKeyEvent(focused_window_, &translated_event); |
279 } | 279 } |
280 | 280 |
281 bool RootWindow::DispatchScrollEvent(ScrollEvent* event) { | 281 bool RootWindow::DispatchScrollEvent(ScrollEvent* event) { |
282 DispatchHeldMouseMove(); | 282 DispatchHeldMouseMove(); |
283 if (ui::IsDIPEnabled()) { | 283 float scale = ui::GetDeviceScaleFactor(layer()); |
284 float scale = ui::GetDeviceScaleFactor(layer()); | 284 ui::Transform transform = layer()->transform(); |
285 ui::Transform transform = layer()->transform(); | 285 transform.ConcatScale(scale, scale); |
286 transform.ConcatScale(scale, scale); | 286 event->UpdateForRootTransform(transform); |
287 event->UpdateForRootTransform(transform); | |
288 } else { | |
289 event->UpdateForRootTransform(layer()->transform()); | |
290 } | |
291 | 287 |
292 last_mouse_location_ = event->location(); | 288 last_mouse_location_ = event->location(); |
293 synthesize_mouse_move_ = false; | 289 synthesize_mouse_move_ = false; |
294 | 290 |
295 Window* target = | 291 Window* target = |
296 mouse_pressed_handler_ ? mouse_pressed_handler_ : capture_window_; | 292 mouse_pressed_handler_ ? mouse_pressed_handler_ : capture_window_; |
297 if (!target) | 293 if (!target) |
298 target = GetEventHandlerForPoint(event->location()); | 294 target = GetEventHandlerForPoint(event->location()); |
299 | 295 |
300 if (target && target->delegate()) { | 296 if (target && target->delegate()) { |
301 int flags = event->flags(); | 297 int flags = event->flags(); |
302 gfx::Point location_in_window = event->location(); | 298 gfx::Point location_in_window = event->location(); |
303 Window::ConvertPointToWindow(this, target, &location_in_window); | 299 Window::ConvertPointToWindow(this, target, &location_in_window); |
304 if (IsNonClientLocation(target, location_in_window)) | 300 if (IsNonClientLocation(target, location_in_window)) |
305 flags |= ui::EF_IS_NON_CLIENT; | 301 flags |= ui::EF_IS_NON_CLIENT; |
306 ScrollEvent translated_event(*event, this, target, event->type(), flags); | 302 ScrollEvent translated_event(*event, this, target, event->type(), flags); |
307 return ProcessMouseEvent(target, &translated_event); | 303 return ProcessMouseEvent(target, &translated_event); |
308 } | 304 } |
309 return false; | 305 return false; |
310 } | 306 } |
311 | 307 |
312 bool RootWindow::DispatchTouchEvent(TouchEvent* event) { | 308 bool RootWindow::DispatchTouchEvent(TouchEvent* event) { |
313 DispatchHeldMouseMove(); | 309 DispatchHeldMouseMove(); |
314 if (ui::IsDIPEnabled()) { | 310 float scale = ui::GetDeviceScaleFactor(layer()); |
315 float scale = ui::GetDeviceScaleFactor(layer()); | 311 ui::Transform transform = layer()->transform(); |
316 ui::Transform transform = layer()->transform(); | 312 transform.ConcatScale(scale, scale); |
317 transform.ConcatScale(scale, scale); | 313 event->UpdateForRootTransform(transform); |
318 event->UpdateForRootTransform(transform); | |
319 } else { | |
320 event->UpdateForRootTransform(layer()->transform()); | |
321 } | |
322 bool handled = false; | 314 bool handled = false; |
323 ui::TouchStatus status = ui::TOUCH_STATUS_UNKNOWN; | 315 ui::TouchStatus status = ui::TOUCH_STATUS_UNKNOWN; |
324 Window* target = capture_window_; | 316 Window* target = capture_window_; |
325 if (!target) { | 317 if (!target) { |
326 target = ConsumerToWindow( | 318 target = ConsumerToWindow( |
327 gesture_recognizer_->GetTouchLockedTarget(event)); | 319 gesture_recognizer_->GetTouchLockedTarget(event)); |
328 if (!target) { | 320 if (!target) { |
329 target = ConsumerToWindow( | 321 target = ConsumerToWindow( |
330 gesture_recognizer_->GetTargetForLocation(event->GetLocation())); | 322 gesture_recognizer_->GetTargetForLocation(event->GetLocation())); |
331 } | 323 } |
(...skipping 595 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
927 | 919 |
928 Window* RootWindow::GetFocusedWindow() { | 920 Window* RootWindow::GetFocusedWindow() { |
929 return focused_window_; | 921 return focused_window_; |
930 } | 922 } |
931 | 923 |
932 bool RootWindow::IsFocusedWindow(const Window* window) const { | 924 bool RootWindow::IsFocusedWindow(const Window* window) const { |
933 return focused_window_ == window; | 925 return focused_window_ == window; |
934 } | 926 } |
935 | 927 |
936 bool RootWindow::DispatchMouseEventImpl(MouseEvent* event) { | 928 bool RootWindow::DispatchMouseEventImpl(MouseEvent* event) { |
937 if (ui::IsDIPEnabled()) { | 929 float scale = ui::GetDeviceScaleFactor(layer()); |
938 float scale = ui::GetDeviceScaleFactor(layer()); | 930 ui::Transform transform = layer()->transform(); |
939 ui::Transform transform = layer()->transform(); | 931 transform.ConcatScale(scale, scale); |
940 transform.ConcatScale(scale, scale); | 932 event->UpdateForRootTransform(transform); |
941 event->UpdateForRootTransform(transform); | |
942 } else { | |
943 event->UpdateForRootTransform(layer()->transform()); | |
944 } | |
945 Window* target = | 933 Window* target = |
946 mouse_pressed_handler_ ? mouse_pressed_handler_ : capture_window_; | 934 mouse_pressed_handler_ ? mouse_pressed_handler_ : capture_window_; |
947 if (!target) | 935 if (!target) |
948 target = GetEventHandlerForPoint(event->location()); | 936 target = GetEventHandlerForPoint(event->location()); |
949 return DispatchMouseEventToTarget(event, target); | 937 return DispatchMouseEventToTarget(event, target); |
950 } | 938 } |
951 | 939 |
952 bool RootWindow::DispatchMouseEventToTarget(MouseEvent* event, | 940 bool RootWindow::DispatchMouseEventToTarget(MouseEvent* event, |
953 Window* target) { | 941 Window* target) { |
954 static const int kMouseButtonFlagMask = | 942 static const int kMouseButtonFlagMask = |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1029 void RootWindow::UnlockCompositor() { | 1017 void RootWindow::UnlockCompositor() { |
1030 DCHECK(compositor_lock_); | 1018 DCHECK(compositor_lock_); |
1031 compositor_lock_ = NULL; | 1019 compositor_lock_ = NULL; |
1032 if (draw_on_compositor_unlock_) { | 1020 if (draw_on_compositor_unlock_) { |
1033 draw_on_compositor_unlock_ = false; | 1021 draw_on_compositor_unlock_ = false; |
1034 ScheduleDraw(); | 1022 ScheduleDraw(); |
1035 } | 1023 } |
1036 } | 1024 } |
1037 | 1025 |
1038 } // namespace aura | 1026 } // namespace aura |
OLD | NEW |