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

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

Issue 200071: Revert "Upload GdkPixbufs into cairo surfaces so they (hopefully) live on the X (Closed)
Patch Set: Created 11 years, 3 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
« no previous file with comments | « chrome/browser/gtk/go_button_gtk.cc ('k') | chrome/browser/gtk/gtk_theme_provider.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #ifndef CHROME_BROWSER_GTK_GTK_THEME_PROVIDER_H_ 5 #ifndef CHROME_BROWSER_GTK_GTK_THEME_PROVIDER_H_
6 #define CHROME_BROWSER_GTK_GTK_THEME_PROVIDER_H_ 6 #define CHROME_BROWSER_GTK_GTK_THEME_PROVIDER_H_
7 7
8 #include <map>
9 #include <string> 8 #include <string>
10 #include <vector> 9 #include <vector>
11 10
12 #include "chrome/browser/browser_theme_provider.h" 11 #include "chrome/browser/browser_theme_provider.h"
13 #include "chrome/common/notification_observer.h" 12 #include "chrome/common/notification_observer.h"
14 #include "chrome/common/owned_widget_gtk.h" 13 #include "chrome/common/owned_widget_gtk.h"
15 14
16 #include "skia/ext/skia_utils.h" 15 #include "skia/ext/skia_utils.h"
17 16
18 class CairoCachedSurface;
19 class Profile; 17 class Profile;
20 18
21 typedef struct _GdkDisplay GdkDisplay;
22 typedef struct _GtkStyle GtkStyle; 19 typedef struct _GtkStyle GtkStyle;
23 typedef struct _GtkWidget GtkWidget; 20 typedef struct _GtkWidget GtkWidget;
24 21
25 // Specialization of BrowserThemeProvider which supplies system colors. 22 // Specialization of BrowserThemeProvider which supplies system colors.
26 class GtkThemeProvider : public BrowserThemeProvider, 23 class GtkThemeProvider : public BrowserThemeProvider,
27 public NotificationObserver { 24 public NotificationObserver {
28 public: 25 public:
29 // Returns GtkThemeProvider, casted from our superclass. 26 // Returns GtkThemeProvider, casted from our superclass.
30 static GtkThemeProvider* GetFrom(Profile* profile); 27 static GtkThemeProvider* GetFrom(Profile* profile);
31 28
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 GdkColor GetGdkColor(int id); 60 GdkColor GetGdkColor(int id);
64 61
65 // A weighted average between the text color and the background color of a 62 // A weighted average between the text color and the background color of a
66 // label. Used for borders between GTK stuff and the webcontent. 63 // label. Used for borders between GTK stuff and the webcontent.
67 GdkColor GetBorderColor(); 64 GdkColor GetBorderColor();
68 65
69 // Expose the inner widgets. Only used for testing. 66 // Expose the inner widgets. Only used for testing.
70 GtkWidget* fake_window() { return fake_window_; } 67 GtkWidget* fake_window() { return fake_window_; }
71 GtkWidget* fake_label() { return fake_label_.get(); } 68 GtkWidget* fake_label() { return fake_label_.get(); }
72 69
73 // Returns a CairoCachedSurface for a particular Display. CairoCachedSurfaces
74 // (hopefully) live on the X server, instead of the client so we don't have
75 // to send the image to the server on each expose.
76 CairoCachedSurface* GetSurfaceNamed(int id, GtkWidget* widget_on_display);
77
78 protected: 70 protected:
79 // Possibly creates a theme specific version of theme_toolbar_default. 71 // Possibly creates a theme specific version of theme_toolbar_default.
80 // (minimally acceptable version right now, which is just a fill of the bg 72 // (minimally acceptable version right now, which is just a fill of the bg
81 // color; this should instead invoke gtk_draw_box(...) for complex theme 73 // color; this should instead invoke gtk_draw_box(...) for complex theme
82 // engines.) 74 // engines.)
83 virtual SkBitmap* LoadThemeBitmap(int id); 75 virtual SkBitmap* LoadThemeBitmap(int id);
84 76
85 private: 77 private:
86 // Load theme data from preferences, possibly picking colors from GTK. 78 // Load theme data from preferences, possibly picking colors from GTK.
87 virtual void LoadThemePrefs(); 79 virtual void LoadThemePrefs();
88 80
89 // Let all the browser views know that themes have changed. 81 // Let all the browser views know that themes have changed.
90 virtual void NotifyThemeChanged(); 82 virtual void NotifyThemeChanged();
91 83
92 // If use_gtk_ is true, completely ignores this call. Otherwise passes it to 84 // If use_gtk_ is true, completely ignores this call. Otherwise passes it to
93 // the superclass. 85 // the superclass.
94 virtual void SaveThemeBitmap(const std::string resource_name, int id); 86 virtual void SaveThemeBitmap(const std::string resource_name, int id);
95 87
96 // Additionally frees the CairoCachedSurfaces.
97 virtual void FreePlatformCaches();
98
99 // Handles signal from GTK that our theme has been changed. 88 // Handles signal from GTK that our theme has been changed.
100 static void OnStyleSet(GtkWidget* widget, 89 static void OnStyleSet(GtkWidget* widget,
101 GtkStyle* previous_style, 90 GtkStyle* previous_style,
102 GtkThemeProvider* provider); 91 GtkThemeProvider* provider);
103 92
104 void LoadGtkValues(); 93 void LoadGtkValues();
105 94
106 // Sets the underlying theme colors/tints from a GTK color. 95 // Sets the underlying theme colors/tints from a GTK color.
107 void SetThemeColorFromGtk(const char* id, GdkColor* color); 96 void SetThemeColorFromGtk(const char* id, GdkColor* color);
108 void SetThemeTintFromGtk(const char* id, GdkColor* color, 97 void SetThemeTintFromGtk(const char* id, GdkColor* color,
109 const skia::HSL& default_tint); 98 const skia::HSL& default_tint);
110 99
111 // A notification from the GtkChromeButton GObject destructor that we should 100 // A notification from the GtkChromeButton GObject destructor that we should
112 // remove it from our internal list. 101 // remove it from our internal list.
113 static void OnDestroyChromeButton(GtkWidget* button, 102 static void OnDestroyChromeButton(GtkWidget* button,
114 GtkThemeProvider* provider); 103 GtkThemeProvider* provider);
115 104
116 // Whether we should be using gtk rendering. 105 // Whether we should be using gtk rendering.
117 bool use_gtk_; 106 bool use_gtk_;
118 107
119 // GtkWidgets that exist only so we can look at their properties (and take 108 // GtkWidgets that exist only so we can look at their properties (and take
120 // their colors). 109 // their colors).
121 GtkWidget* fake_window_; 110 GtkWidget* fake_window_;
122 OwnedWidgetGtk fake_label_; 111 OwnedWidgetGtk fake_label_;
123 112
124 // A list of all GtkChromeButton instances. We hold on to these to notify 113 // A list of all GtkChromeButton instances. We hold on to these to notify
125 // them of theme changes. 114 // them of theme changes.
126 std::vector<GtkWidget*> chrome_buttons_; 115 std::vector<GtkWidget*> chrome_buttons_;
127
128 // Cairo surfaces for each GdkDisplay.
129 typedef std::map<int, CairoCachedSurface*> CairoCachedSurfaceMap;
130 typedef std::map<GdkDisplay*, CairoCachedSurfaceMap> PerDisplaySurfaceMap;
131 PerDisplaySurfaceMap per_display_surfaces_;
132 }; 116 };
133 117
134 #endif // CHROME_BROWSER_GTK_GTK_THEME_PROVIDER_H_ 118 #endif // CHROME_BROWSER_GTK_GTK_THEME_PROVIDER_H_
OLDNEW
« no previous file with comments | « chrome/browser/gtk/go_button_gtk.cc ('k') | chrome/browser/gtk/gtk_theme_provider.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698