diff options
author | Alexander Tkachev | 2016-06-22 15:21:35 +0600 |
---|---|---|
committer | Eugene Sandulenko | 2016-07-03 12:17:01 +0200 |
commit | b946ef8598b96631057beffddbf35b627fa25b8d (patch) | |
tree | b6046a7e753433ef3c5854cdca41c42e97b829d7 | |
parent | fca0f0ed3496530fc0d63efdde9f32fb995cd671 (diff) | |
download | scummvm-rg350-b946ef8598b96631057beffddbf35b627fa25b8d.tar.gz scummvm-rg350-b946ef8598b96631057beffddbf35b627fa25b8d.tar.bz2 scummvm-rg350-b946ef8598b96631057beffddbf35b627fa25b8d.zip |
GUI: Make ScrollContainerWidget hide children
-rw-r--r-- | gui/widgets/scrollcontainer.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
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() { |