diff options
author | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-08 16:56:05 +0000 |
---|---|---|
committer | sadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2011-08-08 16:56:05 +0000 |
commit | c3c99970a48e0eca1146550c83851950279f8ed8 (patch) | |
tree | 12faaa9b18f75fef31bf15f639b1c0d71d3eb4c6 /views | |
parent | 3b50a1c762e21603dfd46e7e294465c875aa72be (diff) | |
download | chromium_src-c3c99970a48e0eca1146550c83851950279f8ed8.zip chromium_src-c3c99970a48e0eca1146550c83851950279f8ed8.tar.gz chromium_src-c3c99970a48e0eca1146550c83851950279f8ed8.tar.bz2 |
NativeWidgetViews: Implement widget activation/deactivation.
BUG=none
TEST=WidgetObserverTest.ActivationChange
Review URL: http://codereview.chromium.org/7585028
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@95828 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'views')
-rw-r--r-- | views/desktop/desktop_window_view.cc | 15 | ||||
-rw-r--r-- | views/widget/native_widget_views.cc | 5 | ||||
-rw-r--r-- | views/widget/native_widget_views.h | 6 | ||||
-rw-r--r-- | views/widget/widget_unittest.cc | 11 |
4 files changed, 25 insertions, 12 deletions
diff --git a/views/desktop/desktop_window_view.cc b/views/desktop/desktop_window_view.cc index b279797..3668c25 100644 --- a/views/desktop/desktop_window_view.cc +++ b/views/desktop/desktop_window_view.cc @@ -138,15 +138,10 @@ void DesktopWindowView::ActivateWidget(Widget* widget) { if (widget && widget->IsActive()) return; - if (active_native_widget_) - active_native_widget_->OnActivate(false); if (widget) { - widget->MoveToTop(); - active_native_widget_ = - static_cast<NativeWidgetViews*>(widget->native_widget()); - active_native_widget_->OnActivate(true); if (!widget->HasObserver(this)) widget->AddObserver(this); + widget->Activate(); } } @@ -252,6 +247,14 @@ void DesktopWindowView::OnWidgetVisibilityChanged(Widget* widget, void DesktopWindowView::OnWidgetActivationChanged(Widget* widget, bool active) { + if (active) { + if (active_native_widget_) + active_native_widget_->GetWidget()->Deactivate(); + active_native_widget_ = + static_cast<NativeWidgetViews*>(widget->native_widget()); + } else if (widget == active_native_widget_->GetWidget()) { + active_native_widget_ = NULL; + } } } // namespace desktop diff --git a/views/widget/native_widget_views.cc b/views/widget/native_widget_views.cc index acda459..3814586 100644 --- a/views/widget/native_widget_views.cc +++ b/views/widget/native_widget_views.cc @@ -378,11 +378,12 @@ bool NativeWidgetViews::IsVisible() const { void NativeWidgetViews::Activate() { // Enable WidgetObserverTest.ActivationChange when this is implemented. - NOTIMPLEMENTED(); + MoveToTop(); + OnActivate(true); } void NativeWidgetViews::Deactivate() { - NOTIMPLEMENTED(); + OnActivate(false); } bool NativeWidgetViews::IsActive() const { diff --git a/views/widget/native_widget_views.h b/views/widget/native_widget_views.h index e8efe3c1..ed63ce8 100644 --- a/views/widget/native_widget_views.h +++ b/views/widget/native_widget_views.h @@ -14,6 +14,10 @@ #include "views/widget/native_widget_private.h" namespace views { +namespace desktop { +class DesktopWindowView; +} + namespace internal { class NativeWidgetView; } @@ -128,6 +132,8 @@ class VIEWS_EXPORT NativeWidgetViews : public internal::NativeWidgetPrivate, virtual void DispatchKeyEventPostIME(const KeyEvent& key) OVERRIDE; private: + friend class desktop::DesktopWindowView; + // These functions may return NULL during Widget destruction. internal::NativeWidgetPrivate* GetParentNativeWidget(); const internal::NativeWidgetPrivate* GetParentNativeWidget() const; diff --git a/views/widget/widget_unittest.cc b/views/widget/widget_unittest.cc index 04e7662..3833975 100644 --- a/views/widget/widget_unittest.cc +++ b/views/widget/widget_unittest.cc @@ -586,10 +586,15 @@ class WidgetObserverTest : public WidgetTest, virtual void OnWidgetActivationChanged(Widget* widget, bool active) OVERRIDE { if (active) { + if (widget_activated_) + widget_activated_->Deactivate(); widget_activated_ = widget; active_ = widget; - } else + } else { + if (widget_activated_ == widget) + widget_activated_ = NULL; widget_deactivated_ = widget; + } } virtual void OnWidgetVisibilityChanged(Widget* widget, @@ -633,9 +638,7 @@ class WidgetObserverTest : public WidgetTest, Widget* widget_hidden_; }; -// TODO: This test should be enabled when NativeWidgetViews::Activate is -// implemented. -TEST_F(WidgetObserverTest, DISABLED_ActivationChange) { +TEST_F(WidgetObserverTest, ActivationChange) { Widget* toplevel = CreateTopLevelPlatformWidget(); views_delegate.set_default_parent_view(toplevel->GetRootView()); |