There have been some changes to the theme (adding achievements tab
and renaming some widgets) without updating the version. This made
it possible for ScummVM to use an older theme file and crash.
Added GNU FriBidi, thus allowing Hebrew (or other future RTL languages)
to be displayed correctly.
It's been implemented for all ScummVM GUI (as far as I have noticed),
and can be further used by the engines as needed.
This work is only partial, because for complete BiDI support we'll need
to mirror the widgets, and support input text areas (which currently
don't even support Hebrew text input at all).
Some changes are required in order to use this:
- Visual Studio:
-- add FriBidi lib from https://github.com/ShiftMediaProject/fribidi
(and place the files in the other libs location)
-- add fribidi.dll to the current directory
-- add fribidi.lib to VS library list
(in GUI it's: Project -> scummvm Properties -> Linker ->
input -> Additional Dependencies)
-- Add USE_FRIBIDI define
either to:
dists/msvc/ScummVM_Global.props <PreprocessorDefinitions>
or in GUI:
Project -> scummvm Properties ->
C/C++ -> Preprocessor -> Preprocessor Definitions
- GCC:
-- install FriBidi
e.g.,
Ubuntu: `apt-get install libfribidi-dev`
CentOS: `yum install fribidi-devel`
-- rerun `configure`
Some platforms should not allow quitting ScummVM. For example the Apple's
HUG for iOS state that we should "Never quit an iOS applications
programmatically". Adding the kFeatureNoQuit allows those backend
that need it to remove the possibility to quit the application.
The OptionsContainerWidget keeps a copy of the name of the game domain
that needs to be updated when the target is renamed.
Ideally, OptionsContainerWidget would simply keep a pointer to the
ConfigurationManager::Domain object, however that's not currently
possible as the ConfigurationManager defaults are global instead of
being per domain. As a result they are not accessible from the Domain
object.
Fixes#11416.
By implementing MetaEngine::buildEngineOptionsWidget, engines can
instantiate a container widget that will be shown in the Engine tab of
the edit game dialog. The default implementation retains the existing
behavior and shows the extra GUI options.
OptionsContainerWidget is a GUI widgets container that is meant to be
used for configuration dialogs tabs. It provides an interface subclasses
can implement for loading and saving settings from a configuration domain.
Game controller input is now enabled whenever a compatible device is
connected. The keymapper's keymaps are refreshed when a joystick is added
or removed.
Fixes#10366.
Without an explicit size the layout system does not have enough
constraints to produce nice looking dialogs. Up until now the workaround
was to set explicit an size for some of the widget. This worked well
enough except when resizing down the window up until the widget size
constraints could no longer be enforced. At that point, produced layouts
looked too squished.
If the autosave slot doesn't yet have any file in it, when the
GMM save dialog is open, the autosave slot will show a default
'Autosave' entry which is write-only, to prevent users
accidentally making a savegame in that slot