Hi,

On 9/23/25 3:51 PM, Tor Arne Vestbø via Development wrote:
Hi Jan,

Thanks for looking into the private API use!

The “modern” version of qplatformnativeinterface.h is the public QNativeInterface namespace and the various QFoo::nativeInterface<T>() accessors, so we should transition the former to the latter.

Similarly, the QX11Extras can find a new home in the QNativeInterfaces.

However we should look at each API on a case by case basis, and not just dump everything into e.g. the QGuiApplication native interface (like https://codereview.qt-project.org/c/qt/qtbase/+/677957 currently does). E.g. some of these APIs might have a more specific place in the QScreen native interface.

In most cases, the QScreen part is irrelevant, keeping things such as appRootWindow() in QX11Application would produce a cleaner API and cleaner user code. Perhaps the QScreen arguments can be dropped and if somebody really needs that, they could add corresponding APIs in screen native interface API?

There's also an element of migration logistics. The code that we are talking about is legacy, we maintain it, but we don't want to make big rewrites or take more than necessary of our time from Wayland back to X. If the migration path could look something like s/QX11Info::/x11App->/g, that would be great.

We should also limit the amount of trivial wrapper helpers we provide, so these interfaces don’t blow up to a kitchen sink. If something can be solved by having a small helper module in KDE, that uses hooks in the native interface to e.g. get the underlying xcb_screen_t or xcb_window_t, then that’s preferably to maintaining code in Qt if in reality it's a 99% KDE use-case.

So I think we have a plan, if someone is willing to work on it (thanks Vlad!), and as long as we do it step by step and with some considerations of the scope/use-cases :)

Regards,
Vlad
--
Development mailing list
[email protected]
https://lists.qt-project.org/listinfo/development

Reply via email to