aboutsummaryrefslogtreecommitdiff
path: root/gui/gui-manager.cpp
diff options
context:
space:
mode:
authorOleksiy Kurochko2012-05-03 19:32:08 +0300
committerEugene Sandulenko2012-05-03 19:32:08 +0300
commite6c317a9226b71af572d2e2004e307c0e895b77c (patch)
tree985d9069de0b156803a306da494ea7fd92d7c5c5 /gui/gui-manager.cpp
parent8d157ae1858c6aab2acc78c732b547dd4e94723a (diff)
downloadscummvm-rg350-e6c317a9226b71af572d2e2004e307c0e895b77c.tar.gz
scummvm-rg350-e6c317a9226b71af572d2e2004e307c0e895b77c.tar.bz2
scummvm-rg350-e6c317a9226b71af572d2e2004e307c0e895b77c.zip
GUI: Implemented pressed state for buttons
Diffstat (limited to 'gui/gui-manager.cpp')
-rw-r--r--gui/gui-manager.cpp13
1 files changed, 11 insertions, 2 deletions
diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp
index ffecd928bc..abd781e1a3 100644
--- a/gui/gui-manager.cpp
+++ b/gui/gui-manager.cpp
@@ -381,7 +381,7 @@ void GuiManager::runLoop() {
if (tooltipCheck && _lastMousePosition.time + kTooltipDelay < _system->getMillis()) {
Widget *wdg = activeDialog->findWidget(_lastMousePosition.x, _lastMousePosition.y);
- if (wdg && wdg->getTooltip()) {
+ if (wdg && wdg->getTooltip() && !(wdg->getFlags() & WIDGET_PRESSED)) {
Tooltip *tooltip = new Tooltip();
tooltip->setup(activeDialog, wdg, _lastMousePosition.x, _lastMousePosition.y);
tooltip->runModal();
@@ -441,6 +441,11 @@ void GuiManager::restoreState() {
}
void GuiManager::openDialog(Dialog *dialog) {
+ dialog->receivedFocus();
+
+ if (!_dialogStack.empty())
+ getTopDialog()->lostFocus();
+
_dialogStack.push(dialog);
if (_redrawStatus != kRedrawFull)
_redrawStatus = kRedrawOpenDialog;
@@ -458,7 +463,11 @@ void GuiManager::closeTopDialog() {
return;
// Remove the dialog from the stack
- _dialogStack.pop();
+ _dialogStack.pop()->lostFocus();
+
+ if (!_dialogStack.empty())
+ getTopDialog()->receivedFocus();
+
if (_redrawStatus != kRedrawFull)
_redrawStatus = kRedrawCloseDialog;