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 @@ -326,7 +326,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,29 +82,42 @@ }); } - Item { + Loader { id: contentItem - width: childrenRect.width - height: childrenRect.height - ToolTipInstance { - visible: !isGroup + active: toolTipDelegate.rootIndex != undefined + asynchronous: true + + sourceComponent: isGroup ? groupToolTip : singleTooltip + + Component { + id: singleTooltip + + ToolTipInstance { + submodelIndex: toolTipDelegate.rootIndex + } } - Grid { - rows: !isVerticalPanel - columns: isVerticalPanel - flow: isVerticalPanel ? Grid.TopToBottom : Grid.LeftToRight - spacing: units.largeSpacing + Component { + id: groupToolTip + + Grid { + rows: !isVerticalPanel + columns: isVerticalPanel + flow: isVerticalPanel ? Grid.TopToBottom : Grid.LeftToRight + spacing: units.largeSpacing + + Repeater { + id: groupRepeater + model: DelegateModel { + model: toolTipDelegate.rootIndex ? tasksModel : null - visible: isGroup + rootIndex: toolTipDelegate.rootIndex - Repeater { - id: groupRepeater - model: DelegateModel { - model: tasksModel - rootIndex: tasksModel.makeModelIndex(parentIndex, -1) - delegate: ToolTipInstance {} + delegate: ToolTipInstance { + submodelIndex: tasksModel.makeModelIndex(toolTipDelegate.rootIndex.row, index) + } + } } } } 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 { - property var submodelIndex: tasksModel.makeModelIndex(parentIndex, isGroup ? index : -1) + property var submodelIndex property int flatIndex: isGroup && index != undefined ? index : 0 spacing: units.smallSpacing