diff options
author | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-12-18 20:14:14 +0100 |
---|---|---|
committer | J-P Nurmi <jpnurmi@theqtcompany.com> | 2015-12-18 21:25:18 +0000 |
commit | 547a5bf8125a6208da60cfbb6fbcfaa359dbd10d (patch) | |
tree | bfc79b602656d046655e2fcf680d9b66f20bbb41 /src/templates/qquickoverlay.cpp | |
parent | 3ce78788aa95e209438955f09ddfd5d7999dfd38 (diff) |
Fix laggy background fading for Drawers
Change-Id: I01bfff39f0018694f0ac4109733a2a441d90da31
Reviewed-by: J-P Nurmi <jpnurmi@theqtcompany.com>
Diffstat (limited to 'src/templates/qquickoverlay.cpp')
-rw-r--r-- | src/templates/qquickoverlay.cpp | 19 |
1 files changed, 15 insertions, 4 deletions
diff --git a/src/templates/qquickoverlay.cpp b/src/templates/qquickoverlay.cpp index 646dfe1a..a3f9b573 100644 --- a/src/templates/qquickoverlay.cpp +++ b/src/templates/qquickoverlay.cpp @@ -64,16 +64,27 @@ void QQuickOverlayPrivate::updateBackground() if (!background) return; + bool anim = true; qreal level = 0.0; if (modalPopups > 0) { level = 1.0; } else { - foreach (QQuickDrawer *drawer, drawers) - level = qMax(level, drawer->position()); + foreach (QQuickDrawer *drawer, drawers) { + qreal pos = drawer->position(); + if (pos > 0.0 && pos < 1.0) + anim = false; + level = qMax(level, pos); + } } - // use QQmlProperty instead of QQuickItem::setOpacity() to trigger QML Behaviors - QQmlProperty::write(background, QStringLiteral("opacity"), level); + if (anim) { + // use QQmlProperty instead of QQuickItem::setOpacity() to trigger QML Behaviors + QQmlProperty::write(background, QStringLiteral("opacity"), level); + } else { + // except while a drawer is opening/closing, or else the background + // fading feels laggy compared to the drawer movement + background->setOpacity(level); + } } void QQuickOverlayPrivate::resizeBackground() |