Codechange: Use EnumBitSet for picker window invalidation flags.

This commit is contained in:
Peter Nelson
2025-02-13 18:48:25 +00:00
committed by Peter Nelson
parent 75387b9e2b
commit 71dafdb21e
6 changed files with 30 additions and 27 deletions

View File

@@ -234,7 +234,7 @@ void PickerWindow::ConstructWindow()
this->FinishInitNested(this->window_number);
this->InvalidateData(PFI_CLASS | PFI_TYPE | PFI_POSITION | PFI_VALIDATE);
this->InvalidateData(PICKER_INVALIDATION_ALL);
}
void PickerWindow::Close(int data)
@@ -340,7 +340,7 @@ void PickerWindow::OnClick(Point pt, WidgetID widget, int)
if (this->callbacks.GetSelectedClass() != *it || HasBit(this->callbacks.mode, PFM_ALL)) {
ClrBit(this->callbacks.mode, PFM_ALL); // Disable showing all.
this->callbacks.SetSelectedClass(*it);
this->InvalidateData(PFI_TYPE | PFI_POSITION | PFI_VALIDATE);
this->InvalidateData({PickerInvalidation::Type, PickerInvalidation::Position, PickerInvalidation::Validate});
}
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
CloseWindowById(WC_SELECT_STATION, 0);
@@ -355,7 +355,7 @@ void PickerWindow::OnClick(Point pt, WidgetID widget, int)
/* Enabling used or saved filters automatically enables all. */
SetBit(this->callbacks.mode, PFM_ALL);
}
this->InvalidateData(PFI_CLASS | PFI_TYPE | PFI_POSITION);
this->InvalidateData({PickerInvalidation::Class, PickerInvalidation::Type, PickerInvalidation::Position});
break;
/* Type Picker */
@@ -371,14 +371,14 @@ void PickerWindow::OnClick(Point pt, WidgetID widget, int)
} else {
this->callbacks.saved.erase(it);
}
this->InvalidateData(PFI_TYPE);
this->InvalidateData(PickerInvalidation::Type);
break;
}
if (this->callbacks.IsTypeAvailable(item.class_index, item.index)) {
this->callbacks.SetSelectedClass(item.class_index);
this->callbacks.SetSelectedType(item.index);
this->InvalidateData(PFI_POSITION);
this->InvalidateData(PickerInvalidation::Position);
}
if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP);
CloseWindowById(WC_SELECT_STATION, 0);
@@ -391,16 +391,17 @@ void PickerWindow::OnInvalidateData(int data, bool gui_scope)
{
if (!gui_scope) return;
if ((data & PFI_CLASS) != 0) this->classes.ForceRebuild();
if ((data & PFI_TYPE) != 0) this->types.ForceRebuild();
PickerInvalidations pi(data);
if (pi.Test(PickerInvalidation::Class)) this->classes.ForceRebuild();
if (pi.Test(PickerInvalidation::Type)) this->types.ForceRebuild();
this->BuildPickerClassList();
if ((data & PFI_VALIDATE) != 0) this->EnsureSelectedClassIsValid();
if ((data & PFI_POSITION) != 0) this->EnsureSelectedClassIsVisible();
if (pi.Test(PickerInvalidation::Validate)) this->EnsureSelectedClassIsValid();
if (pi.Test(PickerInvalidation::Position)) this->EnsureSelectedClassIsVisible();
this->BuildPickerTypeList();
if ((data & PFI_VALIDATE) != 0) this->EnsureSelectedTypeIsValid();
if ((data & PFI_POSITION) != 0) this->EnsureSelectedTypeIsVisible();
if (pi.Test(PickerInvalidation::Validate)) this->EnsureSelectedTypeIsValid();
if (pi.Test(PickerInvalidation::Position)) this->EnsureSelectedTypeIsVisible();
if (this->has_type_picker) {
SetWidgetLoweredState(WID_PW_MODE_ALL, HasBit(this->callbacks.mode, PFM_ALL));
@@ -433,13 +434,13 @@ void PickerWindow::OnEditboxChanged(WidgetID wid)
case WID_PW_CLASS_FILTER:
this->class_string_filter.SetFilterTerm(this->class_editbox.text.GetText());
this->classes.SetFilterState(!class_string_filter.IsEmpty());
this->InvalidateData(PFI_CLASS);
this->InvalidateData(PickerInvalidation::Class);
break;
case WID_PW_TYPE_FILTER:
this->type_string_filter.SetFilterTerm(this->type_editbox.text.GetText());
this->types.SetFilterState(!type_string_filter.IsEmpty());
this->InvalidateData(PFI_TYPE);
this->InvalidateData(PickerInvalidation::Type);
break;
default:
@@ -513,7 +514,7 @@ void PickerWindow::RefreshUsedTypeList()
this->callbacks.used.clear();
this->callbacks.FillUsedItems(this->callbacks.used);
this->InvalidateData(PFI_TYPE);
this->InvalidateData(PickerInvalidation::Type);
}
/** Builds the filter list of types. */