aboutsummaryrefslogtreecommitdiff
path: root/gui/widgets
diff options
context:
space:
mode:
authorAlexander Tkachev2016-06-22 15:21:35 +0600
committerEugene Sandulenko2016-07-03 12:17:01 +0200
commitb946ef8598b96631057beffddbf35b627fa25b8d (patch)
treeb6046a7e753433ef3c5854cdca41c42e97b829d7 /gui/widgets
parentfca0f0ed3496530fc0d63efdde9f32fb995cd671 (diff)
downloadscummvm-rg350-b946ef8598b96631057beffddbf35b627fa25b8d.tar.gz
scummvm-rg350-b946ef8598b96631057beffddbf35b627fa25b8d.tar.bz2
scummvm-rg350-b946ef8598b96631057beffddbf35b627fa25b8d.zip
GUI: Make ScrollContainerWidget hide children
Diffstat (limited to 'gui/widgets')
-rw-r--r--gui/widgets/scrollcontainer.cpp12
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() {