Summary: | Gradient fill stop selection for vector objects | ||
---|---|---|---|
Product: | [Applications] krita | Reporter: | Curtis Wiseman <can0biccies> |
Component: | Tools/Vector | Assignee: | sh_zam <shzam> |
Status: | RESOLVED FIXED | ||
Severity: | normal | CC: | halla, shzam |
Priority: | NOR | ||
Version: | 5.0.2 | ||
Target Milestone: | --- | ||
Platform: | Microsoft Windows | ||
OS: | Microsoft Windows | ||
Latest Commit: | https://invent.kde.org/graphics/krita/commit/de938cfc89875c360a0e161b5de723739eedf2cc | Version Fixed In: | |
Sentry Crash Report: |
Description
Curtis Wiseman
2022-06-22 15:20:24 UTC
A possibly relevant merge request was started @ https://invent.kde.org/graphics/krita/-/merge_requests/1491 Git commit fc362afcb2954d10f8391f803b44a4c2ac88de39 by L. E. Segovia, on behalf of Sharaf Zaman. Committed on 28/06/2022 at 19:49. Pushed by lsegovia into branch 'master'. Bugfix: Gradient fill stops can't be changed for vector objects What resulted in the bug is firing of selectionContentChanged() signal after the setNewGradientBackgroundToShape() routine had returned -- because the blocker for d->shapeChangedAcyclicConnector had already been destroyed. And when the shapeChanged method was called, it sent down the call assuming gradient was changed (which would reset value of m_selectedStop) when it wasn't. Now, we remove signal connections for selectionChanged() and selectionContentChanged(), because they're delivered asynchronously and without proper guards (the signal blocker work only in some cases, e.g on windows they always fire once the guard lifetime has ended). Removing these signals is safe because we now use resourceManager signals to update the UI once the underlying resource has changed. Related: bug 447464, bug 449606, bug 453331 M +2 -20 libs/ui/widgets/KoFillConfigWidget.cpp https://invent.kde.org/graphics/krita/commit/fc362afcb2954d10f8391f803b44a4c2ac88de39 Git commit de938cfc89875c360a0e161b5de723739eedf2cc by L. E. Segovia, on behalf of Sharaf Zaman. Committed on 28/06/2022 at 19:52. Pushed by lsegovia into branch 'krita/5.1'. Bugfix: Gradient fill stops can't be changed for vector objects What resulted in the bug is firing of selectionContentChanged() signal after the setNewGradientBackgroundToShape() routine had returned -- because the blocker for d->shapeChangedAcyclicConnector had already been destroyed. And when the shapeChanged method was called, it sent down the call assuming gradient was changed (which would reset value of m_selectedStop) when it wasn't. Now, we remove signal connections for selectionChanged() and selectionContentChanged(), because they're delivered asynchronously and without proper guards (the signal blocker work only in some cases, e.g on windows they always fire once the guard lifetime has ended). Removing these signals is safe because we now use resourceManager signals to update the UI once the underlying resource has changed. Related: bug 447464, bug 449606, bug 453331 (cherry picked from commit fc362afcb2954d10f8391f803b44a4c2ac88de39) M +2 -20 libs/ui/widgets/KoFillConfigWidget.cpp https://invent.kde.org/graphics/krita/commit/de938cfc89875c360a0e161b5de723739eedf2cc |