diff options
| -rw-r--r-- | engines/tsage/graphics.cpp | 27 | 
1 files changed, 16 insertions, 11 deletions
diff --git a/engines/tsage/graphics.cpp b/engines/tsage/graphics.cpp index 5da00e8522..85dfc5d058 100644 --- a/engines/tsage/graphics.cpp +++ b/engines/tsage/graphics.cpp @@ -967,9 +967,10 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) {  	// Event loop  	GfxButton *selectedButton = NULL; -	while (!_vm->getEventManager()->shouldQuit()) { +	bool breakFlag = false; +	while (!_vm->getEventManager()->shouldQuit() && !breakFlag) {  		Event event; -		while (_globals->_events.getEvent(event)) { +		while (_globals->_events.getEvent(event) && !breakFlag) {  			// Adjust mouse positions to be relative within the dialog  			event.mousePos.x -= _gfxManager._bounds.left;  			event.mousePos.y -= _gfxManager._bounds.top; @@ -978,19 +979,23 @@ GfxButton *GfxDialog::execute(GfxButton *defaultButton) {  				if ((*i)->process(event))  					selectedButton = static_cast<GfxButton *>(*i);  			} -		} -		if (selectedButton) -			break; -		else if (!event.handled) { -			if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) { -				selectedButton = NULL; -				break; -			} else if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN)) { -				selectedButton = defaultButton; +			if (selectedButton) { +				breakFlag = true;  				break; +			} else if (!event.handled) { +				if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_ESCAPE)) { +					selectedButton = NULL; +					breakFlag = true; +					break; +				} else if ((event.eventType == EVENT_KEYPRESS) && (event.kbd.keycode == Common::KEYCODE_RETURN)) { +					selectedButton = defaultButton; +					breakFlag = true; +					break; +				}  			}  		} +  		g_system->delayMillis(10);  		g_system->updateScreen();  	}  | 
