OLD | NEW |
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2010 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 <set> | 9 #include <set> |
10 | 10 |
(...skipping 240 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
251 // Only realized widgets receive style-set notifications, which we need to | 251 // Only realized widgets receive style-set notifications, which we need to |
252 // broadcast new theme images and colors. Only realized widgets have style | 252 // broadcast new theme images and colors. Only realized widgets have style |
253 // properties, too, which we query for some colors. | 253 // properties, too, which we query for some colors. |
254 gtk_widget_realize(fake_frame_); | 254 gtk_widget_realize(fake_frame_); |
255 gtk_widget_realize(fake_window_); | 255 gtk_widget_realize(fake_window_); |
256 signals_->Connect(fake_frame_, "style-set", | 256 signals_->Connect(fake_frame_, "style-set", |
257 G_CALLBACK(&OnStyleSetThunk), this); | 257 G_CALLBACK(&OnStyleSetThunk), this); |
258 } | 258 } |
259 | 259 |
260 GtkThemeProvider::~GtkThemeProvider() { | 260 GtkThemeProvider::~GtkThemeProvider() { |
261 profile()->GetPrefs()->RemovePrefObserver(prefs::kUsesSystemTheme, this); | |
262 gtk_widget_destroy(fake_window_); | 261 gtk_widget_destroy(fake_window_); |
263 gtk_widget_destroy(fake_frame_); | 262 gtk_widget_destroy(fake_frame_); |
264 fake_label_.Destroy(); | 263 fake_label_.Destroy(); |
265 fake_entry_.Destroy(); | 264 fake_entry_.Destroy(); |
266 fake_menu_item_.Destroy(); | 265 fake_menu_item_.Destroy(); |
267 | 266 |
268 FreeIconSets(); | 267 FreeIconSets(); |
269 | 268 |
270 // We have to call this because FreePlatformCached() in ~BrowserThemeProvider | 269 // We have to call this because FreePlatformCached() in ~BrowserThemeProvider |
271 // doesn't call the right virutal FreePlatformCaches. | 270 // doesn't call the right virutal FreePlatformCaches. |
272 FreePlatformCaches(); | 271 FreePlatformCaches(); |
273 } | 272 } |
274 | 273 |
275 void GtkThemeProvider::Init(Profile* profile) { | 274 void GtkThemeProvider::Init(Profile* profile) { |
276 profile->GetPrefs()->AddPrefObserver(prefs::kUsesSystemTheme, this); | 275 registrar_.Init(profile->GetPrefs()); |
| 276 registrar_.Add(prefs::kUsesSystemTheme, this); |
277 use_gtk_ = profile->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme); | 277 use_gtk_ = profile->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme); |
278 | 278 |
279 BrowserThemeProvider::Init(profile); | 279 BrowserThemeProvider::Init(profile); |
280 } | 280 } |
281 | 281 |
282 SkBitmap* GtkThemeProvider::GetBitmapNamed(int id) const { | 282 SkBitmap* GtkThemeProvider::GetBitmapNamed(int id) const { |
283 // Try to get our cached version: | 283 // Try to get our cached version: |
284 ImageCache::const_iterator it = gtk_images_.find(id); | 284 ImageCache::const_iterator it = gtk_images_.find(id); |
285 if (it != gtk_images_.end()) | 285 if (it != gtk_images_.end()) |
286 return it->second; | 286 return it->second; |
(...skipping 760 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1047 cairo_set_line_width(cr, 1.0); | 1047 cairo_set_line_width(cr, 1.0); |
1048 cairo_move_to(cr, start_x, widget->allocation.y); | 1048 cairo_move_to(cr, start_x, widget->allocation.y); |
1049 cairo_line_to(cr, start_x, | 1049 cairo_line_to(cr, start_x, |
1050 widget->allocation.y + widget->allocation.height); | 1050 widget->allocation.y + widget->allocation.height); |
1051 cairo_stroke(cr); | 1051 cairo_stroke(cr); |
1052 cairo_destroy(cr); | 1052 cairo_destroy(cr); |
1053 cairo_pattern_destroy(pattern); | 1053 cairo_pattern_destroy(pattern); |
1054 | 1054 |
1055 return TRUE; | 1055 return TRUE; |
1056 } | 1056 } |
OLD | NEW |