The docs state that:
> Note that INI files lose the distinction
between numeric data and the strings used
to encode them, so values written as numbers
shall be read back as QString. The numeric
value can be recovered using QString::toInt(),
QString::toDouble() and related functions.
Currently, double-precision numbers can not
be reconstructed properly due to QString's
way of handling dp numbers.
Since they are read back as QString, we
should save these numbers according to the
precision that QString is comfortable with,
so that they are parsed properly when the
application starts.
Windows 11 identifies as Windows 10 (NT 10),
so this comparison always yields false.
As a side note, native acrylic background
for Win32 windows only gained support with
the Windows 11 22H2 update, that's why
there is the check here.
Note that according to the general conventions
a transparent window must be frameless on
Windows. This is currently not the case,
because "frameless window don't support
areo snapping". So, it can be considered
as a known bug if native acrylic does not
work as intended. This grants a requirement
of change to use frameless window, and get
rid of the current workaround that simulates
frameless window in mainctx_win32.cpp. If
aero snapping does not work, it is Windows's
problem since we are using frameless windows
in every other platform.
Only after `QQuickItem::componentComplete()` is called, we
are sure that all bindings are assigned. Currently,
the signal handlers connected in construction depend
on other bindings.
This is not ideal, because there is no guarantee on the
binding evaluation ordering.
Scene graph initialization occurs asynchronously, while `makeMainInterface()`
expects an immediate return with an error code.
In other compositor integrations, it is trivial to return immediately. However,
in CompositorDirectComposition we have to wait for scene graph to initialize so
that we know what graphics API it is using because DComp composition can only work
with D3D11 and D3D12.
In order to satisfy that, an event loop is used here to wait until the scene
graph is initialized. This has worked fine, however there was no handling
in case an error occurs during scene graph initialization.
Now, we handle the error so that the interface is not stuck in waiting for
the event loop to quit. This will make the interface hence the Qt module
close gracefully.
Although Qt interface fails gracefully if
MainInterface.qml does not load properly,
The said file does not import all necessary
QML modules that are used throughout the
interface. Once QML engine encounters
an unknown module, the whole interface
becomes no longer usable as it asserts
all required modules to be present.