[comp.sys.next] mouse tracking

combs@sumex-aim.stanford.edu (Dave Combs) (03/09/89)

Gang,
I'm trying to duplicate part of the functionality of the directory browser.
I've built a view which contains the equivalent of a column of the browser, 
but I can't seem to get the mouse tracking to do what I want.
The desired functionality is as follows:  as I track up and down in the
list of items to be selected, I want the cells to highlight and unhighlight
as the mouse passes over them.  When I release the mouse, I'd like to have
the final cell remain highlighted, and be able to perform the action 
associated with the cell.  Using NX_RADIOMODE for the Matrix mode gives me
the correct tracking, but when I release the mouse, it first calls my
cell action, then unhighlights the mouse, which isn't what I want. 
(I'd like to either inhibit the unhilighting, or have the cell action
execute AFTER the unhilight, instead of before).
Anyone know any simple way around this?

A second (more important) question:  In investigating tracking behavior
(to see if I could hack up an equivalent to NX_RADIOMODE that would do what
I want) I checked out the Cell method trackMouse:inRect:ofView:, which 
controls tracking.  The documentation says that this calls a function to
start tracking, another to continue tracking, and finally a third when the
mouse exits a cell.  (Note: the function names given in the doc are wrong,
but the correct ones are pretty obvious).  I used gdb to break on each of
the start,continue and stop functions, and found that only the start function
was called, whenever the mouse entered the cell.  Is this 1) an error in 
the documentation, 2) a bug in the implementation of trackMouse:inRect:ofView:,
or 3) just my general confusion?

Finally, a question for NeXT people: in using gdb, I found the quite useful
Matrix method _turnOffAllExcept:: .  Given that it can do a lot of what
is needed to simulate NX_RADIOMODE, is there any consideration to giving
this a regular method name (no _) and releasing it as a user-accessible
method?

Thanks,
Dave Combs (combs@sumex-aim.stanford.edu)