diff options
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/extensions/extension_host.cc | 20 | ||||
-rw-r--r-- | chrome/browser/gtk/extension_shelf_gtk.cc | 26 |
2 files changed, 34 insertions, 12 deletions
diff --git a/chrome/browser/extensions/extension_host.cc b/chrome/browser/extensions/extension_host.cc index ea19514..9a1baa6 100644 --- a/chrome/browser/extensions/extension_host.cc +++ b/chrome/browser/extensions/extension_host.cc @@ -135,9 +135,14 @@ void ExtensionHost::NavigateToURL(const GURL& url) { void ExtensionHost::Observe(NotificationType type, const NotificationSource& source, const NotificationDetails& details) { - DCHECK(type == NotificationType::EXTENSION_BACKGROUND_PAGE_READY); - DCHECK(extension_->GetBackgroundPageReady()); - NavigateToURL(url_); + if (type == NotificationType::EXTENSION_BACKGROUND_PAGE_READY) { + DCHECK(extension_->GetBackgroundPageReady()); + NavigateToURL(url_); + } else if (type == NotificationType::BROWSER_THEME_CHANGED) { + InsertThemeCSS(); + } else { + NOTREACHED(); + } } void ExtensionHost::UpdatePreferredWidth(int pref_width) { @@ -241,10 +246,15 @@ void ExtensionHost::DidStopLoading(RenderViewHost* render_view_host) { void ExtensionHost::DocumentAvailableInMainFrame(RenderViewHost* rvh) { document_element_available_ = true; - if (is_background_page()) + if (is_background_page()) { extension_->SetBackgroundPageReady(); - else + } else { InsertThemeCSS(); + + // Listen for browser changes so we can resend the CSS. + registrar_.Add(this, NotificationType::BROWSER_THEME_CHANGED, + NotificationService::AllSources()); + } } void ExtensionHost::RunJavaScriptMessage(const std::wstring& message, diff --git a/chrome/browser/gtk/extension_shelf_gtk.cc b/chrome/browser/gtk/extension_shelf_gtk.cc index d16d2b2..d0d7916 100644 --- a/chrome/browser/gtk/extension_shelf_gtk.cc +++ b/chrome/browser/gtk/extension_shelf_gtk.cc @@ -15,9 +15,6 @@ #include "grit/generated_resources.h" #include "grit/theme_resources.h" -// Background color of the shelf. -static const GdkColor kBackgroundColor = GDK_COLOR_RGB(230, 237, 244); - // Border color (the top pixel of the shelf). const GdkColor kBorderColor = GDK_COLOR_RGB(214, 214, 214); @@ -168,6 +165,18 @@ void ExtensionShelfGtk::Observe(NotificationType type, } else { gtk_widget_modify_bg(top_border_, GTK_STATE_NORMAL, &kBorderColor); } + + GdkColor color = theme_provider_->GetGdkColor( + BrowserThemeProvider::COLOR_TOOLBAR); + gtk_widget_modify_bg(event_box_.get(), GTK_STATE_NORMAL, &color); + + // Reset the background images on all the individual toolstrips + background_.reset(); + InitBackground(); + for (std::set<Toolstrip*>::iterator it = toolstrips_.begin(); + it != toolstrips_.end(); ++it) { + (*it)->SetBackground(*background_.get()); + } } void ExtensionShelfGtk::Init(Profile* profile) { @@ -178,7 +187,6 @@ void ExtensionShelfGtk::Init(Profile* profile) { // widget. event_box_.Own(gtk_event_box_new()); ViewIDUtil::SetID(event_box_.get(), VIEW_ID_DEV_EXTENSION_SHELF); - gtk_widget_modify_bg(event_box_.get(), GTK_STATE_NORMAL, &kBackgroundColor); shelf_hbox_ = gtk_hbox_new(FALSE, 0); @@ -199,12 +207,16 @@ void ExtensionShelfGtk::Init(Profile* profile) { void ExtensionShelfGtk::InitBackground() { if (background_.get()) return; + + GdkColor color = + theme_provider_->GetGdkColor(BrowserThemeProvider::COLOR_TOOLBAR); + background_.reset(new SkBitmap); background_->setConfig(SkBitmap::kARGB_8888_Config, 3, 3); background_->allocPixels(); - background_->eraseRGB(kBackgroundColor.red >> 8, - kBackgroundColor.green >> 8, - kBackgroundColor.blue >> 8); + background_->eraseRGB(color.red >> 8, + color.green >> 8, + color.blue >> 8); } void ExtensionShelfGtk::AdjustHeight() { |