diff --git a/dux-qml-common b/dux-qml-common index f2f77d335..ee87ee32d 160000 --- a/dux-qml-common +++ b/dux-qml-common @@ -1 +1 @@ -Subproject commit f2f77d3353ef4b40a0dca0160e1779ca55aad572 +Subproject commit ee87ee32d093fb1e177791dc6b3894c8951d1def diff --git a/flake.lock b/flake.lock index 0b3d8847b..ccf3ba785 100644 --- a/flake.lock +++ b/flake.lock @@ -3,11 +3,11 @@ "dank-qml-common": { "flake": false, "locked": { - "lastModified": 1793196272, - "narHash": "sha256-8VEk98MAdvx6ggVXsa8w/b3MQd5d5zxS+U/13eeJFjw=", + "lastModified": 1793202447, + "narHash": "sha256-vA215yUKc662r8pGclsS15Iq3ZX8OjwMIqO0pMpLAoM=", "owner": "duxlabs-dev", "repo": "dux-qml-common", - "rev": "f2f77d3353ef4b40a0dca0160e1779ca55aad572", + "rev": "ee87ee32d093fb1e177791dc6b3894c8951d1def", "type": "github" }, "original": { diff --git a/quickshell/Modules/ControlCenter/Components/CcWidgetSheet.qml b/quickshell/Modules/ControlCenter/Components/CcWidgetSheet.qml index ed1514995..f9e0e1cac 100644 --- a/quickshell/Modules/ControlCenter/Components/CcWidgetSheet.qml +++ b/quickshell/Modules/ControlCenter/Components/CcWidgetSheet.qml @@ -108,11 +108,13 @@ DBottomSheet { visible: item.modelData.id !== "user" || PortalService.profileImageUrl === "" } - DCircularImage { + Loader { anchors.fill: parent - imageSource: PortalService.profileImageUrl - fallbackIcon: "material:person" - visible: item.modelData.id === "user" && PortalService.profileImageUrl !== "" + active: item.modelData.id === "user" && PortalService.profileImageUrl !== "" + sourceComponent: DCircularImage { + imageSource: PortalService.profileImageUrl + fallbackIcon: "material:person" + } } FocusRing { diff --git a/quickshell/Modules/ControlCenter/Widgets/ActionTile.qml b/quickshell/Modules/ControlCenter/Widgets/ActionTile.qml index 3e0d334de..554f7c56c 100644 --- a/quickshell/Modules/ControlCenter/Widgets/ActionTile.qml +++ b/quickshell/Modules/ControlCenter/Widgets/ActionTile.qml @@ -9,7 +9,6 @@ CcTile { readonly property bool finishing: action === "edit" && (host?.editMode ?? false) toggle: false - active: finishing tooltips: !finishing iconName: finishing ? "check" : widgetDef?.icon ?? "" title: widgetDef?.text ?? "" diff --git a/quickshell/Modules/ControlCenter/Widgets/CcAppIcon.qml b/quickshell/Modules/ControlCenter/Widgets/CcAppIcon.qml index c1dbddf0c..632236806 100644 --- a/quickshell/Modules/ControlCenter/Widgets/CcAppIcon.qml +++ b/quickshell/Modules/ControlCenter/Widgets/CcAppIcon.qml @@ -2,6 +2,7 @@ import QtQuick import Quickshell import Quickshell.Widgets import qs.Common +import qs.DCommon.Common as DCommon import qs.DCommon.Widgets Item { @@ -9,18 +10,31 @@ Item { property string appId: "" property real iconSize: Theme.iconSize + readonly property int iconRequestSize: DCommon.Style.iconRasterSize(iconSize) implicitWidth: iconSize implicitHeight: iconSize IconImage { id: image + + property string paintedFor: "" + readonly property bool holdsCurrentIcon: paintedFor !== "" && paintedFor === root.appId + readonly property bool showsFrame: status === Image.Ready || (holdsCurrentIcon && status === Image.Loading) + anchors.fill: parent source: root.appId ? Paths.getAppIcon(root.appId, DesktopEntries.heuristicLookup(root.appId)) : "" + backer.sourceSize: Qt.size(root.iconRequestSize, root.iconRequestSize) + backer.retainWhileLoading: true smooth: true mipmap: true asynchronous: true - visible: status === Image.Ready + visible: showsFrame + onStatusChanged: { + if (status !== Image.Ready) + return; + paintedFor = root.appId; + } } DIcon {