Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(273)

Unified Diff: chrome/browser/views/browser_actions_container.cc

Issue 575016: Now showing the browser action image (including badge) when dragging and... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: '' Created 10 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: chrome/browser/views/browser_actions_container.cc
===================================================================
--- chrome/browser/views/browser_actions_container.cc (revision 38137)
+++ chrome/browser/views/browser_actions_container.cc (working copy)
@@ -31,6 +31,7 @@
#include "third_party/skia/include/effects/SkGradientShader.h"
#include "views/controls/button/menu_button.h"
#include "views/controls/button/text_button.h"
+#include "views/drag_utils.h"
#include "views/window/window.h"
#include "grit/theme_resources.h"
@@ -274,6 +275,25 @@
button_->UpdateState();
}
+gfx::Canvas* BrowserActionView::GetIconWithBadge() {
+ int tab_id = panel_->GetCurrentTabId();
+
+ SkBitmap icon = button_->extension()->browser_action()->GetIcon(tab_id);
+ if (icon.isNull())
+ icon = button_->default_icon();
+
+ gfx::Canvas* canvas = new gfx::Canvas(icon.width(), icon.height(), false);
+ canvas->DrawBitmapInt(icon, 0, 0);
+
+ if (tab_id >= 0) {
+ gfx::Rect bounds =
+ gfx::Rect(icon.width(), icon.height() + kControlVertOffset);
+ button_->extension()->browser_action()->PaintBadge(canvas, bounds, tab_id);
+ }
+
+ return canvas;
+}
+
void BrowserActionView::Layout() {
button_->SetBounds(0, kControlVertOffset, width(), kButtonSize);
}
@@ -832,7 +852,14 @@
DCHECK(data);
for (size_t i = 0; i < browser_action_views_.size(); ++i) {
- if (browser_action_views_[i]->button() == sender) {
+ BrowserActionButton* button = browser_action_views_[i]->button();
+ if (button == sender) {
+ // Set the dragging image for the icon.
+ scoped_ptr<gfx::Canvas> canvas(
+ browser_action_views_[i]->GetIconWithBadge());
+ drag_utils::SetDragImageOnDataObject(*canvas, button->width(),
+ button->height(), press_x, press_y, data);
+ // Fill in the remaining info.
Erik does not do reviews 2010/02/05 01:16:24 nit: newline above comment
BrowserActionDragData drag_data(
browser_action_views_[i]->button()->extension()->id(), i);
drag_data.Write(profile_, data);

Powered by Google App Engine
This is Rietveld 408576698