From 1ecc500e5d0a07b296de492af18e441367486292 Mon Sep 17 00:00:00 2001 From: Thomas Hartmann Date: Tue, 4 Apr 2023 15:31:16 +0200 Subject: [PATCH] QmlDesigner: Fix crash In doTransition we start and stop animations. Therefore the lookup for anim has to be done separately. Task-number: QDS-9621 Change-Id: I608799a997d48acef7496a985505f896113068d1 Reviewed-by: Tim Jenssen --- src/plugins/coreplugin/manhattanstyle.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index a67deb4f41a..3d51642e44f 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -629,9 +629,9 @@ void ManhattanStyle::drawPrimitiveForPanelWidget(PrimitiveElement element, break; case PE_PanelButtonTool: { - bool animating = (state & State_Animating); - Animation *anim = d->animator.widgetAnimation(widget); painter->save(); + const bool animating = (state & State_Animating); + if (widget && !animating) { auto w = const_cast (widget); int oldState = w->property("_q_stylestate").toInt(); @@ -651,6 +651,7 @@ void ManhattanStyle::drawPrimitiveForPanelWidget(PrimitiveElement element, if (doTransition) { QImage startImage(option->rect.size(), QImage::Format_ARGB32_Premultiplied); QImage endImage(option->rect.size(), QImage::Format_ARGB32_Premultiplied); + Animation *anim = d->animator.widgetAnimation(widget); QStyleOption opt = *option; opt.state = (QStyle::State)oldState; opt.state |= State_Animating; @@ -680,6 +681,8 @@ void ManhattanStyle::drawPrimitiveForPanelWidget(PrimitiveElement element, } } + Animation *anim = d->animator.widgetAnimation(widget); + if (!animating && anim) { anim->paint(painter, option); } else {