@@ -60,7 +60,8 @@ class MessageDialog : public views::WidgetDelegate,
60
60
const std::vector<std::string>& buttons,
61
61
const std::string& title,
62
62
const std::string& message,
63
- const std::string& detail);
63
+ const std::string& detail,
64
+ const gfx::ImageSkia& icon);
64
65
virtual ~MessageDialog ();
65
66
66
67
void Show (base::RunLoop* run_loop = NULL );
@@ -75,24 +76,28 @@ class MessageDialog : public views::WidgetDelegate,
75
76
76
77
private:
77
78
// Overridden from views::WidgetDelegate:
78
- virtual base::string16 GetWindowTitle () const ;
79
- virtual views::Widget* GetWidget () OVERRIDE;
80
- virtual const views::Widget* GetWidget () const OVERRIDE;
81
- virtual views::View* GetContentsView () OVERRIDE;
82
- virtual views::View* GetInitiallyFocusedView () OVERRIDE;
83
- virtual ui::ModalType GetModalType () const OVERRIDE;
84
- virtual views::NonClientFrameView* CreateNonClientFrameView (
85
- views::Widget* widget) OVERRIDE;
86
- virtual views::ClientView* CreateClientView (views::Widget* widget) OVERRIDE;
79
+ base::string16 GetWindowTitle () const override ;
80
+ gfx::ImageSkia GetWindowAppIcon () override ;
81
+ gfx::ImageSkia GetWindowIcon () override ;
82
+ bool ShouldShowWindowIcon () const override ;
83
+ views::Widget* GetWidget () override ;
84
+ const views::Widget* GetWidget () const override ;
85
+ views::View* GetContentsView () override ;
86
+ views::View* GetInitiallyFocusedView () override ;
87
+ ui::ModalType GetModalType () const override ;
88
+ views::NonClientFrameView* CreateNonClientFrameView (
89
+ views::Widget* widget) override ;
90
+ views::ClientView* CreateClientView (views::Widget* widget) override ;
87
91
88
92
// Overridden from views::View:
89
- virtual gfx::Size GetPreferredSize () const OVERRIDE ;
90
- virtual void Layout () OVERRIDE ;
91
- virtual bool AcceleratorPressed (const ui::Accelerator& accelerator) OVERRIDE ;
93
+ gfx::Size GetPreferredSize () const override ;
94
+ void Layout () override ;
95
+ bool AcceleratorPressed (const ui::Accelerator& accelerator) override ;
92
96
93
97
// Overridden from views::ButtonListener:
94
- virtual void ButtonPressed (views::Button* sender,
95
- const ui::Event& event) OVERRIDE;
98
+ void ButtonPressed (views::Button* sender, const ui::Event& event) override ;
99
+
100
+ gfx::ImageSkia icon_;
96
101
97
102
bool delete_on_close_;
98
103
int result_;
@@ -118,7 +123,7 @@ class MessageDialogClientView : public views::ClientView {
118
123
}
119
124
120
125
// views::ClientView:
121
- virtual bool CanClose () OVERRIDE {
126
+ bool CanClose () override {
122
127
dialog_->Close ();
123
128
return false ;
124
129
}
@@ -137,8 +142,10 @@ MessageDialog::MessageDialog(NativeWindow* parent_window,
137
142
const std::vector<std::string>& buttons,
138
143
const std::string& title,
139
144
const std::string& message,
140
- const std::string& detail)
141
- : delete_on_close_(false ),
145
+ const std::string& detail,
146
+ const gfx::ImageSkia& icon)
147
+ : icon_(icon),
148
+ delete_on_close_(false ),
142
149
result_(-1 ),
143
150
title_(base::UTF8ToUTF16(title)),
144
151
parent_(parent_window),
@@ -174,6 +181,7 @@ MessageDialog::MessageDialog(NativeWindow* parent_window,
174
181
175
182
views::Widget::InitParams params;
176
183
params.delegate = this ;
184
+ params.type = views::Widget::InitParams::TYPE_WINDOW;
177
185
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
178
186
if (parent_) {
179
187
params.parent = parent_->GetNativeWindow ();
@@ -184,6 +192,7 @@ MessageDialog::MessageDialog(NativeWindow* parent_window,
184
192
185
193
widget_.reset (new views::Widget);
186
194
widget_->Init (params);
195
+ widget_->UpdateWindowIcon ();
187
196
188
197
// Bind to ESC.
189
198
AddAccelerator (ui::Accelerator (ui::VKEY_ESCAPE, ui::EF_NONE));
@@ -230,6 +239,18 @@ base::string16 MessageDialog::GetWindowTitle() const {
230
239
return title_;
231
240
}
232
241
242
+ gfx::ImageSkia MessageDialog::GetWindowAppIcon () {
243
+ return icon_;
244
+ }
245
+
246
+ gfx::ImageSkia MessageDialog::GetWindowIcon () {
247
+ return icon_;
248
+ }
249
+
250
+ bool MessageDialog::ShouldShowWindowIcon () const {
251
+ return true ;
252
+ }
253
+
233
254
views::Widget* MessageDialog::GetWidget () {
234
255
return widget_.get ();
235
256
}
@@ -338,8 +359,10 @@ int ShowMessageBox(NativeWindow* parent_window,
338
359
const std::vector<std::string>& buttons,
339
360
const std::string& title,
340
361
const std::string& message,
341
- const std::string& detail) {
342
- MessageDialog dialog (parent_window, type, buttons, title, message, detail);
362
+ const std::string& detail,
363
+ const gfx::ImageSkia& icon) {
364
+ MessageDialog dialog (
365
+ parent_window, type, buttons, title, message, detail, icon);
343
366
{
344
367
base::MessageLoop::ScopedNestableTaskAllower allow (
345
368
base::MessageLoopForUI::current ());
@@ -357,10 +380,11 @@ void ShowMessageBox(NativeWindow* parent_window,
357
380
const std::string& title,
358
381
const std::string& message,
359
382
const std::string& detail,
383
+ const gfx::ImageSkia& icon,
360
384
const MessageBoxCallback& callback) {
361
385
// The dialog would be deleted when the dialog is closed.
362
386
MessageDialog* dialog = new MessageDialog (
363
- parent_window, type, buttons, title, message, detail);
387
+ parent_window, type, buttons, title, message, detail, icon );
364
388
dialog->set_callback (callback);
365
389
dialog->Show ();
366
390
}
0 commit comments