-
Notifications
You must be signed in to change notification settings - Fork 134
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
WIP Qt6 port #2024
WIP Qt6 port #2024
Conversation
This is amazing! Where did you learn all this coding? |
Hi! Thanks. Well it does not work yet, I need more time to properly fix compile errors. |
Fixes CMake error
Looks like only fancymenu and few other plugins build atm. Made a list here. |
Hi, thanks for testing. I've worked on a second version of the patch plus some code style fixes detected by Clazy. I will force push soon. |
XCB not found it's because CMake components are uppercase and without Also there are some issues: Another issue is panel configuration not getting installed, resulting in an empty transparent panel. |
That's nice to hear :) |
I didn't need QTextCodec from Qt5Compat module. When I'll push, plaese check again if it's needed |
Just as a general note, and not a review: Forget about Qt5Compat everywhere. Legacy encodings aren't supported by Qt6, and so, we don't have a reason to support them by force. |
NOTE: it needs recent changes from lxqt-globalkeys#278 branch which I've just pushed. |
I needed first lxqt/libsysstat#47 and change dbusmenu-qt6 → dbusmenu-lxqt to start compilation EDIT: Turns out this was caused by my removing of Systat-plugin has to be disabled as it needs porting to
|
Ah yes, this is because QDebug operators are not exported. I've fixed it but forgot to push |
@stefonarch I've pushed fix in liblxqt#337 |
Ah yes, this is because QDebug operators are not exported. I've fixed it but forgot to push
I think this is because I'm installing to |
Compiles perfectly fine now without any warning, except that I had to disable statusnotifier plugin as I didn't manage to include Panel conf is installed but not loaded at first run, don't remember how this is supposed to wirk
|
What's the difference between I can build it with neon package for dbusmenu qt6 dev |
First, The Qt6 brannch of |
Found my error, forgot the second part here So only sysstat plugin is missing. |
Haven't we already disabled X11-dependent plugins under Wayland? If not, we should do it. |
Only the desktopswitch is disabled as it will crash the panel, the others can be added but do nothing. Now it's about the panel itself too. I use without issues the qt5 version natively, so something has changed there in KF6 now. |
If KF6 doesn't exclude them, we could do it. Not a theoretical hassle; just a boring job. |
Well I have added some assert on X11 connection somwhere. It was just for testing but it's also correct because we should exclude X11 specific parts on Wayland |
I may be wrong (being busy with other codes), but I think KF5 did it for its methods. |
Looking at KX11Extras it looks (for the panel) some functions on wayland should use foreing-toplevel-protocol, like Running the panel in xwayland mode is nice to see and working fine now on labwc, but all apps launched by the menu inherit xwayland too. |
Rechecked for good and saw that the panel opens, so those are just warnings not blockers. Looks like I had to stop the panel in the openbox session first. |
After recent updates of KF6 I had to recompile it. I see (also before) this:
damage watch looks interesting: https://wayland-book.com/surfaces-in-depth/damaging-surfaces.html |
TODO: Still don't know why prefix does not work - Remove includes to QDesktopWidget
I suggest this time to NOT squash the commit before merging. |
CI doesn't find Qt6 dependencies |
NOTE: Fix compilation with Xlib.h Xlib.h is tricky because at line 82 has: `#define Bool int` And QtCore/qjsonvalue.h at line 28 has: ``` enum Type { ... Bool = 0x1, ... } ``` This is fixed temporarily by moving Xlib.h include to last and undefine Bool macro Long term we want to hide X11 related code and encapsulate in a backend. This backend will not expose X11 headers.
Many X11 specific functions got moved away from KWindowSystem header. Long term we will move everything to a backend.
Use QScreen instead
Reported by Clazy
Reported by Clazy
Teporary objects get destroyed after call ends. State is not updated.
- Reported by Clazy - Also fix formatting a bit
- Use Qt::CaseInsensitive instead - Pass argument by reference - Format braces
NOTE: QX11Info::getTimestamp() was replaced with XCB_CURRENT_TIME macro. I don't know if this breaks functionality. Getting real timestamp involves messing with Qt private APIs
- Forward declare classes - More refactory could be done here
- Use Xcb::ScopedCPointer for POD types
In Qt6 it's an alias
TODO: is behavior equivalent? Conversion flags...
OK.
No worries; we've got used to CI's temporary issues and tolerate them. Will merge all Qt6-related PRs in the proper order tomorrow. |
@tsujan It's quite difficult to understand changes from the squashed single commit |
PRs should be squashed before being merged. A clean history is a must. I just agreed that you don't do it yourself. As for code readers, it's impossible to make everything straightforward for them; they need to delve into codes. |
Ok for clean history but at least squashing in groups leading to say 3 final commits instead to a single one coild have been a good trade off |
@gfgit |
Oh, and it's important that each PR should be about a single subject — again, not my decision, although I fully agree with it. |
Depends on: