diff options
-rw-r--r-- | src/widgets/graphicsview/qgraphicsitem.cpp | 5 | ||||
-rw-r--r-- | src/widgets/graphicsview/qgraphicswidget.cpp | 7 | ||||
-rw-r--r-- | src/widgets/kernel/qwidget.cpp | 5 | ||||
-rw-r--r-- | src/widgets/styles/qstyleanimation.cpp | 15 |
4 files changed, 19 insertions, 13 deletions
diff --git a/src/widgets/graphicsview/qgraphicsitem.cpp b/src/widgets/graphicsview/qgraphicsitem.cpp index fffc805637..0ba0889b58 100644 --- a/src/widgets/graphicsview/qgraphicsitem.cpp +++ b/src/widgets/graphicsview/qgraphicsitem.cpp @@ -7634,7 +7634,10 @@ QGraphicsObject::~QGraphicsObject() bool QGraphicsObject::event(QEvent *ev) { if (ev->type() == QEvent::StyleAnimationUpdate) { - update(); + if (isVisible()) { + ev->accept(); + update(); + } return true; } return QObject::event(ev); diff --git a/src/widgets/graphicsview/qgraphicswidget.cpp b/src/widgets/graphicsview/qgraphicswidget.cpp index 4abb5e39e5..ccc51120a9 100644 --- a/src/widgets/graphicsview/qgraphicswidget.cpp +++ b/src/widgets/graphicsview/qgraphicswidget.cpp @@ -1409,9 +1409,14 @@ bool QGraphicsWidget::event(QEvent *event) break; case QEvent::WindowActivate: case QEvent::WindowDeactivate: - case QEvent::StyleAnimationUpdate: update(); break; + case QEvent::StyleAnimationUpdate: + if (isVisible()) { + event->accept(); + update(); + } + break; // Taken from QWidget::event case QEvent::ActivationChange: case QEvent::EnabledChange: diff --git a/src/widgets/kernel/qwidget.cpp b/src/widgets/kernel/qwidget.cpp index 421ce57096..ab9e536600 100644 --- a/src/widgets/kernel/qwidget.cpp +++ b/src/widgets/kernel/qwidget.cpp @@ -8243,7 +8243,10 @@ bool QWidget::event(QEvent *event) update(static_cast<QUpdateLaterEvent*>(event)->region()); break; case QEvent::StyleAnimationUpdate: - update(); + if (isVisible() && !window()->isMinimized()) { + event->accept(); + update(); + } break; case QEvent::WindowBlocked: diff --git a/src/widgets/styles/qstyleanimation.cpp b/src/widgets/styles/qstyleanimation.cpp index 4fb67d90c0..90fb371982 100644 --- a/src/widgets/styles/qstyleanimation.cpp +++ b/src/widgets/styles/qstyleanimation.cpp @@ -93,7 +93,10 @@ void QStyleAnimation::setStartTime(const QTime &time) void QStyleAnimation::updateTarget() { QEvent event(QEvent::StyleAnimationUpdate); + event.setAccepted(false); QCoreApplication::sendEvent(target(), &event); + if (!event.isAccepted()) + stop(); } bool QStyleAnimation::isUpdateNeeded() const @@ -103,16 +106,8 @@ bool QStyleAnimation::isUpdateNeeded() const void QStyleAnimation::updateCurrentTime(int) { - if (QObject *tgt = target()) { - if (tgt->isWidgetType()) { - QWidget *widget = static_cast<QWidget *>(tgt); - if (!widget->isVisible() || widget->window()->isMinimized()) - stop(); - } - - if (isUpdateNeeded()) - updateTarget(); - } + if (target() && isUpdateNeeded()) + updateTarget(); } QProgressStyleAnimation::QProgressStyleAnimation(int speed, QObject *target) : |