Now that we can get an accurate HiDPI screen scaling from OSystem,
defaulting to using that seems to make sense. But we may still want
to use a slightly different scaling. The GUI scale option allows
that by providing a scaling (in percentage) with which to multiply
the HiDPI scaling.
I think it works better than a base resolution as it avoids having
the GUI getting bigger or smaller when we resize the window.
This commit keeps a popup widget, but this could be changed with
a slider if we want more fine grain control.
The tooltip will show only if mouse cursor was moved but not on a hovered focused editText field
Changes and implications in this commit:
- Fix _lastMousePosition coordinates and time being updated upon giving focus to the tooltip
- Check for mouse cursor movement first in the decision for showing the tooltip, then check if sufficient time for mouse resting position has passed (kTooltipDelay).
- Prevents showing a tooltip for a widget if it is an editable field (editText) and has both mouse hovering above it and the current focus.
This is so that typing text is not interrupted / slowed down by a periodical display of the tooltip, if the mouse is hovering over the same text field that the user is editing.
- If mouse cursor is moved but lands on the same widget as the one that had its tooltip shown last, then show the tooltip but after a different (larger) delay kTooltipSameWidgetDelay.
- Still shows tooltip for other widgets, including editText ones, if the mouse is hovered over them and they are not the current focused editText widget.
The bug was mentioned for the Android port on the forums here:
https://forums.scummvm.org/viewtopic.php?p=95531#p95531
However, it is not Android specific, even though the slowdown is a lot more noticeable on an Android device.
OSystem now just returns a nullptr if there is no text to speech manager instance
(because none is compiled into the binary, or the system doesn't provide support
for it). This removed the need for the engine authors to add scummvm osystem compile
time options checks into their engine code
When accessing a GUI dialog from a game, such as to save or load
a game, we are still able to quit if the force RTL option is not
enabled. But when that option is enabled, it only returned to
the launcher after closing the dialog, which is strange and a
discrepency with the quit behaviour. This commit implements the
same behaviour for RTL as we have for Quit.
The idea is to allow backends to start a game even after the
LauncherDialog has been created, and for that they need a way
to close the existing GUI dialogs.