Update testtextview.c to use draw_layer
This fixes a regression in the test from the revert in
commit 4fe051bb4a
.
This commit is contained in:
parent
5b53eb287c
commit
341108d4fc
@ -3,6 +3,36 @@
|
|||||||
#include "config.h"
|
#include "config.h"
|
||||||
#include <gtk/gtk.h>
|
#include <gtk/gtk.h>
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
GtkTextView parent;
|
||||||
|
} MyTextView;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
GtkTextViewClass parent_class;
|
||||||
|
} MyTextViewClass;
|
||||||
|
|
||||||
|
G_DEFINE_TYPE (MyTextView, my_text_view, GTK_TYPE_TEXT_VIEW);
|
||||||
|
|
||||||
|
static void draw_background (GtkWidget *widget, cairo_t *cr);
|
||||||
|
|
||||||
|
static void
|
||||||
|
my_text_view_init (MyTextView *text_view)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
static void my_text_view_draw_layer (GtkWidget *widget,
|
||||||
|
GtkTextViewLayer layer,
|
||||||
|
cairo_t *cr)
|
||||||
|
{
|
||||||
|
if (layer == GTK_TEXT_VIEW_LAYER_BELOW)
|
||||||
|
draw_background (widget, cr);
|
||||||
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
my_text_view_class_init (MyTextViewClass *klass)
|
||||||
|
{
|
||||||
|
GTK_TEXT_VIEW_CLASS (klass)->draw_layer = my_text_view_draw_layer;
|
||||||
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
create_tags (GtkTextBuffer *buffer)
|
create_tags (GtkTextBuffer *buffer)
|
||||||
@ -138,10 +168,14 @@ get_checkered (void)
|
|||||||
static void
|
static void
|
||||||
draw_background (GtkWidget *widget, cairo_t *cr)
|
draw_background (GtkWidget *widget, cairo_t *cr)
|
||||||
{
|
{
|
||||||
|
GdkRectangle visible_rect;
|
||||||
cairo_pattern_t *pat;
|
cairo_pattern_t *pat;
|
||||||
|
|
||||||
cairo_save (cr);
|
cairo_save (cr);
|
||||||
|
|
||||||
|
gtk_text_view_get_visible_rect (GTK_TEXT_VIEW (widget), &visible_rect);
|
||||||
|
cairo_translate (cr, -visible_rect.x, -visible_rect.y);
|
||||||
|
|
||||||
cairo_set_source_rgb (cr, CHECK_DARK, CHECK_DARK, CHECK_DARK);
|
cairo_set_source_rgb (cr, CHECK_DARK, CHECK_DARK, CHECK_DARK);
|
||||||
cairo_paint (cr);
|
cairo_paint (cr);
|
||||||
|
|
||||||
@ -166,7 +200,7 @@ main (int argc, char **argv)
|
|||||||
|
|
||||||
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
|
||||||
sw = gtk_scrolled_window_new (NULL, NULL);
|
sw = gtk_scrolled_window_new (NULL, NULL);
|
||||||
textview = gtk_text_view_new ();
|
textview = g_object_new (my_text_view_get_type (), NULL);
|
||||||
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
|
buffer = gtk_text_view_get_buffer (GTK_TEXT_VIEW (textview));
|
||||||
button = gtk_button_new_with_label ("Fixed Child");
|
button = gtk_button_new_with_label ("Fixed Child");
|
||||||
button2 = gtk_button_new_with_label ("Flowed Child");
|
button2 = gtk_button_new_with_label ("Flowed Child");
|
||||||
@ -195,9 +229,6 @@ main (int argc, char **argv)
|
|||||||
gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (textview),
|
gtk_text_view_add_child_at_anchor (GTK_TEXT_VIEW (textview),
|
||||||
button2, anchor);
|
button2, anchor);
|
||||||
|
|
||||||
g_signal_connect (textview, "draw",
|
|
||||||
G_CALLBACK (draw_background), NULL);
|
|
||||||
|
|
||||||
gtk_widget_show (window);
|
gtk_widget_show (window);
|
||||||
|
|
||||||
gtk_main ();
|
gtk_main ();
|
||||||
|
Loading…
Reference in New Issue
Block a user