Roger, I concur that the current behaviour seems wrong.
The suggestionPopupClosed handler in TerraSuggestionPopupSkin only seems to be trying to handle the scenarios of the suggestion window being closed with the ESCAPE or ENTER keys, without considering that a TAB/SHIFT+TAB might be the reason for the closure. My expectations of focus navigation would be... - If the SuggestionPopup window is not open, TAB/SHIFT+TAB behave as per a regular TextInput, transferring focus from the TextInput If the SuggestionPopup window is open - When the TextInput has focus, TAB/SHIFT+TAB behave as for a regular TextInput, with the SuggestionPopup window being closed as focus is transferred to the target component. - When the ListView has focus (and therefore a suggestion/list item is selected), TAB/SHIFT+TAB selects that suggestion, closes the window and attempts to transfers focus *from* the TextInput according to the TAB/SHIFT+TAB keycode. Note that this last one doesn't currently work as the TAB/SHIFT+TAB seems to be consumed within the keyPressed handler of the TerraListViewSkin (via a call to super.keyPressed(...)), but it could be supported with a new ComponentKeyListener on the ListView. I would expect the ESCAPE key to close an open SuggestionWindow without accepting any suggestions and return focus to the TextInput (leaving the text of the TextInput unchanged). I would expect the ENTER key to close an open SuggestionWindow and return focus to the TextInput. It would accept the selected suggestion if the ListView has focus, or just keep the text of the TextInput if the TextInput has focus. Chris On 21 June 2011 07:24, Roger L. Whitcomb <[email protected]> wrote: > I see that if I TAB off a TextInput field with a SuggestionPopup attached, > that the operation of the “keyPressed” listener tries to shift focus to the > next component, but that the “suggestionPopupClosed” listener then tries to > put the focus back on the TextInput. Thus, the focus moves for a split > second and then moves back. > > > > So, I’m wondering why the latter occurs? I can see maybe having an > attribute to determine that or just allowing the move always or > conditionally allowing the move if the result is “true”, or …. > > > > What seems right to do? Right now I would say it is not right what it > does. > > > > Thanks. > > > > *Roger Whitcomb* > > Architect, Engineering > > *Ingres Corporation* > > [email protected] > > > > *PHONE* +1 650.587.5596 > > *FAX* +1 650.587.5550 > > > > *www.ingres.com* <http://www.ingres.com/> > > > > This transmission is confidential and intended solely for the use of the > recipient named above. It may contain confidential, proprietary, or legally > privileged information. If you are not the intended recipient, you are > hereby notified that any unauthorized review, use, disclosure or > distribution is strictly prohibited. If you have received this transmission > in error, please contact the sender by reply e-mail and delete the original > transmission and all copies from your system. > > >
