diff options
-rw-r--r-- | chrome/browser/chromeos/login/user_controller.cc | 10 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/user_controller.h | 3 | ||||
-rw-r--r-- | chrome/browser/chromeos/login/user_controller_gtk.cc | 12 | ||||
-rw-r--r-- | chrome/browser/ui/views/notifications/balloon_view.cc | 2 | ||||
-rw-r--r-- | views/widget/native_widget_gtk.cc | 9 | ||||
-rw-r--r-- | views/widget/native_widget_win.cc | 14 | ||||
-rw-r--r-- | views/widget/widget.cc | 4 | ||||
-rw-r--r-- | views/widget/widget.h | 5 | ||||
-rw-r--r-- | views/window/window.cc | 3 |
9 files changed, 29 insertions, 33 deletions
diff --git a/chrome/browser/chromeos/login/user_controller.cc b/chrome/browser/chromeos/login/user_controller.cc index d16a720..0f135b9 100644 --- a/chrome/browser/chromeos/login/user_controller.cc +++ b/chrome/browser/chromeos/login/user_controller.cc @@ -53,7 +53,6 @@ const int kVerticalIntervalSize = 10; void CloseWindow(views::Widget* window) { if (!window) return; - window->set_widget_delegate(NULL); window->Close(); } @@ -332,7 +331,6 @@ void UserController::ConfigureAndShow(Widget* widget, chromeos::WmIpcWindowType type, views::View* contents_view) { widget->SetContentsView(contents_view); - widget->set_widget_delegate(this); std::vector<int> params; params.push_back(index); @@ -378,12 +376,12 @@ void UserController::SetupControlsWidget( *height = size.height(); } - controls_widget_ = CreateControlsWidget(gfx::Rect(*width, *height)); - ConfigureAndShow(controls_widget_, index, WM_IPC_WINDOW_LOGIN_CONTROLS, - control_view); controls_widget_delegate_.reset( new ControlsWidgetDelegate(this, control_view)); - controls_widget_->set_widget_delegate(controls_widget_delegate_.get()); + controls_widget_ = CreateControlsWidget(controls_widget_delegate_.get(), + gfx::Rect(*width, *height)); + ConfigureAndShow(controls_widget_, index, WM_IPC_WINDOW_LOGIN_CONTROLS, + control_view); } Widget* UserController::CreateImageWidget(int index) { diff --git a/chrome/browser/chromeos/login/user_controller.h b/chrome/browser/chromeos/login/user_controller.h index 8b8d18a..a2b24e8 100644 --- a/chrome/browser/chromeos/login/user_controller.h +++ b/chrome/browser/chromeos/login/user_controller.h @@ -161,7 +161,8 @@ class UserController : public views::WidgetDelegate, // Creates the widget that holds the controls. Caller owns the returned // widget. - static views::Widget* CreateControlsWidget(const gfx::Rect& bounds); + static views::Widget* CreateControlsWidget(views::WidgetDelegate* delegate, + const gfx::Rect& bounds); // Creates a Widget that selects the user any time the widget is // clicked. Caller owns the returned widget. diff --git a/chrome/browser/chromeos/login/user_controller_gtk.cc b/chrome/browser/chromeos/login/user_controller_gtk.cc index 17b6a90..fbcbb64 100644 --- a/chrome/browser/chromeos/login/user_controller_gtk.cc +++ b/chrome/browser/chromeos/login/user_controller_gtk.cc @@ -55,9 +55,11 @@ class ClickNotifyingWidget : public NativeWidgetGtk { DISALLOW_COPY_AND_ASSIGN(ClickNotifyingWidget); }; -views::Widget* InitWidget(views::NativeWidget* native_widget, +views::Widget* InitWidget(views::WidgetDelegate* delegate, + views::NativeWidget* native_widget, const gfx::Rect& bounds) { views::Widget::InitParams params(views::Widget::InitParams::TYPE_WINDOW); + params.delegate = delegate; params.transparent = true; params.bounds = bounds; params.native_widget = native_widget; @@ -70,15 +72,17 @@ views::Widget* InitWidget(views::NativeWidget* native_widget, } // namespace // static -views::Widget* UserController::CreateControlsWidget(const gfx::Rect& bounds) { - return InitWidget(new ControlsWidget(), bounds); +views::Widget* UserController::CreateControlsWidget( + views::WidgetDelegate* delegate, + const gfx::Rect& bounds) { + return InitWidget(delegate, new ControlsWidget(), bounds); } // static views::Widget* UserController::CreateClickNotifyingWidget( UserController* controller, const gfx::Rect& bounds) { - return InitWidget(new ClickNotifyingWidget(controller), bounds); + return InitWidget(controller, new ClickNotifyingWidget(controller), bounds); } } // namespace diff --git a/chrome/browser/ui/views/notifications/balloon_view.cc b/chrome/browser/ui/views/notifications/balloon_view.cc index 6ba1a74..8a96625 100644 --- a/chrome/browser/ui/views/notifications/balloon_view.cc +++ b/chrome/browser/ui/views/notifications/balloon_view.cc @@ -319,7 +319,7 @@ void BalloonViewImpl::Show(Balloon* balloon) { gfx::Rect balloon_rect(x(), y(), GetTotalWidth(), GetTotalHeight()); frame_container_ = new Widget; - frame_container_->set_widget_delegate(this); + params.delegate = this; params.transparent = true; params.bounds = balloon_rect; frame_container_->Init(params); diff --git a/views/widget/native_widget_gtk.cc b/views/widget/native_widget_gtk.cc index e5dd8b1..c5f926c 100644 --- a/views/widget/native_widget_gtk.cc +++ b/views/widget/native_widget_gtk.cc @@ -446,19 +446,14 @@ void NativeWidgetGtk::DoDrag(const OSExchangeData& data, int operation) { } void NativeWidgetGtk::IsActiveChanged() { - WidgetDelegate* d = GetWidget()->widget_delegate(); - if (d) { - bool a = IsActive(); - d->OnWidgetActivated(a); - } + GetWidget()->widget_delegate()->OnWidgetActivated(IsActive()); } void NativeWidgetGtk::SetInitialFocus() { if (!focus_on_creation_) return; - View* v = GetWidget()->widget_delegate() ? - GetWidget()->widget_delegate()->GetInitiallyFocusedView() : NULL; + View* v = GetWidget()->widget_delegate()->GetInitiallyFocusedView(); if (v) v->RequestFocus(); } diff --git a/views/widget/native_widget_win.cc b/views/widget/native_widget_win.cc index 221b684..1afb3e5 100644 --- a/views/widget/native_widget_win.cc +++ b/views/widget/native_widget_win.cc @@ -924,8 +924,7 @@ void NativeWidgetWin::OnDestroy() { } void NativeWidgetWin::OnDisplayChange(UINT bits_per_pixel, CSize screen_size) { - if (GetWidget()->widget_delegate()) - GetWidget()->widget_delegate()->OnDisplayChanged(); + GetWidget()->widget_delegate()->OnDisplayChanged(); } LRESULT NativeWidgetWin::OnDwmCompositionChanged(UINT msg, @@ -1115,15 +1114,13 @@ LRESULT NativeWidgetWin::OnMouseRange(UINT message, void NativeWidgetWin::OnMove(const CPoint& point) { // TODO(beng): move to Widget. - if (GetWidget()->widget_delegate()) - GetWidget()->widget_delegate()->OnWidgetMove(); + GetWidget()->widget_delegate()->OnWidgetMove(); SetMsgHandled(FALSE); } void NativeWidgetWin::OnMoving(UINT param, const LPRECT new_bounds) { // TODO(beng): move to Widget. - if (GetWidget()->widget_delegate()) - GetWidget()->widget_delegate()->OnWidgetMove(); + GetWidget()->widget_delegate()->OnWidgetMove(); } LRESULT NativeWidgetWin::OnNCActivate(BOOL active) { @@ -1237,7 +1234,7 @@ void NativeWidgetWin::OnSettingChange(UINT flags, const wchar_t* section) { SetMsgHandled(TRUE); } else { // TODO(beng): move to Widget. - if (flags == SPI_SETWORKAREA && GetWidget()->widget_delegate()) + if (flags == SPI_SETWORKAREA) GetWidget()->widget_delegate()->OnWorkAreaChanged(); SetMsgHandled(FALSE); } @@ -1318,8 +1315,7 @@ void NativeWidgetWin::SetInitialFocus() { return; // TODO(beng): move to Widget. - View* v = GetWidget()->widget_delegate() ? - GetWidget()->widget_delegate()->GetInitiallyFocusedView() : NULL; + View* v = GetWidget()->widget_delegate()->GetInitiallyFocusedView(); if (v) { v->RequestFocus(); } else if (!(GetWindowLong(GWL_EXSTYLE) & WS_EX_TRANSPARENT) && diff --git a/views/widget/widget.cc b/views/widget/widget.cc index 52e311a..bc84fb0 100644 --- a/views/widget/widget.cc +++ b/views/widget/widget.cc @@ -13,6 +13,7 @@ #include "views/widget/default_theme_provider.h" #include "views/widget/root_view.h" #include "views/widget/native_widget.h" +#include "views/widget/widget_delegate.h" namespace views { @@ -26,6 +27,7 @@ bool use_pure_views = false; Widget::InitParams::InitParams() : type(TYPE_WINDOW), + delegate(NULL), child(false), transient(false), transparent(false), @@ -43,6 +45,7 @@ Widget::InitParams::InitParams() Widget::InitParams::InitParams(Type type) : type(type), + delegate(NULL), child(type == TYPE_CONTROL), transient(type == TYPE_POPUP || type == TYPE_MENU), transparent(false), @@ -101,6 +104,7 @@ Widget* Widget::GetWidgetForNativeView(gfx::NativeView native_view) { } void Widget::Init(const InitParams& params) { + widget_delegate_ = params.delegate ? params.delegate : new WidgetDelegate; ownership_ = params.ownership; native_widget_ = params.native_widget ? params.native_widget diff --git a/views/widget/widget.h b/views/widget/widget.h index de31f4a..912cc76 100644 --- a/views/widget/widget.h +++ b/views/widget/widget.h @@ -104,6 +104,8 @@ class Widget : public internal::NativeWidgetDelegate, explicit InitParams(Type type); Type type; + // If NULL, a default implementation will be constructed. + WidgetDelegate* delegate; bool child; bool transient; bool transparent; @@ -196,9 +198,6 @@ class Widget : public internal::NativeWidgetDelegate, // Gets/Sets the WidgetDelegate. WidgetDelegate* widget_delegate() const { return widget_delegate_; } - void set_widget_delegate(WidgetDelegate* widget_delegate) { - widget_delegate_ = widget_delegate; - } // Sets the specified view as the contents of this Widget. There can only // be one contents view child of this Widget's RootView. This view is sized to diff --git a/views/window/window.cc b/views/window/window.cc index b48b196..bae284e 100644 --- a/views/window/window.cc +++ b/views/window/window.cc @@ -81,11 +81,9 @@ gfx::Size Window::GetLocalizedContentsSize(int col_resource_id, void Window::InitWindow(const InitParams& params) { window_delegate_ = params.window_delegate; - AsWidget()->set_widget_delegate(window_delegate_); DCHECK(window_delegate_); DCHECK(!window_delegate_->window_); window_delegate_->window_ = this; - set_widget_delegate(window_delegate_); native_window_ = params.native_window ? params.native_window : NativeWindow::CreateNativeWindow(this); @@ -93,6 +91,7 @@ void Window::InitWindow(const InitParams& params) { if (!non_client_view()->frame_view()) non_client_view()->SetFrameView(CreateFrameViewForWindow()); InitParams modified_params = params; + modified_params.widget_init_params.delegate = params.window_delegate; modified_params.widget_init_params.native_widget = native_window_->AsNativeWidget(); Init(modified_params.widget_init_params); |