Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(213)

Side by Side Diff: ui/aura/root_window.cc

Issue 10828133: Desktop Aura: Allow tab drags out of window. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Make sure we have a valid system location Created 8 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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 322 matching lines...) Expand 10 before | Expand all | Expand 10 after
515 //////////////////////////////////////////////////////////////////////////////// 519 ////////////////////////////////////////////////////////////////////////////////
516 // RootWindow, overridden from aura::client::CaptureDelegate: 520 // RootWindow, overridden from aura::client::CaptureDelegate:
517 521
518 void RootWindow::UpdateCapture(Window* old_capture, 522 void RootWindow::UpdateCapture(Window* old_capture,
519 Window* new_capture) { 523 Window* new_capture) {
520 if (old_capture && old_capture->GetRootWindow() == this && 524 if (old_capture && old_capture->GetRootWindow() == this &&
521 old_capture->delegate()) { 525 old_capture->delegate()) {
522 // Send a capture changed event with bogus location data. 526 // Send a capture changed event with bogus location data.
523 ui::MouseEvent event(ui::ET_MOUSE_CAPTURE_CHANGED, gfx::Point(), 527 ui::MouseEvent event(ui::ET_MOUSE_CAPTURE_CHANGED, gfx::Point(),
524 gfx::Point(), 0); 528 gfx::Point(), 0);
529
525 ProcessMouseEvent(old_capture, &event); 530 ProcessMouseEvent(old_capture, &event);
526 531
527 old_capture->delegate()->OnCaptureLost(); 532 old_capture->delegate()->OnCaptureLost();
528 } 533 }
529 534
530 // Reset the mouse_moved_handler_ if the mouse_moved_handler_ belongs 535 // Reset the mouse_moved_handler_ if the mouse_moved_handler_ belongs
531 // to another root window when losing the capture. 536 // to another root window when losing the capture.
532 if (mouse_moved_handler_ && old_capture && 537 if (mouse_moved_handler_ && old_capture &&
533 old_capture->Contains(mouse_moved_handler_) && 538 old_capture->Contains(mouse_moved_handler_) &&
534 old_capture->GetRootWindow() != this) { 539 old_capture->GetRootWindow() != this) {
(...skipping 373 matching lines...) Expand 10 before | Expand all | Expand 10 after
908 void RootWindow::OnHostLostCapture() { 913 void RootWindow::OnHostLostCapture() {
909 Window* capture_window = client::GetCaptureWindow(this); 914 Window* capture_window = client::GetCaptureWindow(this);
910 if (capture_window && capture_window->GetRootWindow() == this) 915 if (capture_window && capture_window->GetRootWindow() == this)
911 capture_window->ReleaseCapture(); 916 capture_window->ReleaseCapture();
912 } 917 }
913 918
914 void RootWindow::OnHostPaint() { 919 void RootWindow::OnHostPaint() {
915 Draw(); 920 Draw();
916 } 921 }
917 922
923 void RootWindow::OnHostMoved(const gfx::Point& origin) {
924 FOR_EACH_OBSERVER(RootWindowObserver, observers_,
925 OnRootWindowMoved(this, origin));
926 }
927
918 void RootWindow::OnHostResized(const gfx::Size& size) { 928 void RootWindow::OnHostResized(const gfx::Size& size) {
919 DispatchHeldMouseMove(); 929 DispatchHeldMouseMove();
920 // The compositor should have the same size as the native root window host. 930 // The compositor should have the same size as the native root window host.
921 // Get the latest scale from display because it might have been changed. 931 // Get the latest scale from display because it might have been changed.
922 compositor_->SetScaleAndSize(GetDeviceScaleFactorFromDisplay(this), 932 compositor_->SetScaleAndSize(GetDeviceScaleFactorFromDisplay(this),
923 size); 933 size);
924 gfx::Size old(bounds().size()); 934 gfx::Size old(bounds().size());
925 // The layer, and all the observers should be notified of the 935 // The layer, and all the observers should be notified of the
926 // transformed size of the root window. 936 // transformed size of the root window.
927 gfx::Rect bounds(ui::ConvertSizeToDIP(layer(), size)); 937 gfx::Rect bounds(ui::ConvertSizeToDIP(layer(), size));
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after
1026 transform.ConcatScale(scale, scale); 1036 transform.ConcatScale(scale, scale);
1027 transform.TransformPoint(point); 1037 transform.TransformPoint(point);
1028 gfx::Point orig_mouse_location = point.AsPoint(); 1038 gfx::Point orig_mouse_location = point.AsPoint();
1029 1039
1030 // TODO(derat|oshima): Don't use mouse_button_flags_ as it's 1040 // TODO(derat|oshima): Don't use mouse_button_flags_ as it's
1031 // currently broken. See/ crbug.com/107931. 1041 // currently broken. See/ crbug.com/107931.
1032 ui::MouseEvent event(ui::ET_MOUSE_MOVED, 1042 ui::MouseEvent event(ui::ET_MOUSE_MOVED,
1033 orig_mouse_location, 1043 orig_mouse_location,
1034 orig_mouse_location, 1044 orig_mouse_location,
1035 ui::EF_IS_SYNTHESIZED); 1045 ui::EF_IS_SYNTHESIZED);
1046 event.set_system_location(Env::GetInstance()->last_mouse_location());
1036 OnHostMouseEvent(&event); 1047 OnHostMouseEvent(&event);
1037 #endif 1048 #endif
1038 } 1049 }
1039 1050
1040 void RootWindow::UnlockCompositor() { 1051 void RootWindow::UnlockCompositor() {
1041 DCHECK(compositor_lock_); 1052 DCHECK(compositor_lock_);
1042 compositor_lock_ = NULL; 1053 compositor_lock_ = NULL;
1043 if (draw_on_compositor_unlock_) { 1054 if (draw_on_compositor_unlock_) {
1044 draw_on_compositor_unlock_ = false; 1055 draw_on_compositor_unlock_ = false;
1045 ScheduleDraw(); 1056 ScheduleDraw();
1046 } 1057 }
1047 } 1058 }
1048 1059
1049 } // namespace aura 1060 } // namespace aura
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698