From 611a8865823eb696c3dcc4a70ce6489276922353 Mon Sep 17 00:00:00 2001 From: lkn Date: Sun, 21 Jun 2026 17:06:09 +0200 Subject: [PATCH] menu: fix appicon menu hit detection and edge scrolling during drag - findMenu(): add icon_menu to the walk list so the appicon right-click menu responds to pointer motion during its modal drag loop. - dragScrollMenuCallback: remove the scrollable_menus gate so menus scroll at screen edges during drag-select regardless of the scrollable_menus preference (that preference controls the non-modal scroll path in handleMotionNotify which does not run during the menu modal loop). --- src/menu.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/menu.c b/src/menu.c index 7c5e7b6..866537d 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1149,13 +1149,14 @@ static WMenu *findMenu(WScreen * scr, int *x_ret, int *y_ret) wm_backend->pointer_get_position(&x, &y); - findMenuWalk(scr->root_menu, x, y, &deepest, &dx, &dy); - findMenuWalk(scr->switch_menu, x, y, &deepest, &dx, &dy); - findMenuWalk(scr->window_menu, x, y, &deepest, &dx, &dy); - findMenuWalk(scr->dock ? scr->dock->menu : NULL, - x, y, &deepest, &dx, &dy); - findMenuWalk(scr->clip_menu, x, y, &deepest, &dx, &dy); - findMenuWalk(scr->dock_pos_menu, x, y, &deepest, &dx, &dy); + findMenuWalk(scr->root_menu, x, y, &deepest, &dx, &dy); + findMenuWalk(scr->switch_menu, x, y, &deepest, &dx, &dy); + findMenuWalk(scr->window_menu, x, y, &deepest, &dx, &dy); + findMenuWalk(scr->dock ? scr->dock->menu : NULL, + x, y, &deepest, &dx, &dy); + findMenuWalk(scr->clip_menu, x, y, &deepest, &dx, &dy); + findMenuWalk(scr->dock_pos_menu, x, y, &deepest, &dx, &dy); + findMenuWalk(scr->icon_menu, x, y, &deepest, &dx, &dy); if (deepest) { *x_ret = dx; @@ -1697,7 +1698,7 @@ static void menuMouseDown(WObjDescriptor * desc, WBackendEvent * event) } } - if (!wPreferences.wrap_menus && !wPreferences.scrollable_menus) { + if (!wPreferences.wrap_menus) { if (!menu->timer) dragScrollMenuCallback(menu); }