if (counting)
ClearCount(); // discard any pending count
for (int row = 0; row < itemcount; ++row) {
- itemlist[row].selected = itemlist[row].preselected = false;
- if (!itemlist[row].Selectable())
+ itemlist[row].preselected = false; // stale for all rows
+ // skip if not selectable or already selected or fails invert_test()
+ if (!itemlist[row].Selectable()
+ || itemlist[row].selected
+ || !menuitem_invert_test(1, itemlist[row].itemflags, FALSE))
continue;
itemlist[row].selected = true;
if (counting)
ClearCount(); // discard any pending count
for (int row = 0; row < itemcount; ++row) {
- itemlist[row].selected = itemlist[row].preselected = false;
- if (!itemlist[row].Selectable())
+ itemlist[row].preselected = false; // stale for all rows
+ // skip if not selectable or already unselected or fails invert_test()
+ if (!itemlist[row].Selectable()
+ || !itemlist[row].selected
+ || !menuitem_invert_test(2, itemlist[row].itemflags, TRUE))
continue;
+ itemlist[row].selected = false;
QTableWidgetItem *count = table->item(row, 0);
if (count != NULL) {
if (counting)
ClearCount(); // discard any pending count
for (int row = 0; row < itemcount; ++row) {
- if (!menuitem_invert_test(0, itemlist[row].itemflags,
- itemlist[row].preselected))
+ itemlist[row].preselected = false; // stale for all rows
+ if (!itemlist[row].Selectable()
+ || !menuitem_invert_test(0, itemlist[row].itemflags,
+ itemlist[row].selected))
continue;
ToggleSelect(row, false);
}