Skip to content

Qt6: Make Krita compile with Qt6 on macOS

Freya Lupen requested to merge freyalupen/krita:freyalupen/qt6-macos into master

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.

krita-qt6-macos

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 to macintosh [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.

Edited by Freya Lupen

Merge request reports

Loading