diff --git a/radio/src/thirdparty/libopenui/src/window.cpp b/radio/src/thirdparty/libopenui/src/window.cpp index 6842bd32d..076645b5d 100644 --- a/radio/src/thirdparty/libopenui/src/window.cpp +++ b/radio/src/thirdparty/libopenui/src/window.cpp @@ -226,27 +226,29 @@ bool Window::hasOpaqueRect(const rect_t & testRect) const void Window::fullPaint(BitmapBuffer * dc) { bool paintNeeded = true; + std::list::iterator firstChild; coord_t xmin, xmax, ymin, ymax; dc->getClippingRect(xmin, xmax, ymin, ymax); coord_t x = dc->getOffsetX(); coord_t y = dc->getOffsetY(); - auto firstChild = children.end(); - rect_t relativeRect = {xmin - x, ymin - y, xmax - xmin, ymax - ymin}; - while (firstChild != children.begin()) { - auto child = *(--firstChild); - if (child->hasOpaqueRect(relativeRect)) { - paintNeeded = false; - break; - } - } - if (windowFlags & PAINT_CHILDREN_FIRST) { - paintChildren(dc, firstChild); + paintChildren(dc, children.begin()); dc->setOffset(x, y); dc->setClippingRect(xmin, xmax, ymin, ymax); } + else { + firstChild = children.end(); + rect_t relativeRect = {xmin - x, ymin - y, xmax - xmin, ymax - ymin}; + while (firstChild != children.begin()) { + auto child = *(--firstChild); + if (child->hasOpaqueRect(relativeRect)) { + paintNeeded = false; + break; + } + } + } if (paintNeeded) { TRACE_WINDOWS_INDENT("%s%s", getWindowDebugString().c_str(), hasFocus() ? " (*)" : "");