Index: ui/views/widget/widget.cc |
diff --git a/ui/views/widget/widget.cc b/ui/views/widget/widget.cc |
index d1f92e7f8a5911b6f7cd3e3e24bc6ac093567a57..e53d0af3bffd892fed2602c103e8ba67b9e3e5fe 100644 |
--- a/ui/views/widget/widget.cc |
+++ b/ui/views/widget/widget.cc |
@@ -69,9 +69,7 @@ NativeWidget* CreateNativeWidget(NativeWidget* native_widget, |
// WidgetDelegate is supplied. |
class DefaultWidgetDelegate : public WidgetDelegate { |
public: |
- DefaultWidgetDelegate(Widget* widget, bool can_activate) |
- : widget_(widget), |
- can_activate_(can_activate) { |
+ explicit DefaultWidgetDelegate(Widget* widget) : widget_(widget) { |
} |
virtual ~DefaultWidgetDelegate() {} |
@@ -85,9 +83,6 @@ class DefaultWidgetDelegate : public WidgetDelegate { |
virtual const Widget* GetWidget() const OVERRIDE { |
return widget_; |
} |
- virtual bool CanActivate() const OVERRIDE { |
- return can_activate_; |
- } |
virtual bool ShouldAdvanceFocusToTopLevelWidget() const OVERRIDE { |
// In most situations where a Widget is used without a delegate the Widget |
// is used as a container, so that we want focus to advance to the top-level |
@@ -97,7 +92,6 @@ class DefaultWidgetDelegate : public WidgetDelegate { |
private: |
Widget* widget_; |
- bool can_activate_; |
DISALLOW_COPY_AND_ASSIGN(DefaultWidgetDelegate); |
}; |
@@ -344,20 +338,6 @@ void Widget::Init(const InitParams& in_params) { |
params.type != InitParams::TYPE_TOOLTIP); |
params.top_level = is_top_level_; |
- if (params.activatable != InitParams::ACTIVATABLE_DEFAULT) { |
- can_activate_ = (params.activatable == InitParams::ACTIVATABLE_YES); |
- } else if (params.type != InitParams::TYPE_CONTROL && |
- params.type != InitParams::TYPE_POPUP && |
- params.type != InitParams::TYPE_MENU && |
- params.type != InitParams::TYPE_TOOLTIP && |
- params.type != InitParams::TYPE_DRAG) { |
- can_activate_ = true; |
- params.activatable = InitParams::ACTIVATABLE_YES; |
- } else { |
- can_activate_ = false; |
- params.activatable = InitParams::ACTIVATABLE_NO; |
- } |
- |
if (params.opacity == views::Widget::InitParams::INFER_OPACITY && |
params.type != views::Widget::InitParams::TYPE_WINDOW && |
params.type != views::Widget::InitParams::TYPE_PANEL) |
@@ -369,8 +349,25 @@ void Widget::Init(const InitParams& in_params) { |
if (params.opacity == views::Widget::InitParams::INFER_OPACITY) |
params.opacity = views::Widget::InitParams::OPAQUE_WINDOW; |
+ bool can_activate = false; |
+ if (params.activatable != InitParams::ACTIVATABLE_DEFAULT) { |
+ can_activate = (params.activatable == InitParams::ACTIVATABLE_YES); |
+ } else if (params.type != InitParams::TYPE_CONTROL && |
+ params.type != InitParams::TYPE_POPUP && |
+ params.type != InitParams::TYPE_MENU && |
+ params.type != InitParams::TYPE_TOOLTIP && |
+ params.type != InitParams::TYPE_DRAG) { |
+ can_activate = true; |
+ params.activatable = InitParams::ACTIVATABLE_YES; |
+ } else { |
+ can_activate = false; |
+ params.activatable = InitParams::ACTIVATABLE_NO; |
+ } |
+ |
widget_delegate_ = params.delegate ? |
- params.delegate : new DefaultWidgetDelegate(this, can_activate_); |
+ params.delegate : new DefaultWidgetDelegate(this); |
+ widget_delegate_->set_default_can_activate(can_activate); |
+ |
ownership_ = params.ownership; |
native_widget_ = CreateNativeWidget(params.native_widget, this)-> |
AsNativeWidgetPrivate(); |
@@ -1019,7 +1016,7 @@ bool Widget::IsDialogBox() const { |
} |
bool Widget::CanActivate() const { |
- return can_activate_ && widget_delegate_->CanActivate(); |
+ return widget_delegate_->CanActivate(); |
} |
bool Widget::IsInactiveRenderingDisabled() const { |