Fix Palettize filter dialog on HiDPI
On >1x scaling the dither and palette widgets would have cut-off icons. On >2x scaling the Palettize filter dialog would hang because of trying to loop by adding the length of a 2x2 dither pattern divided by the scaling factor (y += 2/2.5 gets rounded to y += 0, infinite loop). This also applies to the dither widget in the Gradient Map filter.
This happened in the paintResourceIcon function. I'm not sure if the corresponding path in the paintThumbnailIcon function is used by anything, but I changed it to be consistent and tested it by modifying the patternWidget size in kis_control_frame.cpp.
Test Plan
- Make sure HiDPI support is enabled under Preferences->General->Window. Set device scaling or QT_SCALE_FACTOR so that the resulting devicePixelRatioF() is greater than 1.
- Open Filters->Map->Palettize. The palette and dither pattern icons should look correct and it shouldn't get stuck in an infinite loop on scaling of >2x.
- Open Filters->Map->Gradient Map, in the Color Mode tab, change it to Dither. It's the same as Palettize's dither widget.
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.
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.