1
0
mirror of https://github.com/gryf/wmaker.git synced 2026-03-19 09:13:33 +01:00

Make mouse wheel window focus configurable.

With commit e45a3bc07d a behavior change
was introduced that may disrupt the workflow of a user who may
intentionally want to give focus to a window without bringing it to the
front. Using the scroll wheel is less intrusive compared to the left,
right, and especially the middle (in the case of a terminal) mouse
buttons.

This commit introduces the ability to change the behavior by enabling or
disabling the ability to focus a window with mouse wheel in the expert
panel.
This commit is contained in:
2026-02-26 08:12:16 +01:00
committed by Carlos R. Mafra
parent 66bf19c1e0
commit c6f029c946
4 changed files with 6 additions and 1 deletions

View File

@@ -130,6 +130,8 @@ static struct expert_option {
{ N_("Keep dock on primary head."),
/* default: */ False, OPTION_WMAKER, "KeepDockOnPrimaryHead"},
{ N_("Allow windows to take focus using mouse wheel."),
/* default: */ False, OPTION_WMAKER, "MouseWheelFocus"},
};

View File

@@ -378,6 +378,7 @@ extern struct WPreferences {
char auto_focus; /* focus window when it's mapped */
char *icon_back_file; /* background image for icons */
char enforce_icon_margin; /* auto-shrink icon images */
char mouse_wheel_focus; /* allow focus window with mouse wheel */
WCoord *root_menu_pos; /* initial position of the root menu*/
WCoord *app_menu_pos;

View File

@@ -537,6 +537,8 @@ WDefaultEntry optionList[] = {
NULL, getPropList, setHotCornerActions, NULL, NULL},
{"WindowListAppIcons", "NO", NULL,
&wPreferences.window_list_app_icons, getBool, NULL, NULL, NULL},
{"MouseWheelFocus", "NO", NULL,
&wPreferences.mouse_wheel_focus, getBool, NULL, NULL, NULL},
/* style options */

View File

@@ -2984,7 +2984,7 @@ static void frameMouseDown(WObjDescriptor *desc, XEvent *event)
CloseWindowMenu(wwin->screen_ptr);
if (event->xbutton.button != Button4 && event->xbutton.button != Button5 && !(event->xbutton.state & ControlMask) && !WFLAGP(wwin, no_focusable))
if ((wPreferences.mouse_wheel_focus || (event->xbutton.button != Button4 && event->xbutton.button != Button5)) && !(event->xbutton.state & ControlMask) && !WFLAGP(wwin, no_focusable))
wSetFocusTo(wwin->screen_ptr, wwin);
if (event->xbutton.button == Button1)