From: PatR Date: Sat, 19 Mar 2022 22:49:55 +0000 (-0700) Subject: menuinvertmode for win32/Windows GUI X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=ffd84583d03c473dd1543608d6ed5e46ed56b560;p=nethack menuinvertmode for win32/Windows GUI Catch up with tty, curses, X11, and Qt: menuitem_invert_test() applies to select as well as invert and if menuinvertmode is 2 then it also applies to unselect. Not tested. --- diff --git a/win/win32/mhmenu.c b/win/win32/mhmenu.c index 17f9059bf..63ee419db 100644 --- a/win/win32/mhmenu.c +++ b/win/win32/mhmenu.c @@ -1289,6 +1289,9 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch) if (data->how == PICK_ANY) { reset_menu_count(hwndList, data); for (i = 0; i < data->menui.menu.size; i++) { + if (!menuitem_invert_test(1, data->menui.menu.items[i].itemflags, + NHMENU_IS_SELECTED(data->menui.menu.items[i]))) + continue; SelectMenuItem(hwndList, data, i, -1); } return -2; @@ -1299,6 +1302,9 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch) if (data->how == PICK_ANY) { reset_menu_count(hwndList, data); for (i = 0; i < data->menui.menu.size; i++) { + if (!menuitem_invert_test(2, data->menui.menu.items[i].itemflags, + NHMENU_IS_SELECTED(data->menui.menu.items[i]))) + continue; SelectMenuItem(hwndList, data, i, 0); } return -2; @@ -1309,9 +1315,10 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch) if (data->how == PICK_ANY) { reset_menu_count(hwndList, data); for (i = 0; i < data->menui.menu.size; i++) { - if (menuitem_invert_test(0, data->menui.menu.items[i].itemflags, - NHMENU_IS_SELECTED(data->menui.menu.items[i]))) - SelectMenuItem(hwndList, data, i, + if (!menuitem_invert_test(0, data->menui.menu.items[i].itemflags, + NHMENU_IS_SELECTED(data->menui.menu.items[i]))) + continue; + SelectMenuItem(hwndList, data, i, NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0 : -1); } @@ -1328,6 +1335,9 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch) from = max(0, topIndex); to = min(data->menui.menu.size, from + pageSize); for (i = from; i < to; i++) { + if (!menuitem_invert_test(1, data->menui.menu.items[i].itemflags, + NHMENU_IS_SELECTED(data->menui.menu.items[i]))) + continue; SelectMenuItem(hwndList, data, i, -1); } return -2; @@ -1343,6 +1353,9 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch) from = max(0, topIndex); to = min(data->menui.menu.size, from + pageSize); for (i = from; i < to; i++) { + if (!menuitem_invert_test(2, data->menui.menu.items[i].itemflags, + NHMENU_IS_SELECTED(data->menui.menu.items[i]))) + continue; SelectMenuItem(hwndList, data, i, 0); } return -2; @@ -1358,9 +1371,10 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch) from = max(0, topIndex); to = min(data->menui.menu.size, from + pageSize); for (i = from; i < to; i++) { - if (menuitem_invert_test(0, data->menui.menu.items[i].itemflags, - NHMENU_IS_SELECTED(data->menui.menu.items[i]))) - SelectMenuItem(hwndList, data, i, + if (!menuitem_invert_test(0, data->menui.menu.items[i].itemflags, + NHMENU_IS_SELECTED(data->menui.menu.items[i]))) + continue; + SelectMenuItem(hwndList, data, i, NHMENU_IS_SELECTED(data->menui.menu.items[i]) ? 0 : -1); }