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

Unified Diff: chrome/browser/ui/libgtkui/native_theme_gtk3.cc

Issue 2628043002: Gtk3: Render a GtkHeaderBar as the background of the tab strip (Closed)
Patch Set: Created 3 years, 11 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 side-by-side diff with in-line comments
Download patch
Index: chrome/browser/ui/libgtkui/native_theme_gtk3.cc
diff --git a/chrome/browser/ui/libgtkui/native_theme_gtk3.cc b/chrome/browser/ui/libgtkui/native_theme_gtk3.cc
index 84de8bda62613352f85ba48c93b42de0a3952cfd..f901637b6f07f6485e11ee036d5d0f3f4928f4da 100644
--- a/chrome/browser/ui/libgtkui/native_theme_gtk3.cc
+++ b/chrome/browser/ui/libgtkui/native_theme_gtk3.cc
@@ -21,8 +21,7 @@ namespace {
void PaintWidget(SkCanvas* canvas,
const gfx::Rect& rect,
- const char* css_selector,
- GtkStateFlags state) {
+ GtkStyleContext* context) {
SkBitmap bitmap;
bitmap.allocN32Pixels(rect.width(), rect.height());
bitmap.eraseColor(0);
@@ -33,9 +32,6 @@ void PaintWidget(SkCanvas* canvas,
cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, rect.width()));
cairo_t* cr = cairo_create(surface);
- auto context = GetStyleContextFromCss(css_selector);
- gtk_style_context_set_state(context, state);
-
gtk_render_background(context, cr, 0, 0, rect.width(), rect.height());
gtk_render_frame(context, cr, 0, 0, rect.width(), rect.height());
cairo_destroy(cr);
@@ -338,7 +334,7 @@ void NativeThemeGtk3::PaintMenuPopupBackground(
SkCanvas* canvas,
const gfx::Size& size,
const MenuBackgroundExtraParams& menu_background) const {
- PaintWidget(canvas, gfx::Rect(size), "GtkMenu#menu", GTK_STATE_FLAG_NORMAL);
+ PaintWidget(canvas, gfx::Rect(size), GetStyleContextFromCss("GtkMenu#menu"));
}
void NativeThemeGtk3::PaintMenuItemBackground(
@@ -346,8 +342,23 @@ void NativeThemeGtk3::PaintMenuItemBackground(
State state,
const gfx::Rect& rect,
const MenuItemExtraParams& menu_item) const {
- PaintWidget(canvas, rect, "GtkMenu#menu GtkMenuItem#menuitem",
- StateToStateFlags(state));
+ auto context = GetStyleContextFromCss("GtkMenu#menu GtkMenuItem#menuitem");
+ gtk_style_context_set_state(context, StateToStateFlags(state));
+ PaintWidget(canvas, rect, context);
+}
+
+void NativeThemeGtk3::PaintFrameTopArea(
+ SkCanvas* canvas,
+ State state,
+ const gfx::Rect& rect,
+ const FrameTopAreaExtraParams& frame_top_area) const {
+ auto context = GetStyleContextFromCss("#headerbar.header-bar.titlebar");
+ RemoveBorders(context);
+ gtk_style_context_set_state(context,
+ frame_top_area.is_active
+ ? GTK_STATE_FLAG_NORMAL
+ : GTK_STATE_FLAG_BACKDROP);
+ PaintWidget(canvas, rect, context);
}
} // namespace libgtkui

Powered by Google App Engine
This is Rietveld 408576698