[comp.sys.mac.programmer] ValidRect inside Begin/EndUpdate

olson@endor.harvard.edu (Eric K. Olson) (07/06/90)

What happens when ValidRect() or InvalRect() (or the Rgn equivalents)
are called between BeginUpdate() and EndUpdate()?  I'm specifically
interested in ValidRect()...

Since BeginUpdate() replaces the visRgn with the intersection of the
visRgn and the updateRgn, and then sets the updateRgn to an empty region,
I would assume that any ValidRect() call would essentially be ignored
until EndUpdate() is executed.  But this doesn't seem to be the case.
Does ValidRect() check to see if an update is currently in progress,
and modify the visRgn instead if it is?

Specifically, I have some code that essentially does:

	BeginUpdate();
	LUpdate(visRgn, listHandle);
	EndUpdate();

LUpdate calls ValidRect() on the rect that would contain the scroll bars,
even if the list doesn't have scroll bars (this is the behavior I want to
fix).  And it seems to validate the rectangle in the update, even though
its inside a BeginUpdate()...EndUpdate() set.

But what region is it modifying?  It can't be the updateRgn: that's empty!

-Eric

---
Eric K. Olson                 Internet:   olson@endor.harvard.edu
Lexington Software Design     Usenet:     harvard!endor!olson
72A Lowell St.                Applelink:  olson@endor.harvard.edu@dasnet#
Lexington, MA  02173          Compuserve: >INTERNET:olson@endor.harvard.edu
(617) 863-9624                Bitnet:     OLSON@HARVARD
Eric K. Olson                 Internet:   olson@endor.harvard.edu
Lexington Software Design     Usenet:     harvard!endor!olson
72A Lowell St.                Applelink:  olson@endor.harvard.edu@dasnet#
Lexington, MA  02173          Compuserve: >INTERNET:olson@endor.harvard.edu
(617) 863-9624                Bitnet:     OLSON@HARVARD