Qt6: Make Krita compile with Qt6 on macOS
Fixed a few small issues to let Krita compile and run with Qt6 on macOS. Local package was tested to work on both arm64 and x86_64.
Right now the minimum macOS version has only been raised in CMakeLists.txt to allow compilation, there are several other places it's used but might be difficult to ifdef for Qt6-only?
Issues shared with other platforms:
- OpenGL canvas may break due to randomly choosing Metal backend instead of OpenGL. Might be fixable with
qputenv("QSG_RHI_BACKEND", "opengl");
Issues not partially investigated:
- Style
gets force-set tomacintosh [deprecated, use 'macos' instead], while the Style menu shows only Fusion. -
- Style is correctly loaded from config, misunderstanding based on
-
-
- a debug message on initially setting style to macOS, but none on loading from config
-
-
-
- theme change is not affecting all widgets properly, causing Fusion to somewhat resemble Mac style in that it's partially using the system theme
-
-
-
- Krita switches style to macOS when switching theme to Krita Bright
-
- Cannot open .kra files ("Krita does not support this file format").
-
- QMimeDatabase thinks it's a regular zip file. Could be fixed by adding kra to KisMimeDatabase, but that doesn't explain why QMimeDatabase no longer recognizes it.
-
- This also happens on Windows, but not on the AppImage.
Test Plan
On macOS, build Qt6 and related dependencies (see packaging/krita-deps-management!48 (merged)), use them to build Krita. Krita should run and be buggy.
Formalities Checklist
-
I confirmed this builds. -
I confirmed Krita ran and the relevant functions work. -
I tested the relevant unit tests and can confirm they are not broken. (If not possible, don't hesitate to ask for help!) -
I made sure my commits build individually and have good descriptions as per KDE guidelines. -
I made sure my code conforms to the standards set in the HACKING file. -
I can confirm the code is licensed and attributed appropriately, and that unattributed code is mine, as per KDE Licensing Policy. -
Does the patch add a user-visible feature? If yes, is there a documentation MR ready for it at Krita Documentation Repository?
Reminder: the reviewer is responsible for merging the patch, this is to ensure at the least two people can build the patch. In case a patch breaks the build, both the author and the reviewer should be contacted to fix the build. If this is not possible, the commits shall be reverted, and a notification with the reasoning and any relevant logs shall be sent to the mailing list, kimageshop@kde.org.