From b946ef8598b96631057beffddbf35b627fa25b8d Mon Sep 17 00:00:00 2001 From: Alexander Tkachev Date: Wed, 22 Jun 2016 15:21:35 +0600 Subject: GUI: Make ScrollContainerWidget hide children --- gui/widgets/scrollcontainer.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) (limited to 'gui/widgets') diff --git a/gui/widgets/scrollcontainer.cpp b/gui/widgets/scrollcontainer.cpp index 5e112b476f..f2fb21302c 100644 --- a/gui/widgets/scrollcontainer.cpp +++ b/gui/widgets/scrollcontainer.cpp @@ -81,7 +81,7 @@ void ScrollContainerWidget::handleCommand(CommandSender *sender, uint32 cmd, uin switch (cmd) { case kSetPositionCmd: _scrolledY = _verticalScroll->_currentPos; - recalc(); + reflowLayout(); draw(); break; } @@ -90,6 +90,16 @@ void ScrollContainerWidget::handleCommand(CommandSender *sender, uint32 cmd, uin void ScrollContainerWidget::reflowLayout() { recalc(); Widget::reflowLayout(); + Widget *ptr = _firstWidget; + while (ptr) { + int y = ptr->getAbsY() - getChildY(); + int h = ptr->getHeight(); + bool visible = true; + if (y + h - _scrolledY < 0) visible = false; + if (y - _scrolledY > _limitH) visible = false; + ptr->setVisible(visible); + ptr = ptr->next(); + } } void ScrollContainerWidget::drawWidget() { -- cgit v1.2.3