| Index: ui/views/window/dialog_client_view.cc
|
| diff --git a/ui/views/window/dialog_client_view.cc b/ui/views/window/dialog_client_view.cc
|
| index a9862927f04cac3102bc9db972e81d6a632b7d1d..37e6e24d67ddf3b1130851c37899e6605e864053 100644
|
| --- a/ui/views/window/dialog_client_view.cc
|
| +++ b/ui/views/window/dialog_client_view.cc
|
| @@ -43,8 +43,6 @@ DialogClientView::DialogClientView(Widget* owner, View* contents_view)
|
| : ClientView(owner, contents_view),
|
| ok_button_(NULL),
|
| cancel_button_(NULL),
|
| - default_button_(NULL),
|
| - focus_manager_(NULL),
|
| extra_view_(NULL),
|
| footnote_view_(NULL),
|
| notified_delegate_(false) {
|
| @@ -55,14 +53,14 @@ DialogClientView::DialogClientView(Widget* owner, View* contents_view)
|
| ui::NativeTheme::kColorId_DialogBackground);
|
| set_background(views::Background::CreateSolidBackground(color));
|
| }
|
| -}
|
|
|
| -DialogClientView::~DialogClientView() {
|
| - if (focus_manager_)
|
| - focus_manager_->RemoveFocusChangeListener(this);
|
| - focus_manager_ = NULL;
|
| + // Add accelerators for the return and escape keys.
|
| + AddAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE));
|
| + AddAccelerator(ui::Accelerator(ui::VKEY_ESCAPE, ui::EF_NONE));
|
| }
|
|
|
| +DialogClientView::~DialogClientView() {}
|
| +
|
| void DialogClientView::AcceptWindow() {
|
| // Only notify the delegate once. See |notified_delegate_|'s comment.
|
| if (!notified_delegate_ && GetDialogDelegate()->Accept(false)) {
|
| @@ -81,13 +79,10 @@ void DialogClientView::CancelWindow() {
|
| void DialogClientView::UpdateDialogButtons() {
|
| DialogDelegate* dialog = GetDialogDelegate();
|
| const int buttons = dialog->GetDialogButtons();
|
| - ui::Accelerator escape(ui::VKEY_ESCAPE, ui::EF_NONE);
|
|
|
| if (buttons & ui::DIALOG_BUTTON_OK) {
|
| if (!ok_button_) {
|
| ok_button_ = CreateDialogButton(ui::DIALOG_BUTTON_OK);
|
| - if (buttons & ui::DIALOG_BUTTON_CANCEL)
|
| - ok_button_->AddAccelerator(escape);
|
| AddChildView(ok_button_);
|
| }
|
|
|
| @@ -100,7 +95,6 @@ void DialogClientView::UpdateDialogButtons() {
|
| if (buttons & ui::DIALOG_BUTTON_CANCEL) {
|
| if (!cancel_button_) {
|
| cancel_button_ = CreateDialogButton(ui::DIALOG_BUTTON_CANCEL);
|
| - cancel_button_->AddAccelerator(escape);
|
| AddChildView(cancel_button_);
|
| }
|
|
|
| @@ -109,12 +103,6 @@ void DialogClientView::UpdateDialogButtons() {
|
| delete cancel_button_;
|
| cancel_button_ = NULL;
|
| }
|
| -
|
| - // Use the escape key to close the window if there are no dialog buttons.
|
| - if (!has_dialog_buttons())
|
| - AddAccelerator(escape);
|
| - else
|
| - ResetAccelerators();
|
| }
|
|
|
| ///////////////////////////////////////////////////////////////////////////////
|
| @@ -144,36 +132,6 @@ const DialogClientView* DialogClientView::AsDialogClientView() const {
|
| return this;
|
| }
|
|
|
| -void DialogClientView::OnWillChangeFocus(View* focused_before,
|
| - View* focused_now) {
|
| - // New style dialogs do not move the default button with the focus.
|
| - // TODO(msw|wittman): Remove this functionality once the new style has landed.
|
| - if (DialogDelegate::UseNewStyle())
|
| - return;
|
| -
|
| - // Make the newly focused button default or restore the dialog's default.
|
| - const int default_button = GetDialogDelegate()->GetDefaultDialogButton();
|
| - LabelButton* new_default_button = NULL;
|
| - if (focused_now &&
|
| - (focused_now->GetClassName() == LabelButton::kViewClassName)) {
|
| - new_default_button = static_cast<LabelButton*>(focused_now);
|
| - } else if (default_button == ui::DIALOG_BUTTON_OK && ok_button_) {
|
| - new_default_button = ok_button_;
|
| - } else if (default_button == ui::DIALOG_BUTTON_CANCEL && cancel_button_) {
|
| - new_default_button = cancel_button_;
|
| - }
|
| -
|
| - if (default_button_ && default_button_ != new_default_button)
|
| - default_button_->SetIsDefault(false);
|
| - default_button_ = new_default_button;
|
| - if (default_button_ && !default_button_->is_default())
|
| - default_button_->SetIsDefault(true);
|
| -}
|
| -
|
| -void DialogClientView::OnDidChangeFocus(View* focused_before,
|
| - View* focused_now) {
|
| -}
|
| -
|
| ////////////////////////////////////////////////////////////////////////////////
|
| // DialogClientView, View overrides:
|
|
|
| @@ -265,9 +223,27 @@ void DialogClientView::Layout() {
|
| }
|
|
|
| bool DialogClientView::AcceleratorPressed(const ui::Accelerator& accelerator) {
|
| - DCHECK_EQ(accelerator.key_code(), ui::VKEY_ESCAPE);
|
| - Close();
|
| - return true;
|
| + if (accelerator.key_code() == ui::VKEY_ESCAPE) {
|
| + if (!cancel_button_ || !cancel_button_->AcceleratorPressed(accelerator))
|
| + CancelWindow();
|
| + return true;
|
| + }
|
| +
|
| + if (accelerator.key_code() == ui::VKEY_RETURN) {
|
| + View* focused = GetFocusManager()->GetFocusedView();
|
| + const int default_button_id = GetDialogDelegate()->GetDefaultDialogButton();
|
| + Button* default_button = ok_button_;
|
| + if (default_button_id == ui::DIALOG_BUTTON_CANCEL && cancel_button_)
|
| + default_button = cancel_button_;
|
| + if (!(focused && focused->GetClassName() == LabelButton::kViewClassName &&
|
| + focused->AcceleratorPressed(accelerator)) &&
|
| + !(default_button && default_button->AcceleratorPressed(accelerator)))
|
| + AcceptWindow();
|
| + return true;
|
| + }
|
| +
|
| + NOTREACHED();
|
| + return false;
|
| }
|
|
|
| void DialogClientView::ViewHierarchyChanged(bool is_add,
|
| @@ -275,10 +251,6 @@ void DialogClientView::ViewHierarchyChanged(bool is_add,
|
| View* child) {
|
| ClientView::ViewHierarchyChanged(is_add, parent, child);
|
| if (is_add && child == this) {
|
| - focus_manager_ = GetFocusManager();
|
| - if (focus_manager_)
|
| - GetFocusManager()->AddFocusChangeListener(this);
|
| -
|
| UpdateDialogButtons();
|
| CreateExtraView();
|
| CreateFootnoteView();
|
| @@ -308,8 +280,6 @@ DialogClientView::DialogClientView(View* contents_view)
|
| : ClientView(NULL, contents_view),
|
| ok_button_(NULL),
|
| cancel_button_(NULL),
|
| - default_button_(NULL),
|
| - focus_manager_(NULL),
|
| extra_view_(NULL),
|
| footnote_view_(NULL),
|
| notified_delegate_(false) {}
|
| @@ -345,14 +315,14 @@ LabelButton* DialogClientView::CreateDialogButton(ui::DialogButton type) {
|
| const string16 title = GetDialogDelegate()->GetDialogButtonLabel(type);
|
| LabelButton* button = new LabelButton(this, title);
|
| button->SetStyle(Button::STYLE_NATIVE_TEXTBUTTON);
|
| - button->set_focusable(true);
|
|
|
| const int kDialogMinButtonWidth = 75;
|
| button->set_min_size(gfx::Size(kDialogMinButtonWidth, 0));
|
| button->SetGroup(kButtonGroup);
|
| if (type == GetDialogDelegate()->GetDefaultDialogButton()) {
|
| - default_button_ = button;
|
| + // Make the button appear default, but handle the return key in this view.
|
| button->SetIsDefault(true);
|
| + button->RemoveAccelerator(ui::Accelerator(ui::VKEY_RETURN, ui::EF_NONE));
|
| }
|
| return button;
|
| }
|
|
|