Comment 38 for bug 674138

Stephan Henningsen (zta77) wrote :

I'm sorry of I say something stupid here; I haven't read all posts in this issue, only the topic and issue itself.

I like sloppy focus, I like Unity and its global menu, and I don't like the side effects that activate the wrong window's menu. But I have an suggestion I'd like to discuss.

The idea is actually quite simple: Sloppy focus doesn't give immediate focus to windows, but only gives focus when actual input is sent to that window, e.g. though mouse or keyboard events. Therefore, windows that are hovered by sloppy focus mouse are instead set in a "focus-candiate" state, leaving the focus at the original windows.

In a way, this behaves like "Click to Focus" but also adds "Keypress to Focus Window below Mouse"-like feature.

GUI-wise the focus-candidate windows could be highlighted in a different way, but I think it would be better not to colour them, that is: present them as unfocused windows.

This feature should give the following positive effects:
1) The user can move the mouse from one originally, focused window, across other windows (that will gain focus-candidate), and to the global menu of the originally, focused window as the user intended.
2) The user can move the mouse from one originally, focused window (maybe across several windows) to another target window (that will gain focus-candidate) and start typing or click in this window, and this target window will gain the input as the user intended.

This will give the following potential unwanted issues:
1) Windows with focus-candidate were the application responds to mouse move events (gestures?) will be unresponsive until clicked within the window, on the window title or a keyboard key is pressed. A work-around or work-flow to focus a focus-candidate could be to press Ctrl, Shift, or Alt in order to fire a keyboard event but not to do any "damage" by inputting actual keystrokes in the window. (e.g. pressing Enter in a focus-candidate editor window would leave a line break that one would have to immediate delete afterwards).