diff --git a/applets/taskmanager/package/contents/ui/ContextMenu.qml b/applets/taskmanager/package/contents/ui/ContextMenu.qml --- a/applets/taskmanager/package/contents/ui/ContextMenu.qml +++ b/applets/taskmanager/package/contents/ui/ContextMenu.qml @@ -132,16 +132,21 @@ menuItem = menu.newMenuItem(menu); // PlasmaCore Menu doesn't actually handle icons or labels changing at runtime... menuItem.text = Qt.binding(function() { - return playerData.PlaybackStatus === "Playing" ? i18nc("Pause playback", "Pause") : i18nc("Start playback", "Play"); + // if CanPause, toggle the menu between Play & Pause, otherwise always use Play + return playerData.PlaybackStatus === "Playing" && playerData.CanPause ? i18nc("Pause playback", "Pause") : i18nc("Start playback", "Play"); }); menuItem.icon = Qt.binding(function() { return playerData.PlaybackStatus === "Playing" ? "media-playback-pause" : "media-playback-start"; }); menuItem.enabled = Qt.binding(function() { return playerData.PlaybackStatus === "Playing" ? playerData.CanPause : playerData.CanPlay; }); menuItem.clicked.connect(function() { - mpris2Source.playPause(sourceName); + if (playerData.CanPause) { + mpris2Source.playPause(sourceName); + } else { + mpris2Source.play(sourceName); + } }); menu.addMenuItem(menuItem, virtualDesktopsMenuItem); @@ -159,6 +164,9 @@ menuItem = menu.newMenuItem(menu); menuItem.text = i18nc("Stop playback", "Stop"); menuItem.icon = "media-playback-stop"; + menuItem.enabled = Qt.binding(function() { + return playerData.PlaybackStatus !== "Stopped"; + }); menuItem.clicked.connect(function() { mpris2Source.stop(sourceName); }); diff --git a/applets/taskmanager/package/contents/ui/main.qml b/applets/taskmanager/package/contents/ui/main.qml --- a/applets/taskmanager/package/contents/ui/main.qml +++ b/applets/taskmanager/package/contents/ui/main.qml @@ -272,6 +272,9 @@ function goNext(source) { startOperation(source, "Next"); } + function play(source) { + startOperation(source, "Play"); + } function playPause(source) { startOperation(source, "PlayPause"); }