]> granicus.if.org Git - nethack/commitdiff
menuinvertmode for win32/Windows GUI
authorPatR <rankin@nethack.org>
Sat, 19 Mar 2022 22:49:55 +0000 (15:49 -0700)
committerPatR <rankin@nethack.org>
Sat, 19 Mar 2022 22:49:55 +0000 (15:49 -0700)
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.

win/win32/mhmenu.c

index 17f9059bf15023eb1c40b27be37445be075a421a..63ee419db857078b38a2aa70af479df10ab9a396 100644 (file)
@@ -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);
             }