menuinvertmode on X11

Catch up with tty and curses.  Menu items flagged as skip-invert will
not be toggled On by select-all and select-page.  If menuinvertmode
is 2 they also won't be toggled Off by deselect-all and deselect-page.
This commit is contained in:
PatR
2022-03-19 15:09:20 -07:00
parent 0cd98c402d
commit bc5231d0ea

View File

@@ -503,12 +503,15 @@ select_all(struct xwindow *wp)
reset_menu_count(wp->menu_information); reset_menu_count(wp->menu_information);
for (count = 0, curr = wp->menu_information->curr_menu.base; curr; for (count = 0, curr = wp->menu_information->curr_menu.base; curr;
curr = curr->next, count++) curr = curr->next, count++) {
if (curr->identifier.a_void != 0) /* skip 'curr' if not selectable (header or such) or already
if (!curr->selected) { selected (no need to set) or rejected due to skip-invert test */
invert_line(wp, curr, count, -1L); if (!curr->identifier.a_void
} || curr->selected
|| !menuitem_invert_test(1, curr->itemflags, FALSE))
continue;
invert_line(wp, curr, count, -1L);
}
} }
static void static void
@@ -519,11 +522,15 @@ select_none(struct xwindow *wp)
reset_menu_count(wp->menu_information); reset_menu_count(wp->menu_information);
for (count = 0, curr = wp->menu_information->curr_menu.base; curr; for (count = 0, curr = wp->menu_information->curr_menu.base; curr;
curr = curr->next, count++) curr = curr->next, count++) {
if (curr->identifier.a_void != 0) /* skip 'curr' if not selectable (header or such) or already not
if (curr->selected) { selected (no need to unset) or rejected due to skip-invert test */
invert_line(wp, curr, count, -1L); if (!curr->identifier.a_void
} || !curr->selected
|| !menuitem_invert_test(2, curr->itemflags, TRUE))
continue;
invert_line(wp, curr, count, -1L);
}
} }
@@ -536,10 +543,12 @@ invert_all(struct xwindow *wp)
reset_menu_count(wp->menu_information); reset_menu_count(wp->menu_information);
for (count = 0, curr = wp->menu_information->curr_menu.base; curr; for (count = 0, curr = wp->menu_information->curr_menu.base; curr;
curr = curr->next, count++) { curr = curr->next, count++) {
if (!menuitem_invert_test(0, curr->itemflags, curr->selected)) /* skip 'curr' if not selectable (header or such)
or rejected due to skip-invert test */
if (!curr->identifier.a_void
|| !menuitem_invert_test(0, curr->itemflags, curr->selected))
continue; continue;
if (curr->identifier.a_void != 0) invert_line(wp, curr, count, -1L);
invert_line(wp, curr, count, -1L);
} }
} }