aboutsummaryrefslogtreecommitdiff
path: root/gui/newgui.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'gui/newgui.cpp')
-rw-r--r--gui/newgui.cpp22
1 files changed, 10 insertions, 12 deletions
diff --git a/gui/newgui.cpp b/gui/newgui.cpp
index 20d79e8ffc..fb3a0ff103 100644
--- a/gui/newgui.cpp
+++ b/gui/newgui.cpp
@@ -139,19 +139,8 @@ void NewGui::runLoop() {
didSaveState = true;
}
- // small 'HACK': complete gui redraw (needed for new theme inactive dialog color change possibilities)
- _theme->clearAll();
-
int i;
- for (i = 0; i < _dialogStack.size() - 1; ++i) {
- _theme->closeDialog();
- }
- for (i = 0; i < _dialogStack.size() - 1; i++) {
- _theme->openDialog(false);
- }
- _theme->openDialog(true);
-
while (!_dialogStack.empty() && activeDialog == _dialogStack.top()) {
activeDialog->handleTickle();
@@ -164,7 +153,16 @@ void NewGui::runLoop() {
_theme->closeDialog();
}
for (i = 0; i < _dialogStack.size(); i++) {
- _theme->openDialog(i == (_dialogStack.size() - 1));
+ // Special treatment when topmost dialog has dimsInactive() set to false
+ // This is the case for PopUpWidget which should not dim a dialog
+ // which it belongs to
+ if ((i == _dialogStack.size() - 2) && !_dialogStack[i + 1]->dimsInactive())
+ _theme->openDialog(true);
+ else if ((i != (_dialogStack.size() - 1)) || !_dialogStack[i]->dimsInactive())
+ _theme->openDialog(false);
+ else
+ _theme->openDialog(true);
+
_dialogStack[i]->drawDialog();
}
_needRedraw = false;