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 18 matching lines...) Expand all Loading... |
29 #include "ui/base/gestures/gesture_types.h" | 29 #include "ui/base/gestures/gesture_types.h" |
30 #include "ui/base/hit_test.h" | 30 #include "ui/base/hit_test.h" |
31 #include "ui/base/view_prop.h" | 31 #include "ui/base/view_prop.h" |
32 #include "ui/compositor/compositor.h" | 32 #include "ui/compositor/compositor.h" |
33 #include "ui/compositor/dip_util.h" | 33 #include "ui/compositor/dip_util.h" |
34 #include "ui/compositor/layer.h" | 34 #include "ui/compositor/layer.h" |
35 #include "ui/compositor/layer_animator.h" | 35 #include "ui/compositor/layer_animator.h" |
36 #include "ui/gfx/display.h" | 36 #include "ui/gfx/display.h" |
37 #include "ui/gfx/point3_f.h" | 37 #include "ui/gfx/point3_f.h" |
38 #include "ui/gfx/point_conversions.h" | 38 #include "ui/gfx/point_conversions.h" |
39 #include "ui/gfx/rect_conversions.h" | |
40 #include "ui/gfx/screen.h" | 39 #include "ui/gfx/screen.h" |
| 40 #include "ui/gfx/size_conversions.h" |
41 | 41 |
42 using std::vector; | 42 using std::vector; |
43 | 43 |
44 namespace aura { | 44 namespace aura { |
45 | 45 |
46 namespace { | 46 namespace { |
47 | 47 |
48 const char kRootWindowForAcceleratedWidget[] = | 48 const char kRootWindowForAcceleratedWidget[] = |
49 "__AURA_ROOT_WINDOW_ACCELERATED_WIDGET__"; | 49 "__AURA_ROOT_WINDOW_ACCELERATED_WIDGET__"; |
50 | 50 |
(...skipping 701 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
752 CleanupGestureRecognizerState(*iter); | 752 CleanupGestureRecognizerState(*iter); |
753 } | 753 } |
754 } | 754 } |
755 | 755 |
756 void RootWindow::UpdateWindowSize(const gfx::Size& host_size) { | 756 void RootWindow::UpdateWindowSize(const gfx::Size& host_size) { |
757 gfx::Rect bounds(host_size); | 757 gfx::Rect bounds(host_size); |
758 bounds.Inset(host_->GetInsets()); | 758 bounds.Inset(host_->GetInsets()); |
759 bounds = ui::ConvertRectToDIP(layer(), bounds); | 759 bounds = ui::ConvertRectToDIP(layer(), bounds); |
760 gfx::RectF new_bounds(bounds); | 760 gfx::RectF new_bounds(bounds); |
761 layer()->transform().TransformRect(&new_bounds); | 761 layer()->transform().TransformRect(&new_bounds); |
762 | |
763 // It makes little sense to scale beyond the original | 762 // It makes little sense to scale beyond the original |
764 // resolution. | 763 // resolution. |
765 DCHECK_LE(root_window_scale_, GetDeviceScaleFactor()); | 764 DCHECK_LE(root_window_scale_, GetDeviceScaleFactor()); |
766 // Apply |root_window_scale_| twice as the downscaling | 765 // Apply |root_window_scale_| twice as the downscaling |
767 // is already applied once in |SetTransformInternal()|. | 766 // is already applied once in |SetTransformInternal()|. |
768 // TODO(oshima): This is a bit ugly. Consider specifying | 767 // TODO(oshima): This is a bit ugly. Consider specifying |
769 // the pseudo host resolution instead. | 768 // the pseudo host resolution instead. |
770 new_bounds.Scale(root_window_scale_ * root_window_scale_); | 769 new_bounds.Scale(root_window_scale_ * root_window_scale_); |
771 // Ignore the origin because RootWindow's insets are handled by | 770 // Ignore the origin because RootWindow's insets are handled by |
772 // the transform. | 771 // the transform. |
773 SetBounds(gfx::Rect(gfx::ToNearestRect(new_bounds).size())); | 772 // Round the size because the bounds is no longer aligned to |
| 773 // backing pixel when |root_window_scale_| is specified |
| 774 // (850 height at 1.25 scale becomes 1062.5 for example.) |
| 775 SetBounds(gfx::Rect(gfx::ToRoundedSize(new_bounds.size()))); |
774 } | 776 } |
775 | 777 |
776 void RootWindow::OnWindowAddedToRootWindow(Window* attached) { | 778 void RootWindow::OnWindowAddedToRootWindow(Window* attached) { |
777 if (attached->IsVisible() && | 779 if (attached->IsVisible() && |
778 attached->ContainsPointInRoot(GetLastMouseLocationInRoot())) | 780 attached->ContainsPointInRoot(GetLastMouseLocationInRoot())) |
779 PostMouseMoveEventAfterWindowChange(); | 781 PostMouseMoveEventAfterWindowChange(); |
780 } | 782 } |
781 | 783 |
782 bool RootWindow::CanDispatchToTarget(ui::EventTarget* target) { | 784 bool RootWindow::CanDispatchToTarget(ui::EventTarget* target) { |
783 return event_dispatch_target_ == target; | 785 return event_dispatch_target_ == target; |
(...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1088 // currently broken. See/ crbug.com/107931. | 1090 // currently broken. See/ crbug.com/107931. |
1089 ui::MouseEvent event(ui::ET_MOUSE_MOVED, | 1091 ui::MouseEvent event(ui::ET_MOUSE_MOVED, |
1090 orig_mouse_location, | 1092 orig_mouse_location, |
1091 orig_mouse_location, | 1093 orig_mouse_location, |
1092 ui::EF_IS_SYNTHESIZED); | 1094 ui::EF_IS_SYNTHESIZED); |
1093 event.set_system_location(Env::GetInstance()->last_mouse_location()); | 1095 event.set_system_location(Env::GetInstance()->last_mouse_location()); |
1094 OnHostMouseEvent(&event); | 1096 OnHostMouseEvent(&event); |
1095 } | 1097 } |
1096 | 1098 |
1097 } // namespace aura | 1099 } // namespace aura |
OLD | NEW |