| Index: chrome/browser/ui/views/location_bar/location_bar_view.cc
|
| diff --git a/chrome/browser/ui/views/location_bar/location_bar_view.cc b/chrome/browser/ui/views/location_bar/location_bar_view.cc
|
| index c134a8a4d31d565f972a7ab81f1821f555ab269a..7e2b675bc15a7f1a5ee62e7b85954b59cfca17cd 100644
|
| --- a/chrome/browser/ui/views/location_bar/location_bar_view.cc
|
| +++ b/chrome/browser/ui/views/location_bar/location_bar_view.cc
|
| @@ -146,14 +146,22 @@ void CalculateFontAndOffsetForHeight(int height,
|
| }
|
| }
|
|
|
| +// Height of the location bar's round corner region.
|
| +const int kBorderRoundCornerHeight = 5;
|
| +// Width of location bar's round corner region.
|
| +const int kBorderRoundCornerWidth = 4;
|
| +// Radius of the round corners inside the location bar.
|
| +const int kBorderCornerRadius = 2;
|
| +
|
| } // namespace
|
|
|
|
|
| // LocationBarView -----------------------------------------------------------
|
|
|
| // static
|
| -const int LocationBarView::kNormalEdgeThickness = 2;
|
| +const int LocationBarView::kNormalHorizontalEdgeThickness = 2;
|
| const int LocationBarView::kPopupEdgeThickness = 1;
|
| +const int LocationBarView::kNormalVerticalEdgeThickness = 3;
|
| const int LocationBarView::kIconInternalPadding = 2;
|
| const int LocationBarView::kBubblePadding = 1;
|
| const char LocationBarView::kViewClassName[] = "LocationBarView";
|
| @@ -194,18 +202,19 @@ LocationBarView::LocationBarView(Browser* browser,
|
| if (!views::Textfield::IsViewsTextfieldEnabled())
|
| set_id(VIEW_ID_OMNIBOX);
|
|
|
| - const int kOmniboxBorderImages[] = IMAGE_GRID(IDR_OMNIBOX_BORDER);
|
| - const int kOmniboxPopupImages[] = IMAGE_GRID(IDR_OMNIBOX_POPUP_BORDER);
|
| - background_border_painter_.reset(
|
| - views::Painter::CreateImageGridPainter(
|
| - is_popup_mode_ ? kOmniboxPopupImages : kOmniboxBorderImages));
|
| -#if defined(OS_CHROMEOS)
|
| - if (!is_popup_mode_) {
|
| - const int kOmniboxFillingImages[] = IMAGE_GRID(IDR_OMNIBOX_FILLING);
|
| - background_filling_painter_.reset(
|
| - views::Painter::CreateImageGridPainter(kOmniboxFillingImages));
|
| - }
|
| -#endif
|
| + const int kOmniboxPopupImages[] = {
|
| + IDR_OMNIBOX_POPUP_BORDER_EDGE,
|
| + IDR_OMNIBOX_POPUP_BORDER_CENTER,
|
| + IDR_OMNIBOX_POPUP_BORDER_EDGE,
|
| + };
|
| + background_painter_.reset(
|
| + is_popup_mode_ ?
|
| + new views::HorizontalPainter(kOmniboxPopupImages) :
|
| + views::Painter::CreateImagePainter(
|
| + *ui::ResourceBundle::GetSharedInstance().GetImageNamed(
|
| + IDR_OMNIBOX_BORDER).ToImageSkia(),
|
| + gfx::Insets(kBorderRoundCornerHeight, kBorderRoundCornerWidth,
|
| + kBorderRoundCornerHeight, kBorderRoundCornerWidth)));
|
|
|
| edit_bookmarks_enabled_.Init(
|
| prefs::kEditBookmarksEnabled,
|
| @@ -675,7 +684,7 @@ bool LocationBarView::IsLocationEntryFocusableInRootView() const {
|
| }
|
|
|
| gfx::Size LocationBarView::GetPreferredSize() {
|
| - return background_border_painter_->GetMinimumSize();
|
| + return background_painter_->GetMinimumSize();
|
| }
|
|
|
| void LocationBarView::Layout() {
|
| @@ -932,37 +941,38 @@ void LocationBarView::Layout() {
|
| void LocationBarView::OnPaint(gfx::Canvas* canvas) {
|
| View::OnPaint(canvas);
|
|
|
| - // Fill the location bar background color behind the border. Parts of the
|
| - // border images are meant to rest atop the toolbar background and parts atop
|
| - // the omnibox background, so we can't just blindly fill our entire bounds.
|
| - const int horizontal_edge_thickness = GetHorizontalEdgeThickness();
|
| - if (!background_filling_painter_) {
|
| - gfx::Rect bounds(GetContentsBounds());
|
| - bounds.Inset(horizontal_edge_thickness, vertical_edge_thickness());
|
| - SkColor color(GetColor(ToolbarModel::NONE, BACKGROUND));
|
| - if (is_popup_mode_) {
|
| - canvas->FillRect(bounds, color);
|
| - } else {
|
| - SkPaint paint;
|
| - paint.setStyle(SkPaint::kFill_Style);
|
| - paint.setColor(color);
|
| - const int kBorderCornerRadius = 2;
|
| - canvas->DrawRoundRect(bounds, kBorderCornerRadius, paint);
|
| - }
|
| - }
|
| -
|
| // Maximized popup windows don't draw the horizontal edges. We implement this
|
| // by simply expanding the paint area outside the view by the edge thickness.
|
| + const int horizontal_edge_thickness = GetHorizontalEdgeThickness();
|
| gfx::Rect background_rect(GetContentsBounds());
|
| if (is_popup_mode_ && (horizontal_edge_thickness == 0))
|
| background_rect.Inset(-kPopupEdgeThickness, 0);
|
| - views::Painter::PaintPainterAt(canvas, background_border_painter_.get(),
|
| + views::Painter::PaintPainterAt(canvas, background_painter_.get(),
|
| background_rect);
|
| - if (background_filling_painter_)
|
| - background_filling_painter_->Paint(canvas, size());
|
|
|
| - if (!is_popup_mode_)
|
| + // Draw the background color so that the graphical elements at the edges
|
| + // appear over the correct color. (The edit draws its own background, so this
|
| + // isn't important for that.)
|
| + // TODO(pkasting): We need images that are transparent in the middle, so we
|
| + // can draw the border images over the background color instead of the
|
| + // reverse; this antialiases better (see comments in
|
| + // OmniboxPopupContentsView::OnPaint()).
|
| + gfx::Rect bounds(GetContentsBounds());
|
| + bounds.Inset(horizontal_edge_thickness, vertical_edge_thickness());
|
| + SkColor color(GetColor(ToolbarModel::NONE, BACKGROUND));
|
| + if (is_popup_mode_) {
|
| + canvas->FillRect(bounds, color);
|
| + } else {
|
| + SkPaint paint;
|
| + paint.setStyle(SkPaint::kFill_Style);
|
| + paint.setAntiAlias(true);
|
| + // TODO(jamescook): Make the corners of the dropdown match the corners of
|
| + // the omnibox.
|
| + // Paint the actual background color.
|
| + paint.setColor(color);
|
| + canvas->DrawRoundRect(bounds, kBorderCornerRadius, paint);
|
| PaintPageActionBackgrounds(canvas);
|
| + }
|
|
|
| // For non-InstantExtendedAPI cases, if necessary, show focus rect.
|
| // Note: |Canvas::DrawFocusRect| paints a dashed rect with gray color.
|
| @@ -1115,9 +1125,12 @@ WebContents* LocationBarView::GetWebContents() const {
|
| }
|
|
|
| int LocationBarView::GetHorizontalEdgeThickness() const {
|
| + if (!is_popup_mode_)
|
| + return kNormalHorizontalEdgeThickness;
|
| +
|
| // In maximized popup mode, there isn't any edge.
|
| - return (is_popup_mode_ && browser_ && browser_->window() &&
|
| - browser_->window()->IsMaximized()) ? 0 : vertical_edge_thickness();
|
| + return (browser_ && browser_->window() && browser_->window()->IsMaximized()) ?
|
| + 0 : kPopupEdgeThickness;
|
| }
|
|
|
| void LocationBarView::RefreshContentSettingViews() {
|
|
|