aboutsummaryrefslogtreecommitdiff
path: root/gui/widgets/tab.cpp
diff options
context:
space:
mode:
authorBastien Bouclet2018-01-06 14:40:02 +0100
committerBastien Bouclet2018-01-27 18:12:34 +0100
commit0496ede62f8b86e1885d594e3aa5320c96b708eb (patch)
tree6a4453606061a15a5ee3462d1680936c257ae7f5 /gui/widgets/tab.cpp
parent3b50b57f544cb7c719a5f02f061853e10885ae6c (diff)
downloadscummvm-rg350-0496ede62f8b86e1885d594e3aa5320c96b708eb.tar.gz
scummvm-rg350-0496ede62f8b86e1885d594e3aa5320c96b708eb.tar.bz2
scummvm-rg350-0496ede62f8b86e1885d594e3aa5320c96b708eb.zip
GUI: Implement dirty-checking for widget redraws
Diffstat (limited to 'gui/widgets/tab.cpp')
-rw-r--r--gui/widgets/tab.cpp15
1 files changed, 12 insertions, 3 deletions
diff --git a/gui/widgets/tab.cpp b/gui/widgets/tab.cpp
index e2e3e72db0..9b045daf51 100644
--- a/gui/widgets/tab.cpp
+++ b/gui/widgets/tab.cpp
@@ -154,7 +154,7 @@ void TabWidget::removeTab(int tabID) {
}
// Finally trigger a redraw
- _boss->draw();
+ _boss->markAsDirty();
}
void TabWidget::setActiveTab(int tabID) {
@@ -174,7 +174,7 @@ void TabWidget::setActiveTab(int tabID) {
while (_lastVisibleTab < tabID)
setFirstVisible(_firstVisibleTab + 1, false);
- _boss->draw();
+ _boss->markAsDirty();
}
}
@@ -246,7 +246,7 @@ void TabWidget::setFirstVisible(int tabID, bool adjustIfRoom) {
computeLastVisibleTab(adjustIfRoom);
- _boss->draw(); // TODO: Necessary?
+ _boss->markAsDirty(); // TODO: Necessary?
}
void TabWidget::reflowLayout() {
@@ -334,6 +334,15 @@ void TabWidget::draw() {
}
}
+void TabWidget::markAsDirty() {
+ Widget::markAsDirty();
+
+ if (_navButtonsVisible) {
+ _navLeft->markAsDirty();
+ _navRight->markAsDirty();
+ }
+}
+
bool TabWidget::containsWidget(Widget *w) const {
if (w == _navLeft || w == _navRight || _navLeft->containsWidget(w) || _navRight->containsWidget(w))
return true;