Mercurial > hg > openttd
changeset 4755:c317248d17fe draft
(svn r6669) -Add: vararg functions to set hidden/disabled/lowered state of multiple widgets in one call
author | glx <glx@openttd.org> |
---|---|
date | Fri, 06 Oct 2006 21:10:14 +0000 |
parents | 42b48b433d0e |
children | a9a6bd8ab356 |
files | window.c window.h |
diffstat | 2 files changed, 51 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/window.c +++ b/window.c @@ -1,6 +1,7 @@ /* $Id$ */ #include "stdafx.h" +#include <stdarg.h> #include "openttd.h" #include "debug.h" #include "functions.h" @@ -17,6 +18,48 @@ // delta between mouse cursor and upper left corner of dragged window static Point _drag_delta; +void CDECL SetWindowWidgetsDisabledState(Window *w, bool disab_stat, int widgets, ...) +{ + va_list wdg_list; + + va_start(wdg_list, widgets); + + while (widgets != WIDGET_LIST_END) { + SetWindowWidgetHiddenState(w, widgets, disab_stat); + widgets = va_arg(wdg_list, int); + } + + va_end(wdg_list); +} + +void CDECL SetWindowWidgetsHiddenState(Window *w, bool hidden_stat, int widgets, ...) +{ + va_list wdg_list; + + va_start(wdg_list, widgets); + + while (widgets != WIDGET_LIST_END) { + SetWindowWidgetHiddenState(w, widgets, hidden_stat); + widgets = va_arg(wdg_list, int); + } + + va_end(wdg_list); +} + +void CDECL SetWindowWidgetsLoweredState(Window *w, bool lowered_stat, int widgets, ...) +{ + va_list wdg_list; + + va_start(wdg_list, widgets); + + while (widgets != WIDGET_LIST_END) { + SetWindowWidgetLoweredState(w, widgets, lowered_stat); + widgets = va_arg(wdg_list, int); + } + + va_end(wdg_list); +} + void RaiseWindowButtons(Window *w) { const Widget *wi = w->widget;
--- a/window.h +++ b/window.h @@ -62,6 +62,11 @@ WIDG_LOWERED = 6, // widget is paint lowered, a pressed button in fact } ResizeFlag; +/* used to indicate the end of widgets' list for vararg functions */ +enum { + WIDGET_LIST_END = -1, +}; + typedef struct Widget { byte type; ///< Widget type, see @WindowWidgetTypes byte display_flags; ///< Resize direction, alignment, etc. during resizing, see @ResizeFlags @@ -783,6 +788,9 @@ void RaiseWindowButtons(Window *w); void RelocateAllWindows(int neww, int newh); int PositionMainToolbar(Window *w); +void CDECL SetWindowWidgetsDisabledState(Window *w, bool disab_stat, int widgets, ...); +void CDECL SetWindowWidgetsHiddenState(Window *w, bool hidden_stat, int widgets, ...); +void CDECL SetWindowWidgetsLoweredState(Window *w, bool lowered_stat, int widgets, ...); /* misc_gui.c*/ void GuiShowTooltips(StringID string_id);