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