| Index: chrome/browser/gtk/location_bar_view_gtk.cc
|
| diff --git a/chrome/browser/gtk/location_bar_view_gtk.cc b/chrome/browser/gtk/location_bar_view_gtk.cc
|
| index e36c8d3abc10d69c0c5037cb58d3751fd58bc6f8..3183ede0313e57fc80c12dcb9ac15aa49e171ed2 100644
|
| --- a/chrome/browser/gtk/location_bar_view_gtk.cc
|
| +++ b/chrome/browser/gtk/location_bar_view_gtk.cc
|
| @@ -6,6 +6,7 @@
|
|
|
| #include <string>
|
|
|
| +#include "app/gfx/canvas_paint.h"
|
| #include "app/gfx/gtk_util.h"
|
| #include "app/l10n_util.h"
|
| #include "app/resource_bundle.h"
|
| @@ -684,6 +685,8 @@ LocationBarViewGtk::PageActionViewGtk::PageActionViewGtk(
|
| gtk_event_box_set_visible_window(GTK_EVENT_BOX(event_box_.get()), FALSE);
|
| g_signal_connect(event_box_.get(), "button-press-event",
|
| G_CALLBACK(&OnButtonPressed), this);
|
| + g_signal_connect_after(event_box_.get(), "expose-event",
|
| + G_CALLBACK(OnExposeEvent), this);
|
|
|
| image_.Own(gtk_image_new());
|
| gtk_container_add(GTK_CONTAINER(event_box_.get()), image_.get());
|
| @@ -793,3 +796,20 @@ gboolean LocationBarViewGtk::PageActionViewGtk::OnButtonPressed(
|
| event->button);
|
| return true;
|
| }
|
| +
|
| +// static
|
| +gboolean LocationBarViewGtk::PageActionViewGtk::OnExposeEvent(
|
| + GtkWidget* widget, GdkEventExpose* event, PageActionViewGtk* view) {
|
| + TabContents* contents = view->owner_->browser_->GetSelectedTabContents();
|
| + if (!contents)
|
| + return FALSE;
|
| + const ExtensionActionState* state =
|
| + contents->GetPageActionState(view->page_action_);
|
| + if (!state || state->badge_text().empty())
|
| + return FALSE;
|
| +
|
| + gfx::CanvasPaint canvas(event, false);
|
| + gfx::Rect bounding_rect(widget->allocation);
|
| + state->PaintBadge(&canvas, bounding_rect);
|
| + return FALSE;
|
| +}
|
|
|