| OLD | NEW |
| 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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/desktop.h" | 5 #include "ui/aura/desktop.h" |
| 6 | 6 |
| 7 #include <string> | 7 #include <string> |
| 8 #include <vector> | 8 #include <vector> |
| 9 | 9 |
| 10 #include "base/bind.h" | 10 #include "base/bind.h" |
| (...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 144 Desktop* Desktop::instance_ = NULL; | 144 Desktop* Desktop::instance_ = NULL; |
| 145 bool Desktop::use_fullscreen_host_window_ = false; | 145 bool Desktop::use_fullscreen_host_window_ = false; |
| 146 | 146 |
| 147 Desktop::Desktop() | 147 Desktop::Desktop() |
| 148 : Window(NULL), | 148 : Window(NULL), |
| 149 host_(aura::DesktopHost::Create(GetInitialHostWindowBounds())), | 149 host_(aura::DesktopHost::Create(GetInitialHostWindowBounds())), |
| 150 ALLOW_THIS_IN_INITIALIZER_LIST( | 150 ALLOW_THIS_IN_INITIALIZER_LIST( |
| 151 stacking_client_(new DefaultStackingClient(this))), | 151 stacking_client_(new DefaultStackingClient(this))), |
| 152 ALLOW_THIS_IN_INITIALIZER_LIST(schedule_paint_factory_(this)), | 152 ALLOW_THIS_IN_INITIALIZER_LIST(schedule_paint_factory_(this)), |
| 153 active_window_(NULL), | 153 active_window_(NULL), |
| 154 mouse_button_flags_(0), |
| 154 last_cursor_(kCursorNull), | 155 last_cursor_(kCursorNull), |
| 155 in_destructor_(false), | 156 in_destructor_(false), |
| 156 screen_(new ScreenAura), | 157 screen_(new ScreenAura), |
| 157 capture_window_(NULL), | 158 capture_window_(NULL), |
| 158 mouse_pressed_handler_(NULL), | 159 mouse_pressed_handler_(NULL), |
| 159 mouse_moved_handler_(NULL), | 160 mouse_moved_handler_(NULL), |
| 160 focused_window_(NULL), | 161 focused_window_(NULL), |
| 161 touch_event_handler_(NULL) { | 162 touch_event_handler_(NULL) { |
| 162 set_name("RootWindow"); | 163 set_name("RootWindow"); |
| 163 gfx::Screen::SetInstance(screen_); | 164 gfx::Screen::SetInstance(screen_); |
| (...skipping 60 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 224 void Desktop::Run() { | 225 void Desktop::Run() { |
| 225 ShowDesktop(); | 226 ShowDesktop(); |
| 226 MessageLoopForUI::current()->RunWithDispatcher(host_.get()); | 227 MessageLoopForUI::current()->RunWithDispatcher(host_.get()); |
| 227 } | 228 } |
| 228 | 229 |
| 229 void Desktop::Draw() { | 230 void Desktop::Draw() { |
| 230 compositor_->Draw(false); | 231 compositor_->Draw(false); |
| 231 } | 232 } |
| 232 | 233 |
| 233 bool Desktop::DispatchMouseEvent(MouseEvent* event) { | 234 bool Desktop::DispatchMouseEvent(MouseEvent* event) { |
| 235 static const int kMouseButtonFlagMask = |
| 236 ui::EF_LEFT_BUTTON_DOWN | |
| 237 ui::EF_MIDDLE_BUTTON_DOWN | |
| 238 ui::EF_RIGHT_BUTTON_DOWN; |
| 239 |
| 234 event->UpdateForTransform(layer()->transform()); | 240 event->UpdateForTransform(layer()->transform()); |
| 235 | 241 |
| 236 last_mouse_location_ = event->location(); | 242 last_mouse_location_ = event->location(); |
| 237 | 243 |
| 238 Window* target = | 244 Window* target = |
| 239 mouse_pressed_handler_ ? mouse_pressed_handler_ : capture_window_; | 245 mouse_pressed_handler_ ? mouse_pressed_handler_ : capture_window_; |
| 240 if (!target) | 246 if (!target) |
| 241 target = GetEventHandlerForPoint(event->location()); | 247 target = GetEventHandlerForPoint(event->location()); |
| 242 switch (event->type()) { | 248 switch (event->type()) { |
| 243 case ui::ET_MOUSE_MOVED: | 249 case ui::ET_MOUSE_MOVED: |
| 244 HandleMouseMoved(*event, target); | 250 HandleMouseMoved(*event, target); |
| 245 break; | 251 break; |
| 246 case ui::ET_MOUSE_PRESSED: | 252 case ui::ET_MOUSE_PRESSED: |
| 247 if (!mouse_pressed_handler_) | 253 if (!mouse_pressed_handler_) |
| 248 mouse_pressed_handler_ = target; | 254 mouse_pressed_handler_ = target; |
| 255 mouse_button_flags_ = event->flags() & kMouseButtonFlagMask; |
| 249 break; | 256 break; |
| 250 case ui::ET_MOUSE_RELEASED: | 257 case ui::ET_MOUSE_RELEASED: |
| 251 mouse_pressed_handler_ = NULL; | 258 mouse_pressed_handler_ = NULL; |
| 259 mouse_button_flags_ = event->flags() & kMouseButtonFlagMask; |
| 252 break; | 260 break; |
| 253 default: | 261 default: |
| 254 break; | 262 break; |
| 255 } | 263 } |
| 256 if (target && target->delegate()) { | 264 if (target && target->delegate()) { |
| 257 int flags = event->flags(); | 265 int flags = event->flags(); |
| 258 gfx::Point location_in_window = event->location(); | 266 gfx::Point location_in_window = event->location(); |
| 259 Window::ConvertPointToWindow(this, target, &location_in_window); | 267 Window::ConvertPointToWindow(this, target, &location_in_window); |
| 260 if (IsNonClientLocation(target, location_in_window)) | 268 if (IsNonClientLocation(target, location_in_window)) |
| 261 flags |= ui::EF_IS_NON_CLIENT; | 269 flags |= ui::EF_IS_NON_CLIENT; |
| (...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 392 } | 400 } |
| 393 | 401 |
| 394 void Desktop::AddObserver(DesktopObserver* observer) { | 402 void Desktop::AddObserver(DesktopObserver* observer) { |
| 395 observers_.AddObserver(observer); | 403 observers_.AddObserver(observer); |
| 396 } | 404 } |
| 397 | 405 |
| 398 void Desktop::RemoveObserver(DesktopObserver* observer) { | 406 void Desktop::RemoveObserver(DesktopObserver* observer) { |
| 399 observers_.RemoveObserver(observer); | 407 observers_.RemoveObserver(observer); |
| 400 } | 408 } |
| 401 | 409 |
| 410 bool Desktop::IsMouseButtonDown() const { |
| 411 return mouse_button_flags_ != 0; |
| 412 } |
| 413 |
| 402 void Desktop::SetCapture(Window* window) { | 414 void Desktop::SetCapture(Window* window) { |
| 403 if (capture_window_ == window) | 415 if (capture_window_ == window) |
| 404 return; | 416 return; |
| 405 | 417 |
| 406 if (capture_window_ && capture_window_->delegate()) | 418 if (capture_window_ && capture_window_->delegate()) |
| 407 capture_window_->delegate()->OnCaptureLost(); | 419 capture_window_->delegate()->OnCaptureLost(); |
| 408 capture_window_ = window; | 420 capture_window_ = window; |
| 409 | 421 |
| 410 if (capture_window_) { | 422 if (capture_window_) { |
| 411 // Make all subsequent mouse events and touch go to the capture window. We | 423 // Make all subsequent mouse events and touch go to the capture window. We |
| (...skipping 180 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 592 base::StringToInt(parts[1], &parsed_height) && parsed_height > 0) { | 604 base::StringToInt(parts[1], &parsed_height) && parsed_height > 0) { |
| 593 bounds.set_size(gfx::Size(parsed_width, parsed_height)); | 605 bounds.set_size(gfx::Size(parsed_width, parsed_height)); |
| 594 } else if (use_fullscreen_host_window_) { | 606 } else if (use_fullscreen_host_window_) { |
| 595 bounds = gfx::Rect(DesktopHost::GetNativeDisplaySize()); | 607 bounds = gfx::Rect(DesktopHost::GetNativeDisplaySize()); |
| 596 } | 608 } |
| 597 | 609 |
| 598 return bounds; | 610 return bounds; |
| 599 } | 611 } |
| 600 | 612 |
| 601 } // namespace aura | 613 } // namespace aura |
| OLD | NEW |