ET++: Stepping through the redraw of a changed ImageItem

The WindowPort handles the invalidation by adding the rectangle to its inval object, which is essentially a list of invalid rectangles. This completes Stage 1 (the invalidation), and control now returns to whoever originally called VObject::ForceRedraw(). Note that at this point no drawing has occurred. The redrawing will occur in Stage 2, which is initiated the next time through the main event loop.


void WindowPort::InvalidateRect(const Rectangle &r, bool update)
{
	//fprintf(stderr, "Inval(%d): %d %d %d %d\n", this, r.origin.x, r.origin.y,
	//                                                r.extent.x, r.extent.y);
	if (state == eWsShown) {
		if (inval == 0)
			inval= new OldRegion;
		inval->Merge(r);
	}
	if (update)
		gWindowSystem->Update();
}

Back to the top of the invalidate/redraw description

Back to the top of the ET++ pages