Ken, I think I have fixed the update problem I mentioned earlier in the fixFocus function. Here are the changes (should work better): CLEAR LOCAL MODE LOCAL FN focusEF(theField,frameIt,lastFocus) DIM err AS LONG DIM fieldH AS HANDLE DIM @ teH AS HANDLE theField = USR ABS(theField) fieldH = [WNDBLK + WINDOW(WINDOW(_activeWnd))*16 + 4] LONG IF theField IF TEHANDLE(-theField) < 1 THEN EXIT FN teH = TEHANDLE(theField) LONG IF frameIt WHILE fieldH LONG IF fieldH..4% != theField IF fieldH..4% = lastFocus THEN FN focusEF(fieldH..4%,_false,lastFocus) XELSE err = FN DrawThemeFocusRect(#@teH..TEDestRect%,_true) EDIT FIELD theField SetCursor(#[FN GetCursor(_iBeamCursor)]) END IF fieldH = [[fieldH]] WEND XELSE err = FN DrawThemeFocusRect(#@teH..TEdestRect%,_false) END IF XELSE WHILE fieldH IF fieldH..4% = lastFocus THEN FN focusEF(fieldH..4%,_false,lastFocus) fieldH = [[fieldH]] WEND InitCursor END IF END FN = theField LOCAL FN fixFocus DIM fieldH AS HANDLE DIM mousePt AS POINT DIM @ teH AS HANDLE fieldH = [WNDBLK + WINDOW(WINDOW(_activeWnd))*16 + 4] WHILE fieldH teH = TEHANDLE(fieldH..4%) GetMouse(mousePt) LONG IF FN PtInRect(mousePt,#@teH..TEViewRect%) gLastFocus = FN focusEF(fieldH..4%,_true,gLastFocus) EXIT WHILE XELSE IF gLastFocus = fieldH..4% THEN FN focusEF(fieldH..4%,_false,gLastFocus) END IF fieldH = [[fieldH]] WEND END FN Cheers Alain