From 60dafebd91cd9ef446238b1e970b34ead452c2ab Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Sat, 8 Oct 2022 09:22:26 -0400 Subject: [PATCH] Deprecate gtk_snapshot_render apis Move the implementations from gtksnapshot.c to gtk/deprecated/gtkrender.c and deprecated these functions. We want to get rid of them. These functions are still used in some of our widgetry, so use G_GNUC_BEGIN/END_IGNORE_DEPRECATIONS around them. --- gtk/deprecated/gtkcellarea.c | 2 +- gtk/deprecated/gtkcellrendererprogress.c | 2 +- gtk/deprecated/gtkcellrenderertext.c | 2 +- gtk/deprecated/gtkcellrenderertoggle.c | 2 +- gtk/deprecated/gtkiconview.c | 8 +- gtk/deprecated/gtkrender.c | 425 +++++++++++++++++++++++ gtk/deprecated/gtkrender.h | 38 ++ gtk/deprecated/gtktreeview.c | 2 +- gtk/gtkflowbox.c | 4 +- gtk/gtkglarea.c | 3 + gtk/gtkinscription.c | 4 +- gtk/gtklabel.c | 4 +- gtk/gtkpopover.c | 4 +- gtk/gtkprintunixdialog.c | 5 + gtk/gtkscrolledwindow.c | 8 +- gtk/gtksnapshot.c | 147 -------- gtk/gtksnapshot.h | 37 -- gtk/gtkstylecontext.c | 267 +------------- gtk/gtktext.c | 9 +- gtk/gtktextlayout.c | 2 + gtk/gtktextutil.c | 5 + gtk/gtktextview.c | 3 + 22 files changed, 521 insertions(+), 462 deletions(-) diff --git a/gtk/deprecated/gtkcellarea.c b/gtk/deprecated/gtkcellarea.c index 7f8d9c88b4..992172ef80 100644 --- a/gtk/deprecated/gtkcellarea.c +++ b/gtk/deprecated/gtkcellarea.c @@ -348,7 +348,7 @@ #include "deprecated/gtkcellareacontext.h" #include "gtkmarshalers.h" #include "gtkprivate.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontext.h" #include "gtknative.h" diff --git a/gtk/deprecated/gtkcellrendererprogress.c b/gtk/deprecated/gtkcellrendererprogress.c index be8c6edaad..9ecb3c792b 100644 --- a/gtk/deprecated/gtkcellrendererprogress.c +++ b/gtk/deprecated/gtkcellrendererprogress.c @@ -30,7 +30,7 @@ #include #include "gtkorientable.h" #include "gtkprivate.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontext.h" G_GNUC_BEGIN_IGNORE_DEPRECATIONS diff --git a/gtk/deprecated/gtkcellrenderertext.c b/gtk/deprecated/gtkcellrenderertext.c index 579c450c1d..6de4ac1e21 100644 --- a/gtk/deprecated/gtkcellrenderertext.c +++ b/gtk/deprecated/gtkcellrenderertext.c @@ -26,7 +26,7 @@ #include "gtkmarshalers.h" #include "gtkprivate.h" #include "gtksizerequest.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontextprivate.h" #include "deprecated/gtktreeprivate.h" diff --git a/gtk/deprecated/gtkcellrenderertoggle.c b/gtk/deprecated/gtkcellrenderertoggle.c index 2dd6cd0d03..4586c1646f 100644 --- a/gtk/deprecated/gtkcellrenderertoggle.c +++ b/gtk/deprecated/gtkcellrenderertoggle.c @@ -24,7 +24,7 @@ #include "gtkmarshalers.h" #include "gtkprivate.h" #include "gtkrendericonprivate.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontextprivate.h" #include "gtkwidgetprivate.h" #include "deprecated/gtktreeprivate.h" diff --git a/gtk/deprecated/gtkiconview.c b/gtk/deprecated/gtkiconview.c index 0e4e31933c..6fc5ff41f5 100644 --- a/gtk/deprecated/gtkiconview.c +++ b/gtk/deprecated/gtkiconview.c @@ -34,7 +34,7 @@ #include "gtkprivate.h" #include "gtkscrollable.h" #include "gtksizerequest.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontextprivate.h" #include "gtktreednd.h" #include "gtktypebuiltins.h" @@ -1712,9 +1712,11 @@ gtk_icon_view_snapshot (GtkWidget *widget, gtk_style_context_save_to_node (context, icon_view->priv->dndnode); gtk_style_context_set_state (context, gtk_style_context_get_state (context) | GTK_STATE_FLAG_DROP_ACTIVE); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_frame (snapshot, context, rect.x, rect.y, rect.width, rect.height); +G_GNUC_END_IGNORE_DEPRECATIONS gtk_style_context_restore (context); } @@ -2834,6 +2836,7 @@ gtk_icon_view_snapshot_item (GtkIconView *icon_view, gtk_style_context_set_state (style_context, state); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (snapshot, style_context, x - priv->item_padding, y - priv->item_padding, @@ -2844,6 +2847,7 @@ gtk_icon_view_snapshot_item (GtkIconView *icon_view, y - priv->item_padding, item->cell_area.width + priv->item_padding * 2, item->cell_area.height + priv->item_padding * 2); +G_GNUC_END_IGNORE_DEPRECATIONS cell_area.x = x; cell_area.y = y; @@ -2875,12 +2879,14 @@ gtk_icon_view_snapshot_rubberband (GtkIconView *icon_view, gtk_style_context_save_to_node (context, priv->rubberband_node); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (snapshot, context, rect.x, rect.y, rect.width, rect.height); gtk_snapshot_render_frame (snapshot, context, rect.x, rect.y, rect.width, rect.height); +G_GNUC_END_IGNORE_DEPRECATIONS gtk_style_context_restore (context); } diff --git a/gtk/deprecated/gtkrender.c b/gtk/deprecated/gtkrender.c index 0afc1df189..3256c03908 100644 --- a/gtk/deprecated/gtkrender.c +++ b/gtk/deprecated/gtkrender.c @@ -28,7 +28,10 @@ #include "gtkcssshadowvalueprivate.h" #include "gtkcsstransformvalueprivate.h" #include "gtkrendericonprivate.h" +#include "gtkrenderborderprivate.h" +#include "gtkrenderbackgroundprivate.h" #include "gtkstylecontextprivate.h" +#include "gtksettings.h" #include "gsk/gskroundedrectprivate.h" #include @@ -539,3 +542,425 @@ gtk_render_icon (GtkStyleContext *context, gsk_render_node_draw (node, cr); cairo_restore (cr); } + + +/** + * gtk_snapshot_render_background: + * @snapshot: a `GtkSnapshot` + * @context: the style context that defines the background + * @x: X origin of the rectangle + * @y: Y origin of the rectangle + * @width: rectangle width + * @height: rectangle height + * + * Creates a render node for the CSS background according to @context, + * and appends it to the current node of @snapshot, without changing + * the current node. + * + * Deprecated: 4.10 + */ +void +gtk_snapshot_render_background (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + double width, + double height) +{ + GtkCssBoxes boxes; + + g_return_if_fail (snapshot != NULL); + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + + gtk_css_boxes_init_border_box (&boxes, + gtk_style_context_lookup_style (context), + x, y, width, height); + gtk_css_style_snapshot_background (&boxes, snapshot); +} + +/** + * gtk_snapshot_render_frame: + * @snapshot: a `GtkSnapshot` + * @context: the style context that defines the frame + * @x: X origin of the rectangle + * @y: Y origin of the rectangle + * @width: rectangle width + * @height: rectangle height + * + * Creates a render node for the CSS border according to @context, + * and appends it to the current node of @snapshot, without changing + * the current node. + * + * Deprecated: 4.10 + */ +void +gtk_snapshot_render_frame (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + double width, + double height) +{ + GtkCssBoxes boxes; + + g_return_if_fail (snapshot != NULL); + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + + gtk_css_boxes_init_border_box (&boxes, + gtk_style_context_lookup_style (context), + x, y, width, height); + gtk_css_style_snapshot_border (&boxes, snapshot); +} + +/** + * gtk_snapshot_render_focus: + * @snapshot: a `GtkSnapshot` + * @context: the style context that defines the focus ring + * @x: X origin of the rectangle + * @y: Y origin of the rectangle + * @width: rectangle width + * @height: rectangle height + * + * Creates a render node for the focus outline according to @context, + * and appends it to the current node of @snapshot, without changing + * the current node. + * + * Deprecated: 4.10 + */ +void +gtk_snapshot_render_focus (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + double width, + double height) +{ + GtkCssBoxes boxes; + + g_return_if_fail (snapshot != NULL); + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + + gtk_css_boxes_init_border_box (&boxes, + gtk_style_context_lookup_style (context), + x, y, width, height); + gtk_css_style_snapshot_outline (&boxes, snapshot); +} + +/** + * gtk_snapshot_render_layout: + * @snapshot: a `GtkSnapshot` + * @context: the style context that defines the text + * @x: X origin of the rectangle + * @y: Y origin of the rectangle + * @layout: the `PangoLayout` to render + * + * Creates a render node for rendering @layout according to the style + * information in @context, and appends it to the current node of @snapshot, + * without changing the current node. + * + * Deprecated: 4.10 + */ +void +gtk_snapshot_render_layout (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + PangoLayout *layout) +{ + const bool needs_translate = (x != 0 || y != 0); + const GdkRGBA *fg_color; + GtkCssValue *shadows_value; + gboolean has_shadow; + + g_return_if_fail (snapshot != NULL); + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + g_return_if_fail (PANGO_IS_LAYOUT (layout)); + + if (needs_translate) + { + gtk_snapshot_save (snapshot); + gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, y)); + } + + fg_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)); + + shadows_value = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_TEXT_SHADOW); + has_shadow = gtk_css_shadow_value_push_snapshot (shadows_value, snapshot); + + gtk_snapshot_append_layout (snapshot, layout, fg_color); + + if (has_shadow) + gtk_snapshot_pop (snapshot); + + if (needs_translate) + gtk_snapshot_restore (snapshot); +} + +static void +draw_insertion_cursor (GtkStyleContext *context, + cairo_t *cr, + double x, + double y, + double width, + double height, + double aspect_ratio, + gboolean is_primary, + PangoDirection direction, + gboolean draw_arrow) +{ + GdkRGBA primary_color; + GdkRGBA secondary_color; + int stem_width; + double angle; + double dx, dy; + double xx1, yy1, xx2, yy2; + + cairo_save (cr); + cairo_new_path (cr); + + _gtk_style_context_get_cursor_color (context, &primary_color, &secondary_color); + gdk_cairo_set_source_rgba (cr, is_primary ? &primary_color : &secondary_color); + + stem_width = height * aspect_ratio + 1; + + yy1 = y; + yy2 = y + height; + + if (width < 0) + { + xx1 = x; + xx2 = x - width; + } + else + { + xx1 = x + width; + xx2 = x; + } + + angle = atan2 (height, width); + + dx = (stem_width/2.0) * cos (M_PI/2 - angle); + dy = (stem_width/2.0) * sin (M_PI/2 - angle); + + if (draw_arrow) + { + if (direction == PANGO_DIRECTION_RTL) + { + double x0, y0, x1, y1, x2, y2; + + x0 = xx2 - dx + 2 * dy; + y0 = yy2 - dy - 2 * dx; + + x1 = x0 + 4 * dy; + y1 = y0 - 4 * dx; + x2 = x0 + 2 * dy - 3 * dx; + y2 = y0 - 2 * dx - 3 * dy; + + cairo_move_to (cr, xx1 + dx, yy1 + dy); + cairo_line_to (cr, xx2 + dx, yy2 + dy); + cairo_line_to (cr, x2, y2); + cairo_line_to (cr, x1, y1); + cairo_line_to (cr, xx1 - dx, yy1 - dy); + } + else if (direction == PANGO_DIRECTION_LTR) + { + double x0, y0, x1, y1, x2, y2; + + x0 = xx2 + dx + 2 * dy; + y0 = yy2 + dy - 2 * dx; + + x1 = x0 + 4 * dy; + y1 = y0 - 4 * dx; + x2 = x0 + 2 * dy + 3 * dx; + y2 = y0 - 2 * dx + 3 * dy; + + cairo_move_to (cr, xx1 - dx, yy1 - dy); + cairo_line_to (cr, xx2 - dx, yy2 - dy); + cairo_line_to (cr, x2, y2); + cairo_line_to (cr, x1, y1); + cairo_line_to (cr, xx1 + dx, yy1 + dy); + } + else + g_assert_not_reached(); + } + else + { + cairo_move_to (cr, xx1 + dx, yy1 + dy); + cairo_line_to (cr, xx2 + dx, yy2 + dy); + cairo_line_to (cr, xx2 - dx, yy2 - dy); + cairo_line_to (cr, xx1 - dx, yy1 - dy); + } + + cairo_fill (cr); + + cairo_restore (cr); +} + +static void +get_insertion_cursor_bounds (double width, + double height, + double aspect_ratio, + PangoDirection direction, + gboolean draw_arrow, + graphene_rect_t *bounds) +{ + int stem_width; + + if (width < 0) + width = - width; + + stem_width = height * aspect_ratio + 1; + + graphene_rect_init (bounds, + - 2 * stem_width, - stem_width, + width + 4 * stem_width, height + 2 * stem_width); +} + +static void +snapshot_insertion_cursor (GtkSnapshot *snapshot, + GtkStyleContext *context, + double width, + double height, + double aspect_ratio, + gboolean is_primary, + PangoDirection direction, + gboolean draw_arrow) +{ + if (width != 0 || draw_arrow) + { + cairo_t *cr; + graphene_rect_t bounds; + + get_insertion_cursor_bounds (width, height, aspect_ratio, direction, draw_arrow, &bounds); + cr = gtk_snapshot_append_cairo (snapshot, &bounds); + + draw_insertion_cursor (context, cr, 0, 0, width, height, aspect_ratio, is_primary, direction, draw_arrow); + + cairo_destroy (cr); + } + else + { + GdkRGBA primary_color; + GdkRGBA secondary_color; + int stem_width; + int offset; + + _gtk_style_context_get_cursor_color (context, &primary_color, &secondary_color); + + stem_width = height * aspect_ratio + 1; + + /* put (stem_width % 2) on the proper side of the cursor */ + if (direction == PANGO_DIRECTION_LTR) + offset = stem_width / 2; + else + offset = stem_width - stem_width / 2; + + gtk_snapshot_append_color (snapshot, + is_primary ? &primary_color : &secondary_color, + &GRAPHENE_RECT_INIT (- offset, 0, stem_width, height)); + } +} + +/** + * gtk_snapshot_render_insertion_cursor: + * @snapshot: snapshot to render to + * @context: a `GtkStyleContext` + * @x: X origin + * @y: Y origin + * @layout: the `PangoLayout` of the text + * @index: the index in the `PangoLayout` + * @direction: the `PangoDirection` of the text + * + * Draws a text caret using @snapshot at the specified index of @layout. + * + * Deprecated: 4.10 + */ +void +gtk_snapshot_render_insertion_cursor (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + PangoLayout *layout, + int index, + PangoDirection direction) +{ + GdkDisplay *display; + gboolean split_cursor; + double aspect_ratio; + PangoRectangle strong_pos, weak_pos; + PangoRectangle *cursor1, *cursor2; + GdkSeat *seat; + PangoDirection keyboard_direction; + PangoDirection direction2; + + g_return_if_fail (snapshot != NULL); + g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); + g_return_if_fail (PANGO_IS_LAYOUT (layout)); + g_return_if_fail (index >= 0); + + display = gtk_style_context_get_display (context); + + g_object_get (gtk_settings_get_for_display (display), + "gtk-split-cursor", &split_cursor, + "gtk-cursor-aspect-ratio", &aspect_ratio, + NULL); + + keyboard_direction = PANGO_DIRECTION_LTR; + seat = gdk_display_get_default_seat (display); + if (seat) + { + GdkDevice *keyboard = gdk_seat_get_keyboard (seat); + + if (keyboard) + keyboard_direction = gdk_device_get_direction (keyboard); + } + + pango_layout_get_caret_pos (layout, index, &strong_pos, &weak_pos); + + direction2 = PANGO_DIRECTION_NEUTRAL; + + if (split_cursor) + { + cursor1 = &strong_pos; + + if (strong_pos.x != weak_pos.x || strong_pos.y != weak_pos.y) + { + direction2 = (direction == PANGO_DIRECTION_LTR) ? PANGO_DIRECTION_RTL : PANGO_DIRECTION_LTR; + cursor2 = &weak_pos; + } + } + else + { + if (keyboard_direction == direction) + cursor1 = &strong_pos; + else + cursor1 = &weak_pos; + } + + gtk_snapshot_save (snapshot); + gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x + PANGO_PIXELS (MIN (cursor1->x, cursor1->x + cursor1->width)), y + PANGO_PIXELS (cursor1->y))); + snapshot_insertion_cursor (snapshot, + context, + PANGO_PIXELS (cursor1->width), + PANGO_PIXELS (cursor1->height), + aspect_ratio, + TRUE, + direction, + direction2 != PANGO_DIRECTION_NEUTRAL); + gtk_snapshot_restore (snapshot); + + if (direction2 != PANGO_DIRECTION_NEUTRAL) + { + gtk_snapshot_save (snapshot); + gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x + PANGO_PIXELS (MIN (cursor2->x, cursor2->x + cursor2->width)), y + PANGO_PIXELS (cursor2->y))); + snapshot_insertion_cursor (snapshot, + context, + PANGO_PIXELS (cursor2->width), + PANGO_PIXELS (cursor2->height), + aspect_ratio, + FALSE, + direction2, + TRUE); + gtk_snapshot_restore (snapshot); + } +} diff --git a/gtk/deprecated/gtkrender.h b/gtk/deprecated/gtkrender.h index 27fa4847eb..0ccf6248ae 100644 --- a/gtk/deprecated/gtkrender.h +++ b/gtk/deprecated/gtkrender.h @@ -28,6 +28,7 @@ #include #include +#include G_BEGIN_DECLS @@ -114,6 +115,43 @@ void gtk_render_icon (GtkStyleContext *context, GdkTexture *texture, double x, double y); + +GDK_DEPRECATED_IN_4_10 +void gtk_snapshot_render_background (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + double width, + double height); +GDK_DEPRECATED_IN_4_10 +void gtk_snapshot_render_frame (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + double width, + double height); +GDK_DEPRECATED_IN_4_10 +void gtk_snapshot_render_focus (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + double width, + double height); +GDK_DEPRECATED_IN_4_10 +void gtk_snapshot_render_layout (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + PangoLayout *layout); +GDK_DEPRECATED_IN_4_10 +void gtk_snapshot_render_insertion_cursor (GtkSnapshot *snapshot, + GtkStyleContext *context, + double x, + double y, + PangoLayout *layout, + int index, + PangoDirection direction); + G_END_DECLS #endif /* __GTK_RENDER_H__ */ diff --git a/gtk/deprecated/gtktreeview.c b/gtk/deprecated/gtktreeview.c index 5403754579..201db8cba8 100644 --- a/gtk/deprecated/gtktreeview.c +++ b/gtk/deprecated/gtktreeview.c @@ -51,7 +51,7 @@ #include "gtkscrollable.h" #include "gtksettingsprivate.h" #include "gtkshortcutcontroller.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontextprivate.h" #include "gtktooltip.h" #include "gtktreednd.h" diff --git a/gtk/gtkflowbox.c b/gtk/gtkflowbox.c index 786502ee9e..6676d4c6b8 100644 --- a/gtk/gtkflowbox.c +++ b/gtk/gtkflowbox.c @@ -97,7 +97,7 @@ #include "gtkorientable.h" #include "gtkprivate.h" #include "gtksizerequest.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontextprivate.h" #include "gtktypebuiltins.h" #include "gtkviewport.h" @@ -2586,7 +2586,9 @@ gtk_flow_box_snapshot (GtkWidget *widget, cairo_clip (cr); bg_snapshot = gtk_snapshot_new (); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (bg_snapshot, context, x, y, width, height); +G_GNUC_END_IGNORE_DEPRECATIONS node = gtk_snapshot_free_to_node (bg_snapshot); if (node) { diff --git a/gtk/gtkglarea.c b/gtk/gtkglarea.c index 92016afe98..2810ed0c1a 100644 --- a/gtk/gtkglarea.c +++ b/gtk/gtkglarea.c @@ -29,6 +29,7 @@ #include "gtksnapshot.h" #include "gtknative.h" #include "gtkwidgetprivate.h" +#include "deprecated/gtkrender.h" #include @@ -659,10 +660,12 @@ gtk_gl_area_draw_error_screen (GtkGLArea *area, pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER); pango_layout_get_pixel_size (layout, NULL, &layout_height); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_layout (snapshot, gtk_widget_get_style_context (GTK_WIDGET (area)), 0, (height - layout_height) / 2, layout); +G_GNUC_END_IGNORE_DEPRECATIONS g_object_unref (layout); } diff --git a/gtk/gtkinscription.c b/gtk/gtkinscription.c index 598c6600c0..d689fc989f 100644 --- a/gtk/gtkinscription.c +++ b/gtk/gtkinscription.c @@ -24,7 +24,7 @@ #include "gtkcssnodeprivate.h" #include "gtkcssstylechangeprivate.h" #include "gtkpangoprivate.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtktypebuiltins.h" #include "gtkwidgetprivate.h" @@ -520,7 +520,9 @@ gtk_inscription_snapshot (GtkWidget *widget, gtk_snapshot_push_clip (snapshot, &GRAPHENE_RECT_INIT(0, 0, gtk_widget_get_width (widget), gtk_widget_get_height (widget))); gtk_inscription_get_layout_location (self, &lx, &ly); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_layout (snapshot, context, lx, ly, self->layout); +G_GNUC_END_IGNORE_DEPRECATIONS gtk_snapshot_pop (snapshot); } diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c index 9e2ce06cd6..586aad8cd9 100644 --- a/gtk/gtklabel.c +++ b/gtk/gtklabel.c @@ -41,7 +41,7 @@ #include "gtkshortcutcontroller.h" #include "gtkshortcuttrigger.h" #include "gtkshow.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontextprivate.h" #include "gtktextutilprivate.h" #include "gtktooltip.h" @@ -1382,6 +1382,7 @@ gtk_label_snapshot (GtkWidget *widget, int lx, ly; int width, height; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS if (!self->text || (*self->text == '\0')) return; @@ -1492,6 +1493,7 @@ gtk_label_snapshot (GtkWidget *widget, gtk_style_context_restore (context); } } +G_GNUC_END_IGNORE_DEPRECATIONS } static GtkSizeRequestMode diff --git a/gtk/gtkpopover.c b/gtk/gtkpopover.c index c1409817fe..f9f92d7ea1 100644 --- a/gtk/gtkpopover.c +++ b/gtk/gtkpopover.c @@ -118,7 +118,7 @@ #include "gdk/gdkeventsprivate.h" #include "gtkpointerfocusprivate.h" #include "gtkcsscolorvalueprivate.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkshortcutmanager.h" #include "gtkbuildable.h" #include "gtktooltipprivate.h" @@ -1572,11 +1572,13 @@ create_arrow_render_node (GtkPopover *popover) /* Render the arrow background */ bg_snapshot = gtk_snapshot_new (); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (bg_snapshot, context, 0, 0, gtk_widget_get_width (widget), gtk_widget_get_height (widget)); +G_GNUC_END_IGNORE_DEPRECATIONS node = gtk_snapshot_free_to_node (bg_snapshot); if (node) { diff --git a/gtk/gtkprintunixdialog.c b/gtk/gtkprintunixdialog.c index 95037be452..575b2091bd 100644 --- a/gtk/gtkprintunixdialog.c +++ b/gtk/gtkprintunixdialog.c @@ -46,6 +46,7 @@ #include "gtkbuildable.h" #include "gtkmessagedialog.h" #include "gtkbutton.h" +#include "deprecated/gtkrender.h" #include #include "gtkprivate.h" #include "gtktypebuiltins.h" @@ -1964,8 +1965,10 @@ paint_page (GtkPrintUnixDialog *dialog, gtk_style_context_save_to_node (context, dialog->collate_paper_node); snapshot = gtk_snapshot_new (); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (snapshot, context, x, y, width, height); gtk_snapshot_render_frame (snapshot, context, x, y, width, height); +G_GNUC_END_IGNORE_DEPRECATIONS node = gtk_snapshot_free_to_node (snapshot); if (node) { @@ -2498,8 +2501,10 @@ draw_page (GtkDrawingArea *da, cairo_translate (cr, pos_x, pos_y); snapshot = gtk_snapshot_new (); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (snapshot, context, 1, 1, w, h); gtk_snapshot_render_frame (snapshot, context, 1, 1, w, h); +G_GNUC_END_IGNORE_DEPRECATIONS node = gtk_snapshot_free_to_node (snapshot); if (node) { diff --git a/gtk/gtkscrolledwindow.c b/gtk/gtkscrolledwindow.c index bf581109a0..a8c9b3600e 100644 --- a/gtk/gtkscrolledwindow.c +++ b/gtk/gtkscrolledwindow.c @@ -47,7 +47,7 @@ #include "gtkscrollable.h" #include "gtkscrollbar.h" #include "gtksettingsprivate.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontextprivate.h" #include "gtktypebuiltins.h" #include "gtkviewport.h" @@ -1885,12 +1885,14 @@ gtk_scrolled_window_snapshot_scrollbars_junction (GtkScrolledWindow *scrolled_wi context = gtk_widget_get_style_context (widget); gtk_style_context_save_to_node (context, priv->junction_node); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (snapshot, context, junction_rect.x, junction_rect.y, junction_rect.width, junction_rect.height); gtk_snapshot_render_frame (snapshot, context, junction_rect.x, junction_rect.y, junction_rect.width, junction_rect.height); +G_GNUC_END_IGNORE_DEPRECATIONS gtk_style_context_restore (context); } @@ -1905,6 +1907,7 @@ gtk_scrolled_window_snapshot_overshoot (GtkScrolledWindow *scrolled_window, GtkStyleContext *context; GdkRectangle rect; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS if (!_gtk_scrolled_window_get_overshoot (scrolled_window, &overshoot_x, &overshoot_y)) return; @@ -1943,6 +1946,7 @@ gtk_scrolled_window_snapshot_overshoot (GtkScrolledWindow *scrolled_window, gtk_snapshot_render_frame (snapshot, context, rect.x, rect.y, rect.width, -overshoot_y); gtk_style_context_restore (context); } +G_GNUC_END_IGNORE_DEPRECATIONS } static void @@ -1955,6 +1959,7 @@ gtk_scrolled_window_snapshot_undershoot (GtkScrolledWindow *scrolled_window, GdkRectangle rect; GtkAdjustment *adj; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS context = gtk_widget_get_style_context (widget); gtk_scrolled_window_inner_allocation (scrolled_window, &rect); @@ -1990,6 +1995,7 @@ gtk_scrolled_window_snapshot_undershoot (GtkScrolledWindow *scrolled_window, gtk_snapshot_render_frame (snapshot, context, rect.x, rect.y, rect.width, UNDERSHOOT_SIZE); gtk_style_context_restore (context); } +G_GNUC_END_IGNORE_DEPRECATIONS } static void diff --git a/gtk/gtksnapshot.c b/gtk/gtksnapshot.c index f3902fa376..90cbbb8833 100644 --- a/gtk/gtksnapshot.c +++ b/gtk/gtksnapshot.c @@ -23,9 +23,6 @@ #include "gtkcsscolorvalueprivate.h" #include "gtkcssshadowvalueprivate.h" #include "gtkdebug.h" -#include "gtkrenderbackgroundprivate.h" -#include "gtkrenderborderprivate.h" -#include "gtkrendericonprivate.h" #include "gtkrendernodepaintableprivate.h" #include "gtkstylecontextprivate.h" #include "gsktransformprivate.h" @@ -1977,150 +1974,6 @@ gtk_snapshot_append_color (GtkSnapshot *snapshot, gtk_snapshot_append_node_internal (snapshot, node); } -/** - * gtk_snapshot_render_background: - * @snapshot: a `GtkSnapshot` - * @context: the style context that defines the background - * @x: X origin of the rectangle - * @y: Y origin of the rectangle - * @width: rectangle width - * @height: rectangle height - * - * Creates a render node for the CSS background according to @context, - * and appends it to the current node of @snapshot, without changing - * the current node. - */ -void -gtk_snapshot_render_background (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - double width, - double height) -{ - GtkCssBoxes boxes; - - g_return_if_fail (snapshot != NULL); - g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); - - gtk_css_boxes_init_border_box (&boxes, - gtk_style_context_lookup_style (context), - x, y, width, height); - gtk_css_style_snapshot_background (&boxes, snapshot); -} - -/** - * gtk_snapshot_render_frame: - * @snapshot: a `GtkSnapshot` - * @context: the style context that defines the frame - * @x: X origin of the rectangle - * @y: Y origin of the rectangle - * @width: rectangle width - * @height: rectangle height - * - * Creates a render node for the CSS border according to @context, - * and appends it to the current node of @snapshot, without changing - * the current node. - */ -void -gtk_snapshot_render_frame (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - double width, - double height) -{ - GtkCssBoxes boxes; - - g_return_if_fail (snapshot != NULL); - g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); - - gtk_css_boxes_init_border_box (&boxes, - gtk_style_context_lookup_style (context), - x, y, width, height); - gtk_css_style_snapshot_border (&boxes, snapshot); -} - -/** - * gtk_snapshot_render_focus: - * @snapshot: a `GtkSnapshot` - * @context: the style context that defines the focus ring - * @x: X origin of the rectangle - * @y: Y origin of the rectangle - * @width: rectangle width - * @height: rectangle height - * - * Creates a render node for the focus outline according to @context, - * and appends it to the current node of @snapshot, without changing - * the current node. - */ -void -gtk_snapshot_render_focus (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - double width, - double height) -{ - GtkCssBoxes boxes; - - g_return_if_fail (snapshot != NULL); - g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); - - gtk_css_boxes_init_border_box (&boxes, - gtk_style_context_lookup_style (context), - x, y, width, height); - gtk_css_style_snapshot_outline (&boxes, snapshot); -} - -/** - * gtk_snapshot_render_layout: - * @snapshot: a `GtkSnapshot` - * @context: the style context that defines the text - * @x: X origin of the rectangle - * @y: Y origin of the rectangle - * @layout: the `PangoLayout` to render - * - * Creates a render node for rendering @layout according to the style - * information in @context, and appends it to the current node of @snapshot, - * without changing the current node. - */ -void -gtk_snapshot_render_layout (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - PangoLayout *layout) -{ - const bool needs_translate = (x != 0 || y != 0); - const GdkRGBA *fg_color; - GtkCssValue *shadows_value; - gboolean has_shadow; - - g_return_if_fail (snapshot != NULL); - g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); - g_return_if_fail (PANGO_IS_LAYOUT (layout)); - - if (needs_translate) - { - gtk_snapshot_save (snapshot); - gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x, y)); - } - - fg_color = gtk_css_color_value_get_rgba (_gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_COLOR)); - - shadows_value = _gtk_style_context_peek_property (context, GTK_CSS_PROPERTY_TEXT_SHADOW); - has_shadow = gtk_css_shadow_value_push_snapshot (shadows_value, snapshot); - - gtk_snapshot_append_layout (snapshot, layout, fg_color); - - if (has_shadow) - gtk_snapshot_pop (snapshot); - - if (needs_translate) - gtk_snapshot_restore (snapshot); -} - void gtk_snapshot_append_text (GtkSnapshot *snapshot, PangoFont *font, diff --git a/gtk/gtksnapshot.h b/gtk/gtksnapshot.h index 6125e44ecc..38cc0271aa 100644 --- a/gtk/gtksnapshot.h +++ b/gtk/gtksnapshot.h @@ -225,43 +225,6 @@ void gtk_snapshot_append_layout (GtkSnapshot const GdkRGBA *color); -GDK_AVAILABLE_IN_ALL -void gtk_snapshot_render_background (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - double width, - double height); -GDK_AVAILABLE_IN_ALL -void gtk_snapshot_render_frame (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - double width, - double height); -GDK_AVAILABLE_IN_ALL -void gtk_snapshot_render_focus (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - double width, - double height); -GDK_AVAILABLE_IN_ALL -void gtk_snapshot_render_layout (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - PangoLayout *layout); -GDK_AVAILABLE_IN_ALL /* in gtkstylecontext.c */ -void gtk_snapshot_render_insertion_cursor (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - PangoLayout *layout, - int index, - PangoDirection direction); - - G_END_DECLS #endif /* __GTK_SNAPSHOT_H__ */ diff --git a/gtk/gtkstylecontext.c b/gtk/gtkstylecontext.c index 90c2b846b0..18c90bf0d9 100644 --- a/gtk/gtkstylecontext.c +++ b/gtk/gtkstylecontext.c @@ -28,7 +28,7 @@ #include "gtkprivate.h" #include "gtksettings.h" #include "gtksettingsprivate.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" /** @@ -949,271 +949,6 @@ _gtk_style_context_get_cursor_color (GtkStyleContext *context, *secondary_color = *gtk_css_color_value_get_rgba (style->font->secondary_caret_color ? style->font->secondary_caret_color : style->core->color); } -static void -draw_insertion_cursor (GtkStyleContext *context, - cairo_t *cr, - double x, - double y, - double width, - double height, - double aspect_ratio, - gboolean is_primary, - PangoDirection direction, - gboolean draw_arrow) -{ - GdkRGBA primary_color; - GdkRGBA secondary_color; - int stem_width; - double angle; - double dx, dy; - double xx1, yy1, xx2, yy2; - - cairo_save (cr); - cairo_new_path (cr); - - _gtk_style_context_get_cursor_color (context, &primary_color, &secondary_color); - gdk_cairo_set_source_rgba (cr, is_primary ? &primary_color : &secondary_color); - - stem_width = height * aspect_ratio + 1; - - yy1 = y; - yy2 = y + height; - - if (width < 0) - { - xx1 = x; - xx2 = x - width; - } - else - { - xx1 = x + width; - xx2 = x; - } - - angle = atan2 (height, width); - - dx = (stem_width/2.0) * cos (M_PI/2 - angle); - dy = (stem_width/2.0) * sin (M_PI/2 - angle); - - if (draw_arrow) - { - if (direction == PANGO_DIRECTION_RTL) - { - double x0, y0, x1, y1, x2, y2; - - x0 = xx2 - dx + 2 * dy; - y0 = yy2 - dy - 2 * dx; - - x1 = x0 + 4 * dy; - y1 = y0 - 4 * dx; - x2 = x0 + 2 * dy - 3 * dx; - y2 = y0 - 2 * dx - 3 * dy; - - cairo_move_to (cr, xx1 + dx, yy1 + dy); - cairo_line_to (cr, xx2 + dx, yy2 + dy); - cairo_line_to (cr, x2, y2); - cairo_line_to (cr, x1, y1); - cairo_line_to (cr, xx1 - dx, yy1 - dy); - } - else if (direction == PANGO_DIRECTION_LTR) - { - double x0, y0, x1, y1, x2, y2; - - x0 = xx2 + dx + 2 * dy; - y0 = yy2 + dy - 2 * dx; - - x1 = x0 + 4 * dy; - y1 = y0 - 4 * dx; - x2 = x0 + 2 * dy + 3 * dx; - y2 = y0 - 2 * dx + 3 * dy; - - cairo_move_to (cr, xx1 - dx, yy1 - dy); - cairo_line_to (cr, xx2 - dx, yy2 - dy); - cairo_line_to (cr, x2, y2); - cairo_line_to (cr, x1, y1); - cairo_line_to (cr, xx1 + dx, yy1 + dy); - } - else - g_assert_not_reached(); - } - else - { - cairo_move_to (cr, xx1 + dx, yy1 + dy); - cairo_line_to (cr, xx2 + dx, yy2 + dy); - cairo_line_to (cr, xx2 - dx, yy2 - dy); - cairo_line_to (cr, xx1 - dx, yy1 - dy); - } - - cairo_fill (cr); - - cairo_restore (cr); -} - -static void -get_insertion_cursor_bounds (double width, - double height, - double aspect_ratio, - PangoDirection direction, - gboolean draw_arrow, - graphene_rect_t *bounds) -{ - int stem_width; - - if (width < 0) - width = - width; - - stem_width = height * aspect_ratio + 1; - - graphene_rect_init (bounds, - - 2 * stem_width, - stem_width, - width + 4 * stem_width, height + 2 * stem_width); -} - -static void -snapshot_insertion_cursor (GtkSnapshot *snapshot, - GtkStyleContext *context, - double width, - double height, - double aspect_ratio, - gboolean is_primary, - PangoDirection direction, - gboolean draw_arrow) -{ - if (width != 0 || draw_arrow) - { - cairo_t *cr; - graphene_rect_t bounds; - - get_insertion_cursor_bounds (width, height, aspect_ratio, direction, draw_arrow, &bounds); - cr = gtk_snapshot_append_cairo (snapshot, &bounds); - - draw_insertion_cursor (context, cr, 0, 0, width, height, aspect_ratio, is_primary, direction, draw_arrow); - - cairo_destroy (cr); - } - else - { - GdkRGBA primary_color; - GdkRGBA secondary_color; - int stem_width; - int offset; - - _gtk_style_context_get_cursor_color (context, &primary_color, &secondary_color); - - stem_width = height * aspect_ratio + 1; - - /* put (stem_width % 2) on the proper side of the cursor */ - if (direction == PANGO_DIRECTION_LTR) - offset = stem_width / 2; - else - offset = stem_width - stem_width / 2; - - gtk_snapshot_append_color (snapshot, - is_primary ? &primary_color : &secondary_color, - &GRAPHENE_RECT_INIT (- offset, 0, stem_width, height)); - } -} - -/** - * gtk_snapshot_render_insertion_cursor: - * @snapshot: snapshot to render to - * @context: a `GtkStyleContext` - * @x: X origin - * @y: Y origin - * @layout: the `PangoLayout` of the text - * @index: the index in the `PangoLayout` - * @direction: the `PangoDirection` of the text - * - * Draws a text caret using @snapshot at the specified index of @layout. - */ -void -gtk_snapshot_render_insertion_cursor (GtkSnapshot *snapshot, - GtkStyleContext *context, - double x, - double y, - PangoLayout *layout, - int index, - PangoDirection direction) -{ - GtkStyleContextPrivate *priv = gtk_style_context_get_instance_private (context); - gboolean split_cursor; - double aspect_ratio; - PangoRectangle strong_pos, weak_pos; - PangoRectangle *cursor1, *cursor2; - GdkSeat *seat; - PangoDirection keyboard_direction; - PangoDirection direction2; - - g_return_if_fail (snapshot != NULL); - g_return_if_fail (GTK_IS_STYLE_CONTEXT (context)); - g_return_if_fail (PANGO_IS_LAYOUT (layout)); - g_return_if_fail (index >= 0); - - g_object_get (gtk_settings_get_for_display (priv->display), - "gtk-split-cursor", &split_cursor, - "gtk-cursor-aspect-ratio", &aspect_ratio, - NULL); - - keyboard_direction = PANGO_DIRECTION_LTR; - seat = gdk_display_get_default_seat (priv->display); - if (seat) - { - GdkDevice *keyboard = gdk_seat_get_keyboard (seat); - - if (keyboard) - keyboard_direction = gdk_device_get_direction (keyboard); - } - - pango_layout_get_caret_pos (layout, index, &strong_pos, &weak_pos); - - direction2 = PANGO_DIRECTION_NEUTRAL; - - if (split_cursor) - { - cursor1 = &strong_pos; - - if (strong_pos.x != weak_pos.x || strong_pos.y != weak_pos.y) - { - direction2 = (direction == PANGO_DIRECTION_LTR) ? PANGO_DIRECTION_RTL : PANGO_DIRECTION_LTR; - cursor2 = &weak_pos; - } - } - else - { - if (keyboard_direction == direction) - cursor1 = &strong_pos; - else - cursor1 = &weak_pos; - } - - gtk_snapshot_save (snapshot); - gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x + PANGO_PIXELS (MIN (cursor1->x, cursor1->x + cursor1->width)), y + PANGO_PIXELS (cursor1->y))); - snapshot_insertion_cursor (snapshot, - context, - PANGO_PIXELS (cursor1->width), - PANGO_PIXELS (cursor1->height), - aspect_ratio, - TRUE, - direction, - direction2 != PANGO_DIRECTION_NEUTRAL); - gtk_snapshot_restore (snapshot); - - if (direction2 != PANGO_DIRECTION_NEUTRAL) - { - gtk_snapshot_save (snapshot); - gtk_snapshot_translate (snapshot, &GRAPHENE_POINT_INIT (x + PANGO_PIXELS (MIN (cursor2->x, cursor2->x + cursor2->width)), y + PANGO_PIXELS (cursor2->y))); - snapshot_insertion_cursor (snapshot, - context, - PANGO_PIXELS (cursor2->width), - PANGO_PIXELS (cursor2->height), - aspect_ratio, - FALSE, - direction2, - TRUE); - gtk_snapshot_restore (snapshot); - } -} - /** * GtkStyleContextPrintFlags: * @GTK_STYLE_CONTEXT_PRINT_NONE: Default value. diff --git a/gtk/gtktext.c b/gtk/gtktext.c index b7c40370b0..dcacb80a75 100644 --- a/gtk/gtktext.c +++ b/gtk/gtktext.c @@ -53,7 +53,7 @@ #include "gtkpopovermenu.h" #include "gtkprivate.h" #include "gtksettings.h" -#include "gtksnapshot.h" +#include "deprecated/gtkrender.h" #include "gtkstylecontextprivate.h" #include "gtktexthandleprivate.h" #include "gtktexthistoryprivate.h" @@ -65,6 +65,7 @@ #include "gtknative.h" #include "gtkactionmuxerprivate.h" #include "gtkjoinedmenuprivate.h" +#include "deprecated/gtkrender.h" #include #include @@ -2524,6 +2525,7 @@ gtk_text_draw_undershoot (GtkText *self, GtkStyleContext *context; int min_offset, max_offset; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS context = gtk_widget_get_style_context (GTK_WIDGET (self)); gtk_text_get_scroll_limits (self, &min_offset, &max_offset); @@ -2543,6 +2545,7 @@ gtk_text_draw_undershoot (GtkText *self, gtk_snapshot_render_frame (snapshot, context, text_width - UNDERSHOOT_SIZE, 0, UNDERSHOOT_SIZE, text_height); gtk_style_context_restore (context); } +G_GNUC_END_IGNORE_DEPRECATIONS } static void @@ -4604,6 +4607,7 @@ gtk_text_draw_text (GtkText *self, PangoLayout *layout; int x, y; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS /* Nothing to display at all */ if (gtk_text_get_display_mode (self) == DISPLAY_BLANK) return; @@ -4645,6 +4649,7 @@ gtk_text_draw_text (GtkText *self, gtk_style_context_restore (context); } +G_GNUC_END_IGNORE_DEPRECATIONS } static void @@ -4663,6 +4668,7 @@ gtk_text_draw_cursor (GtkText *self, const char *text; int x, y; +G_GNUC_BEGIN_IGNORE_DEPRECATIONS context = gtk_widget_get_style_context (widget); layout = g_object_ref (gtk_text_ensure_layout (self, TRUE)); @@ -4707,6 +4713,7 @@ gtk_text_draw_cursor (GtkText *self, } g_object_unref (layout); +G_GNUC_END_IGNORE_DEPRECATIONS } static void diff --git a/gtk/gtktextlayout.c b/gtk/gtktextlayout.c index ce97ff6252..0b47ae4531 100644 --- a/gtk/gtktextlayout.c +++ b/gtk/gtktextlayout.c @@ -4271,9 +4271,11 @@ gtk_text_layout_snapshot (GtkTextLayout *layout, if (cursor.is_insert || cursor.is_selection_bound) gtk_snapshot_push_opacity (cursor_snapshot, cursor_alpha); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_insertion_cursor (cursor_snapshot, context, line_display->x_offset, offset_y + line_display->top_margin, line_display->layout, cursor.pos, dir); +G_GNUC_END_IGNORE_DEPRECATIONS if (cursor.is_insert || cursor.is_selection_bound) gtk_snapshot_pop (cursor_snapshot); diff --git a/gtk/gtktextutil.c b/gtk/gtktextutil.c index 0ec6216dbe..e847e5dcba 100644 --- a/gtk/gtktextutil.c +++ b/gtk/gtktextutil.c @@ -34,6 +34,7 @@ #include "gtkwidgetprivate.h" #include "gtkcssstyleprivate.h" #include "gtkcsscolorvalueprivate.h" +#include "deprecated/gtkrender.h" #define DRAG_ICON_MAX_WIDTH 250 #define DRAG_ICON_MAX_HEIGHT 250 @@ -146,10 +147,12 @@ gtk_text_util_create_drag_icon (GtkWidget *widget, else bg_widget = widget; pango_layout_get_size (layout, &layout_width, &layout_height); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (snapshot, gtk_widget_get_style_context (bg_widget), 0, 0, layout_width / PANGO_SCALE, layout_height / PANGO_SCALE); +G_GNUC_END_IGNORE_DEPRECATIONS } gtk_snapshot_append_layout (snapshot, layout, color); @@ -274,9 +277,11 @@ gtk_text_util_create_rich_drag_icon (GtkWidget *widget, if (!gdk_display_is_rgba (display) || !gdk_display_is_composited (display)) { +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (snapshot, gtk_widget_get_style_context (widget), 0, 0, layout_width, layout_height); +G_GNUC_END_IGNORE_DEPRECATIONS } gtk_text_layout_snapshot (layout, widget, snapshot, &(GdkRectangle) { 0, 0, layout_width, layout_height }, 1.0); diff --git a/gtk/gtktextview.c b/gtk/gtktextview.c index 754083b9a1..7073149fd0 100644 --- a/gtk/gtktextview.c +++ b/gtk/gtktextview.c @@ -59,6 +59,7 @@ #include "gtkjoinedmenuprivate.h" #include "gtkcsslineheightvalueprivate.h" #include "gtkcssenumvalueprivate.h" +#include "deprecated/gtkrender.h" /** @@ -5864,6 +5865,7 @@ draw_text (GtkWidget *widget, context = gtk_widget_get_style_context (widget); gtk_style_context_save_to_node (context, text_view->priv->text_window->css_node); +G_GNUC_BEGIN_IGNORE_DEPRECATIONS gtk_snapshot_render_background (snapshot, context, -priv->xoffset, -priv->yoffset - priv->top_margin, MAX (SCREEN_WIDTH (text_view), priv->width), @@ -5872,6 +5874,7 @@ draw_text (GtkWidget *widget, -priv->xoffset, -priv->yoffset - priv->top_margin, MAX (SCREEN_WIDTH (text_view), priv->width), MAX (SCREEN_HEIGHT (text_view), priv->height)); +G_GNUC_END_IGNORE_DEPRECATIONS gtk_style_context_restore (context); if (GTK_TEXT_VIEW_GET_CLASS (text_view)->snapshot_layer != NULL)