diff --git a/docs/e16.xml b/docs/e16.xml index 442bc91e..dc90a411 100644 --- a/docs/e16.xml +++ b/docs/e16.xml @@ -1067,10 +1067,8 @@ effects.waves.enabled = 0 # [int] Focus mode (0: pointer, 1: sloppy, 2: click) focus.mode = 1 -# [bool] Raise window when clicked +# [int] Click-to-raise mode (0: Off, 1: Any button, 2: Only button 1) focus.clickraises = 1 -# [bool] Only primary mouse button can raise window -focus.only_button1_can_raise = 0 # [bool] Transients are placed where leader is focus.transientsfollowleader = 1 # [bool] When a transient is mapped the desk/area is switched to where the transient appears diff --git a/src/E.h b/src/E.h index bb3c9650..032f5df9 100644 --- a/src/E.h +++ b/src/E.h @@ -185,8 +185,7 @@ typedef struct { } dock; struct { int mode; - char clickraises; - char only_button1_can_raise; + int clickraises; char transientsfollowleader; char switchfortransientmap; char all_new_windows_get_focus; diff --git a/src/focus.c b/src/focus.c index 03e36d25..658dc63f 100644 --- a/src/focus.c +++ b/src/focus.c @@ -227,7 +227,7 @@ ClickGrabsSet(EWin * ewin) int set = 0; unsigned int raise_button = AnyButton; - if (Conf.focus.only_button1_can_raise) + if (Conf.focus.clickraises == 2) raise_button = Button1; if ((Conf.focus.clickraises && !EwinListStackIsRaised(ewin)) || @@ -747,8 +747,7 @@ FocusHandleClick(EWin * ewin, Win win) typedef struct { struct { int mode; - char clickalways; - char button1_raises; + int clickalways; char new_focus; char new_focus_if_group; char popup_focus; @@ -784,7 +783,6 @@ _DlgApplyFocus(Dialog * d, int val __UNUSED__, void *data __UNUSED__) Conf.focus.mode = dd->focus.mode; Conf.focus.clickraises = dd->focus.clickalways; - Conf.focus.only_button1_can_raise = dd->focus.button1_raises; Conf.focus.all_new_windows_get_focus = dd->focus.new_focus; Conf.focus.new_windows_get_focus_if_group_focused = dd->focus.new_focus_if_group; @@ -822,7 +820,6 @@ _DlgFillFocus(Dialog * d, DItem * table, void *data __UNUSED__) dd->focus.mode = Conf.focus.mode; dd->focus.clickalways = Conf.focus.clickraises; - dd->focus.button1_raises = Conf.focus.only_button1_can_raise; dd->focus.new_focus = Conf.focus.all_new_windows_get_focus; dd->focus.new_focus_if_group = Conf.focus.new_windows_get_focus_if_group_focused; @@ -871,15 +868,24 @@ _DlgFillFocus(Dialog * d, DItem * table, void *data __UNUSED__) di = DialogAddItem(table, DITEM_SEPARATOR); DialogItemSetColSpan(di, 2); - di = DialogAddItem(table, DITEM_CHECKBUTTON); + radio = di = DialogAddItem(table, DITEM_RADIOBUTTON); + DialogItemSetColSpan(di, 2); + DialogItemSetText(di, _("Clicking in a window does not raise it")); + DialogItemRadioButtonSetFirst(di, radio); + DialogItemRadioButtonGroupSetVal(di, 0); + + di = DialogAddItem(table, DITEM_RADIOBUTTON); DialogItemSetColSpan(di, 2); DialogItemSetText(di, _("Clicking in a window always raises it")); - DialogItemCheckButtonSetPtr(di, &dd->focus.clickalways); + DialogItemRadioButtonSetFirst(di, radio); + DialogItemRadioButtonGroupSetVal(di, 1); - di = DialogAddItem(table, DITEM_CHECKBUTTON); + di = DialogAddItem(table, DITEM_RADIOBUTTON); DialogItemSetColSpan(di, 2); DialogItemSetText(di, _("Only primary mouse button can raise window")); - DialogItemCheckButtonSetPtr(di, &dd->focus.button1_raises); + DialogItemRadioButtonSetFirst(di, radio); + DialogItemRadioButtonGroupSetVal(di, 2); + DialogItemRadioButtonGroupSetValPtr(radio, &dd->focus.clickalways); di = DialogAddItem(table, DITEM_SEPARATOR); DialogItemSetColSpan(di, 2); @@ -1187,8 +1193,7 @@ static const IpcItem FocusIpcArray[] = { static const CfgItem FocusCfgItems[] = { CFG_ITEM_INT(Conf.focus, mode, MODE_FOCUS_SLOPPY), - CFG_ITEM_BOOL(Conf.focus, clickraises, 1), - CFG_ITEM_BOOL(Conf.focus, only_button1_can_raise, 0), + CFG_ITEM_INT(Conf.focus, clickraises, 1), CFG_ITEM_BOOL(Conf.focus, transientsfollowleader, 1), CFG_ITEM_BOOL(Conf.focus, switchfortransientmap, 1), CFG_ITEM_BOOL(Conf.focus, all_new_windows_get_focus, 0),