diff --git a/applets/taskmanager/package/contents/ui/ScrollableTextWrapper.qml b/applets/taskmanager/package/contents/ui/ScrollableTextWrapper.qml new file mode 100644 --- /dev/null +++ b/applets/taskmanager/package/contents/ui/ScrollableTextWrapper.qml @@ -0,0 +1,66 @@ +/* +* Copyright 2020 by Tranter Madi +* +* This program is free software; you can redistribute it and/or modify +* it under the terms of the GNU Library General Public License as +* published by the Free Software Foundation; either version 2, or +* (at your option) any later version. +* +* This program is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU Library General Public License for more details +* +* You should have received a copy of the GNU Library General Public +* License along with this program; if not, write to the +* Free Software Foundation, Inc., +* 51 Franklin Street, Fifth Floor, Boston, MA 2.010-1301, USA. +*/ + +import QtQuick 2.6 + +MouseArea { + id: textWrapper + + default property Text textItem + + clip: textItem.elide === Text.ElideNone + hoverEnabled: true + + onContainsMouseChanged: { + if (!containsMouse) { + state = "" + } + } + + Timer { + id: timer + interval: 500 + running: textWrapper.containsMouse + onTriggered: { + if (textWrapper.width < textItem.implicitWidth) { + textWrapper.state = "ShowRight" + } + } + } + + states: [ + State { + name: "" + PropertyChanges { target: textItem; x: 0 } + }, + State { + name: "ShowRight" + PropertyChanges { target: textItem; x: textWrapper.width - textItem.implicitWidth } + } + ] + + transitions: Transition { + to: "ShowRight" + NumberAnimation { + target: textItem; properties: "x"; + easing.type: Easing.Linear; + duration: Math.abs(textItem.implicitWidth - textWrapper.width)*25 + } + } +} 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 @@ -251,24 +251,43 @@ Layout.fillWidth: true spacing: 0 - PlasmaComponents3.Label { + ScrollableTextWrapper { + id: songTextWrapper + Layout.fillWidth: true - lineHeight: 1 - maximumLineCount: artistText.visible? 1 : 2 - wrapMode: artistText.visible? Text.NoWrap : Text.Wrap - elide: Text.ElideRight - text: track || "" - } + Layout.preferredHeight: songText.height + + PlasmaComponents3.Label { + id: songText + parent: songTextWrapper + width: parent.width + height: undefined + lineHeight: 1 + maximumLineCount: artistText.visible? 1 : 2 + wrapMode: Text.NoWrap + elide: parent.state ? Text.ElideNone : Text.ElideRight + text: track || "" + } + } + + ScrollableTextWrapper { + id: artistTextWrapper - PlasmaExtras.DescriptiveLabel { - id: artistText Layout.fillWidth: true - wrapMode: Text.NoWrap - lineHeight: 1 - elide: Text.ElideRight - text: artist || "" - visible: text != "" - font.pointSize: theme.smallestFont.pointSize + Layout.preferredHeight: artistText.height + visible: artistText.text !== "" + + PlasmaExtras.DescriptiveLabel { + id: artistText + parent: artistTextWrapper + width: parent.width + height: undefined + wrapMode: Text.NoWrap + lineHeight: 1 + elide: parent.state ? Text.ElideNone : Text.ElideRight + text: artist || "" + font.pointSize: theme.smallestFont.pointSize + } } }