123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- // Copyright 2016 The Chromium Authors. All rights reserved.
- // Use of this source code is governed by a BSD-style license that can be
- // found in the LICENSE file.
- #ifndef UI_GTK_NATIVE_THEME_GTK_H_
- #define UI_GTK_NATIVE_THEME_GTK_H_
- #include "base/callback_list.h"
- #include "base/no_destructor.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/base/glib/glib_signal.h"
- #include "ui/base/glib/scoped_gobject.h"
- #include "ui/native_theme/native_theme_base.h"
- typedef struct _GtkCssProvider GtkCssProvider;
- typedef struct _GtkParamSpec GtkParamSpec;
- typedef struct _GtkSettings GtkSettings;
- namespace gtk {
- using ScopedCssProvider = ScopedGObject<GtkCssProvider>;
- // A version of NativeTheme that uses GTK-rendered widgets.
- class NativeThemeGtk : public ui::NativeThemeBase {
- public:
- static NativeThemeGtk* instance();
- NativeThemeGtk(const NativeThemeGtk&) = delete;
- NativeThemeGtk& operator=(const NativeThemeGtk&) = delete;
- // ui::NativeThemeBase:
- void PaintMenuPopupBackground(
- cc::PaintCanvas* canvas,
- const ui::ColorProvider* color_provider,
- const gfx::Size& size,
- const MenuBackgroundExtraParams& menu_background,
- ColorScheme color_scheme) const override;
- void PaintMenuSeparator(
- cc::PaintCanvas* canvas,
- const ui::ColorProvider* color_provider,
- State state,
- const gfx::Rect& rect,
- const MenuSeparatorExtraParams& menu_separator) const override;
- void PaintMenuItemBackground(cc::PaintCanvas* canvas,
- const ui::ColorProvider* color_provider,
- State state,
- const gfx::Rect& rect,
- const MenuItemExtraParams& menu_item,
- ColorScheme color_scheme) const override;
- void PaintFrameTopArea(cc::PaintCanvas* canvas,
- State state,
- const gfx::Rect& rect,
- const FrameTopAreaExtraParams& frame_top_area,
- ColorScheme color_scheme) const override;
- void NotifyOnNativeThemeUpdated() override;
- void OnThemeChanged(GtkSettings* settings, GtkParamSpec* param);
- private:
- friend class base::NoDestructor<NativeThemeGtk>;
- NativeThemeGtk();
- ~NativeThemeGtk() override;
- void SetThemeCssOverride(ScopedCssProvider provider);
- ScopedCssProvider theme_css_override_;
- };
- } // namespace gtk
- #endif // UI_GTK_NATIVE_THEME_GTK_H_
|