diff --git a/src/window_func.h b/src/window_func.h --- a/src/window_func.h +++ b/src/window_func.h @@ -13,12 +13,19 @@ #include "window_type.h" #include "company_type.h" #include "core/geometry_type.hpp" +#include "core/strong_typedef_type.hpp" Window *FindWindowById(WindowClass cls, WindowNumber number); Window *FindWindowByClass(WindowClass cls); Window *GetMainWindow(); void ChangeWindowOwner(Owner old_owner, Owner new_owner); +template::value, int> = 0> +Window *FindWindowById(WindowClass cls, T number) +{ + return FindWindowById(cls, static_cast(number)); +} + void ResizeWindow(Window *w, int x, int y, bool clamp_to_screen = true); int PositionMainToolbar(Window *w); int PositionStatusbar(Window *w); @@ -37,6 +44,12 @@ void InputLoop(); void InvalidateWindowData(WindowClass cls, WindowNumber number, int data = 0, bool gui_scope = false); void InvalidateWindowClassesData(WindowClass cls, int data = 0, bool gui_scope = false); +template::value, int> = 0> +void InvalidateWindowData(WindowClass cls, T number, int data = 0, bool gui_scope = false) +{ + InvalidateWindowData(cls, static_cast(number), data, gui_scope); +} + void CloseNonVitalWindows(); void CloseAllNonVitalWindows(); void DeleteAllMessages(); @@ -54,9 +67,21 @@ void SetWindowWidgetDirty(WindowClass cl void SetWindowDirty(WindowClass cls, WindowNumber number); void SetWindowClassesDirty(WindowClass cls); +template::value, int> = 0> +void SetWindowDirty(WindowClass cls, T number) +{ + SetWindowDirty(cls, static_cast(number)); +} + void CloseWindowById(WindowClass cls, WindowNumber number, bool force = true); void CloseWindowByClass(WindowClass cls); +template::value, int> = 0> +void CloseWindowById(WindowClass cls, T number, bool force = true) +{ + CloseWindowById(cls, static_cast(number), force); +} + bool EditBoxInGlobalFocus(); bool FocusedWindowIsConsole(); Point GetCaretPosition();