diff options
author | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-09 20:35:19 +0000 |
---|---|---|
committer | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-09 20:35:19 +0000 |
commit | 5ce8cbcbf65f801bc7f52cc035027d0eb907add5 (patch) | |
tree | f7aa75f5abf0bf4e3b3657bc9cbb8f78d754d22a /chrome | |
parent | 9e853de8fda5ba164ec580145353a2f3feace609 (diff) | |
download | chromium_src-5ce8cbcbf65f801bc7f52cc035027d0eb907add5.zip chromium_src-5ce8cbcbf65f801bc7f52cc035027d0eb907add5.tar.gz chromium_src-5ce8cbcbf65f801bc7f52cc035027d0eb907add5.tar.bz2 |
GTK Themes: Prevent colors from "leaking through" by using an event box.
Some engines (clearlooks) query the bg color of a widget directly, so wrap the toolbar in an event box so that the bg value set in browser_window_gtk.cc doesn't leak through.
http://crbug.com/13967
Review URL: http://codereview.chromium.org/155310
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20308 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome')
-rw-r--r-- | chrome/browser/gtk/browser_toolbar_gtk.cc | 7 | ||||
-rw-r--r-- | chrome/browser/gtk/browser_toolbar_gtk.h | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/chrome/browser/gtk/browser_toolbar_gtk.cc b/chrome/browser/gtk/browser_toolbar_gtk.cc index d65bd81..e3ce104 100644 --- a/chrome/browser/gtk/browser_toolbar_gtk.cc +++ b/chrome/browser/gtk/browser_toolbar_gtk.cc @@ -96,7 +96,10 @@ void BrowserToolbarGtk::Init(Profile* profile, show_home_button_.Init(prefs::kShowHomeButton, profile->GetPrefs(), this); + event_box_ = gtk_event_box_new(); + toolbar_ = gtk_hbox_new(FALSE, kToolbarWidgetSpacing); + gtk_container_add(GTK_CONTAINER(event_box_), toolbar_); gtk_container_set_border_width(GTK_CONTAINER(toolbar_), 4); // Demand we're always at least kToolbarHeight tall. // -1 for width means "let GTK do its normal sizing". @@ -176,7 +179,7 @@ void BrowserToolbarGtk::Init(Profile* profile, // Force all the CustomDrawButtons to load the correct rendering style. UserChangedTheme(); - gtk_widget_show_all(toolbar_); + gtk_widget_show_all(event_box_); if (show_home_button_.GetValue()) { gtk_widget_show(home_->widget()); @@ -186,7 +189,7 @@ void BrowserToolbarGtk::Init(Profile* profile, } void BrowserToolbarGtk::AddToolbarToBox(GtkWidget* box) { - gtk_box_pack_start(GTK_BOX(box), toolbar_, FALSE, FALSE, 0); + gtk_box_pack_start(GTK_BOX(box), event_box_, FALSE, FALSE, 0); } void BrowserToolbarGtk::Show() { diff --git a/chrome/browser/gtk/browser_toolbar_gtk.h b/chrome/browser/gtk/browser_toolbar_gtk.h index e6d76dc..fefb000 100644 --- a/chrome/browser/gtk/browser_toolbar_gtk.h +++ b/chrome/browser/gtk/browser_toolbar_gtk.h @@ -49,7 +49,7 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, // Getter for the containing widget. GtkWidget* widget() { - return toolbar_; + return event_box_; } virtual LocationBar* GetLocationBar() const; @@ -152,6 +152,12 @@ class BrowserToolbarGtk : public CommandUpdater::CommandObserver, // Ninebox for the toolbar background scoped_ptr<NineBox> background_ninebox_; + // An event box that holds |toolbar_|. We need the toolbar to have its own + // GdkWindow when we use the GTK drawing because otherwise the color from our + // parent GdkWindow will leak through with some theme engines (such as + // Clearlooks). + GtkWidget* event_box_; + // Gtk widgets. The toolbar is an hbox with each of the other pieces of the // toolbar placed side by side. GtkWidget* toolbar_; |