summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-02 15:09:39 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2011-06-02 15:09:39 +0000
commitb6b53155952432917e19b69eaa1040c4f1d6cb96 (patch)
tree90f3b6783221c587f7f72691c0b8ff61dc991a9e
parentd4ae5794b83ca02e76a5f527ca7ac8a2fdf16d10 (diff)
downloadchromium_src-b6b53155952432917e19b69eaa1040c4f1d6cb96.zip
chromium_src-b6b53155952432917e19b69eaa1040c4f1d6cb96.tar.gz
chromium_src-b6b53155952432917e19b69eaa1040c4f1d6cb96.tar.bz2
WidgetDelegate is now always created. Specified through InitParams, if NULL Widget will make a default one.
BUG=72040 TEST=none Review URL: http://codereview.chromium.org/7080068 git-svn-id: svn://svn.chromium.org/chrome/trunk/src@87609 0039d316-1c4b-4281-b951-d872f2087c98
-rw-r--r--chrome/browser/chromeos/login/user_controller.cc10
-rw-r--r--chrome/browser/chromeos/login/user_controller.h3
-rw-r--r--chrome/browser/chromeos/login/user_controller_gtk.cc12
-rw-r--r--chrome/browser/ui/views/notifications/balloon_view.cc2
-rw-r--r--views/widget/native_widget_gtk.cc9
-rw-r--r--views/widget/native_widget_win.cc14
-rw-r--r--views/widget/widget.cc4
-rw-r--r--views/widget/widget.h5
-rw-r--r--views/window/window.cc3
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);