Files
pcsx2/3rdparty/kddockwidgets/README-porting.md
2025-11-18 14:18:26 -07:00

52 lines
2.3 KiB
Markdown

# Porting from v1 to v2
To make the framework toolkit agnostic to support `QtQuick` and even non-Qt toolkits
such as `Flutter` some API changes were required.
<br>
Each component was split into 2, one part lives in `core/` and is gui agnostic,
while the other part lives in a frontend specific folder, such as `qtwidgets/` (or `qtquick/`).
For example, TitleBar was split into `KDDockWidgets::Core::TitleBar` and
`KDDockWidgets::QtWidgets::TitleBar`. The former we call it a `Controller`,
while the latter is the `View`. In the QtWidgets case, a view is a `QWidget`,
while in QtQuick it's a QQuickItem.
The main public API didn't change much, but if you're using private API heavily
to achieve advanced customizations then take note of these renamings:
(Assume `::QtQuick::` namespace instead of `::QtWidgets::` if you're on QtQuick).
- `Frame` was renamed to `Group` as it represents a tab group
- `TabWidget` was renamed to `Stack`
- `KDDockWidgets::DefaultWidgetFactory` was renamed to `KDDockWidgets::QtWidgets::ViewFactory`
- The `*Widget` and `*Quick` classes dropped the suffix and are namespaced instead:
- `KDDockWidgets::TitleBarWidget` -> `KDDockWidgets::QtWidgets::TitleBar`
- `KDDockWidgets::TitleBarQuick` -> `KDDockWidgets::QtQuick::TitleBar`
- Same for DropArea, FloatingWindow, TabBar, Group, Stack, MainWindow, DockWidget
- You can include the views for example with `#include <kddockwidgets/qtwidgets/views/TitleBar.h>`.
This is only required if you're customizing the default visuals.
- `KDDockWidgets::DefaultWidgetFactory::s_dropIndicatorType` is now `KDDockWidgets::Core::ViewFactory::s_dropIndicatorType`
If some API is missing in the View, try looking in the controller, so, for example,
look in `KDDockWidgets::Core::TitleBar` instead of `KDDockWidgets::QtWidgets::TitleBar`.
## Headers
Views are in `kddockwidgets/FRONTEND/views/`. Replace FRONTEND with `qtwidgets` or `qtquick`.
So for example, if you had:
```c++
#include <kddockwidgets/private/widgets/TitleBarWidget_p.h>
#include <kddockwidgets/private/TabWidget_p.h>
#include <kddockwidgets/private/widgets/TabBarWidget_p.h>
```
You should now have:
```c++
#include <kddockwidgets/qtwidgets/views/TitleBar.h>
#include <kddockwidgets/qtwidgets/Stack.h>
#include <kddockwidgets/qtwidgets/views/TabBar.h>
```