From dba41c30c2cafccd58d96e040f2d212f8b3e3cc1 Mon Sep 17 00:00:00 2001 From: miruka Date: Wed, 4 Nov 2020 01:41:45 -0400 Subject: [PATCH] Put HAvatar's tooltip image inside a Loader Make sure to not load tooltip images unless the user is currently trying to see one by hovering on an avatar. This also seems to reduce idle CPU usage. --- src/gui/Base/HAvatar.qml | 33 +++++++++++++++++++-------------- 1 file changed, 19 insertions(+), 14 deletions(-) diff --git a/src/gui/Base/HAvatar.qml b/src/gui/Base/HAvatar.qml index 06c8afe9..0877e188 100644 --- a/src/gui/Base/HAvatar.qml +++ b/src/gui/Base/HAvatar.qml @@ -13,13 +13,13 @@ Rectangle { property alias clientUserId: avatarImage.clientUserId property alias mxc: avatarImage.mxc property alias title: avatarImage.title - - property alias toolTipMxc: avatarToolTipImage.mxc property alias sourceOverride: avatarImage.sourceOverride - property alias toolTipSourceOverride: avatarToolTipImage.sourceOverride property alias fillMode: avatarImage.fillMode property alias animate: avatarImage.animate + property string toolTipMxc: mxc + property string toolTipSourceOverride: "" + readonly property alias hovered: hoverHandler.hovered readonly property alias circleRadius: avatarImage.circleRadius @@ -93,18 +93,23 @@ Rectangle { delay: 1000 backgroundColor: theme.controls.avatar.hoveredImage.background - contentItem: HMxcImage { - id: avatarToolTipImage - fillMode: Image.PreserveAspectCrop - animatedFillMode: AnimatedImage.PreserveAspectCrop - clientUserId: avatarImage.clientUserId - mxc: avatarImage.mxc - title: avatarImage.title + contentItem: HLoader { + active: avatarToolTip.visible - sourceSize.width: avatarToolTip.dimension - sourceSize.height: avatarToolTip.dimension - width: avatarToolTip.dimension - height: avatarToolTip.dimension + sourceComponent: HMxcImage { + id: avatarToolTipImage + fillMode: Image.PreserveAspectCrop + animatedFillMode: AnimatedImage.PreserveAspectCrop + clientUserId: avatarImage.clientUserId + title: avatarImage.title + mxc: avatar.toolTipMxc + sourceOverride: avatar.toolTipSourceOverride + + sourceSize.width: avatarToolTip.dimension + sourceSize.height: avatarToolTip.dimension + width: avatarToolTip.dimension + height: avatarToolTip.dimension + } } } }