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

Side by Side Diff: chrome/browser/gtk/gtk_theme_provider.cc

Issue 159157: gtk: Make GtkThemeProvider own the gtk label widget. The widget is not added... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 11 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « chrome/browser/gtk/gtk_theme_provider.h ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Property Changes:
Name: svn:eol-style
+ LF
OLDNEW
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2009 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "chrome/browser/gtk/gtk_theme_provider.h" 5 #include "chrome/browser/gtk/gtk_theme_provider.h"
6 6
7 #include <gtk/gtk.h> 7 #include <gtk/gtk.h>
8 8
9 #include "base/gfx/gtk_util.h" 9 #include "base/gfx/gtk_util.h"
10 #include "chrome/browser/metrics/user_metrics.h" 10 #include "chrome/browser/metrics/user_metrics.h"
(...skipping 19 matching lines...) Expand all
30 30
31 } // namespace 31 } // namespace
32 32
33 // static 33 // static
34 GtkThemeProvider* GtkThemeProvider::GetFrom(Profile* profile) { 34 GtkThemeProvider* GtkThemeProvider::GetFrom(Profile* profile) {
35 return static_cast<GtkThemeProvider*>(profile->GetThemeProvider()); 35 return static_cast<GtkThemeProvider*>(profile->GetThemeProvider());
36 } 36 }
37 37
38 GtkThemeProvider::GtkThemeProvider() 38 GtkThemeProvider::GtkThemeProvider()
39 : BrowserThemeProvider(), 39 : BrowserThemeProvider(),
40 fake_window_(gtk_window_new(GTK_WINDOW_TOPLEVEL)), 40 fake_window_(gtk_window_new(GTK_WINDOW_TOPLEVEL)) {
41 fake_label_(gtk_label_new("")) { 41 fake_label_.Own(gtk_label_new(""));
42
42 // Only realized widgets receive style-set notifications, which we need to 43 // Only realized widgets receive style-set notifications, which we need to
43 // broadcast new theme images and colors. 44 // broadcast new theme images and colors.
44 gtk_widget_realize(fake_window_); 45 gtk_widget_realize(fake_window_);
45 g_signal_connect(fake_window_, "style-set", G_CALLBACK(&OnStyleSet), this); 46 g_signal_connect(fake_window_, "style-set", G_CALLBACK(&OnStyleSet), this);
46 } 47 }
47 48
48 GtkThemeProvider::~GtkThemeProvider() { 49 GtkThemeProvider::~GtkThemeProvider() {
49 profile()->GetPrefs()->RemovePrefObserver(prefs::kUsesSystemTheme, this); 50 profile()->GetPrefs()->RemovePrefObserver(prefs::kUsesSystemTheme, this);
50 gtk_widget_destroy(fake_window_); 51 gtk_widget_destroy(fake_window_);
51 gtk_widget_destroy(fake_label_); 52 fake_label_.Destroy();
52 53
53 // Disconnect from the destroy signal of any redisual widgets in 54 // Disconnect from the destroy signal of any redisual widgets in
54 // |chrome_buttons_|. 55 // |chrome_buttons_|.
55 for (std::vector<GtkWidget*>::iterator it = chrome_buttons_.begin(); 56 for (std::vector<GtkWidget*>::iterator it = chrome_buttons_.begin();
56 it != chrome_buttons_.end(); ++it) { 57 it != chrome_buttons_.end(); ++it) {
57 gtk_signal_disconnect_by_data(GTK_OBJECT(*it), this); 58 gtk_signal_disconnect_by_data(GTK_OBJECT(*it), this);
58 } 59 }
59 } 60 }
60 61
61 void GtkThemeProvider::Init(Profile* profile) { 62 void GtkThemeProvider::Init(Profile* profile) {
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after
161 GtkThemeProvider* provider) { 162 GtkThemeProvider* provider) {
162 if (provider->profile()->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme)) { 163 if (provider->profile()->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme)) {
163 provider->ClearAllThemeData(); 164 provider->ClearAllThemeData();
164 provider->LoadGtkValues(); 165 provider->LoadGtkValues();
165 provider->NotifyThemeChanged(); 166 provider->NotifyThemeChanged();
166 } 167 }
167 } 168 }
168 169
169 void GtkThemeProvider::LoadGtkValues() { 170 void GtkThemeProvider::LoadGtkValues() {
170 GtkStyle* window_style = gtk_rc_get_style(fake_window_); 171 GtkStyle* window_style = gtk_rc_get_style(fake_window_);
171 GtkStyle* label_style = gtk_rc_get_style(fake_label_); 172 GtkStyle* label_style = gtk_rc_get_style(fake_label_.get());
172 173
173 SetThemeColorFromGtk(kColorFrame, &window_style->bg[GTK_STATE_SELECTED]); 174 SetThemeColorFromGtk(kColorFrame, &window_style->bg[GTK_STATE_SELECTED]);
174 // Skip COLOR_FRAME_INACTIVE and the incognito colors, as they will be 175 // Skip COLOR_FRAME_INACTIVE and the incognito colors, as they will be
175 // autogenerated from tints. 176 // autogenerated from tints.
176 SetThemeColorFromGtk(kColorToolbar, 177 SetThemeColorFromGtk(kColorToolbar,
177 &window_style->bg[GTK_STATE_NORMAL]); 178 &window_style->bg[GTK_STATE_NORMAL]);
178 SetThemeColorFromGtk(kColorTabText, 179 SetThemeColorFromGtk(kColorTabText,
179 &label_style->text[GTK_STATE_NORMAL]); 180 &label_style->text[GTK_STATE_NORMAL]);
180 SetThemeColorFromGtk(kColorBackgroundTabText, 181 SetThemeColorFromGtk(kColorBackgroundTabText,
181 &label_style->text[GTK_STATE_NORMAL]); 182 &label_style->text[GTK_STATE_NORMAL]);
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
234 } 235 }
235 236
236 void GtkThemeProvider::OnDestroyChromeButton(GtkWidget* button, 237 void GtkThemeProvider::OnDestroyChromeButton(GtkWidget* button,
237 GtkThemeProvider* provider) { 238 GtkThemeProvider* provider) {
238 std::vector<GtkWidget*>::iterator it = 239 std::vector<GtkWidget*>::iterator it =
239 find(provider->chrome_buttons_.begin(), provider->chrome_buttons_.end(), 240 find(provider->chrome_buttons_.begin(), provider->chrome_buttons_.end(),
240 button); 241 button);
241 if (it != provider->chrome_buttons_.end()) 242 if (it != provider->chrome_buttons_.end())
242 provider->chrome_buttons_.erase(it); 243 provider->chrome_buttons_.erase(it);
243 } 244 }
OLDNEW
« no previous file with comments | « chrome/browser/gtk/gtk_theme_provider.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698