From 9070f461bba483350c91528336a73ce68e41bde3 Mon Sep 17 00:00:00 2001 From: David Rosca Date: Tue, 12 Jul 2016 10:02:47 +0200 Subject: [PATCH] IconItem: Use better approach to disable animation when going from invisible to visible Clearing the pixmap is actually wrong, because in some cases the IconItem::updatePolish() is not called when changing visibility. REVIEW: 128409 --- src/declarativeimports/core/iconitem.cpp | 7 ++++--- src/declarativeimports/core/iconitem.h | 1 + 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/src/declarativeimports/core/iconitem.cpp b/src/declarativeimports/core/iconitem.cpp index 4f41b3b62..fae0330ca 100644 --- a/src/declarativeimports/core/iconitem.cpp +++ b/src/declarativeimports/core/iconitem.cpp @@ -48,6 +48,7 @@ IconItem::IconItem(QQuickItem *parent) m_textureChanged(false), m_sizeChanged(false), m_allowNextAnimation(false), + m_blockNextAnimation(false), m_colorGroup(Plasma::Theme::NormalColorGroup), m_animValue(0) { @@ -461,7 +462,7 @@ void IconItem::loadPixmap() m_textureChanged = true; //don't animate initial setting - if ((m_animated || m_allowNextAnimation) && !m_oldIconPixmap.isNull() && !m_sizeChanged) { + if ((m_animated || m_allowNextAnimation) && !m_oldIconPixmap.isNull() && !m_sizeChanged && !m_blockNextAnimation) { m_animValue = 0.0; m_animation->setStartValue((qreal)0); m_animation->setEndValue((qreal)1); @@ -470,6 +471,7 @@ void IconItem::loadPixmap() } else { m_animValue = 1.0; m_animation->stop(); + m_blockNextAnimation = false; } update(); } @@ -477,8 +479,7 @@ void IconItem::loadPixmap() void IconItem::itemChange(ItemChange change, const ItemChangeData &value) { if (change == ItemVisibleHasChanged && value.boolValue) { - // Clear pixmap to disable animation - m_iconPixmap = QPixmap(); + m_blockNextAnimation = true; } QQuickItem::itemChange(change, value); diff --git a/src/declarativeimports/core/iconitem.h b/src/declarativeimports/core/iconitem.h index e73829b3c..6a1d67c92 100644 --- a/src/declarativeimports/core/iconitem.h +++ b/src/declarativeimports/core/iconitem.h @@ -188,6 +188,7 @@ private: bool m_textureChanged; bool m_sizeChanged; bool m_allowNextAnimation; + bool m_blockNextAnimation; QPixmap m_iconPixmap; QPixmap m_oldIconPixmap;