kwo pushed a commit to branch master.

http://git.enlightenment.org/e16/e16.git/commit/?id=0a6b8e177c140dd9c7413e78c4936ce28e1b051c

commit 0a6b8e177c140dd9c7413e78c4936ce28e1b051c
Author: Kim Woelders <[email protected]>
Date:   Tue Jun 23 20:01:41 2020 +0200

    Add option to allow only the primary mouse button to raise windows
    
    Patch by Simon Kesenci
---
 docs/e16.xml |  2 ++
 src/E.h      |  1 +
 src/focus.c  | 17 +++++++++++++++--
 3 files changed, 18 insertions(+), 2 deletions(-)

diff --git a/docs/e16.xml b/docs/e16.xml
index 01647de2..442bc91e 100644
--- a/docs/e16.xml
+++ b/docs/e16.xml
@@ -1069,6 +1069,8 @@ effects.waves.enabled = 0
 focus.mode = 1
 # [bool] Raise window when clicked
 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 99bedd65..bb3c9650 100644
--- a/src/E.h
+++ b/src/E.h
@@ -186,6 +186,7 @@ typedef struct {
    struct {
       int                 mode;
       char                clickraises;
+      char                only_button1_can_raise;
       char                transientsfollowleader;
       char                switchfortransientmap;
       char                all_new_windows_get_focus;
diff --git a/src/focus.c b/src/focus.c
index 81116056..d974d125 100644
--- a/src/focus.c
+++ b/src/focus.c
@@ -225,6 +225,10 @@ static void
 ClickGrabsSet(EWin * ewin)
 {
    int                 set = 0;
+   unsigned int        raise_button = AnyButton;
+
+   if (Conf.focus.only_button1_can_raise)
+      raise_button = Button1;
 
    if ((Conf.focus.clickraises && !EwinListStackIsRaised(ewin)) ||
        (!ewin->state.active && !ewin->state.inhibit_focus))
@@ -234,7 +238,7 @@ ClickGrabsSet(EWin * ewin)
      {
        if (!ewin->state.click_grab_isset)
          {
-            GrabButtonSet(AnyButton, AnyModifier, EwinGetClientConWin(ewin),
+            GrabButtonSet(raise_button, AnyModifier, EwinGetClientConWin(ewin),
                           ButtonPressMask, ECSR_PGRAB, 1);
             if (EDebug(EDBUG_TYPE_GRABS))
                Eprintf("%s: %#x set %s\n", __func__,
@@ -246,7 +250,7 @@ ClickGrabsSet(EWin * ewin)
      {
        if (ewin->state.click_grab_isset)
          {
-            GrabButtonRelease(AnyButton, AnyModifier,
+            GrabButtonRelease(raise_button, AnyModifier,
                               EwinGetClientConWin(ewin));
             if (EDebug(EDBUG_TYPE_GRABS))
                Eprintf("%s: %#x unset %s\n", __func__,
@@ -736,6 +740,7 @@ typedef struct {
    struct {
       int                 mode;
       char                clickalways;
+      char                button1_raises;
       char                new_focus;
       char                new_focus_if_group;
       char                popup_focus;
@@ -771,6 +776,7 @@ _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;
@@ -808,6 +814,7 @@ _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;
@@ -861,6 +868,11 @@ _DlgFillFocus(Dialog * d, DItem * table, void *data 
__UNUSED__)
    DialogItemSetText(di, _("Clicking in a window always raises it"));
    DialogItemCheckButtonSetPtr(di, &dd->focus.clickalways);
 
+   di = DialogAddItem(table, DITEM_CHECKBUTTON);
+   DialogItemSetColSpan(di, 2);
+   DialogItemSetText(di, _("Only primary mouse button can raise window"));
+   DialogItemCheckButtonSetPtr(di, &dd->focus.button1_raises);
+
    di = DialogAddItem(table, DITEM_SEPARATOR);
    DialogItemSetColSpan(di, 2);
 
@@ -1168,6 +1180,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_BOOL(Conf.focus, transientsfollowleader, 1),
    CFG_ITEM_BOOL(Conf.focus, switchfortransientmap, 1),
    CFG_ITEM_BOOL(Conf.focus, all_new_windows_get_focus, 0),

-- 


Reply via email to