From d833fa2a5d20d413834b6db5a882142a6b7f965a Mon Sep 17 00:00:00 2001 From: "aa@chromium.org" Date: Fri, 2 Oct 2009 01:26:27 +0000 Subject: Rollback broken change, again. TBR=erikkay@chromium.org git-svn-id: svn://svn.chromium.org/chrome/trunk/src@27815 0039d316-1c4b-4281-b951-d872f2087c98 --- app/resources/app_resources.grd | 5 - app/resources/browser_action_badge_center.png | Bin 2827 -> 0 bytes app/resources/browser_action_badge_left.png | Bin 2873 -> 0 bytes app/resources/browser_action_badge_right.png | Bin 2873 -> 0 bytes chrome/app/theme/theme_resources.grd | 2 +- chrome/browser/views/browser_actions_container.cc | 116 +--------------------- chrome/browser/views/browser_actions_container.h | 8 -- chrome/browser/views/toolbar_view.cc | 2 +- 8 files changed, 4 insertions(+), 129 deletions(-) delete mode 100755 app/resources/browser_action_badge_center.png delete mode 100755 app/resources/browser_action_badge_left.png delete mode 100755 app/resources/browser_action_badge_right.png diff --git a/app/resources/app_resources.grd b/app/resources/app_resources.grd index 7f62b8e..9bf6b54 100644 --- a/app/resources/app_resources.grd +++ b/app/resources/app_resources.grd @@ -111,11 +111,6 @@ - - - - - diff --git a/app/resources/browser_action_badge_center.png b/app/resources/browser_action_badge_center.png deleted file mode 100755 index 289d5ef..0000000 Binary files a/app/resources/browser_action_badge_center.png and /dev/null differ diff --git a/app/resources/browser_action_badge_left.png b/app/resources/browser_action_badge_left.png deleted file mode 100755 index bb7581d..0000000 Binary files a/app/resources/browser_action_badge_left.png and /dev/null differ diff --git a/app/resources/browser_action_badge_right.png b/app/resources/browser_action_badge_right.png deleted file mode 100755 index b5fd5e3..0000000 Binary files a/app/resources/browser_action_badge_right.png and /dev/null differ diff --git a/chrome/app/theme/theme_resources.grd b/chrome/app/theme/theme_resources.grd index b985c35..65f8cbc 100644 --- a/chrome/app/theme/theme_resources.grd +++ b/chrome/app/theme/theme_resources.grd @@ -315,7 +315,7 @@ - + diff --git a/chrome/browser/views/browser_actions_container.cc b/chrome/browser/views/browser_actions_container.cc index f25b0fc..bae129f 100644 --- a/chrome/browser/views/browser_actions_container.cc +++ b/chrome/browser/views/browser_actions_container.cc @@ -4,8 +4,6 @@ #include "chrome/browser/views/browser_actions_container.h" -#include "app/gfx/canvas.h" -#include "app/resource_bundle.h" #include "base/stl_util-inl.h" #include "chrome/browser/extensions/extension_browser_event_router.h" #include "chrome/browser/extensions/extensions_service.h" @@ -16,23 +14,15 @@ #include "chrome/common/extensions/extension_action.h" #include "chrome/common/notification_source.h" #include "chrome/common/notification_type.h" -#include "grit/app_resources.h" #include "third_party/skia/include/core/SkBitmap.h" -#include "third_party/skia/include/core/SkTypeface.h" -#include "third_party/skia/include/effects/SkGradientShader.h" #include "views/controls/button/text_button.h" // The size of the icon for page actions. -static const int kIconSize = 29; +static const int kIconSize = 30; // The padding between the browser actions and the omnibox/page menu. static const int kHorizontalPadding = 4; -// This is the same value from toolbar.cc. We position the browser actions -// container flush with the edges of the toolbar as a special case so that we -// can draw the badge outside the visual bounds of the contianer. -static const int kControlVertOffset = 6; - //////////////////////////////////////////////////////////////////////////////// // BrowserActionImageView @@ -64,9 +54,6 @@ class BrowserActionImageView : public views::TextButton, // Called to update the display to match the browser action's state. void OnStateUpdated(); - // Override painting to implement the badge. - virtual void Paint(gfx::Canvas* canvas); - // The browser action this view represents. The ExtensionAction is not owned // by this class. ExtensionAction* browser_action_; @@ -233,8 +220,7 @@ void BrowserActionsContainer::Layout() { for (size_t i = 0; i < browser_action_views_.size(); ++i) { views::TextButton* view = browser_action_views_[i]; int x = kHorizontalPadding + i * kIconSize; - view->SetBounds(x, kControlVertOffset, kIconSize, - height() - (2 * kControlVertOffset)); + view->SetBounds(x, (height() - kIconSize) / 2, kIconSize, kIconSize); } } @@ -249,101 +235,3 @@ void BrowserActionsContainer::Observe(NotificationType type, NOTREACHED() << L"Received unexpected notification"; } } - -void BrowserActionsContainer::PaintChildren(gfx::Canvas* canvas) { - View::PaintChildren(canvas); - - // TODO(aa): Hook this up to the API to feed the badge color and text - // dynamically. - std::string text; - for (size_t i = 0; i < browser_action_views_.size(); ++i) { - if (i > 0) { - text += IntToString(i); - PaintBadge(canvas, browser_action_views_[i], - SkColorSetARGB(255, 218, 0, 24), text); - } - } -} - -void BrowserActionsContainer::PaintBadge(gfx::Canvas* canvas, - views::TextButton* view, - const SkColor& badge_color, - const std::string& text) { - const int kTextSize = 8; - const int kBottomMargin = 6; - const int kPadding = 2; - const int kBadgeHeight = 11; - const int kMaxTextWidth = 23; - const int kCenterAlignThreshold = 20; // at than width, we center align - - canvas->save(); - - SkTypeface* typeface = SkTypeface::CreateFromName("Arial", SkTypeface::kBold); - SkPaint text_paint; - text_paint.setAntiAlias(true); - text_paint.setColor(SkColorSetARGB(255, 255, 255, 255)); - text_paint.setFakeBoldText(true); - text_paint.setTextAlign(SkPaint::kLeft_Align); - text_paint.setTextSize(SkIntToScalar(kTextSize)); - text_paint.setTypeface(typeface); - - // Calculate text width. We clamp it to a max size. - SkScalar text_width = text_paint.measureText(text.c_str(), text.size()); - text_width = SkIntToScalar( - std::min(kMaxTextWidth, SkScalarFloor(text_width))); - - // Cacluate badge size. It is clamped to a min width just because it looks - // silly if it is too skinny. - int badge_width = SkScalarFloor(text_width) + kPadding * 2; - badge_width = std::max(kBadgeHeight, badge_width); - - // Paint the badge background color in the right location. It is usually - // right-aligned, but it can also be center-aligned if it is large. - SkRect rect; - rect.fBottom = SkIntToScalar(height() - kBottomMargin); - rect.fTop = rect.fBottom - SkIntToScalar(kBadgeHeight); - if (badge_width >= kCenterAlignThreshold) { - rect.fLeft = SkIntToScalar(view->bounds().x() + - (view->bounds().width() - badge_width) / 2); - rect.fRight = rect.fLeft + SkIntToScalar(badge_width); - } else { - rect.fRight = SkIntToScalar(view->bounds().right()); - rect.fLeft = rect.fRight - badge_width; - } - - SkPaint rect_paint; - rect_paint.setStyle(SkPaint::kFill_Style); - rect_paint.setAntiAlias(true); - rect_paint.setColor(badge_color); - canvas->drawRoundRect(rect, SkIntToScalar(2), SkIntToScalar(2), rect_paint); - - // Overlay the gradient. It is stretchy, so we do this in three parts. - ResourceBundle& resource_bundle = ResourceBundle::GetSharedInstance(); - SkBitmap* gradient_left = resource_bundle.GetBitmapNamed( - IDR_BROWSER_ACTION_BADGE_LEFT); - SkBitmap* gradient_right = resource_bundle.GetBitmapNamed( - IDR_BROWSER_ACTION_BADGE_RIGHT); - SkBitmap* gradient_center = resource_bundle.GetBitmapNamed( - IDR_BROWSER_ACTION_BADGE_CENTER); - - canvas->drawBitmap(*gradient_left, rect.fLeft, rect.fTop); - canvas->TileImageInt(*gradient_center, - SkScalarFloor(rect.fLeft) + gradient_left->width(), - SkScalarFloor(rect.fTop), - SkScalarFloor(rect.width()) - gradient_left->width() - - gradient_right->width(), - SkScalarFloor(rect.height())); - canvas->drawBitmap(*gradient_right, - rect.fRight - SkIntToScalar(gradient_right->width()), rect.fTop); - - // Finally, draw the text centered within the badge. We set a clip in case the - // text was too large. - rect.fLeft += kPadding; - rect.fRight -= kPadding; - canvas->clipRect(rect); - canvas->drawText(text.c_str(), text.size(), - rect.fLeft + (rect.width() - text_width) / 2, - rect.fTop + kTextSize + 1, - text_paint); - canvas->restore(); -} diff --git a/chrome/browser/views/browser_actions_container.h b/chrome/browser/views/browser_actions_container.h index 3f1e93f6..fd83437 100644 --- a/chrome/browser/views/browser_actions_container.h +++ b/chrome/browser/views/browser_actions_container.h @@ -55,14 +55,6 @@ class BrowserActionsContainer : public views::View, const NotificationDetails& details); private: - // We override PaintChildren so that we can paint the badges on top of them. - virtual void PaintChildren(gfx::Canvas* canvas); - - // Paints an individual badge. - virtual void PaintBadge(gfx::Canvas* canvas, views::TextButton* button, - const SkColor& badge_color, - const std::string& text); - // The vector of browser actions (icons/image buttons for each action). std::vector browser_action_views_; diff --git a/chrome/browser/views/toolbar_view.cc b/chrome/browser/views/toolbar_view.cc index dbc6fda..aeb13c3 100644 --- a/chrome/browser/views/toolbar_view.cc +++ b/chrome/browser/views/toolbar_view.cc @@ -539,7 +539,7 @@ void ToolbarView::Layout() { } browser_actions_->SetBounds( - next_menu_x, 0, browser_actions_width, height()); + next_menu_x, child_y, browser_actions_width, child_height); next_menu_x += browser_actions_width; page_menu_->SetBounds(next_menu_x, child_y, page_menu_width, child_height); -- cgit v1.1