diff options
-rw-r--r-- | src/window.cpp | 11 | ||||
-rw-r--r-- | src/window_gui.h | 2 |
2 files changed, 7 insertions, 6 deletions
diff --git a/src/window.cpp b/src/window.cpp index c9c43aab6..97c762fca 100644 --- a/src/window.cpp +++ b/src/window.cpp @@ -194,13 +194,14 @@ void CDECL Window::SetWidgetsLoweredState(bool lowered_stat, int widgets, ...) } /** - * Raise all buttons of the window + * Raise the buttons of the window. + * @param autoraise Raise only the push buttons of the window. */ -void Window::RaiseButtons() +void Window::RaiseButtons(bool autoraise) { if (this->widget != NULL) { for (uint i = 0; i < this->widget_count; i++) { - if (this->IsWidgetLowered(i)) { + if ((!autoraise || (this->widget[i].type & WWB_PUSHBUTTON)) && this->IsWidgetLowered(i)) { this->RaiseWidget(i); this->InvalidateWidget(i); } @@ -208,7 +209,7 @@ void Window::RaiseButtons() } if (this->nested_array != NULL) { for (uint i = 0; i < this->nested_array_size; i++) { - if (this->nested_array[i] != NULL && this->IsWidgetLowered(i)) { + if (this->nested_array[i] != NULL && (!autoraise || (this->nested_array[i]->type & WWB_PUSHBUTTON)) && this->IsWidgetLowered(i)) { this->RaiseWidget(i); this->InvalidateWidget(i); } @@ -1422,7 +1423,7 @@ static void DecreaseWindowCounters() FOR_ALL_WINDOWS_FROM_FRONT(w) { if ((w->flags4 & WF_TIMEOUT_MASK) && !(--w->flags4 & WF_TIMEOUT_MASK)) { w->OnTimeout(); - if (w->desc_flags & WDF_UNCLICK_BUTTONS) w->RaiseButtons(); + if (w->desc_flags & WDF_UNCLICK_BUTTONS) w->RaiseButtons(true); } } } diff --git a/src/window_gui.h b/src/window_gui.h index 83f8d1495..d87669061 100644 --- a/src/window_gui.h +++ b/src/window_gui.h @@ -502,7 +502,7 @@ public: void HandleButtonClick(byte widget); const Widget *GetWidgetOfType(WidgetType widget_type) const; - void RaiseButtons(); + void RaiseButtons(bool autoraise = false); void CDECL SetWidgetsDisabledState(bool disab_stat, int widgets, ...); void CDECL SetWidgetsHiddenState(bool hidden_stat, int widgets, ...); void CDECL SetWidgetsLoweredState(bool lowered_stat, int widgets, ...); |