summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFlorian Müllner <fmuellner@gnome.org>2016-11-03 18:11:54 +0100
committerFlorian Müllner <fmuellner@gnome.org>2017-02-28 20:26:53 +0100
commit0ed2244d1a046c44c20c66dc263cb37aac461a7b (patch)
treead695bd13763f29b81d8c875e26ba1c5c5aa5cda
parent571422af42cb4a721fb9a370754001fe106f448a (diff)
downloadgnome-shell-wip/fmuellner/calendar-refresh.tar.gz
mpris: Make forward/backward insensitive when unavailablewip/fmuellner/calendar-refresh
Media notifications currently always show the forward and backward buttons as clickable, regardless of whether the corresponding action is available or not. Media players usually address this by rendering controls insensitive in this case, so do the same here. https://bugzilla.gnome.org/show_bug.cgi?id=773884
-rw-r--r--data/theme/gnome-shell-high-contrast.css2
-rw-r--r--data/theme/gnome-shell.css2
-rw-r--r--js/ui/mpris.js21
3 files changed, 23 insertions, 2 deletions
diff --git a/data/theme/gnome-shell-high-contrast.css b/data/theme/gnome-shell-high-contrast.css
index 6a3f87594..b46a695c8 100644
--- a/data/theme/gnome-shell-high-contrast.css
+++ b/data/theme/gnome-shell-high-contrast.css
@@ -912,6 +912,8 @@ StScrollBar {
padding-right: 18px; }
.message-media-control:last-child:rtl {
padding-left: 18px; }
+ .message-media-control:insensitive {
+ color: #999999; }
.media-message-cover-icon {
icon-size: 48px !important; }
diff --git a/data/theme/gnome-shell.css b/data/theme/gnome-shell.css
index 58a76566d..5f2d39ff4 100644
--- a/data/theme/gnome-shell.css
+++ b/data/theme/gnome-shell.css
@@ -912,6 +912,8 @@ StScrollBar {
padding-right: 18px; }
.message-media-control:last-child:rtl {
padding-left: 18px; }
+ .message-media-control:insensitive {
+ color: #8e8e80; }
.media-message-cover-icon {
icon-size: 48px !important; }
diff --git a/js/ui/mpris.js b/js/ui/mpris.js
index b42d9aa57..a5ca66f4d 100644
--- a/js/ui/mpris.js
+++ b/js/ui/mpris.js
@@ -36,6 +36,8 @@ const MprisPlayerIface = '<node> \
<method name="PlayPause" /> \
<method name="Next" /> \
<method name="Previous" /> \
+ <property name="CanGoNext" type="b" access="read" /> \
+ <property name="CanGoPrevious" type="b" access="read" /> \
<property name="CanPlay" type="b" access="read" /> \
<property name="Metadata" type="a{sv}" access="read" /> \
<property name="PlaybackStatus" type="s" access="read" /> \
@@ -57,7 +59,7 @@ const MediaMessage = new Lang.Class({
this._icon = new St.Icon({ style_class: 'media-message-cover-icon' });
this.setIcon(this._icon);
- this.addMediaControl('media-skip-backward-symbolic',
+ this._prevButton = this.addMediaControl('media-skip-backward-symbolic',
Lang.bind(this, function() {
this._player.previous();
}));
@@ -67,7 +69,7 @@ const MediaMessage = new Lang.Class({
this._player.playPause();
}));
- this.addMediaControl('media-skip-forward-symbolic',
+ this._nextButton = this.addMediaControl('media-skip-forward-symbolic',
Lang.bind(this, function() {
this._player.next();
}));
@@ -82,6 +84,10 @@ const MediaMessage = new Lang.Class({
Main.panel.closeCalendar();
},
+ _updateNavButton: function(button, sensitive) {
+ button.reactive = sensitive;
+ },
+
_update: function() {
this.setTitle(this._player.trackArtists.join(', '));
this.setBody(this._player.trackTitle);
@@ -99,6 +105,9 @@ const MediaMessage = new Lang.Class({
let iconName = isPlaying ? 'media-playback-pause-symbolic'
: 'media-playback-start-symbolic';
this._playPauseButton.child.icon_name = iconName;
+
+ this._updateNavButton(this._prevButton, this._player.canGoPrevious);
+ this._updateNavButton(this._nextButton, this._player.canGoNext);
}
});
@@ -139,10 +148,18 @@ const MprisPlayer = new Lang.Class({
this._playerProxy.PlayPauseRemote();
},
+ get canGoNext() {
+ return this._playerProxy.CanGoNext;
+ },
+
next: function() {
this._playerProxy.NextRemote();
},
+ get canGoPrevious() {
+ return this._playerProxy.CanGoPrevious;
+ },
+
previous: function() {
this._playerProxy.PreviousRemote();
},