Как мне перерисовать только часть GtkWidget

Я хочу перерисовать только часть виджета GtkTextView. В обработчике сигнала отрисовки я пробовал много вещей, например:

GdkRectangle rect;

gdk_cairo_get_clip_rectangle(cr, &rect);

cairo_surface_t* surface = cairo_get_target(cr);
cairo_surface_t* newsurf = cairo_surface_create_similar(surface, cairo_surface_get_content(surface), rect.width - 50, rect.height);

cairo_push_group(cr);
cairo_set_source_surface(cr, newsurf, rect.x + 10, rect.y + 40);
cairo_fill_preserve(cr);
cairo_stroke(cr);
cairo_pop_group_to_source(cr);
cairo_paint(cr);

, за исключением того, что на самом деле ничего не происходит. Как мне перерисовать только прямоугольник области грязного клипа в cr или как (как я пытаюсь) изменить cr так, чтобы площадь поверхности имела разные размеры?

0
задан Edenia 25 June 2019 в 21:46
поделиться