As Shaw explained, you're looking for the following idiom, which is littered
throughout a number of the FV_View methods. The concept is pretty simple:
At 09:54 AM 9/20/99 -0500, Shaw Terwilliger wrote:
> if (!isSelectionEmpty())
> {
> _clearSelection();
> }
> else
> {
> _eraseInsertionPoint();
> }
To avoid flicker and cursor dirt, before doing anything that changes or
scrolls the document, first clear the existing selection and/or IP.
> UT_Bool bRes = _findNext(find, matchCase, bDoneEntireDocument);
Do whatever you do that changes the document / view state.
> if (isSelectionEmpty())
> {
> if (!_ensureThatInsertionPointIsOnScreen())
> {
> _fixInsertionPointCoords();
> _drawInsertionPoint();
> }
> }
> else
> {
> _ensureThatInsertionPointIsOnScreen();
> _drawSelection();
> }
When the relevant change is done, let the view relocate itself (if needed)
and then draw the updated selection / IP.
Paul