(resending mail, seems the first try to send it failed - it never
showed up in the mailing list)
Hi Kim,

thanks for still maintaining e16!

After not updating for ages - after all, e16 is pretty stable :) - I decided
to update to the newest git version.

Unfortunately, there is a regression for my use case:
I am using multiple virtual desktops and switch between them using the mouse
scroll wheel.

Since I use several full-screen applications, I normally use this feature by
moving the mouse cursor to the very top edge of the screen and then use the
scroll wheel. However, this no longer works with newer e16 releases.

I bisected and traced it to this commit:

------
commit dee8d4f36925f66f63925726b542289b18bef273
Author: Kim Woelders <[email protected]>
Date:   Fri Jul 22 06:33:52 2022 +0200

    edge: Prevent pointer click and motion events propagating to root

    Avoids activating desk flips, root menus, and root window tooltips when
    clicking on or moving over the edge windows.
------

(And yes, did I mention that I haven't updated e16 for ages? :) ).

If I revert this commit, all works again as expected. I can switch between
desktops by going to the top edge of the screen and using the mouse wheel.

I am not sure if this is a real regression, since the commit message makes
it sound as if this is the intended behaviour.

Anyway, I prepared a patch to make this configurable - see attachment.
I have no clue about X programming or e16 code, all I did was moving the
code from the above commit to a place where it's called on every change in
the desktop settings menu.

I also added a German translation to the de.po, but since I use English as
my default language (German translation of computer stuff always sounds
cringey to me) I can't comment on how good it is.

Also, all changes were made by me, no AI used.
So any mistakes and stupidities are mine. ;)

Kind Regards and thanks for still maintaining the best version of the best
window manager on this planet!

Christian
From 74d8a4dfd1257243ca90303667e40c89fe96c461 Mon Sep 17 00:00:00 2001
From: Christian Klein <[email protected]>
Date: Thu, 26 Mar 2026 09:27:24 +0100
Subject: [PATCH 1/2] edge: Make propagation pointer clicks and motion events
 to root window configurable.

The behaviour was changed by commit dee8d4f36925f66f63925726b542289b18bef273.
This commit makes the behaviour configurable in the "Virtual Desktop Settings".
---
 src/E.h        | 1 +
 src/desktops.c | 8 ++++++++
 src/edge.c     | 9 +++++----
 3 files changed, 14 insertions(+), 4 deletions(-)

