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 162 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
173 compositor()->SetRootLayer(layer()); | 173 compositor()->SetRootLayer(layer()); |
174 SetBounds( | 174 SetBounds( |
175 ui::ConvertRectToDIP(layer(), gfx::Rect(host_->GetBounds().size()))); | 175 ui::ConvertRectToDIP(layer(), gfx::Rect(host_->GetBounds().size()))); |
176 Show(); | 176 Show(); |
177 } | 177 } |
178 | 178 |
179 void RootWindow::ShowRootWindow() { | 179 void RootWindow::ShowRootWindow() { |
180 host_->Show(); | 180 host_->Show(); |
181 } | 181 } |
182 | 182 |
| 183 void RootWindow::HideRootWindow() { |
| 184 host_->Hide(); |
| 185 } |
| 186 |
183 RootWindowHostDelegate* RootWindow::AsRootWindowHostDelegate() { | 187 RootWindowHostDelegate* RootWindow::AsRootWindowHostDelegate() { |
184 return this; | 188 return this; |
185 } | 189 } |
186 | 190 |
187 void RootWindow::SetHostSize(const gfx::Size& size_in_pixel) { | 191 void RootWindow::SetHostSize(const gfx::Size& size_in_pixel) { |
188 DispatchHeldMouseMove(); | 192 DispatchHeldMouseMove(); |
189 gfx::Rect bounds = host_->GetBounds(); | 193 gfx::Rect bounds = host_->GetBounds(); |
190 bounds.set_size(size_in_pixel); | 194 bounds.set_size(size_in_pixel); |
191 host_->SetBounds(bounds); | 195 host_->SetBounds(bounds); |
192 | 196 |
(...skipping 328 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
521 //////////////////////////////////////////////////////////////////////////////// | 525 //////////////////////////////////////////////////////////////////////////////// |
522 // RootWindow, overridden from aura::client::CaptureDelegate: | 526 // RootWindow, overridden from aura::client::CaptureDelegate: |
523 | 527 |
524 void RootWindow::UpdateCapture(Window* old_capture, | 528 void RootWindow::UpdateCapture(Window* old_capture, |
525 Window* new_capture) { | 529 Window* new_capture) { |
526 if (old_capture && old_capture->GetRootWindow() == this && | 530 if (old_capture && old_capture->GetRootWindow() == this && |
527 old_capture->delegate()) { | 531 old_capture->delegate()) { |
528 // Send a capture changed event with bogus location data. | 532 // Send a capture changed event with bogus location data. |
529 ui::MouseEvent event(ui::ET_MOUSE_CAPTURE_CHANGED, gfx::Point(), | 533 ui::MouseEvent event(ui::ET_MOUSE_CAPTURE_CHANGED, gfx::Point(), |
530 gfx::Point(), 0); | 534 gfx::Point(), 0); |
| 535 |
531 ProcessMouseEvent(old_capture, &event); | 536 ProcessMouseEvent(old_capture, &event); |
532 | 537 |
533 old_capture->delegate()->OnCaptureLost(); | 538 old_capture->delegate()->OnCaptureLost(); |
534 } | 539 } |
535 | 540 |
536 // Reset the mouse_moved_handler_ if the mouse_moved_handler_ belongs | 541 // Reset the mouse_moved_handler_ if the mouse_moved_handler_ belongs |
537 // to another root window when losing the capture. | 542 // to another root window when losing the capture. |
538 if (mouse_moved_handler_ && old_capture && | 543 if (mouse_moved_handler_ && old_capture && |
539 old_capture->Contains(mouse_moved_handler_) && | 544 old_capture->Contains(mouse_moved_handler_) && |
540 old_capture->GetRootWindow() != this) { | 545 old_capture->GetRootWindow() != this) { |
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
914 void RootWindow::OnHostLostCapture() { | 919 void RootWindow::OnHostLostCapture() { |
915 Window* capture_window = client::GetCaptureWindow(this); | 920 Window* capture_window = client::GetCaptureWindow(this); |
916 if (capture_window && capture_window->GetRootWindow() == this) | 921 if (capture_window && capture_window->GetRootWindow() == this) |
917 capture_window->ReleaseCapture(); | 922 capture_window->ReleaseCapture(); |
918 } | 923 } |
919 | 924 |
920 void RootWindow::OnHostPaint() { | 925 void RootWindow::OnHostPaint() { |
921 Draw(); | 926 Draw(); |
922 } | 927 } |
923 | 928 |
| 929 void RootWindow::OnHostMoved(const gfx::Point& origin) { |
| 930 FOR_EACH_OBSERVER(RootWindowObserver, observers_, |
| 931 OnRootWindowMoved(this, origin)); |
| 932 } |
| 933 |
924 void RootWindow::OnHostResized(const gfx::Size& size) { | 934 void RootWindow::OnHostResized(const gfx::Size& size) { |
925 DispatchHeldMouseMove(); | 935 DispatchHeldMouseMove(); |
926 // The compositor should have the same size as the native root window host. | 936 // The compositor should have the same size as the native root window host. |
927 // Get the latest scale from display because it might have been changed. | 937 // Get the latest scale from display because it might have been changed. |
928 compositor_->SetScaleAndSize(GetDeviceScaleFactorFromDisplay(this), | 938 compositor_->SetScaleAndSize(GetDeviceScaleFactorFromDisplay(this), |
929 size); | 939 size); |
930 gfx::Size old(bounds().size()); | 940 gfx::Size old(bounds().size()); |
931 // The layer, and all the observers should be notified of the | 941 // The layer, and all the observers should be notified of the |
932 // transformed size of the root window. | 942 // transformed size of the root window. |
933 gfx::Rect bounds(ui::ConvertSizeToDIP(layer(), size)); | 943 gfx::Rect bounds(ui::ConvertSizeToDIP(layer(), size)); |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1032 transform.ConcatScale(scale, scale); | 1042 transform.ConcatScale(scale, scale); |
1033 transform.TransformPoint(point); | 1043 transform.TransformPoint(point); |
1034 gfx::Point orig_mouse_location = point.AsPoint(); | 1044 gfx::Point orig_mouse_location = point.AsPoint(); |
1035 | 1045 |
1036 // TODO(derat|oshima): Don't use mouse_button_flags_ as it's | 1046 // TODO(derat|oshima): Don't use mouse_button_flags_ as it's |
1037 // currently broken. See/ crbug.com/107931. | 1047 // currently broken. See/ crbug.com/107931. |
1038 ui::MouseEvent event(ui::ET_MOUSE_MOVED, | 1048 ui::MouseEvent event(ui::ET_MOUSE_MOVED, |
1039 orig_mouse_location, | 1049 orig_mouse_location, |
1040 orig_mouse_location, | 1050 orig_mouse_location, |
1041 ui::EF_IS_SYNTHESIZED); | 1051 ui::EF_IS_SYNTHESIZED); |
| 1052 event.set_system_location(Env::GetInstance()->last_mouse_location()); |
1042 OnHostMouseEvent(&event); | 1053 OnHostMouseEvent(&event); |
1043 #endif | 1054 #endif |
1044 } | 1055 } |
1045 | 1056 |
1046 void RootWindow::UnlockCompositor() { | 1057 void RootWindow::UnlockCompositor() { |
1047 DCHECK(compositor_lock_); | 1058 DCHECK(compositor_lock_); |
1048 compositor_lock_ = NULL; | 1059 compositor_lock_ = NULL; |
1049 if (draw_on_compositor_unlock_) { | 1060 if (draw_on_compositor_unlock_) { |
1050 draw_on_compositor_unlock_ = false; | 1061 draw_on_compositor_unlock_ = false; |
1051 ScheduleDraw(); | 1062 ScheduleDraw(); |
1052 } | 1063 } |
1053 } | 1064 } |
1054 | 1065 |
1055 } // namespace aura | 1066 } // namespace aura |
OLD | NEW |