diff options
author | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-13 23:23:08 +0000 |
---|---|---|
committer | erg@google.com <erg@google.com@0039d316-1c4b-4281-b951-d872f2087c98> | 2009-07-13 23:23:08 +0000 |
commit | 5fdafb2f68bd61ef92d10194402348d1e5839015 (patch) | |
tree | fb8583216c733e2a2218501646cf8c72fec35bb1 /chrome/browser/gtk/bookmark_utils_gtk.cc | |
parent | 0735266658f996210b6f43142ce7f4c55f47ae13 (diff) | |
download | chromium_src-5fdafb2f68bd61ef92d10194402348d1e5839015.zip chromium_src-5fdafb2f68bd61ef92d10194402348d1e5839015.tar.gz chromium_src-5fdafb2f68bd61ef92d10194402348d1e5839015.tar.bz2 |
GTK Themes: Refactored to use notifications instead of manual plumbing.
- Removes large amounts of plumbing because:
- All GtkChromeButtons are constructed from GtkThemeProvider which keeps a reference to all live buttons and sends them theme change notifications.
- CustomDrawButtons now subscribe themselves to the BROWSER_THEME_CHANGED notification; this gets rid of a LOT of plubming.
- Removes the GtkThemeProperties struct; just pass the theme provider around.
- Move all the constants from the themes namespace to class statics, per tony's suggestion
Review URL: http://codereview.chromium.org/149547
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@20561 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'chrome/browser/gtk/bookmark_utils_gtk.cc')
-rw-r--r-- | chrome/browser/gtk/bookmark_utils_gtk.cc | 21 |
1 files changed, 9 insertions, 12 deletions
diff --git a/chrome/browser/gtk/bookmark_utils_gtk.cc b/chrome/browser/gtk/bookmark_utils_gtk.cc index b388dfc..b83553f 100644 --- a/chrome/browser/gtk/bookmark_utils_gtk.cc +++ b/chrome/browser/gtk/bookmark_utils_gtk.cc @@ -86,10 +86,10 @@ GdkPixbuf* GetPixbufForNode(const BookmarkNode* node, BookmarkModel* model) { GtkWidget* GetDragRepresentation(const BookmarkNode* node, BookmarkModel* model, - GtkThemeProperties* properties) { + GtkThemeProvider* provider) { // Build a windowed representation for our button. GtkWidget* window = gtk_window_new(GTK_WINDOW_POPUP); - if (!properties->use_gtk_rendering) { + if (!provider->UseGtkTheme()) { // TODO(erg): Theme wise, which color should I be picking here? // COLOR_BUTTON_BACKGROUND doesn't match the default theme! gtk_widget_modify_bg(window, GTK_STATE_NORMAL, &kBackgroundColor); @@ -101,9 +101,9 @@ GtkWidget* GetDragRepresentation(const BookmarkNode* node, gtk_container_add(GTK_CONTAINER(window), frame); gtk_widget_show(frame); - GtkWidget* floating_button = gtk_chrome_button_new(); + GtkWidget* floating_button = provider->BuildChromeButton(); bookmark_utils::ConfigureButtonForNode(node, model, floating_button, - properties); + provider); gtk_container_add(GTK_CONTAINER(frame), floating_button); gtk_widget_show(floating_button); @@ -111,7 +111,7 @@ GtkWidget* GetDragRepresentation(const BookmarkNode* node, } void ConfigureButtonForNode(const BookmarkNode* node, BookmarkModel* model, - GtkWidget* button, GtkThemeProperties* properties) { + GtkWidget* button, GtkThemeProvider* provider) { GtkWidget* former_child = gtk_bin_get_child(GTK_BIN(button)); if (former_child) gtk_container_remove(GTK_CONTAINER(button), former_child); @@ -141,13 +141,10 @@ void ConfigureButtonForNode(const BookmarkNode* node, BookmarkModel* model, gtk_container_add(GTK_CONTAINER(alignment), box); gtk_container_add(GTK_CONTAINER(button), alignment); - SetButtonTextColors(label, properties); + SetButtonTextColors(label, provider); g_object_set_data(G_OBJECT(button), bookmark_utils::kBookmarkNode, AsVoid(node)); - gtk_chrome_button_set_use_gtk_rendering(GTK_CHROME_BUTTON(button), - properties->use_gtk_rendering); - gtk_widget_show_all(alignment); } @@ -162,14 +159,14 @@ const BookmarkNode* BookmarkNodeForWidget(GtkWidget* widget) { g_object_get_data(G_OBJECT(widget), bookmark_utils::kBookmarkNode)); } -void SetButtonTextColors(GtkWidget* label, GtkThemeProperties* properties) { - if (properties->use_gtk_rendering) { +void SetButtonTextColors(GtkWidget* label, GtkThemeProvider* provider) { + if (provider->UseGtkTheme()) { gtk_widget_modify_fg(label, GTK_STATE_NORMAL, NULL); gtk_widget_modify_fg(label, GTK_STATE_ACTIVE, NULL); gtk_widget_modify_fg(label, GTK_STATE_PRELIGHT, NULL); gtk_widget_modify_fg(label, GTK_STATE_INSENSITIVE, NULL); } else { - GdkColor color = properties->GetGdkColor( + GdkColor color = provider->GetGdkColor( BrowserThemeProvider::COLOR_BOOKMARK_TEXT); gtk_widget_modify_fg(label, GTK_STATE_NORMAL, &color); gtk_widget_modify_fg(label, GTK_STATE_ACTIVE, &color); |