OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "ui/views/window/dialog_client_view.h" | 5 #include "ui/views/window/dialog_client_view.h" |
6 | 6 |
7 #include "build/build_config.h" | 7 #include "build/build_config.h" |
8 | 8 |
9 #if defined(OS_WIN) | 9 #if defined(OS_WIN) |
10 #include <windows.h> | 10 #include <windows.h> |
(...skipping 353 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
364 if (cancel_button_ || ok_button_) | 364 if (cancel_button_ || ok_button_) |
365 width += style_params_.related_button_hspacing; | 365 width += style_params_.related_button_hspacing; |
366 } | 366 } |
367 if (width > 0) { | 367 if (width > 0) { |
368 width += 2 * style_params_.button_hedge_margin; | 368 width += 2 * style_params_.button_hedge_margin; |
369 prefsize.set_width(std::max(prefsize.width(), width)); | 369 prefsize.set_width(std::max(prefsize.width(), width)); |
370 } | 370 } |
371 } | 371 } |
372 prefsize.Enlarge(0, button_height); | 372 prefsize.Enlarge(0, button_height); |
373 | 373 |
374 if (footnote_view_) { | 374 const gfx::Size& footnote_size = GetFootnoteSize(); |
375 gfx::Size footnote_size = footnote_view_->GetPreferredSize(); | 375 prefsize.Enlarge(0, footnote_size.height()); |
376 prefsize.Enlarge(0, footnote_size.height()); | 376 prefsize.set_width(std::max(prefsize.width(), footnote_size.width())); |
377 prefsize.set_width(std::max(prefsize.width(), footnote_size.width())); | |
378 } | |
379 | 377 |
380 return prefsize; | 378 return prefsize; |
381 } | 379 } |
382 | 380 |
383 bool DialogClientView::AcceleratorPressed(const ui::Accelerator& accelerator) { | 381 bool DialogClientView::AcceleratorPressed(const ui::Accelerator& accelerator) { |
384 // We only expect Escape key. | 382 // We only expect Escape key. |
385 DCHECK(accelerator.key_code() == ui::VKEY_ESCAPE); | 383 DCHECK(accelerator.key_code() == ui::VKEY_ESCAPE); |
386 Close(); | 384 Close(); |
387 return true; | 385 return true; |
388 } | 386 } |
(...skipping 97 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
486 ok_button_->GetPreferredSize().height()); | 484 ok_button_->GetPreferredSize().height()); |
487 return button_height; | 485 return button_height; |
488 } | 486 } |
489 | 487 |
490 int DialogClientView::GetDialogButtonsAreaHeight() const { | 488 int DialogClientView::GetDialogButtonsAreaHeight() const { |
491 return !has_dialog_buttons() ? 0 : | 489 return !has_dialog_buttons() ? 0 : |
492 GetButtonsHeight() + style_params_.button_content_spacing + | 490 GetButtonsHeight() + style_params_.button_content_spacing + |
493 style_params_.button_vedge_margin; | 491 style_params_.button_vedge_margin; |
494 } | 492 } |
495 | 493 |
496 int DialogClientView::GetFootnoteViewHeight() const { | 494 gfx::Size DialogClientView::GetFootnoteSize() const { |
497 return footnote_view_ ? footnote_view_->GetPreferredSize().height() : 0; | 495 return footnote_view_ && footnote_view_->visible() ? |
| 496 footnote_view_->GetPreferredSize() : gfx::Size(); |
498 } | 497 } |
499 | 498 |
500 void DialogClientView::LayoutDialogButtons() { | 499 void DialogClientView::LayoutDialogButtons() { |
501 gfx::Rect lb = GetContentsBounds(); | 500 gfx::Rect lb = GetContentsBounds(); |
502 gfx::Rect extra_bounds; | 501 gfx::Rect extra_bounds; |
503 int bottom_y = lb.bottom() - style_params_.button_vedge_margin; | 502 int bottom_y = lb.bottom() - style_params_.button_vedge_margin; |
504 if (footnote_view_) | 503 bottom_y -= GetFootnoteSize().height(); |
505 bottom_y -= footnote_view_->GetPreferredSize().height(); | |
506 | 504 |
507 int button_height = GetButtonsHeight(); | 505 int button_height = GetButtonsHeight(); |
508 if (cancel_button_) { | 506 if (cancel_button_) { |
509 gfx::Size ps = cancel_button_->GetPreferredSize(); | 507 gfx::Size ps = cancel_button_->GetPreferredSize(); |
510 int button_x = lb.right() - ps.width() - style_params_.button_hedge_margin; | 508 int button_x = lb.right() - ps.width() - style_params_.button_hedge_margin; |
511 int button_y = bottom_y - ps.height(); | 509 int button_y = bottom_y - ps.height(); |
512 cancel_button_->SetBounds(button_x, button_y, ps.width(), ps.height()); | 510 cancel_button_->SetBounds(button_x, button_y, ps.width(), ps.height()); |
513 // The extra view bounds are dependent on this button. | 511 // The extra view bounds are dependent on this button. |
514 extra_bounds.set_width(std::max(0, cancel_button_->x())); | 512 extra_bounds.set_width(std::max(0, cancel_button_->x())); |
515 extra_bounds.set_y(cancel_button_->y()); | 513 extra_bounds.set_y(cancel_button_->y()); |
(...skipping 18 matching lines...) Expand all Loading... |
534 int height = size_extra_view_height_to_buttons_ ? | 532 int height = size_extra_view_height_to_buttons_ ? |
535 std::max(ps.height(), button_height) : ps.height(); | 533 std::max(ps.height(), button_height) : ps.height(); |
536 extra_bounds.set_height(height); | 534 extra_bounds.set_height(height); |
537 extra_view_->SetBoundsRect(extra_bounds); | 535 extra_view_->SetBoundsRect(extra_bounds); |
538 } | 536 } |
539 } | 537 } |
540 | 538 |
541 void DialogClientView::LayoutContentsView() { | 539 void DialogClientView::LayoutContentsView() { |
542 gfx::Rect lb = GetContentsBounds(); | 540 gfx::Rect lb = GetContentsBounds(); |
543 lb.set_height(std::max(0, lb.height() - GetDialogButtonsAreaHeight() - | 541 lb.set_height(std::max(0, lb.height() - GetDialogButtonsAreaHeight() - |
544 GetFootnoteViewHeight())); | 542 GetFootnoteSize().height())); |
545 contents_view()->SetBoundsRect(lb); | 543 contents_view()->SetBoundsRect(lb); |
546 contents_view()->Layout(); | 544 contents_view()->Layout(); |
547 } | 545 } |
548 | 546 |
549 void DialogClientView::LayoutFootnoteView() { | 547 void DialogClientView::LayoutFootnoteView() { |
550 int height = GetFootnoteViewHeight(); | 548 int height = GetFootnoteSize().height(); |
551 gfx::Rect bounds = GetContentsBounds(); | 549 gfx::Rect bounds = GetContentsBounds(); |
552 bounds.set_y(bounds.height() - height); | 550 bounds.set_y(bounds.height() - height); |
553 bounds.set_height(height); | 551 bounds.set_height(height); |
554 footnote_view_->SetBoundsRect(bounds); | 552 footnote_view_->SetBoundsRect(bounds); |
555 footnote_view_->Layout(); | 553 footnote_view_->Layout(); |
556 } | 554 } |
557 | 555 |
558 void DialogClientView::CreateExtraView() { | 556 void DialogClientView::CreateExtraView() { |
559 View* extra_view = GetDialogDelegate()->GetExtraView(); | 557 View* extra_view = GetDialogDelegate()->GetExtraView(); |
560 if (extra_view && !extra_view_) { | 558 if (extra_view && !extra_view_) { |
(...skipping 39 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
600 } | 598 } |
601 saved_focus_manager_ = focus_manager; | 599 saved_focus_manager_ = focus_manager; |
602 // Listen for focus change events so we can update the default button. | 600 // Listen for focus change events so we can update the default button. |
603 if (focus_manager) { | 601 if (focus_manager) { |
604 focus_manager->AddFocusChangeListener(this); | 602 focus_manager->AddFocusChangeListener(this); |
605 listening_to_focus_ = true; | 603 listening_to_focus_ = true; |
606 } | 604 } |
607 } | 605 } |
608 | 606 |
609 } // namespace views | 607 } // namespace views |
OLD | NEW |