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

Unified Diff: chrome/browser/ui/gtk/avatar_menu_button_gtk.cc

Issue 8708001: GTK: Custom drawing for GAIA avatar pictures (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: merge Created 9 years, 1 month 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
« no previous file with comments | « chrome/browser/ui/gtk/avatar_menu_button_gtk.h ('k') | chrome/browser/ui/gtk/browser_titlebar.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/ui/gtk/avatar_menu_button_gtk.cc
diff --git a/chrome/browser/ui/gtk/avatar_menu_button_gtk.cc b/chrome/browser/ui/gtk/avatar_menu_button_gtk.cc
index c96a2ced64cc083e02f219c254003b7f8827fb1f..6c9f4386a5320474474a7209825eb6e98603e900 100644
--- a/chrome/browser/ui/gtk/avatar_menu_button_gtk.cc
+++ b/chrome/browser/ui/gtk/avatar_menu_button_gtk.cc
@@ -6,6 +6,7 @@
#include "base/i18n/rtl.h"
#include "chrome/browser/profiles/profile_metrics.h"
+#include "chrome/browser/profiles/profile_info_util.h"
#include "chrome/browser/ui/gtk/avatar_menu_bubble_gtk.h"
#include "chrome/browser/ui/gtk/bubble/bubble_gtk.h"
#include "ui/gfx/gtk_util.h"
@@ -13,13 +14,17 @@
AvatarMenuButtonGtk::AvatarMenuButtonGtk(Browser* browser)
: image_(NULL),
browser_(browser),
- arrow_location_(BubbleGtk::ARROW_LOCATION_TOP_LEFT) {
+ arrow_location_(BubbleGtk::ARROW_LOCATION_TOP_LEFT),
+ is_gaia_picture_(false),
+ old_height_(0) {
GtkWidget* event_box = gtk_event_box_new();
image_ = gtk_image_new();
gtk_container_add(GTK_CONTAINER(event_box), image_);
g_signal_connect(event_box, "button-press-event",
G_CALLBACK(OnButtonPressedThunk), this);
+ g_signal_connect(event_box, "size-allocate",
+ G_CALLBACK(OnSizeAllocateThunk), this);
gtk_event_box_set_visible_window(GTK_EVENT_BOX(event_box), FALSE);
@@ -29,13 +34,11 @@ AvatarMenuButtonGtk::AvatarMenuButtonGtk(Browser* browser)
AvatarMenuButtonGtk::~AvatarMenuButtonGtk() {
}
-void AvatarMenuButtonGtk::SetIcon(const SkBitmap& icon) {
- GdkPixbuf* icon_pixbuf = gfx::GdkPixbufFromSkBitmap(&icon);
- gtk_image_set_from_pixbuf(GTK_IMAGE(image_), icon_pixbuf);
- g_object_unref(icon_pixbuf);
-
- gtk_misc_set_alignment(GTK_MISC(image_), 0.0, 1.0);
- gtk_widget_set_size_request(image_, -1, 0);
+void AvatarMenuButtonGtk::SetIcon(const gfx::Image& image,
+ bool is_gaia_picture) {
+ icon_.reset(new gfx::Image(image));
+ is_gaia_picture_ = is_gaia_picture;
+ UpdateButtonIcon();
}
gboolean AvatarMenuButtonGtk::OnButtonPressed(GtkWidget* widget,
@@ -48,6 +51,24 @@ gboolean AvatarMenuButtonGtk::OnButtonPressed(GtkWidget* widget,
return TRUE;
}
+void AvatarMenuButtonGtk::OnSizeAllocate(GtkWidget* widget,
+ GtkAllocation* allocation) {
+ if (allocation->height != old_height_)
+ UpdateButtonIcon();
+}
+
void AvatarMenuButtonGtk::ShowAvatarBubble() {
new AvatarMenuBubbleGtk(browser_, widget_.get(), arrow_location_, NULL);
}
+
+void AvatarMenuButtonGtk::UpdateButtonIcon() {
+ if (!icon_.get())
+ return;
+
+ old_height_ = widget()->allocation.height;
+ gfx::Image icon = profiles::GetAvatarIconForTitleBar(*icon_, is_gaia_picture_,
+ profiles::kAvatarIconWidth, old_height_);
+ gtk_image_set_from_pixbuf(GTK_IMAGE(image_), icon.ToGdkPixbuf());
+ gtk_misc_set_alignment(GTK_MISC(image_), 0.0, 1.0);
+ gtk_widget_set_size_request(image_, -1, 0);
+}
« no previous file with comments | « chrome/browser/ui/gtk/avatar_menu_button_gtk.h ('k') | chrome/browser/ui/gtk/browser_titlebar.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698