Since they were freed with the rest of the array, it only meant that we wasted a few bytes (max 16) while the window were open and we didn't leak memory
This should prevent a vehicle from failing to be refitted and then show up and block a station with full load.
In such a case, it's better to stop in a depot (that will not stop any other vehicles) and notify the owner
-Now refit orders are copied when copying orders
-Fixed an initilation issue where CT_INVALID was used instead of CT_NO_REFIT (resulted in crashes in the order window)
-Fixed a compiler warning in the function to load TTD savegames
-Fix: when retiring an engine design, invalidate the build windows and invalidate the build window data
-Fix: mark build windows dirty when engine reliability changes
Nobody had problems so far, so we can assume that InvalidateWindowData() is used everywhere where it's needed
The check is just disabled, not deleted so it's quick to reenable if we change some code and wants to check this again
bulgarian - 17 fixed by kokobongo (17)
norwegian - 76 fixed, 511 changed by jhsoby (587)
slovak - 46 fixed by lengyel (46)
spanish - 3 fixed by eusebio (3)
The functions required to do so are to be found in window.h.
Rather then use the old deprecated disabled_state, hidden_state and click_state uint32 variables,
we now need to use accessors like SetWindowWidgetDisabledState, SetWindowWidgetHiddenState or SetWindowWidgetLoweredState.
This is the final commit for the merge of XTDwidget branch.
This should not be a big slowdown as it's only called each time the list is generated and will normally be much faster than the list generation itself (only a small % of the total number of vehicles is in the depot)
This gives the ability to invalidate some window data and recalculate as needed instead of doing it for each WE_PAINT
This event is called right away when using InvalidateWindowData(), so it may be a good idea to set a bool or similar in the window
or similar and then act on that bool in WE_PAINT instead of doing a lot of stuff in WE_INVALIDATE_DATA as it might be called more than once before WE_PAINT is called
InvalidateWindowData() will not automatically repaint the window, so if you want to repaint it as well, you need to mark it dirty as well.
Made the depot windows use WE_INVALIDATE_DATA to set when to generate the engine and wagon lists instead of at each redraw
It makes no sense to regenerate the list when say using the scrollbar if we know that no vehicle have entered or left the list
NOTE: currently there is a piece of code to generate the list when it's not needed and compare it to the stored list and assert if they mismatch
This check is somewhat slow and kills the whole idea of WE_INVALIDATE_DATA, so it's a short lived one to verify that InvalidateWindowData() is used everywhere where it's needed