123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146 |
- // Copyright 2021 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_GTK_COMPAT_H_
- #define UI_GTK_GTK_COMPAT_H_
- #include <gdk-pixbuf/gdk-pixbuf.h>
- #include <gdk/gdk.h>
- #include <gio/gio.h>
- #include <gtk/gtk.h>
- #include <gtk/gtkunixprint.h>
- #include "base/files/file_path.h"
- #include "base/version.h"
- #include "third_party/abseil-cpp/absl/types/optional.h"
- #include "ui/base/glib/scoped_gobject.h"
- #include "ui/gfx/geometry/insets.h"
- #include "ui/gtk/gtk_types.h"
- extern "C" {
- #include "ui/gtk/gdk.sigs"
- #include "ui/gtk/gdk_pixbuf.sigs"
- #include "ui/gtk/gio.sigs"
- #include "ui/gtk/gsk.sigs"
- #include "ui/gtk/gtk.sigs"
- }
- #define GDK_KEY_PRESS Do_not_use_GDK_KEY_PRESS_because_it_is_not_ABI_compatible
- #define GDK_KEY_RELEASE \
- Do_not_use_GDK_KEY_RELEASE_because_it_is_not_ABI_compatible
- using SkColor = uint32_t;
- namespace gtk {
- // Loads libgtk and related libraries and returns true on success.
- bool LoadGtk();
- const base::Version& GtkVersion();
- // Returns true iff the runtime version of Gtk used meets
- // |major|.|minor|.|micro|. LoadGtk() must have been called
- // prior to calling this function.
- bool GtkCheckVersion(uint32_t major, uint32_t minor = 0, uint32_t micro = 0);
- // The below functions replace GTK functions whose interface has
- // changed across versions, but whose (symbol) names have not.
- [[nodiscard]] bool GtkInitCheck(int* argc, char** argv);
- gfx::Insets GtkStyleContextGetPadding(GtkStyleContext* context);
- gfx::Insets GtkStyleContextGetBorder(GtkStyleContext* context);
- gfx::Insets GtkStyleContextGetMargin(GtkStyleContext* context);
- SkColor GtkStyleContextGetColor(GtkStyleContext* context);
- // Only available in Gtk3.
- SkColor GtkStyleContextGetBackgroundColor(GtkStyleContext* context);
- // Only available in Gtk3.
- absl::optional<SkColor> GtkStyleContextLookupColor(GtkStyleContext* context,
- const gchar* color_name);
- bool GtkImContextFilterKeypress(GtkIMContext* context, GdkEventKey* event);
- bool GtkFileChooserSetCurrentFolder(GtkFileChooser* dialog,
- const base::FilePath& path);
- void GtkRenderIcon(GtkStyleContext* context,
- cairo_t* cr,
- GdkPixbuf* pixbuf,
- GdkTexture* texture,
- double x,
- double y);
- GtkWidget* GtkToplevelWindowNew();
- void GtkCssProviderLoadFromData(GtkCssProvider* css_provider,
- const char* data,
- gssize length);
- ScopedGObject<GListModel> Gtk4FileChooserGetFiles(GtkFileChooser* dialog);
- ScopedGObject<GtkIconInfo> Gtk3IconThemeLookupByGiconForScale(
- GtkIconTheme* theme,
- GIcon* icon,
- int size,
- int scale,
- GtkIconLookupFlags flags);
- ScopedGObject<GtkIconPaintable> Gtk4IconThemeLookupByGicon(
- GtkIconTheme* theme,
- GIcon* icon,
- int size,
- int scale,
- GtkTextDirection direction,
- GtkIconLookupFlags flags);
- ScopedGObject<GtkIconPaintable> Gtk4IconThemeLookupIcon(
- GtkIconTheme* theme,
- const char* icon_name,
- const char* fallbacks[],
- int size,
- int scale,
- GtkTextDirection direction,
- GtkIconLookupFlags flags);
- // generate_stubs cannot forward to C-style variadic functions, so the
- // functions below wrap the corresponding GTK va_list functions.
- void GtkStyleContextGet(GtkStyleContext* context, ...);
- void GtkStyleContextGetStyle(GtkStyleContext* context, ...);
- // These variadic functions do not have corresponding va_list equivalents,
- // so instances with only a fixed set of arguments are provided.
- GtkWidget* GtkFileChooserDialogNew(const gchar* title,
- GtkWindow* parent,
- GtkFileChooserAction action,
- const gchar* first_button_text,
- GtkResponseType first_response,
- const gchar* second_button_text,
- GtkResponseType second_response);
- GtkTreeStore* GtkTreeStoreNew(GType type);
- // These functions have dropped "const" in their signatures, so cannot be
- // declared in *.sigs.
- GdkEventType GdkEventGetEventType(GdkEvent* event);
- guint32 GdkEventGetTime(GdkEvent* event);
- // Some enum values have changed between versions.
- GdkEventType GdkKeyPress();
- GdkEventType GdkKeyRelease();
- } // namespace gtk
- #endif // UI_GTK_GTK_COMPAT_H_
|