summaryrefslogtreecommitdiffstats
path: root/views
diff options
context:
space:
mode:
authorsadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-08 16:56:05 +0000
committersadrul@chromium.org <sadrul@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-08-08 16:56:05 +0000
commitc3c99970a48e0eca1146550c83851950279f8ed8 (patch)
tree12faaa9b18f75fef31bf15f639b1c0d71d3eb4c6 /views
parent3b50a1c762e21603dfd46e7e294465c875aa72be (diff)
downloadchromium_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.cc15
-rw-r--r--views/widget/native_widget_views.cc5
-rw-r--r--views/widget/native_widget_views.h6
-rw-r--r--views/widget/widget_unittest.cc11
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());