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 {