The backend options tab is for backend specific options. The backends
supporting it implements the function buildBackendOptionsWidget which
defines the options elements and layout.
The backend options tab layout may differ depending on the current
domain. The options in the "Global options" tab applies to all games
while the options in the "Game options" tab only applies to a specific
game. The options in the "Global config" options tab can be set during
game play. Some options, e.g. graphics cannot be changed while running
the game while backend options can.
The first version of the backend options tab was a non-scrollable
container. The "Game options" tab includes an "Override Global options
checkbox" which, when checked, enables the options defined by the
backend.
The number of iOS7 backend options increased rapidly which caused some
options to fall outside the tab container on screens with limited
space in height. An attempt to fix that was made by the same creator
of this commit in the commit: 8db736f155
The attempt was not perfect in any way, else this commit wouldn't
exist... The "Override Global options checkbox" on the "Game options"
tab became misplaced. It also required the backend to add padding
to GUI elements it shouldn't know of.
To fix this properly put the backend options tab in a single Scroll-
Container. This way the "Override Global options checkbox" can be
properly placed related to the backend options widgets. All backend
options can also be accessed in every backend options tab layout,
Global options, Game options and Global config thanks to the scrollbar
automatically provided by the ScrollContainer.
Update all themes with the new layout.
I don't know how to test this, but appendComponent() returns a new path,
so use that instead of assuming it added things to the existing path. I
discussed this with lephilousophe before committing.
We used to use a bitfield there, which was restricting the total
number of flags to 32 (unless we switch to uint64, which is suboptimal).
Moreover, with the introduction of the global debug flags, we have
even fewer bits to flip, and this shared nature was restricting
the introduction of more global debug channels.
The goal for the bitfield was to make it possible to put a debug message into
more than one channel. But this feature was practically not used by the engines.
This was removed by the previous commits.
This commit turns the debug channels into a hashmap and puts the global channel
IDs after 100000.
There is no absolute need to renumber the existing debug channels, but
I could follow with an engine or two.
Make the backend options widget be of type ScrollContainerWidget.
This will allow backends to decide whether the options dialogue
should be scrollable or not.
Note, this changes the default padding. If not changing the padding
the scrollbar might disappear. Update the padding in each backend
instead.
There were two main issues:
1. The intermediate surface on which the rich text is drawn was not
resized when the widget was resized. This resulted in text being
cut.
2. The Graphics::MacText does not properly handle width changes,
Resize is not handled at all if there is a table, but even when
there is no table it can have issues with the font.
As a workaround it is now recreated instead of being resized.
No specific layout was defined for the rich text widget. It tried
to use the layout of the tab widget, but that did not work properly.
The rich text widget was at the correct location, but did not have
the correct size. It was bigger than the parent tab widget, which
can be clearly seen when the scrollbar is visible.