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

Side by Side Diff: chrome/browser/ui/gtk/custom_button.cc

Issue 7809007: GTK: Clean up the gtk extension infobar implementation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Nits Created 9 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 | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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/ui/gtk/custom_button.h" 5 #include "chrome/browser/ui/gtk/custom_button.h"
6 6
7 #include "base/basictypes.h" 7 #include "base/basictypes.h"
8 #include "chrome/browser/ui/gtk/cairo_cached_surface.h" 8 #include "chrome/browser/ui/gtk/cairo_cached_surface.h"
9 #include "chrome/browser/ui/gtk/gtk_chrome_button.h" 9 #include "chrome/browser/ui/gtk/gtk_chrome_button.h"
10 #include "chrome/browser/ui/gtk/gtk_theme_service.h" 10 #include "chrome/browser/ui/gtk/gtk_theme_service.h"
(...skipping 220 matching lines...) Expand 10 before | Expand all | Expand 10 after
231 231
232 CustomDrawButton::CustomDrawButton(GtkThemeService* theme_provider, 232 CustomDrawButton::CustomDrawButton(GtkThemeService* theme_provider,
233 int normal_id, 233 int normal_id,
234 int pressed_id, 234 int pressed_id,
235 int hover_id, 235 int hover_id,
236 int disabled_id, 236 int disabled_id,
237 const char* stock_id, 237 const char* stock_id,
238 GtkIconSize stock_size) 238 GtkIconSize stock_size)
239 : button_base_(theme_provider, normal_id, pressed_id, hover_id, 239 : button_base_(theme_provider, normal_id, pressed_id, hover_id,
240 disabled_id), 240 disabled_id),
241 theme_service_(theme_provider) { 241 theme_service_(theme_provider),
242 forcing_chrome_theme_(false) {
242 native_widget_.Own(gtk_image_new_from_stock(stock_id, stock_size)); 243 native_widget_.Own(gtk_image_new_from_stock(stock_id, stock_size));
243 244
244 Init(); 245 Init();
245 246
246 theme_service_->InitThemesFor(this); 247 theme_service_->InitThemesFor(this);
247 registrar_.Add(this, 248 registrar_.Add(this,
248 chrome::NOTIFICATION_BROWSER_THEME_CHANGED, 249 chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
249 Source<ThemeService>(theme_provider)); 250 Source<ThemeService>(theme_provider));
250 } 251 }
251 252
252 CustomDrawButton::CustomDrawButton(GtkThemeService* theme_provider, 253 CustomDrawButton::CustomDrawButton(GtkThemeService* theme_provider,
253 int normal_id, 254 int normal_id,
254 int pressed_id, 255 int pressed_id,
255 int hover_id, 256 int hover_id,
256 int disabled_id, 257 int disabled_id,
257 GtkWidget* native_widget) 258 GtkWidget* native_widget)
258 : button_base_(theme_provider, normal_id, pressed_id, hover_id, 259 : button_base_(theme_provider, normal_id, pressed_id, hover_id,
259 disabled_id), 260 disabled_id),
260 native_widget_(native_widget), 261 native_widget_(native_widget),
261 theme_service_(theme_provider) { 262 theme_service_(theme_provider),
263 forcing_chrome_theme_(false) {
262 Init(); 264 Init();
263 265
264 theme_service_->InitThemesFor(this); 266 theme_service_->InitThemesFor(this);
265 registrar_.Add(this, 267 registrar_.Add(this,
266 chrome::NOTIFICATION_BROWSER_THEME_CHANGED, 268 chrome::NOTIFICATION_BROWSER_THEME_CHANGED,
267 Source<ThemeService>(theme_provider)); 269 Source<ThemeService>(theme_provider));
268 } 270 }
269 271
270 CustomDrawButton::~CustomDrawButton() { 272 CustomDrawButton::~CustomDrawButton() {
271 widget_.Destroy(); 273 widget_.Destroy();
272 native_widget_.Destroy(); 274 native_widget_.Destroy();
273 } 275 }
274 276
275 void CustomDrawButton::Init() { 277 void CustomDrawButton::Init() {
276 widget_.Own(gtk_chrome_button_new()); 278 widget_.Own(gtk_chrome_button_new());
277 gtk_widget_set_can_focus(widget(), FALSE); 279 gtk_widget_set_can_focus(widget(), FALSE);
278 g_signal_connect(widget(), "expose-event", 280 g_signal_connect(widget(), "expose-event",
279 G_CALLBACK(OnCustomExposeThunk), this); 281 G_CALLBACK(OnCustomExposeThunk), this);
280 hover_controller_.Init(widget()); 282 hover_controller_.Init(widget());
281 } 283 }
282 284
285 void CustomDrawButton::ForceChromeTheme() {
286 forcing_chrome_theme_ = true;
287 SetBrowserTheme();
288 }
289
283 void CustomDrawButton::Observe(int type, 290 void CustomDrawButton::Observe(int type,
284 const NotificationSource& source, const NotificationDetails& details) { 291 const NotificationSource& source, const NotificationDetails& details) {
285 DCHECK(chrome::NOTIFICATION_BROWSER_THEME_CHANGED == type); 292 DCHECK(chrome::NOTIFICATION_BROWSER_THEME_CHANGED == type);
286 SetBrowserTheme(); 293 SetBrowserTheme();
287 } 294 }
288 295
289 int CustomDrawButton::SurfaceWidth() const { 296 int CustomDrawButton::SurfaceWidth() const {
290 return button_base_.Width(); 297 return button_base_.Width();
291 } 298 }
292 299
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
343 button_base_.Height()); 350 button_base_.Height());
344 351
345 gtk_widget_set_app_paintable(widget(), TRUE); 352 gtk_widget_set_app_paintable(widget(), TRUE);
346 } 353 }
347 354
348 gtk_chrome_button_set_use_gtk_rendering( 355 gtk_chrome_button_set_use_gtk_rendering(
349 GTK_CHROME_BUTTON(widget()), UseGtkTheme()); 356 GTK_CHROME_BUTTON(widget()), UseGtkTheme());
350 } 357 }
351 358
352 bool CustomDrawButton::UseGtkTheme() { 359 bool CustomDrawButton::UseGtkTheme() {
353 return theme_service_ && theme_service_->UsingNativeTheme(); 360 return !forcing_chrome_theme_ && theme_service_ &&
361 theme_service_->UsingNativeTheme();
354 } 362 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698