correctly implement canvas expose redraw for both single- and multi-expose contexts
This commit is contained in:
parent
9efd521ea6
commit
802d9fa487
|
@ -1027,14 +1027,14 @@ GtkCanvas::on_expose_event (GdkEventExpose* ev)
|
||||||
draw_context->push_group ();
|
draw_context->push_group ();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* draw background color */
|
|
||||||
draw_context->rectangle (ev->area.x, ev->area.y, ev->area.width, ev->area.height);
|
|
||||||
Gtkmm2ext::set_source_rgba (draw_context, _bg_color);
|
|
||||||
draw_context->fill ();
|
|
||||||
|
|
||||||
/* render canvas */
|
/* render canvas */
|
||||||
if (_single_exposure) {
|
if (_single_exposure) {
|
||||||
|
|
||||||
|
/* draw background color */
|
||||||
|
draw_context->rectangle (ev->area.x, ev->area.y, ev->area.width, ev->area.height);
|
||||||
|
Gtkmm2ext::set_source_rgba (draw_context, _bg_color);
|
||||||
|
draw_context->fill ();
|
||||||
|
|
||||||
Canvas::render (Rect (ev->area.x, ev->area.y, ev->area.x + ev->area.width, ev->area.y + ev->area.height), draw_context);
|
Canvas::render (Rect (ev->area.x, ev->area.y, ev->area.x + ev->area.width, ev->area.y + ev->area.height), draw_context);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
@ -1042,10 +1042,18 @@ GtkCanvas::on_expose_event (GdkEventExpose* ev)
|
||||||
gint nrects;
|
gint nrects;
|
||||||
|
|
||||||
gdk_region_get_rectangles (ev->region, &rects, &nrects);
|
gdk_region_get_rectangles (ev->region, &rects, &nrects);
|
||||||
|
|
||||||
for (gint n = 0; n < nrects; ++n) {
|
for (gint n = 0; n < nrects; ++n) {
|
||||||
draw_context->set_identity_matrix(); //reset the cairo matrix, just in case someone left it transformed after drawing ( cough )
|
draw_context->set_identity_matrix(); //reset the cairo matrix, just in case someone left it transformed after drawing ( cough )
|
||||||
|
|
||||||
|
/* draw background color */
|
||||||
|
draw_context->rectangle (rects[n].x, rects[n].y, rects[n].x + rects[n].width, rects[n].y + rects[n].height);
|
||||||
|
Gtkmm2ext::set_source_rgba (draw_context, _bg_color);
|
||||||
|
draw_context->fill ();
|
||||||
|
|
||||||
Canvas::render (Rect (rects[n].x, rects[n].y, rects[n].x + rects[n].width, rects[n].y + rects[n].height), draw_context);
|
Canvas::render (Rect (rects[n].x, rects[n].y, rects[n].x + rects[n].width, rects[n].y + rects[n].height), draw_context);
|
||||||
}
|
}
|
||||||
|
|
||||||
g_free (rects);
|
g_free (rects);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue