summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ui/views/bubble/bubble_frame_view.cc33
1 files changed, 17 insertions, 16 deletions
diff --git a/ui/views/bubble/bubble_frame_view.cc b/ui/views/bubble/bubble_frame_view.cc
index 8df63f1..2f84c8a 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);
}
}