Index: ui/views/bubble/bubble_frame_view.cc |
diff --git a/ui/views/bubble/bubble_frame_view.cc b/ui/views/bubble/bubble_frame_view.cc |
index 8df63f1e48dc0269dca168f4c0af07557660d694..2f84c8a54136f02d36ad2566b98a8f5726891cfd 100644 |
--- a/ui/views/bubble/bubble_frame_view.cc |
+++ b/ui/views/bubble/bubble_frame_view.cc |
@@ -21,10 +21,11 @@ |
namespace { |
-// Padding, in pixels, for the title view, when it exists. |
+// Insets for the title bar views in pixels. |
const int kTitleTopInset = 12; |
const int kTitleLeftInset = 19; |
const int kTitleBottomInset = 12; |
+const int kTitleRightInset = 7; |
// Get the |vertical| or horizontal amount that |available_bounds| overflows |
// |window_bounds|. |
@@ -58,7 +59,8 @@ const char BubbleFrameView::kViewClassName[] = "BubbleFrameView"; |
// static |
gfx::Insets BubbleFrameView::GetTitleInsets() { |
- return gfx::Insets(kTitleTopInset, kTitleLeftInset, kTitleBottomInset, 0); |
+ return gfx::Insets(kTitleTopInset, kTitleLeftInset, |
+ kTitleBottomInset, kTitleRightInset); |
} |
BubbleFrameView::BubbleFrameView(const gfx::Insets& content_margins) |
@@ -80,8 +82,8 @@ BubbleFrameView::BubbleFrameView(const gfx::Insets& content_margins) |
*rb.GetImageNamed(IDR_CLOSE_DIALOG_H).ToImageSkia()); |
close_->SetImage(CustomButton::STATE_PRESSED, |
*rb.GetImageNamed(IDR_CLOSE_DIALOG_P).ToImageSkia()); |
- close_->SetSize(close_->GetPreferredSize()); |
close_->SetBorder(scoped_ptr<Border>()); |
+ close_->SetSize(close_->GetPreferredSize()); |
close_->SetVisible(false); |
AddChildView(close_); |
} |
@@ -180,31 +182,30 @@ gfx::Size BubbleFrameView::GetMinimumSize() const { |
void BubbleFrameView::Layout() { |
gfx::Rect bounds(GetContentsBounds()); |
+ bounds.Inset(GetTitleInsets()); |
if (bounds.IsEmpty()) |
return; |
- // Small additional insets yield the desired 10px visual close button insets. |
- bounds.Inset(0, 0, close_->width() + 1, 0); |
- close_->SetPosition(gfx::Point(bounds.right(), bounds.y() + 2)); |
+ // The close button top inset is actually smaller than the title top inset. |
+ close_->SetPosition(gfx::Point(bounds.right() - close_->width(), |
+ bounds.y() - 5)); |
- gfx::Rect title_bounds(bounds); |
- title_bounds.Inset(kTitleLeftInset, kTitleTopInset, 0, 0); |
gfx::Size title_size(title_->GetPreferredSize()); |
- const int title_width = std::max(0, close_->bounds().x() - title_bounds.x()); |
+ const int title_width = std::max(0, close_->x() - bounds.x()); |
title_size.SetToMin(gfx::Size(title_width, title_size.height())); |
- title_bounds.set_size(title_size); |
- title_->SetBoundsRect(title_bounds); |
+ bounds.set_size(title_size); |
+ title_->SetBoundsRect(bounds); |
if (titlebar_extra_view_) { |
- const int extra_width = close_->bounds().x() - title_->bounds().right(); |
+ const int extra_width = close_->x() - title_->bounds().right(); |
gfx::Size size = titlebar_extra_view_->GetPreferredSize(); |
size.SetToMin(gfx::Size(std::max(0, extra_width), size.height())); |
gfx::Rect titlebar_extra_view_bounds( |
- bounds.right() - size.width(), |
- title_bounds.y(), |
+ close_->x() - size.width(), |
+ bounds.y(), |
size.width(), |
- title_bounds.height()); |
- titlebar_extra_view_bounds.Subtract(title_bounds); |
+ bounds.height()); |
+ titlebar_extra_view_bounds.Subtract(bounds); |
titlebar_extra_view_->SetBoundsRect(titlebar_extra_view_bounds); |
} |
} |