This implements the same config option as `underMouse` in Openbox.
Fixes #862
Make focus follow mouse, i.e. focus is given to window under mouse
cursor. Default is no.
+*<focus><followMouseRequiresMovement>* [yes|no]
+ Requires cursor movement if followMouse is enabled. It is the same
+ as the "underMouse" setting in Openbox. If set to "no", labwc will
+ additionally focus the window under the cursor in all situations
+ which change the position of a window (e.g. switching workspaces,
+ opening/closing windows). Focusing a different window via A-Tab is
+ still possible, even with this setting set to "no". Default is yes.
+
*<focus><raiseOnFocus>* [yes|no]
Raise window to top when focused. Default is no.
<focus>
<followMouse>no</followMouse>
+ <followMouseRequiresMovement>yes</followMouseRequiresMovement>
<raiseOnFocus>no</raiseOnFocus>
</focus>
/* focus */
bool focus_follow_mouse;
+ bool focus_follow_mouse_requires_movement;
bool raise_on_focus;
/* theme */
fill_font(nodename, content, font_place);
} else if (!strcasecmp(nodename, "followMouse.focus")) {
set_bool(content, &rc.focus_follow_mouse);
+ } else if (!strcasecmp(nodename, "followMouseRequiresMovement.focus")) {
+ set_bool(content, &rc.focus_follow_mouse_requires_movement);
} else if (!strcasecmp(nodename, "raiseOnFocus.focus")) {
set_bool(content, &rc.raise_on_focus);
} else if (!strcasecmp(nodename, "doubleClickTime.mouse")) {
init_font_defaults(&rc.font_menuitem);
init_font_defaults(&rc.font_osd);
+ rc.focus_follow_mouse = false;
+ rc.focus_follow_mouse_requires_movement = true;
+ rc.raise_on_focus = false;
+
rc.doubleclick_time = 500;
rc.scroll_factor = 1.0;
rc.repeat_rate = 25;
rc.repeat_delay = 600;
rc.screen_edge_strength = 20;
+
rc.snap_edge_range = 1;
rc.snap_top_maximize = true;
/* Focus surface under cursor if it isn't already focused */
struct cursor_context ctx = get_cursor_context(server);
- if (ctx.view && rc.focus_follow_mouse && !server->osd_state.cycle_view) {
- /* Prevent changing keyboard focus during A-Tab */
+ if (ctx.view && rc.focus_follow_mouse
+ && !rc.focus_follow_mouse_requires_movement
+ && !server->osd_state.cycle_view) {
+ /* Prevents changing keyboard focus during A-Tab */
desktop_focus_and_activate_view(&server->seat, ctx.view);
if (rc.raise_on_focus) {
view_move_to_front(ctx.view);