diff --git a/applets/taskmanager/package/contents/ui/Task.qml b/applets/taskmanager/package/contents/ui/Task.qml --- a/applets/taskmanager/package/contents/ui/Task.qml +++ b/applets/taskmanager/package/contents/ui/Task.qml @@ -334,7 +334,7 @@ onContainsMouseChanged: { if (containsMouse) { toolTipDelegate.parentTask = task; - toolTipDelegate.parentIndex = itemIndex; + toolTipDelegate.rootIndex = tasksModel.makeModelIndex(itemIndex, -1); toolTipDelegate.appName = Qt.binding(function() { return model.AppName; diff --git a/applets/taskmanager/package/contents/ui/ToolTipDelegate.qml b/applets/taskmanager/package/contents/ui/ToolTipDelegate.qml --- a/applets/taskmanager/package/contents/ui/ToolTipDelegate.qml +++ b/applets/taskmanager/package/contents/ui/ToolTipDelegate.qml @@ -33,8 +33,10 @@ import org.kde.taskmanager 0.1 as TaskManager PlasmaExtras.ScrollArea { + id: toolTipDelegate + property Item parentTask - property int parentIndex + property var rootIndex property string appName property int pidParent @@ -80,31 +82,45 @@ }); } - Item { - id: contentItem - width: childrenRect.width - height: childrenRect.height + Component { + id: singleTooltip ToolTipInstance { - visible: !isGroup + submodelIndex: toolTipDelegate.rootIndex } + } + + Component { + id: groupToolTip Grid { rows: !isVerticalPanel columns: isVerticalPanel flow: isVerticalPanel ? Grid.TopToBottom : Grid.LeftToRight spacing: units.largeSpacing - visible: isGroup - Repeater { id: groupRepeater model: DelegateModel { - model: tasksModel - rootIndex: tasksModel.makeModelIndex(parentIndex, -1) - delegate: ToolTipInstance {} + model: toolTipDelegate.rootIndex ? tasksModel : null + + rootIndex: toolTipDelegate.rootIndex + + delegate: ToolTipInstance { + submodelIndex: tasksModel.makeModelIndex(toolTipDelegate.rootIndex.row, index) + } } } } } + + + Loader { + id: contentItem + + active: toolTipDelegate.rootIndex != undefined + asynchronous: true + + sourceComponent: isGroup ? groupToolTip : singleTooltip + } } diff --git a/applets/taskmanager/package/contents/ui/ToolTipInstance.qml b/applets/taskmanager/package/contents/ui/ToolTipInstance.qml --- a/applets/taskmanager/package/contents/ui/ToolTipInstance.qml +++ b/applets/taskmanager/package/contents/ui/ToolTipInstance.qml @@ -33,7 +33,7 @@ import org.kde.taskmanager 0.1 as TaskManager Column { - readonly property var submodelIndex: tasksModel.makeModelIndex(parentIndex, isGroup ? index : -1) + property var submodelIndex readonly property int flatIndex: isGroup && index != undefined ? index : 0 spacing: units.smallSpacing