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/views/widget/native_widget_aura.h" | 5 #include "ui/views/widget/native_widget_aura.h" |
6 | 6 |
7 #include "base/bind.h" | 7 #include "base/bind.h" |
8 #include "base/string_util.h" | 8 #include "base/string_util.h" |
9 #include "ui/aura/client/aura_constants.h" | 9 #include "ui/aura/client/aura_constants.h" |
10 #include "ui/aura/client/drag_drop_client.h" | 10 #include "ui/aura/client/drag_drop_client.h" |
11 #include "ui/aura/client/shadow_types.h" | 11 #include "ui/aura/client/shadow_types.h" |
12 #include "ui/aura/desktop.h" | |
13 #include "ui/aura/desktop_observer.h" | |
14 #include "ui/aura/event.h" | 12 #include "ui/aura/event.h" |
| 13 #include "ui/aura/root_window.h" |
| 14 #include "ui/aura/root_window_observer.h" |
15 #include "ui/aura/window.h" | 15 #include "ui/aura/window.h" |
16 #include "ui/aura/window_types.h" | 16 #include "ui/aura/window_types.h" |
17 #include "ui/base/dragdrop/os_exchange_data.h" | 17 #include "ui/base/dragdrop/os_exchange_data.h" |
18 #include "ui/base/ui_base_types.h" | 18 #include "ui/base/ui_base_types.h" |
19 #include "ui/gfx/canvas.h" | 19 #include "ui/gfx/canvas.h" |
20 #include "ui/gfx/compositor/layer.h" | 20 #include "ui/gfx/compositor/layer.h" |
21 #include "ui/gfx/font.h" | 21 #include "ui/gfx/font.h" |
22 #include "ui/gfx/screen.h" | 22 #include "ui/gfx/screen.h" |
23 #include "ui/views/widget/drop_helper.h" | 23 #include "ui/views/widget/drop_helper.h" |
24 #include "ui/views/widget/native_widget_delegate.h" | 24 #include "ui/views/widget/native_widget_delegate.h" |
(...skipping 32 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
57 default: | 57 default: |
58 NOTREACHED() << "Unhandled widget type " << type; | 58 NOTREACHED() << "Unhandled widget type " << type; |
59 return aura::WINDOW_TYPE_UNKNOWN; | 59 return aura::WINDOW_TYPE_UNKNOWN; |
60 } | 60 } |
61 } | 61 } |
62 | 62 |
63 } // namespace | 63 } // namespace |
64 | 64 |
65 // Used when SetInactiveRenderingDisabled() is invoked to track when active | 65 // Used when SetInactiveRenderingDisabled() is invoked to track when active |
66 // status changes in such a way that we should enable inactive rendering. | 66 // status changes in such a way that we should enable inactive rendering. |
67 class NativeWidgetAura::DesktopObserverImpl : public aura::DesktopObserver { | 67 class NativeWidgetAura::RootWindowObserverImpl |
| 68 : public aura::RootWindowObserver { |
68 public: | 69 public: |
69 explicit DesktopObserverImpl(NativeWidgetAura* host) | 70 explicit RootWindowObserverImpl(NativeWidgetAura* host) |
70 : host_(host) { | 71 : host_(host) { |
71 aura::Desktop::GetInstance()->AddObserver(this); | 72 aura::RootWindow::GetInstance()->AddObserver(this); |
72 } | 73 } |
73 | 74 |
74 virtual ~DesktopObserverImpl() { | 75 virtual ~RootWindowObserverImpl() { |
75 aura::Desktop::GetInstance()->RemoveObserver(this); | 76 aura::RootWindow::GetInstance()->RemoveObserver(this); |
76 } | 77 } |
77 | 78 |
78 // DesktopObserver overrides: | 79 // RootWindowObserver overrides: |
79 virtual void OnActiveWindowChanged(aura::Window* active) OVERRIDE { | 80 virtual void OnActiveWindowChanged(aura::Window* active) OVERRIDE { |
80 if (!active || (active != host_->window_ && | 81 if (!active || (active != host_->window_ && |
81 active->transient_parent() != host_->window_)) { | 82 active->transient_parent() != host_->window_)) { |
82 host_->delegate_->EnableInactiveRendering(); | 83 host_->delegate_->EnableInactiveRendering(); |
83 } | 84 } |
84 } | 85 } |
85 | 86 |
86 private: | 87 private: |
87 NativeWidgetAura* host_; | 88 NativeWidgetAura* host_; |
88 | 89 |
89 DISALLOW_COPY_AND_ASSIGN(DesktopObserverImpl); | 90 DISALLOW_COPY_AND_ASSIGN(RootWindowObserverImpl); |
90 }; | 91 }; |
91 | 92 |
92 //////////////////////////////////////////////////////////////////////////////// | 93 //////////////////////////////////////////////////////////////////////////////// |
93 // NativeWidgetAura, public: | 94 // NativeWidgetAura, public: |
94 | 95 |
95 NativeWidgetAura::NativeWidgetAura(internal::NativeWidgetDelegate* delegate) | 96 NativeWidgetAura::NativeWidgetAura(internal::NativeWidgetDelegate* delegate) |
96 : delegate_(delegate), | 97 : delegate_(delegate), |
97 ALLOW_THIS_IN_INITIALIZER_LIST(window_(new aura::Window(this))), | 98 ALLOW_THIS_IN_INITIALIZER_LIST(window_(new aura::Window(this))), |
98 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), | 99 ownership_(Widget::InitParams::NATIVE_WIDGET_OWNS_WIDGET), |
99 ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)), | 100 ALLOW_THIS_IN_INITIALIZER_LIST(close_widget_factory_(this)), |
(...skipping 321 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
421 | 422 |
422 void NativeWidgetAura::Activate() { | 423 void NativeWidgetAura::Activate() { |
423 window_->Activate(); | 424 window_->Activate(); |
424 } | 425 } |
425 | 426 |
426 void NativeWidgetAura::Deactivate() { | 427 void NativeWidgetAura::Deactivate() { |
427 window_->Deactivate(); | 428 window_->Deactivate(); |
428 } | 429 } |
429 | 430 |
430 bool NativeWidgetAura::IsActive() const { | 431 bool NativeWidgetAura::IsActive() const { |
431 return aura::Desktop::GetInstance()->active_window() == window_; | 432 return aura::RootWindow::GetInstance()->active_window() == window_; |
432 } | 433 } |
433 | 434 |
434 void NativeWidgetAura::SetAlwaysOnTop(bool on_top) { | 435 void NativeWidgetAura::SetAlwaysOnTop(bool on_top) { |
435 window_->SetIntProperty(aura::kAlwaysOnTopKey, on_top); | 436 window_->SetIntProperty(aura::kAlwaysOnTopKey, on_top); |
436 } | 437 } |
437 | 438 |
438 void NativeWidgetAura::Maximize() { | 439 void NativeWidgetAura::Maximize() { |
439 window_->SetIntProperty(aura::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); | 440 window_->SetIntProperty(aura::kShowStateKey, ui::SHOW_STATE_MAXIMIZED); |
440 } | 441 } |
441 | 442 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
480 bool NativeWidgetAura::IsAccessibleWidget() const { | 481 bool NativeWidgetAura::IsAccessibleWidget() const { |
481 // http://crbug.com/102570 | 482 // http://crbug.com/102570 |
482 //NOTIMPLEMENTED(); | 483 //NOTIMPLEMENTED(); |
483 return false; | 484 return false; |
484 } | 485 } |
485 | 486 |
486 void NativeWidgetAura::RunShellDrag(View* view, | 487 void NativeWidgetAura::RunShellDrag(View* view, |
487 const ui::OSExchangeData& data, | 488 const ui::OSExchangeData& data, |
488 int operation) { | 489 int operation) { |
489 aura::DragDropClient* client = static_cast<aura::DragDropClient*>( | 490 aura::DragDropClient* client = static_cast<aura::DragDropClient*>( |
490 aura::Desktop::GetInstance()->GetProperty( | 491 aura::RootWindow::GetInstance()->GetProperty( |
491 aura::kDesktopDragDropClientKey)); | 492 aura::kRootWindowDragDropClientKey)); |
492 if (client) | 493 if (client) |
493 client->StartDragAndDrop(data, operation); | 494 client->StartDragAndDrop(data, operation); |
494 } | 495 } |
495 | 496 |
496 void NativeWidgetAura::SchedulePaintInRect(const gfx::Rect& rect) { | 497 void NativeWidgetAura::SchedulePaintInRect(const gfx::Rect& rect) { |
497 if (window_) | 498 if (window_) |
498 window_->SchedulePaintInRect(rect); | 499 window_->SchedulePaintInRect(rect); |
499 } | 500 } |
500 | 501 |
501 void NativeWidgetAura::SetCursor(gfx::NativeCursor cursor) { | 502 void NativeWidgetAura::SetCursor(gfx::NativeCursor cursor) { |
502 cursor_ = cursor; | 503 cursor_ = cursor; |
503 aura::Desktop::GetInstance()->SetCursor(cursor); | 504 aura::RootWindow::GetInstance()->SetCursor(cursor); |
504 } | 505 } |
505 | 506 |
506 void NativeWidgetAura::ClearNativeFocus() { | 507 void NativeWidgetAura::ClearNativeFocus() { |
507 if (window_ && window_->GetFocusManager()) | 508 if (window_ && window_->GetFocusManager()) |
508 window_->GetFocusManager()->SetFocusedWindow(window_); | 509 window_->GetFocusManager()->SetFocusedWindow(window_); |
509 } | 510 } |
510 | 511 |
511 void NativeWidgetAura::FocusNativeView(gfx::NativeView native_view) { | 512 void NativeWidgetAura::FocusNativeView(gfx::NativeView native_view) { |
512 window_->GetFocusManager()->SetFocusedWindow(native_view); | 513 window_->GetFocusManager()->SetFocusedWindow(native_view); |
513 } | 514 } |
514 | 515 |
515 gfx::Rect NativeWidgetAura::GetWorkAreaBoundsInScreen() const { | 516 gfx::Rect NativeWidgetAura::GetWorkAreaBoundsInScreen() const { |
516 return gfx::Screen::GetMonitorWorkAreaNearestWindow(GetNativeView()); | 517 return gfx::Screen::GetMonitorWorkAreaNearestWindow(GetNativeView()); |
517 } | 518 } |
518 | 519 |
519 void NativeWidgetAura::SetInactiveRenderingDisabled(bool value) { | 520 void NativeWidgetAura::SetInactiveRenderingDisabled(bool value) { |
520 if (!value) | 521 if (!value) |
521 desktop_observer_.reset(); | 522 root_window_observer_.reset(); |
522 else | 523 else |
523 desktop_observer_.reset(new DesktopObserverImpl(this)); | 524 root_window_observer_.reset(new RootWindowObserverImpl(this)); |
524 } | 525 } |
525 | 526 |
526 //////////////////////////////////////////////////////////////////////////////// | 527 //////////////////////////////////////////////////////////////////////////////// |
527 // NativeWidgetAura, views::InputMethodDelegate implementation: | 528 // NativeWidgetAura, views::InputMethodDelegate implementation: |
528 | 529 |
529 void NativeWidgetAura::DispatchKeyEventPostIME(const KeyEvent& key) { | 530 void NativeWidgetAura::DispatchKeyEventPostIME(const KeyEvent& key) { |
530 if (delegate_->OnKeyEvent(key)) | 531 if (delegate_->OnKeyEvent(key)) |
531 return; | 532 return; |
532 if (key.type() == ui::ET_KEY_PRESSED && GetWidget()->GetFocusManager()) | 533 if (key.type() == ui::ET_KEY_PRESSED && GetWidget()->GetFocusManager()) |
533 GetWidget()->GetFocusManager()->OnKeyEvent(key); | 534 GetWidget()->GetFocusManager()->OnKeyEvent(key); |
(...skipping 250 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
784 | 785 |
785 // And now, notify them that they have a brand new parent. | 786 // And now, notify them that they have a brand new parent. |
786 for (Widget::Widgets::iterator it = widgets.begin(); | 787 for (Widget::Widgets::iterator it = widgets.begin(); |
787 it != widgets.end(); ++it) { | 788 it != widgets.end(); ++it) { |
788 (*it)->NotifyNativeViewHierarchyChanged(true, new_parent); | 789 (*it)->NotifyNativeViewHierarchyChanged(true, new_parent); |
789 } | 790 } |
790 } | 791 } |
791 | 792 |
792 // static | 793 // static |
793 bool NativeWidgetPrivate::IsMouseButtonDown() { | 794 bool NativeWidgetPrivate::IsMouseButtonDown() { |
794 return aura::Desktop::GetInstance()->IsMouseButtonDown(); | 795 return aura::RootWindow::GetInstance()->IsMouseButtonDown(); |
795 } | 796 } |
796 | 797 |
797 } // namespace internal | 798 } // namespace internal |
798 } // namespace views | 799 } // namespace views |
OLD | NEW |