diff --git a/src/E.h b/src/E.h
index 2c7fc454..29bdf604 100644
--- a/src/E.h
+++ b/src/E.h
@@ -161,6 +161,7 @@ typedef struct {
         int             dragbar_length;
         int             dragbar_ordering;
         char            desks_wraparound;
+        char            mute_desk_edge;
         char            slidein;
         int             slidespeed;
         int             areas_nx;
diff --git a/src/desktops.c b/src/desktops.c
index 66ea567a..39932326 100644
--- a/src/desktops.c
+++ b/src/desktops.c
@@ -2731,6 +2731,7 @@ typedef struct {
     int             edge_resist;
     DItem          *area_text;
     char            area_wraparound;
+    char            mute_desk_edge;
     int             prev_ax, prev_ay;
     Win             awin;
 } AreaDlgData;
@@ -2742,6 +2743,7 @@ _DlgApplyAreas(Dialog *d, int val __UNUSED__, void *data __UNUSED__)
 
     _DesksSetAreaSize(dd->area_x, dd->area_y);
     Conf.desks.areas_wraparound = dd->area_wraparound;
+    Conf.desks.mute_desk_edge = dd->mute_desk_edge;
     Conf.desks.edge_flip_mode = dd->edge_flip;
     if (dd->edge_resist < 1)
         dd->edge_resist = 1;
@@ -2806,6 +2808,7 @@ _DlgFillAreas(Dialog *d, DItem *table, void *data __UNUSED__)
     DItem          *di, *slider, *slider2, *table2, *radio;
 
     dd->area_wraparound = Conf.desks.areas_wraparound;
+    dd->mute_desk_edge = Conf.desks.mute_desk_edge;
 
     dd->edge_flip = Conf.desks.edge_flip_mode;
     dd->edge_resist = Conf.desks.edge_flip_resistance;
@@ -2857,6 +2860,10 @@ _DlgFillAreas(Dialog *d, DItem *table, void *data __UNUSED__)
     DialogItemSetText(di, _("Wrap virtual desktops around"));
     DialogItemCheckButtonSetPtr(di, &dd->area_wraparound);
 
+    di = DialogAddItem(table, DITEM_CHECKBUTTON);
+    DialogItemSetText(di, _("Ignore events when mouse pointer is at the top of the desktop"));
+    DialogItemCheckButtonSetPtr(di, &dd->mute_desk_edge);
+
     DialogAddItem(table, DITEM_SEPARATOR);
 
     di = DialogAddItem(table, DITEM_TEXT);
@@ -3170,6 +3177,7 @@ static const CfgItem DesksCfgItems[] = {
     CFG_FUNC_INT(Conf.desks, areas_nx, 2, _AreasCfgFuncSizeX),
     CFG_FUNC_INT(Conf.desks, areas_ny, 1, _AreasCfgFuncSizeY),
     CFG_ITEM_BOOL(Conf.desks, areas_wraparound, 0),
+    CFG_ITEM_BOOL(Conf.desks, mute_desk_edge, 1),
 
     CFG_ITEM_INT(Conf.desks, edge_flip_mode, EDGE_FLIP_ON),
     CFG_ITEM_INT(Conf.desks, edge_flip_resistance, 25),
diff --git a/src/edge.c b/src/edge.c
index 5f62455f..8dec6b28 100644
--- a/src/edge.c
+++ b/src/edge.c
@@ -187,14 +187,10 @@ EdgeWindowCreate(int which, int x, int y, int w, int h)
 {
     static const char *const names[] =
         { "Edge-L", "Edge-R", "Edge-T", "Edge-B" };
-    XSetWindowAttributes att;
     EObj           *eo;
 
     eo = EobjWindowCreate(EOBJ_TYPE_EVENT, x, y, w, h, 0, names[which & 3]);
     ESelectInput(EobjGetWin(eo), EnterWindowMask | LeaveWindowMask);
-    att.do_not_propagate_mask =
-        ButtonPressMask | ButtonReleaseMask | PointerMotionMask;
-    EChangeWindowAttributes(EobjGetWin(eo), CWDontPropagate, &att);
     EventCallbackRegister(EobjGetWin(eo), EdgeHandleEvents, INT2PTR(which));
 
     return eo;
@@ -240,6 +236,11 @@ EdgeWindowShow(int which, int on)
             return;
     }
 
+    XSetWindowAttributes att;
+    att.do_not_propagate_mask = (Conf.desks.mute_desk_edge ?
+        ButtonPressMask | ButtonReleaseMask | PointerMotionMask : 0);
+    EChangeWindowAttributes(EobjGetWin(eo), CWDontPropagate, &att);
+
     if (on)
     {
         EobjMoveResize(eo, x, y, w, h);
-- 
2.53.0

From cb5bb98d3354b860c298d6db89fc9d6f2464411c Mon Sep 17 00:00:00 2001
From: Christian Klein <[email protected]>
Date: Thu, 26 Mar 2026 12:50:05 +0100
Subject: [PATCH 2/2] German translation update

---
 po/de.po | 4 ++++
 1 file changed, 4 insertions(+)

diff --git a/po/de.po b/po/de.po
index 1444f6cf..312d5c75 100644
--- a/po/de.po
+++ b/po/de.po
@@ -635,6 +635,10 @@ msgstr "Desktop-Gleitgeschwindigkeit:"
 msgid "Wrap desktops around"
 msgstr "Virtuelle Desktops zyklisch durchlaufen"
 
+#: src/desktops.c:2864
+msgid "Ignore events when mouse pointer is at the top of the desktop"
+msgstr "Maus-Interaktionen am oberen Desktoprand ignorieren"
+
 # src/settings.c:1858
 #: src/desktops.c:2683
 msgid "Display desktop dragbar"
-- 
2.53.0

_______________________________________________
enlightenment-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/enlightenment-devel

Reply via email to