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 "app/resource_bundle.h" | 9 #include "app/resource_bundle.h" |
10 #include "base/stl_util-inl.h" | 10 #include "base/stl_util-inl.h" |
(...skipping 177 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
188 void GtkThemeProvider::UseDefaultTheme() { | 188 void GtkThemeProvider::UseDefaultTheme() { |
189 profile()->GetPrefs()->SetBoolean(prefs::kUsesSystemTheme, false); | 189 profile()->GetPrefs()->SetBoolean(prefs::kUsesSystemTheme, false); |
190 LoadDefaultValues(); | 190 LoadDefaultValues(); |
191 BrowserThemeProvider::UseDefaultTheme(); | 191 BrowserThemeProvider::UseDefaultTheme(); |
192 } | 192 } |
193 | 193 |
194 void GtkThemeProvider::SetNativeTheme() { | 194 void GtkThemeProvider::SetNativeTheme() { |
195 profile()->GetPrefs()->SetBoolean(prefs::kUsesSystemTheme, true); | 195 profile()->GetPrefs()->SetBoolean(prefs::kUsesSystemTheme, true); |
196 ClearAllThemeData(); | 196 ClearAllThemeData(); |
197 LoadGtkValues(); | 197 LoadGtkValues(); |
198 NotifyThemeChanged(); | 198 NotifyThemeChanged(NULL); |
199 } | 199 } |
200 | 200 |
201 void GtkThemeProvider::Observe(NotificationType type, | 201 void GtkThemeProvider::Observe(NotificationType type, |
202 const NotificationSource& source, | 202 const NotificationSource& source, |
203 const NotificationDetails& details) { | 203 const NotificationDetails& details) { |
204 if ((type == NotificationType::PREF_CHANGED) && | 204 if ((type == NotificationType::PREF_CHANGED) && |
205 (*Details<std::wstring>(details).ptr() == prefs::kUsesSystemTheme)) | 205 (*Details<std::wstring>(details).ptr() == prefs::kUsesSystemTheme)) |
206 use_gtk_ = profile()->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme); | 206 use_gtk_ = profile()->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme); |
207 } | 207 } |
208 | 208 |
(...skipping 179 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
388 | 388 |
389 void GtkThemeProvider::LoadThemePrefs() { | 389 void GtkThemeProvider::LoadThemePrefs() { |
390 if (use_gtk_) { | 390 if (use_gtk_) { |
391 LoadGtkValues(); | 391 LoadGtkValues(); |
392 } else { | 392 } else { |
393 LoadDefaultValues(); | 393 LoadDefaultValues(); |
394 BrowserThemeProvider::LoadThemePrefs(); | 394 BrowserThemeProvider::LoadThemePrefs(); |
395 } | 395 } |
396 } | 396 } |
397 | 397 |
398 void GtkThemeProvider::NotifyThemeChanged() { | 398 void GtkThemeProvider::NotifyThemeChanged(Extension* extension) { |
399 BrowserThemeProvider::NotifyThemeChanged(); | 399 BrowserThemeProvider::NotifyThemeChanged(extension); |
400 | 400 |
401 // Notify all GtkChromeButtons of their new rendering mode: | 401 // Notify all GtkChromeButtons of their new rendering mode: |
402 for (std::vector<GtkWidget*>::iterator it = chrome_buttons_.begin(); | 402 for (std::vector<GtkWidget*>::iterator it = chrome_buttons_.begin(); |
403 it != chrome_buttons_.end(); ++it) { | 403 it != chrome_buttons_.end(); ++it) { |
404 gtk_chrome_button_set_use_gtk_rendering( | 404 gtk_chrome_button_set_use_gtk_rendering( |
405 GTK_CHROME_BUTTON(*it), use_gtk_); | 405 GTK_CHROME_BUTTON(*it), use_gtk_); |
406 } | 406 } |
407 } | 407 } |
408 | 408 |
409 void GtkThemeProvider::FreePlatformCaches() { | 409 void GtkThemeProvider::FreePlatformCaches() { |
410 BrowserThemeProvider::FreePlatformCaches(); | 410 BrowserThemeProvider::FreePlatformCaches(); |
411 FreePerDisplaySurfaces(); | 411 FreePerDisplaySurfaces(); |
412 STLDeleteValues(>k_images_); | 412 STLDeleteValues(>k_images_); |
413 } | 413 } |
414 | 414 |
415 // static | 415 // static |
416 void GtkThemeProvider::OnStyleSet(GtkWidget* widget, | 416 void GtkThemeProvider::OnStyleSet(GtkWidget* widget, |
417 GtkStyle* previous_style, | 417 GtkStyle* previous_style, |
418 GtkThemeProvider* provider) { | 418 GtkThemeProvider* provider) { |
419 GdkPixbuf* default_folder_icon = default_folder_icon_; | 419 GdkPixbuf* default_folder_icon = default_folder_icon_; |
420 GdkPixbuf* default_bookmark_icon = default_bookmark_icon_; | 420 GdkPixbuf* default_bookmark_icon = default_bookmark_icon_; |
421 default_folder_icon_ = NULL; | 421 default_folder_icon_ = NULL; |
422 default_bookmark_icon_ = NULL; | 422 default_bookmark_icon_ = NULL; |
423 | 423 |
424 if (provider->profile()->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme)) { | 424 if (provider->profile()->GetPrefs()->GetBoolean(prefs::kUsesSystemTheme)) { |
425 provider->ClearAllThemeData(); | 425 provider->ClearAllThemeData(); |
426 provider->LoadGtkValues(); | 426 provider->LoadGtkValues(); |
427 provider->NotifyThemeChanged(); | 427 provider->NotifyThemeChanged(NULL); |
428 } | 428 } |
429 | 429 |
430 // Free the old icons only after the theme change notification has gone | 430 // Free the old icons only after the theme change notification has gone |
431 // through. | 431 // through. |
432 if (default_folder_icon) | 432 if (default_folder_icon) |
433 g_object_unref(default_folder_icon); | 433 g_object_unref(default_folder_icon); |
434 if (default_bookmark_icon) | 434 if (default_bookmark_icon) |
435 g_object_unref(default_bookmark_icon); | 435 g_object_unref(default_bookmark_icon); |
436 } | 436 } |
437 | 437 |
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
730 } | 730 } |
731 | 731 |
732 void GtkThemeProvider::OnDestroyChromeButton(GtkWidget* button, | 732 void GtkThemeProvider::OnDestroyChromeButton(GtkWidget* button, |
733 GtkThemeProvider* provider) { | 733 GtkThemeProvider* provider) { |
734 std::vector<GtkWidget*>::iterator it = | 734 std::vector<GtkWidget*>::iterator it = |
735 find(provider->chrome_buttons_.begin(), provider->chrome_buttons_.end(), | 735 find(provider->chrome_buttons_.begin(), provider->chrome_buttons_.end(), |
736 button); | 736 button); |
737 if (it != provider->chrome_buttons_.end()) | 737 if (it != provider->chrome_buttons_.end()) |
738 provider->chrome_buttons_.erase(it); | 738 provider->chrome_buttons_.erase(it); |
739 } | 739 } |
OLD | NEW |