centralize the invert decision logic to avoid updates to 7 ports
This will make it easier to tinker for best results.
This commit is contained in:
@@ -534,7 +534,8 @@ void NetHackQtMenuWindow::Invert()
|
||||
return;
|
||||
|
||||
for (int i=0; i<itemcount; i++) {
|
||||
if ((itemlist[i].itemflags & MENU_ITEMFLAGS_SKIPINVERT) != 0)
|
||||
if (!menuitem_invert_test(0, itemlist[i].itemflags,
|
||||
itemlist[i].selected))
|
||||
continue;
|
||||
|
||||
QTableWidgetItem *count = table->item(i, 0);
|
||||
|
||||
@@ -543,7 +543,7 @@ struct xwindow *wp;
|
||||
reset_menu_count(wp->menu_information);
|
||||
for (count = 0, curr = wp->menu_information->curr_menu.base; curr;
|
||||
curr = curr->next, count++) {
|
||||
if ((curr->itemflags & MENU_ITEMFLAGS_SKIPINVERT) != 0)
|
||||
if (!menuitem_invert_test(0, curr->itemflags, curr->selected))
|
||||
continue;
|
||||
if (curr->identifier.a_void != 0)
|
||||
invert_line(wp, curr, count, -1L);
|
||||
|
||||
@@ -1553,7 +1553,8 @@ menu_operation(WINDOW * win, nhmenu *menu, menu_op
|
||||
|
||||
if (menu_item_ptr->identifier.a_void != NULL) {
|
||||
if (operation != INVERT
|
||||
|| (menu_item_ptr->itemflags & MENU_ITEMFLAGS_SKIPINVERT) == 0)
|
||||
|| menuitem_invert_test(0, menu_item_ptr->itemflags,
|
||||
menu_item_ptr->selected))
|
||||
menu_select_deselect(win, menu_item_ptr, operation, current_page);
|
||||
}
|
||||
|
||||
|
||||
@@ -1784,8 +1784,9 @@ char acc;
|
||||
for (curr = invent_list; start-- && curr; curr = curr->Gmi_next)
|
||||
;
|
||||
for (; page-- && curr; curr = curr->Gmi_next) {
|
||||
if ((curr->Gmi_itemflags & MENU_ITEMFLAGS_SKIPINVERT) != 0)
|
||||
if (!menuitem_invert_test(0, curr->Gmi_itemflags, curr->Gmi_selected)
|
||||
continue;
|
||||
|
||||
if (curr->Gmi_identifier && (acc == 0 || curr->Gmi_groupacc == acc)) {
|
||||
if (curr->Gmi_selected) {
|
||||
curr->Gmi_selected = FALSE;
|
||||
|
||||
@@ -1774,7 +1774,7 @@ char acc; /* group accelerator, 0 => all */
|
||||
int n;
|
||||
|
||||
for (n = 0, curr = page_start; curr != page_end; n++, curr = curr->next) {
|
||||
if ((curr->itemflags & MENU_ITEMFLAGS_SKIPINVERT) != 0)
|
||||
if (!menuitem_invert_test(0, curr->itemflags, curr->selected))
|
||||
continue;
|
||||
|
||||
if (curr->identifier.a_void && (acc == 0 || curr->gselector == acc)) {
|
||||
@@ -1812,12 +1812,12 @@ char acc; /* group accelerator, 0 => all */
|
||||
|
||||
if (!on_curr_page && curr->identifier.a_void
|
||||
&& (acc == 0 || curr->gselector == acc)) {
|
||||
if ((curr->itemflags & MENU_ITEMFLAGS_SKIPINVERT) == 0) {
|
||||
if (menuitem_invert_test(0, curr->itemflags, curr->selected)) {
|
||||
if (curr->selected) {
|
||||
curr->selected = FALSE;
|
||||
curr->count = -1;
|
||||
} else
|
||||
curr->selected = TRUE;
|
||||
curr->selected = TRUE;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1306,7 +1306,8 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
||||
if (data->how == PICK_ANY) {
|
||||
reset_menu_count(hwndList, data);
|
||||
for (i = 0; i < data->menu.size; i++) {
|
||||
if (!(data->menu.items[i].itemflags & MENU_ITEMFLAGS_SKIPINVERT))
|
||||
if (menuitem_invert_test(0, data->menu.items[i].itemflags,
|
||||
NHMENU_IS_SELECTED(data->menu.items[i])))
|
||||
SelectMenuItem(hwndList, data, i,
|
||||
NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
|
||||
: -1);
|
||||
@@ -1354,7 +1355,8 @@ onListChar(HWND hWnd, HWND hwndList, WORD ch)
|
||||
from = max(0, topIndex);
|
||||
to = min(data->menu.size, from + pageSize);
|
||||
for (i = from; i < to; i++) {
|
||||
if (!(data->menu.items[i].itemflags & MENU_ITEMFLAGS_SKIPINVERT))
|
||||
if (menuitem_invert_test(0, data->menu.items[i].itemflags,
|
||||
NHMENU_IS_SELECTED(data->menu.items[i])))
|
||||
SelectMenuItem(hwndList, data, i,
|
||||
NHMENU_IS_SELECTED(data->menu.items[i]) ? 0
|
||||
: -1);
|
||||
|
||||
Reference in New Issue
Block a user