Keyboard navigation: launcher key navigation mode doesn't give the focus to the Launcher
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Unity |
Fix Released
|
Undecided
|
Jay Taoko | ||
unity (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Pressing Alt+F1 starts the key navigation mode on the launcher.
But, the object that has the focus is not the Launcher. As far as I see it is the BaseWindow containing the Launcher the one that receives the focus. At least, the BaseWindow is the one that emit the signal InputArea:
In my opinion this is somewhat confusing, as in the end it is the Launcher that it is managing the effect of pressing a key (ie Launcher:
I made some experiments (on this branch [1]) trying to solve it by calling by hand InputArea:
From the POV of accessibility, this is a case where it would be more convenient to have the focus on the Launcher, as it would be the one that in the end will implement the selection stuff for each icon.
[1] https:/
Changed in unity: | |
assignee: | nobody → Jay Taoko (jaytaoko) |
Changed in unity (Ubuntu): | |
status: | Triaged → Fix Committed |
Changed in unity: | |
status: | Fix Committed → Fix Released |
Changed in unity (Ubuntu): | |
status: | Fix Committed → Fix Released |
I implemented the following call in BaseWindow: putArea (InputArea *input_area);
void SetEnterFocusIn
What this does is set an input area (such as the Launcher) as the view that receives the keyboard focus when the BaseWindow responds to the event NUX_WINDOW_ ENTER_FOCUS. ENTER_FOCUS event. putArea then that input area will get the keyboard focus and the base window will not get the keyboard focus (and emit the signal OnStartFocus). If an input area wasn't set, then it is the Launcher BaseWindow that will receive the keyboard focus.
When Alt+F1 is activated, we raise the position of the Launcher's BaseWindow to the top of the BaseWindow stack. That way, our Launcher BaseWindow is the first (and only one) to process the NUX_WINDOW_
If an input area was set with SetEnterFocusIn