| Index: chrome/browser/views/bubble_border.cc
|
| ===================================================================
|
| --- chrome/browser/views/bubble_border.cc (revision 26251)
|
| +++ chrome/browser/views/bubble_border.cc (working copy)
|
| @@ -21,10 +21,27 @@
|
| SkBitmap* BubbleBorder::bottom_ = NULL;
|
| SkBitmap* BubbleBorder::bottom_left_ = NULL;
|
|
|
| +gfx::Rect BubbleBorder::GetBounds(const gfx::Rect& position_relative_to,
|
| + const gfx::Size& contents_size) const {
|
| + // The spacing (in pixels) between |position_relative_to| and the bubble
|
| + // content.
|
| + const int kBubbleSpacing = 2;
|
| +
|
| + // Desired size is size of contents enlarged by the size of the border images.
|
| + gfx::Size border_size(contents_size);
|
| + gfx::Insets insets;
|
| + GetInsets(&insets);
|
| + border_size.Enlarge(insets.left() + insets.right(),
|
| + insets.top() + insets.bottom());
|
| +
|
| + int x = position_relative_to.x() + (position_relative_to.width() / 2) -
|
| + (contents_size.width() / 2) - insets.left();
|
| + int y = position_relative_to.bottom() - (top_->height() - kBubbleSpacing);
|
| +
|
| + return gfx::Rect(x, y, border_size.width(), border_size.height());
|
| +}
|
| +
|
| void BubbleBorder::GetInsets(gfx::Insets* insets) const {
|
| - // The left, right and bottom edge image sizes define our insets. The corner
|
| - // images don't determine this because they can extend inside the border (onto
|
| - // the contained contents).
|
| insets->Set(top_->height(), left_->width(), bottom_->height(),
|
| right_->width());
|
| }
|
| @@ -109,6 +126,7 @@
|
| // Bottom edge
|
| canvas->TileImageInt(*bottom_, bl_width, bottom, width - bl_width - br_width,
|
| b_height);
|
| +
|
| // Bottom left corner
|
| canvas->DrawBitmapInt(*bottom_left_, 0, bl_y);
|
|
|
|
|