| OLD | NEW |
| 1 // Copyright 2016 The Chromium Authors. All rights reserved. | 1 // Copyright 2016 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/libgtkui/native_theme_gtk3.h" | 5 #include "chrome/browser/ui/libgtkui/native_theme_gtk3.h" |
| 6 | 6 |
| 7 #include <gtk/gtk.h> | 7 #include <gtk/gtk.h> |
| 8 | 8 |
| 9 #include "chrome/browser/ui/libgtkui/chrome_gtk_frame.h" | 9 #include "chrome/browser/ui/libgtkui/chrome_gtk_frame.h" |
| 10 #include "chrome/browser/ui/libgtkui/chrome_gtk_menu_subclasses.h" | 10 #include "chrome/browser/ui/libgtkui/chrome_gtk_menu_subclasses.h" |
| (...skipping 342 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 353 g_type_class_unref(g_type_class_ref(gtk_menu_get_type())); | 353 g_type_class_unref(g_type_class_ref(gtk_menu_get_type())); |
| 354 g_type_class_unref(g_type_class_ref(gtk_menu_item_get_type())); | 354 g_type_class_unref(g_type_class_ref(gtk_menu_item_get_type())); |
| 355 g_type_class_unref(g_type_class_ref(gtk_entry_get_type())); | 355 g_type_class_unref(g_type_class_ref(gtk_entry_get_type())); |
| 356 g_type_class_unref(g_type_class_ref(gtk_info_bar_get_type())); | 356 g_type_class_unref(g_type_class_ref(gtk_info_bar_get_type())); |
| 357 g_type_class_unref(g_type_class_ref(gtk_tooltip_get_type())); | 357 g_type_class_unref(g_type_class_ref(gtk_tooltip_get_type())); |
| 358 g_type_class_unref(g_type_class_ref(gtk_scrollbar_get_type())); | 358 g_type_class_unref(g_type_class_ref(gtk_scrollbar_get_type())); |
| 359 g_type_class_unref(g_type_class_ref(gtk_toolbar_get_type())); | 359 g_type_class_unref(g_type_class_ref(gtk_toolbar_get_type())); |
| 360 g_type_class_unref(g_type_class_ref(gtk_text_view_get_type())); | 360 g_type_class_unref(g_type_class_ref(gtk_text_view_get_type())); |
| 361 g_type_class_unref(g_type_class_ref(gtk_separator_get_type())); | 361 g_type_class_unref(g_type_class_ref(gtk_separator_get_type())); |
| 362 g_type_class_unref(g_type_class_ref(gtk_menu_bar_get_type())); | 362 g_type_class_unref(g_type_class_ref(gtk_menu_bar_get_type())); |
| 363 g_type_class_unref(g_type_class_ref(gtk_arrow_get_type())); | |
| 364 g_type_class_unref(g_type_class_ref(gtk_scrolled_window_get_type())); | 363 g_type_class_unref(g_type_class_ref(gtk_scrolled_window_get_type())); |
| 365 g_type_class_unref(g_type_class_ref(gtk_range_get_type())); | 364 g_type_class_unref(g_type_class_ref(gtk_range_get_type())); |
| 366 | 365 |
| 367 g_signal_connect_after(gtk_settings_get_default(), "notify::gtk-theme-name", | 366 g_signal_connect_after(gtk_settings_get_default(), "notify::gtk-theme-name", |
| 368 G_CALLBACK(OnThemeChanged), this); | 367 G_CALLBACK(OnThemeChanged), this); |
| 369 } | 368 } |
| 370 | 369 |
| 371 // This doesn't actually get called | 370 // This doesn't actually get called |
| 372 NativeThemeGtk3::~NativeThemeGtk3() {} | 371 NativeThemeGtk3::~NativeThemeGtk3() {} |
| 373 | 372 |
| (...skipping 14 matching lines...) Expand all Loading... |
| 388 void NativeThemeGtk3::PaintArrowButton(SkCanvas* canvas, | 387 void NativeThemeGtk3::PaintArrowButton(SkCanvas* canvas, |
| 389 const gfx::Rect& rect, | 388 const gfx::Rect& rect, |
| 390 Part direction, | 389 Part direction, |
| 391 State state) const { | 390 State state) const { |
| 392 auto context = GetStyleContextFromCss( | 391 auto context = GetStyleContextFromCss( |
| 393 GtkVersionCheck(3, 20) | 392 GtkVersionCheck(3, 20) |
| 394 ? "GtkScrollbar#scrollbar #contents GtkButton#button" | 393 ? "GtkScrollbar#scrollbar #contents GtkButton#button" |
| 395 : "GtkRange.scrollbar.button"); | 394 : "GtkRange.scrollbar.button"); |
| 396 GtkStateFlags state_flags = StateToStateFlags(state); | 395 GtkStateFlags state_flags = StateToStateFlags(state); |
| 397 gtk_style_context_set_state(context, state_flags); | 396 gtk_style_context_set_state(context, state_flags); |
| 398 SkBitmap bitmap = | |
| 399 GetWidgetBitmap(rect.size(), context, BG_RENDER_NORMAL, true); | |
| 400 | 397 |
| 401 gdouble angle = 0; | |
| 402 switch (direction) { | 398 switch (direction) { |
| 403 case kScrollbarUpArrow: | 399 case kScrollbarUpArrow: |
| 404 angle = 0; | |
| 405 gtk_style_context_add_class(context, GTK_STYLE_CLASS_TOP); | 400 gtk_style_context_add_class(context, GTK_STYLE_CLASS_TOP); |
| 406 break; | 401 break; |
| 407 case kScrollbarRightArrow: | 402 case kScrollbarRightArrow: |
| 408 angle = G_PI / 2; | |
| 409 gtk_style_context_add_class(context, GTK_STYLE_CLASS_RIGHT); | 403 gtk_style_context_add_class(context, GTK_STYLE_CLASS_RIGHT); |
| 410 break; | 404 break; |
| 411 case kScrollbarDownArrow: | 405 case kScrollbarDownArrow: |
| 412 angle = G_PI; | |
| 413 gtk_style_context_add_class(context, GTK_STYLE_CLASS_BOTTOM); | 406 gtk_style_context_add_class(context, GTK_STYLE_CLASS_BOTTOM); |
| 414 break; | 407 break; |
| 415 case kScrollbarLeftArrow: | 408 case kScrollbarLeftArrow: |
| 416 angle = 3 * G_PI / 2; | |
| 417 gtk_style_context_add_class(context, GTK_STYLE_CLASS_LEFT); | 409 gtk_style_context_add_class(context, GTK_STYLE_CLASS_LEFT); |
| 418 break; | 410 break; |
| 419 default: | 411 default: |
| 420 NOTREACHED(); | 412 NOTREACHED(); |
| 421 } | 413 } |
| 422 | 414 |
| 423 CairoSurface surface(bitmap); | 415 PaintWidget(canvas, rect, context, BG_RENDER_NORMAL, true); |
| 424 | 416 PaintArrow(canvas, rect, direction, SkColorFromStyleContext(context)); |
| 425 auto arrow_context = AppendCssNodeToStyleContext(context, "GtkArrow#arrow"); | |
| 426 gfloat arrow_scaling = 0.7; // Default scaling for a GtkArrow | |
| 427 gtk_style_context_get_style(arrow_context, "arrow-scaling", &arrow_scaling, | |
| 428 nullptr); | |
| 429 const double w = rect.width(); | |
| 430 const double h = rect.height(); | |
| 431 const double arrow_size = std::min(w, h) * arrow_scaling; | |
| 432 gtk_render_arrow(arrow_context, surface.cairo(), angle, (w - arrow_size) / 2, | |
| 433 (h - arrow_size) / 2, arrow_size); | |
| 434 canvas->drawBitmap(bitmap, rect.x(), rect.y()); | |
| 435 } | 417 } |
| 436 | 418 |
| 437 void NativeThemeGtk3::PaintScrollbarTrack( | 419 void NativeThemeGtk3::PaintScrollbarTrack( |
| 438 SkCanvas* canvas, | 420 SkCanvas* canvas, |
| 439 Part part, | 421 Part part, |
| 440 State state, | 422 State state, |
| 441 const ScrollbarTrackExtraParams& extra_params, | 423 const ScrollbarTrackExtraParams& extra_params, |
| 442 const gfx::Rect& rect) const { | 424 const gfx::Rect& rect) const { |
| 443 PaintWidget(canvas, rect, | 425 PaintWidget(canvas, rect, GetStyleContextFromCss( |
| 444 GetStyleContextFromCss(GtkVersionCheck(3, 20) | 426 GtkVersionCheck(3, 20) |
| 445 ? "GtkScrollbar#scrollbar #contents #trough" | 427 ? "GtkScrollbar#scrollbar #contents #trough" |
| 446 : "GtkScrollbar.scrollbar.trough"), | 428 : "GtkScrollbar.scrollbar.trough"), |
| 447 BG_RENDER_NORMAL,true); | 429 BG_RENDER_NORMAL, true); |
| 448 } | 430 } |
| 449 | 431 |
| 450 void NativeThemeGtk3::PaintScrollbarThumb( | 432 void NativeThemeGtk3::PaintScrollbarThumb( |
| 451 SkCanvas* canvas, | 433 SkCanvas* canvas, |
| 452 Part part, | 434 Part part, |
| 453 State state, | 435 State state, |
| 454 const gfx::Rect& rect, | 436 const gfx::Rect& rect, |
| 455 NativeTheme::ScrollbarOverlayColorTheme theme) const { | 437 NativeTheme::ScrollbarOverlayColorTheme theme) const { |
| 456 auto context = GetStyleContextFromCss( | 438 auto context = GetStyleContextFromCss( |
| 457 GtkVersionCheck(3, 20) | 439 GtkVersionCheck(3, 20) |
| (...skipping 106 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 564 | 546 |
| 565 if (frame_top_area.incognito) { | 547 if (frame_top_area.incognito) { |
| 566 bitmap = SkBitmapOperations::CreateHSLShiftedBitmap( | 548 bitmap = SkBitmapOperations::CreateHSLShiftedBitmap( |
| 567 bitmap, kDefaultTintFrameIncognito); | 549 bitmap, kDefaultTintFrameIncognito); |
| 568 } | 550 } |
| 569 | 551 |
| 570 canvas->drawBitmap(bitmap, rect.x(), rect.y()); | 552 canvas->drawBitmap(bitmap, rect.x(), rect.y()); |
| 571 } | 553 } |
| 572 | 554 |
| 573 } // namespace libgtkui | 555 } // namespace libgtkui |
| OLD | NEW |