mpris: Make forward/backward insensitive when unavailable
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
This commit is contained in:
parent
846e3f8243
commit
19816523c7
@ -912,6 +912,8 @@ StScrollBar {
|
|||||||
padding-right: 18px; }
|
padding-right: 18px; }
|
||||||
.message-media-control:last-child:rtl {
|
.message-media-control:last-child:rtl {
|
||||||
padding-left: 18px; }
|
padding-left: 18px; }
|
||||||
|
.message-media-control:insensitive {
|
||||||
|
color: #999999; }
|
||||||
|
|
||||||
.media-message-cover-icon {
|
.media-message-cover-icon {
|
||||||
icon-size: 48px !important; }
|
icon-size: 48px !important; }
|
||||||
|
@ -1 +1 @@
|
|||||||
Subproject commit a172894788ec73c82be9aa6d29243809fdb0111d
|
Subproject commit 671023a8b333f027d8c88fca9963b11581c10a70
|
@ -912,6 +912,8 @@ StScrollBar {
|
|||||||
padding-right: 18px; }
|
padding-right: 18px; }
|
||||||
.message-media-control:last-child:rtl {
|
.message-media-control:last-child:rtl {
|
||||||
padding-left: 18px; }
|
padding-left: 18px; }
|
||||||
|
.message-media-control:insensitive {
|
||||||
|
color: #8e8e80; }
|
||||||
|
|
||||||
.media-message-cover-icon {
|
.media-message-cover-icon {
|
||||||
icon-size: 48px !important; }
|
icon-size: 48px !important; }
|
||||||
|
@ -36,6 +36,8 @@ const MprisPlayerIface = '<node> \
|
|||||||
<method name="PlayPause" /> \
|
<method name="PlayPause" /> \
|
||||||
<method name="Next" /> \
|
<method name="Next" /> \
|
||||||
<method name="Previous" /> \
|
<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="CanPlay" type="b" access="read" /> \
|
||||||
<property name="Metadata" type="a{sv}" access="read" /> \
|
<property name="Metadata" type="a{sv}" access="read" /> \
|
||||||
<property name="PlaybackStatus" type="s" 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._icon = new St.Icon({ style_class: 'media-message-cover-icon' });
|
||||||
this.setIcon(this._icon);
|
this.setIcon(this._icon);
|
||||||
|
|
||||||
this.addMediaControl('media-skip-backward-symbolic',
|
this._prevButton = this.addMediaControl('media-skip-backward-symbolic',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this._player.previous();
|
this._player.previous();
|
||||||
}));
|
}));
|
||||||
@ -67,7 +69,7 @@ const MediaMessage = new Lang.Class({
|
|||||||
this._player.playPause();
|
this._player.playPause();
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this.addMediaControl('media-skip-forward-symbolic',
|
this._nextButton = this.addMediaControl('media-skip-forward-symbolic',
|
||||||
Lang.bind(this, function() {
|
Lang.bind(this, function() {
|
||||||
this._player.next();
|
this._player.next();
|
||||||
}));
|
}));
|
||||||
@ -82,6 +84,10 @@ const MediaMessage = new Lang.Class({
|
|||||||
Main.panel.closeCalendar();
|
Main.panel.closeCalendar();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
_updateNavButton: function(button, sensitive) {
|
||||||
|
button.reactive = sensitive;
|
||||||
|
},
|
||||||
|
|
||||||
_update: function() {
|
_update: function() {
|
||||||
this.setTitle(this._player.trackArtists.join(', '));
|
this.setTitle(this._player.trackArtists.join(', '));
|
||||||
this.setBody(this._player.trackTitle);
|
this.setBody(this._player.trackTitle);
|
||||||
@ -99,6 +105,9 @@ const MediaMessage = new Lang.Class({
|
|||||||
let iconName = isPlaying ? 'media-playback-pause-symbolic'
|
let iconName = isPlaying ? 'media-playback-pause-symbolic'
|
||||||
: 'media-playback-start-symbolic';
|
: 'media-playback-start-symbolic';
|
||||||
this._playPauseButton.child.icon_name = iconName;
|
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();
|
this._playerProxy.PlayPauseRemote();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
get canGoNext() {
|
||||||
|
return this._playerProxy.CanGoNext;
|
||||||
|
},
|
||||||
|
|
||||||
next: function() {
|
next: function() {
|
||||||
this._playerProxy.NextRemote();
|
this._playerProxy.NextRemote();
|
||||||
},
|
},
|
||||||
|
|
||||||
|
get canGoPrevious() {
|
||||||
|
return this._playerProxy.CanGoPrevious;
|
||||||
|
},
|
||||||
|
|
||||||
previous: function() {
|
previous: function() {
|
||||||
this._playerProxy.PreviousRemote();
|
this._playerProxy.PreviousRemote();
|
||||||
},
|
},
|
||||||
|
Loading…
Reference in New Issue
Block a user