diff options
Diffstat (limited to 'gui')
-rw-r--r-- | gui/GuiManager.cpp | 39 | ||||
-rw-r--r-- | gui/GuiManager.h | 3 | ||||
-rw-r--r-- | gui/browser.cpp | 2 | ||||
-rw-r--r-- | gui/dialog.cpp | 6 | ||||
-rw-r--r-- | gui/options.cpp | 2 | ||||
-rw-r--r-- | gui/widget.cpp | 10 |
6 files changed, 44 insertions, 18 deletions
diff --git a/gui/GuiManager.cpp b/gui/GuiManager.cpp index 6fa34aa04a..ebab4b1b2b 100644 --- a/gui/GuiManager.cpp +++ b/gui/GuiManager.cpp @@ -139,20 +139,29 @@ void GuiManager::redraw() { if (_dialogStack.empty()) return; - if (_dialogStack.size() > 1) { - _theme->clearAll(); - _theme->openDialog(true); + switch (_redrawStatus) { + case kRedrawCloseDialog: + case kRedrawFull: + case kRedrawTopDialog: + _theme->clearAll(); + _theme->openDialog(true); + + for (i = 0; i < _dialogStack.size() - 1; i++) { + _dialogStack[i]->drawDialog(); + } - for (i = 0; i < _dialogStack.size() - 1; i++) - _dialogStack[i]->drawDialog(); + _theme->finishBuffering(); - _theme->finishBuffering(); - _theme->updateScreen(); - } + case kRedrawOpenDialog: + _theme->updateScreen(); + _theme->openDialog(true, (ThemeEngine::ShadingStyle)xmlEval()->getVar("Dialog." + _dialogStack.top()->_name + ".Shading", 0)); + _dialogStack.top()->drawDialog(); + _theme->finishBuffering(); + break; - _theme->openDialog(true, (ThemeEngine::ShadingStyle)xmlEval()->getVar("Dialog." + _dialogStack.top()->_name + ".Shading", 0)); - _dialogStack.top()->drawDialog(); - _theme->finishBuffering(); + default: + return; + } _theme->updateScreen(); _redrawStatus = kRedrawDisabled; @@ -238,6 +247,8 @@ void GuiManager::runLoop() { if (_useStdCursor) setupCursor(); +// _theme->refresh(); + _themeChange = false; _redrawStatus = kRedrawFull; redraw(); @@ -336,7 +347,8 @@ void GuiManager::restoreState() { void GuiManager::openDialog(Dialog *dialog) { _dialogStack.push(dialog); - _redrawStatus = kRedrawFull; + if (_redrawStatus != kRedrawFull) + _redrawStatus = kRedrawOpenDialog; // We reflow the dialog just before opening it. If the screen changed // since the last time we looked, also refresh the loaded theme, @@ -352,7 +364,8 @@ void GuiManager::closeTopDialog() { // Remove the dialog from the stack _dialogStack.pop(); - _redrawStatus = kRedrawFull; + if (_redrawStatus != kRedrawFull) + _redrawStatus = kRedrawCloseDialog; } void GuiManager::setupCursor() { diff --git a/gui/GuiManager.h b/gui/GuiManager.h index 9bdacb5459..12c9a25f62 100644 --- a/gui/GuiManager.h +++ b/gui/GuiManager.h @@ -91,6 +91,9 @@ public: protected: enum RedrawStatus { kRedrawDisabled = 0, + kRedrawOpenDialog, + kRedrawCloseDialog, + kRedrawTopDialog, kRedrawFull }; diff --git a/gui/browser.cpp b/gui/browser.cpp index f4719f4850..48382e880b 100644 --- a/gui/browser.cpp +++ b/gui/browser.cpp @@ -43,7 +43,7 @@ enum { */ BrowserDialog::BrowserDialog(const char *title, bool dirBrowser) - : Dialog("Browser") { + : Dialog("browser") { _titleRef = CFStringCreateWithCString(0, title, CFStringGetSystemEncoding()); _isDirBrowser = dirBrowser; } diff --git a/gui/dialog.cpp b/gui/dialog.cpp index fe01228f5b..bca1be3d0e 100644 --- a/gui/dialog.cpp +++ b/gui/dialog.cpp @@ -131,7 +131,11 @@ void Dialog::releaseFocus() { } void Dialog::draw() { - g_gui._redrawStatus = GUI::GuiManager::kRedrawFull; + //TANOKU - FIXME when is this enabled? what does this do? + // Update: called on tab drawing, mainly... + // we can pass this as open a new dialog or something +// g_gui._needRedraw = true; + g_gui._redrawStatus = GUI::GuiManager::kRedrawTopDialog; } void Dialog::drawDialog() { diff --git a/gui/options.cpp b/gui/options.cpp index 02325722ab..78010e351a 100644 --- a/gui/options.cpp +++ b/gui/options.cpp @@ -251,8 +251,6 @@ void OptionsDialog::open() { _subMode = getSubtitleMode(ConfMan.getBool("subtitles", _domain), ConfMan.getBool("speech_mute", _domain)); _subToggleButton->setLabel(_subModeDesc[_subMode]); - _subToggleButton->draw(); - // Engines that reuse the subtitle speed widget set their own max value. // Scale the config value accordingly (see addSubtitleControls) diff --git a/gui/widget.cpp b/gui/widget.cpp index 46d7ac80b7..412e50f79c 100644 --- a/gui/widget.cpp +++ b/gui/widget.cpp @@ -199,7 +199,15 @@ void StaticTextWidget::setValue(int value) { void StaticTextWidget::setLabel(const Common::String &label) { _label = label; - this->draw(); + + // get parent's size + const uint16 w = _boss->getWidth(); + const uint16 h = _boss->getHeight(); + const int16 x = _boss->getAbsX(); + const int16 y = _boss->getAbsY(); + + // restore the parent's background and redraw it again. + g_gui.theme()->restoreBackground(Common::Rect(x, y, x + w, y + h)); _boss->draw(); } |