We now correctly recognize obsolete language codes.
(e. g. "jp" will be considered the same as "ja")
Another step to bring down the number of detected targets...
The dialog
"WARNING: Existing save has longer gameplay duration than the current state. Are you sure you want to overwrite it?"
is not really helpful and seems to have more negative than positive impact on the user experience, so I have removed it.
GUI: Improve behavior of console history
Do not persist empty strings, prevent scolling upwards to _historyIndex entry when full, and save to history file in proper order
Currently, the text-to-speech manager will try to update the voices whenever TextToSpeechManager::pushState()/popState() is called. This causes lags of 4 - 5 seconds on Windows. Also, a warning is triggered each time. This commit prevents that from happening if the tts option is not enabled.
This commit currently affects only Windows. Other backends don't make use of the new _enabled setting. I don't know if it would make sense for any of these and I also wouldn't be able to test it.
When starting to scroll, the current line is added to the history
so that if we scroll up and then down we get it back. This was
initially implemented correctly, but borken later on in 51dceaf1659
when the history was changed to use Common::String.
This should address the #13106 issue and similar
It makes widgets, who don't implement handleMouseWheel(), call the handleMouseWheel() of their parent by default
Logic is borrowed from how widgets forward unhandle commands to their parent in handleCommand()
Add a class to group all renderer related (static) functions.
This allows to have getBestMatchingAvailableType inline in all engines.
The matching code is now shared between all engines but allows
customization for engines needing it (Grim, WME3D).
The new code takes runtime availability of features to select the
best renderer.
It avoid crashes when user choosed OpenGL but GLES2 is used.
Clicking on a checkbox (and, presumably, a radio button) would leave it
in the "pressed" state, which would inhibit tooltips for it. Now the
unpressed state is cleared along with _duringPress for both these
classes. There are other widgets that inherit from ButtonWidget, but
they either already did this, or didn't override handleMouseUp(), so
they should be fine.
A defaultCommandProcessor let's an engine take over the processing of
commands in the debugger. The Director Engine uses the functionality to
implement a repl for the Lingo language.
Example Usage:
registerDefaultCmd(WRAP_DEFAULTCOMMAND(Debugger, lingoCommandProcessor));
The input will now be handled by lingoCommandProcessor. Other commands
will not work untill control is given back to the debugger.
It's up to the engine to return control to the debugger when done.
To return control, call it with a nullptr:
registerDefaultCmd(nullptr);
Fix bug https://bugs.scummvm.org/ticket/13339
Solution is taken from our ListWidget (gui/widgets/list.cpp) which performs a similar check in its ListWidget::getEditRect()
This happened after calling scaleGfx if the original surface was
already at the correct size. In such a case scaleGfx returns the
original surface, so it should not be freed.
* GUI: rename buttons
Rename Edit Game to Game Options and Options to Global Options to make it less confusing.
Remove ellipsis on launcher buttons.
* GUI: put ellipsis back
* GUI: abbreviate options button texts for lowres
* GUI: use 320 width for lowres
* GUI: remove ellipsis from About button