views: Fix showing icon in message dialog

This commit is contained in:
Cheng Zhao 2015-01-05 15:26:35 -08:00
parent 8457090b18
commit 708e738521

View file

@ -79,6 +79,7 @@ class MessageDialog : public views::WidgetDelegate,
base::string16 GetWindowTitle() const override; base::string16 GetWindowTitle() const override;
gfx::ImageSkia GetWindowAppIcon() override; gfx::ImageSkia GetWindowAppIcon() override;
gfx::ImageSkia GetWindowIcon() override; gfx::ImageSkia GetWindowIcon() override;
bool ShouldShowWindowIcon() const override;
views::Widget* GetWidget() override; views::Widget* GetWidget() override;
const views::Widget* GetWidget() const override; const views::Widget* GetWidget() const override;
views::View* GetContentsView() override; views::View* GetContentsView() override;
@ -180,6 +181,7 @@ MessageDialog::MessageDialog(NativeWindow* parent_window,
views::Widget::InitParams params; views::Widget::InitParams params;
params.delegate = this; params.delegate = this;
params.type = views::Widget::InitParams::TYPE_WINDOW;
params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET; params.ownership = views::Widget::InitParams::WIDGET_OWNS_NATIVE_WIDGET;
if (parent_) { if (parent_) {
params.parent = parent_->GetNativeWindow(); params.parent = parent_->GetNativeWindow();
@ -190,6 +192,7 @@ MessageDialog::MessageDialog(NativeWindow* parent_window,
widget_.reset(new views::Widget); widget_.reset(new views::Widget);
widget_->Init(params); widget_->Init(params);
widget_->UpdateWindowIcon();
// Bind to ESC. // Bind to ESC.
AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE)); AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
@ -232,6 +235,10 @@ int MessageDialog::GetResult() const {
//////////////////////////////////////////////////////////////////////////////// ////////////////////////////////////////////////////////////////////////////////
// MessageDialog, private: // MessageDialog, private:
base::string16 MessageDialog::GetWindowTitle() const {
return title_;
}
gfx::ImageSkia MessageDialog::GetWindowAppIcon() { gfx::ImageSkia MessageDialog::GetWindowAppIcon() {
return icon_; return icon_;
} }
@ -240,8 +247,8 @@ gfx::ImageSkia MessageDialog::GetWindowIcon() {
return icon_; return icon_;
} }
base::string16 MessageDialog::GetWindowTitle() const { bool MessageDialog::ShouldShowWindowIcon() const {
return title_; return true;
} }
views::Widget* MessageDialog::GetWidget() { views::Widget* MessageDialog::GetWidget() {
@ -354,7 +361,8 @@ int ShowMessageBox(NativeWindow* parent_window,
const std::string& message, const std::string& message,
const std::string& detail, const std::string& detail,
const gfx::ImageSkia& icon) { const gfx::ImageSkia& icon) {
MessageDialog dialog(parent_window, type, buttons, title, message, detail); MessageDialog dialog(
parent_window, type, buttons, title, message, detail, icon);
{ {
base::MessageLoop::ScopedNestableTaskAllower allow( base::MessageLoop::ScopedNestableTaskAllower allow(
base::MessageLoopForUI::current()); base::MessageLoopForUI::current());
@ -376,7 +384,7 @@ void ShowMessageBox(NativeWindow* parent_window,
const MessageBoxCallback& callback) { const MessageBoxCallback& callback) {
// The dialog would be deleted when the dialog is closed. // The dialog would be deleted when the dialog is closed.
MessageDialog* dialog = new MessageDialog( MessageDialog* dialog = new MessageDialog(
parent_window, type, buttons, title, message, detail); parent_window, type, buttons, title, message, detail, icon);
dialog->set_callback(callback); dialog->set_callback(callback);
dialog->Show(); dialog->Show();
} }