diff --git a/src/signs_gui.cpp b/src/signs_gui.cpp --- a/src/signs_gui.cpp +++ b/src/signs_gui.cpp @@ -374,15 +374,11 @@ struct SignListWindow : QueryStringBaseW */ virtual void OnInvalidateData(int data = 0, bool gui_scope = true) { - if (!gui_scope) return; /* When there is a filter string, we always need to rebuild the list even if * the amount of signs in total is unchanged, as the subset of signs that is - * accepted by the filter might has changed. - * - * We can only set the trigger for resorting/rebuilding. - * We cannot safely resort at this point, as there might be multiple scheduled invalidations, - * and a rebuild needs to be done first though it is scheduled later. */ + * accepted by the filter might has changed. */ if (data == 0 || !StrEmpty(this->filter_string)) { // New or deleted sign, or there is a filter string + /* This needs to be done in command-scope to enforce rebuilding before resorting invalid data */ this->signs.ForceRebuild(); } else { // Change of sign contents while there is no filter string this->signs.ForceResort();