summaryrefslogtreecommitdiffstats
path: root/chrome/browser/gtk/nine_box.h
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser/gtk/nine_box.h')
-rw-r--r--chrome/browser/gtk/nine_box.h18
1 files changed, 17 insertions, 1 deletions
diff --git a/chrome/browser/gtk/nine_box.h b/chrome/browser/gtk/nine_box.h
index dfdfafb..4ceea54 100644
--- a/chrome/browser/gtk/nine_box.h
+++ b/chrome/browser/gtk/nine_box.h
@@ -7,6 +7,10 @@
#include <gtk/gtk.h>
+#include "chrome/common/notification_observer.h"
+#include "chrome/common/notification_registrar.h"
+#include "chrome/common/notification_type.h"
+
class ThemeProvider;
// A NineBox manages a set of source images representing a 3x3 grid, where
@@ -20,7 +24,7 @@ class ThemeProvider;
//
// TODO(port): add support for caching server-side pixmaps of prerendered
// nineboxes.
-class NineBox {
+class NineBox : public NotificationObserver {
public:
// Construct a NineBox with nine images. Images are specified using resource
// ids that will be passed to the resource bundle. Use 0 for no image.
@@ -52,8 +56,20 @@ class NineBox {
// needed).
void ContourWidget(GtkWidget* widget) const;
+ // Provide NotificationObserver implementation.
+ virtual void Observe(NotificationType type,
+ const NotificationSource& source,
+ const NotificationDetails& details);
private:
GdkPixbuf* images_[9];
+
+ // We need to remember the image ids that the user passes in and the theme
+ // provider so we can reload images if the user changes theme.
+ int image_ids_[9];
+ ThemeProvider* theme_provider_;
+
+ // Used to listen for theme change notifications.
+ NotificationRegistrar registrar_;
};
#endif // CHROME_BROWSER_GTK_NINE_BOX_H_