summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2021-06-27 21:22:04 +0100
committerCaolán McNamara <caolanm@redhat.com>2021-06-28 12:35:26 +0200
commitf8f0e4067b09d1d8b5aebc7b28db3b7565606b27 (patch)
treecc47ed90ca472eabd07b4fbdcb8503cb9cac8e1c
parent76bf22074a9bb5d6ef177783e5baa41760aa27e9 (diff)
gtk4: adapt to GtkCellRendererClass changes
Change-Id: Id5b52f9a3502cecfe693dadea6642dbed3a18aa2 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/117960 Tested-by: Caolán McNamara <caolanm@redhat.com> Reviewed-by: Caolán McNamara <caolanm@redhat.com>
-rw-r--r--vcl/unx/gtk3/customcellrenderer.cxx27
1 files changed, 23 insertions, 4 deletions
diff --git a/vcl/unx/gtk3/customcellrenderer.cxx b/vcl/unx/gtk3/customcellrenderer.cxx
index 69e2395df4de..7021f8be064c 100644
--- a/vcl/unx/gtk3/customcellrenderer.cxx
+++ b/vcl/unx/gtk3/customcellrenderer.cxx
@@ -79,11 +79,16 @@ static bool custom_cell_renderer_get_preferred_size(GtkCellRenderer* cell,
GtkOrientation orientation, gint* minimum_size,
gint* natural_size);
-#if !GTK_CHECK_VERSION(4, 0, 0)
+#if GTK_CHECK_VERSION(4, 0, 0)
+static void custom_cell_renderer_snapshot(GtkCellRenderer* cell, GtkSnapshot* snapshot,
+ GtkWidget* widget, const GdkRectangle* background_area,
+ const GdkRectangle* cell_area,
+ GtkCellRendererState flags);
+#endif
+
static void custom_cell_renderer_render(GtkCellRenderer* cell, cairo_t* cr, GtkWidget* widget,
const GdkRectangle* background_area,
const GdkRectangle* cell_area, GtkCellRendererState flags);
-#endif
static void custom_cell_renderer_finalize(GObject* object)
{
@@ -155,7 +160,9 @@ void custom_cell_renderer_class_init(CustomCellRendererClass* klass)
cell_class->get_preferred_height_for_width
= custom_cell_renderer_get_preferred_height_for_width;
-#if !GTK_CHECK_VERSION(4, 0, 0)
+#if GTK_CHECK_VERSION(4, 0, 0)
+ cell_class->snapshot = custom_cell_renderer_snapshot;
+#else
cell_class->render = custom_cell_renderer_render;
#endif
@@ -223,7 +230,6 @@ bool custom_cell_renderer_get_preferred_size(GtkCellRenderer* cell, GtkOrientati
return true;
}
-#if !GTK_CHECK_VERSION(4, 0, 0)
void custom_cell_renderer_render(GtkCellRenderer* cell, cairo_t* cr, GtkWidget* /*widget*/,
const GdkRectangle* /*background_area*/,
const GdkRectangle* cell_area, GtkCellRendererState flags)
@@ -271,6 +277,19 @@ void custom_cell_renderer_render(GtkCellRenderer* cell, cairo_t* cr, GtkWidget*
cairo_set_source_surface(cr, pSurface, cell_area->x, cell_area->y);
cairo_paint(cr);
}
+
+#if GTK_CHECK_VERSION(4, 0, 0)
+static void custom_cell_renderer_snapshot(GtkCellRenderer* cell, GtkSnapshot* snapshot,
+ GtkWidget* widget, const GdkRectangle* background_area,
+ const GdkRectangle* cell_area, GtkCellRendererState flags)
+{
+ graphene_rect_t rect = GRAPHENE_RECT_INIT(0.0f, 0.0f, static_cast<float>(cell_area->width),
+ static_cast<float>(cell_area->height));
+ cairo_t* cr = gtk_snapshot_append_cairo(GTK_SNAPSHOT(snapshot), &rect);
+ custom_cell_renderer_render(cell, cr, widget, background_area, cell_area, flags);
+ cairo_destroy(cr);
+}
+
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */