Bug 649490 - Switch the volume slider on the media controls to be horizontal and always visible. r=Gijs
|
@ -54,7 +54,7 @@
|
||||||
* is hidden by videocontrols.xml, and that alters the position of the
|
* is hidden by videocontrols.xml, and that alters the position of the
|
||||||
* play button. This workaround moves it back to center.
|
* play button. This workaround moves it back to center.
|
||||||
*/
|
*/
|
||||||
.controlBar.audio .playButton {
|
.controlBar.audio-only .playButton {
|
||||||
transform: translateX(28px);
|
transform: translateX(28px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -54,7 +54,7 @@
|
||||||
* is hidden by videocontrols.xml, and that alters the position of the
|
* is hidden by videocontrols.xml, and that alters the position of the
|
||||||
* play button. This workaround moves it back to center.
|
* play button. This workaround moves it back to center.
|
||||||
*/
|
*/
|
||||||
.controlBar.audio .playButton {
|
.controlBar.audio-only .playButton {
|
||||||
transform: translateX(28px);
|
transform: translateX(28px);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -30,14 +30,15 @@ const muteButtonWidth = 33;
|
||||||
const muteButtonHeight = 28;
|
const muteButtonHeight = 28;
|
||||||
const durationWidth = 34;
|
const durationWidth = 34;
|
||||||
const fullscreenButtonWidth = document.mozFullScreenEnabled ? 28 : 0;
|
const fullscreenButtonWidth = document.mozFullScreenEnabled ? 28 : 0;
|
||||||
const scrubberWidth = videoWidth - playButtonWidth - muteButtonWidth - durationWidth - fullscreenButtonWidth;
|
const volumeSliderWidth = 32;
|
||||||
|
const scrubberWidth = videoWidth - playButtonWidth - durationWidth - muteButtonWidth - volumeSliderWidth - fullscreenButtonWidth;
|
||||||
const scrubberHeight = 28;
|
const scrubberHeight = 28;
|
||||||
|
|
||||||
// Play button is on the bottom-left
|
// Play button is on the bottom-left
|
||||||
const playButtonCenterX = 0 + Math.round(playButtonWidth / 2);
|
const playButtonCenterX = 0 + Math.round(playButtonWidth / 2);
|
||||||
const playButtonCenterY = videoHeight - Math.round(playButtonHeight / 2);
|
const playButtonCenterY = videoHeight - Math.round(playButtonHeight / 2);
|
||||||
// Mute button is on the bottom-right before the full screen button
|
// Mute button is on the bottom-right before the full screen button and volume slider
|
||||||
const muteButtonCenterX = videoWidth - Math.round(muteButtonWidth / 2) - fullscreenButtonWidth;
|
const muteButtonCenterX = videoWidth - Math.round(muteButtonWidth / 2) - fullscreenButtonWidth - volumeSliderWidth;
|
||||||
const muteButtonCenterY = videoHeight - Math.round(muteButtonHeight / 2);
|
const muteButtonCenterY = videoHeight - Math.round(muteButtonHeight / 2);
|
||||||
// Scrubber bar is between the play and mute buttons. We don't need it's
|
// Scrubber bar is between the play and mute buttons. We don't need it's
|
||||||
// X center, just the offset of its box.
|
// X center, just the offset of its box.
|
||||||
|
|
|
@ -92,7 +92,8 @@ html|span.statActivity[seeking] > html|span.statActivitySeeking {
|
||||||
.controlBar[size="hidden"],
|
.controlBar[size="hidden"],
|
||||||
.controlBar[size="small"] .durationBox,
|
.controlBar[size="small"] .durationBox,
|
||||||
.controlBar[size="small"] .durationLabel,
|
.controlBar[size="small"] .durationLabel,
|
||||||
.controlBar[size="small"] .positionLabel {
|
.controlBar[size="small"] .positionLabel,
|
||||||
|
.controlBar[size="small"] .volumeStack {
|
||||||
visibility: collapse;
|
visibility: collapse;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -287,9 +287,10 @@
|
||||||
<button class="muteButton"
|
<button class="muteButton"
|
||||||
mutelabel="&muteButton.muteLabel;"
|
mutelabel="&muteButton.muteLabel;"
|
||||||
unmutelabel="&muteButton.unmuteLabel;"/>
|
unmutelabel="&muteButton.unmuteLabel;"/>
|
||||||
<stack class="volumeStack" hidden="true" fadeout="true">
|
<stack class="volumeStack">
|
||||||
<box class="volumeBackgroundBar"/>
|
<box class="volumeBackground"/>
|
||||||
<scale class="volumeControl" orient="vertical" dir="reverse" movetoclick="true"/>
|
<box class="volumeForeground" anonid="volumeForeground"/>
|
||||||
|
<scale class="volumeControl" movetoclick="true"/>
|
||||||
</stack>
|
</stack>
|
||||||
<button class="fullscreenButton"
|
<button class="fullscreenButton"
|
||||||
enterfullscreenlabel="&fullscreenButton.enterfullscreenlabel;"
|
enterfullscreenlabel="&fullscreenButton.enterfullscreenlabel;"
|
||||||
|
@ -313,7 +314,6 @@
|
||||||
controlBar : null,
|
controlBar : null,
|
||||||
playButton : null,
|
playButton : null,
|
||||||
muteButton : null,
|
muteButton : null,
|
||||||
volumeStack : null,
|
|
||||||
volumeControl : null,
|
volumeControl : null,
|
||||||
durationLabel : null,
|
durationLabel : null,
|
||||||
positionLabel : null,
|
positionLabel : null,
|
||||||
|
@ -345,9 +345,11 @@
|
||||||
if (!this.isTopLevelSyntheticDocument)
|
if (!this.isTopLevelSyntheticDocument)
|
||||||
return;
|
return;
|
||||||
if (this._isAudioOnly) {
|
if (this._isAudioOnly) {
|
||||||
|
this.controlBar.setAttribute("audio-only", true);
|
||||||
this.video.style.height = this._controlBarHeight + "px";
|
this.video.style.height = this._controlBarHeight + "px";
|
||||||
this.video.style.width = "66%";
|
this.video.style.width = "66%";
|
||||||
} else {
|
} else {
|
||||||
|
this.controlBar.removeAttribute("audio-only");
|
||||||
this.video.style.removeProperty("height");
|
this.video.style.removeProperty("height");
|
||||||
this.video.style.removeProperty("width");
|
this.video.style.removeProperty("width");
|
||||||
}
|
}
|
||||||
|
@ -462,6 +464,7 @@
|
||||||
this._playButtonWidth = this.playButton.clientWidth;
|
this._playButtonWidth = this.playButton.clientWidth;
|
||||||
this._durationLabelWidth = this.durationLabel.clientWidth;
|
this._durationLabelWidth = this.durationLabel.clientWidth;
|
||||||
this._muteButtonWidth = this.muteButton.clientWidth;
|
this._muteButtonWidth = this.muteButton.clientWidth;
|
||||||
|
this._volumeControlWidth = this.volumeControl.clientWidth;
|
||||||
this._fullscreenButtonWidth = this.fullscreenButton.clientWidth;
|
this._fullscreenButtonWidth = this.fullscreenButton.clientWidth;
|
||||||
this._controlBarHeight = this.controlBar.clientHeight;
|
this._controlBarHeight = this.controlBar.clientHeight;
|
||||||
this.controlBar.hidden = true;
|
this.controlBar.hidden = true;
|
||||||
|
@ -554,9 +557,11 @@
|
||||||
this.setupStatusFader();
|
this.setupStatusFader();
|
||||||
break;
|
break;
|
||||||
case "volumechange":
|
case "volumechange":
|
||||||
var volume = this.video.muted ? 0 : Math.round(this.video.volume * 100);
|
var volume = this.video.muted ? 0 : this.video.volume;
|
||||||
|
var volumePercentage = Math.round(volume * 100);
|
||||||
this.setMuteButtonState(this.video.muted);
|
this.setMuteButtonState(this.video.muted);
|
||||||
this.volumeControl.value = volume;
|
this.volumeControl.value = volumePercentage;
|
||||||
|
this.volumeForeground.style.paddingRight = (1 - volume) * this._volumeControlWidth + "px";
|
||||||
break;
|
break;
|
||||||
case "loadedmetadata":
|
case "loadedmetadata":
|
||||||
this.adjustControlSize();
|
this.adjustControlSize();
|
||||||
|
@ -854,21 +859,6 @@
|
||||||
this.bufferBar.value = endTime;
|
this.bufferBar.value = endTime;
|
||||||
},
|
},
|
||||||
|
|
||||||
onVolumeMouseInOut : function (event) {
|
|
||||||
let doc = this.video.ownerDocument;
|
|
||||||
let win = doc.defaultView;
|
|
||||||
if (this.isVideoWithoutAudioTrack() ||
|
|
||||||
(this.isAudioOnly && this.isTopLevelSyntheticDocument)) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Ignore events caused by transitions between mute button and volumeStack,
|
|
||||||
// or between nodes inside these two elements.
|
|
||||||
if (this.isEventWithin(event, this.muteButton, this.volumeStack))
|
|
||||||
return;
|
|
||||||
var isMouseOver = (event.type == "mouseover");
|
|
||||||
this.startFade(this.volumeStack, isMouseOver);
|
|
||||||
},
|
|
||||||
|
|
||||||
_controlsHiddenByTimeout : false,
|
_controlsHiddenByTimeout : false,
|
||||||
_showControlsTimeout : 0,
|
_showControlsTimeout : 0,
|
||||||
SHOW_CONTROLS_TIMEOUT_MS: 500,
|
SHOW_CONTROLS_TIMEOUT_MS: 500,
|
||||||
|
@ -1360,6 +1350,7 @@
|
||||||
_playButtonWidth : 0,
|
_playButtonWidth : 0,
|
||||||
_durationLabelWidth : 0,
|
_durationLabelWidth : 0,
|
||||||
_muteButtonWidth : 0,
|
_muteButtonWidth : 0,
|
||||||
|
_volumeControlWidth : 0,
|
||||||
_fullscreenButtonWidth : 0,
|
_fullscreenButtonWidth : 0,
|
||||||
_controlBarHeight : 0,
|
_controlBarHeight : 0,
|
||||||
_overlayPlayButtonHeight : 64,
|
_overlayPlayButtonHeight : 64,
|
||||||
|
@ -1377,6 +1368,7 @@
|
||||||
minScrubberWidth +
|
minScrubberWidth +
|
||||||
this._durationLabelWidth +
|
this._durationLabelWidth +
|
||||||
this._muteButtonWidth +
|
this._muteButtonWidth +
|
||||||
|
this._volumeControlWidth +
|
||||||
this._fullscreenButtonWidth;
|
this._fullscreenButtonWidth;
|
||||||
let minHeightForControlBar = this._controlBarHeight;
|
let minHeightForControlBar = this._controlBarHeight;
|
||||||
let minWidthOnlyPlayPause = this._playButtonWidth + this._muteButtonWidth;
|
let minWidthOnlyPlayPause = this._playButtonWidth + this._muteButtonWidth;
|
||||||
|
@ -1400,14 +1392,12 @@
|
||||||
init : function (binding) {
|
init : function (binding) {
|
||||||
this.video = binding.parentNode;
|
this.video = binding.parentNode;
|
||||||
this.videocontrols = binding;
|
this.videocontrols = binding;
|
||||||
this.isAudioOnly = (this.video instanceof HTMLAudioElement);
|
|
||||||
|
|
||||||
this.statusIcon = document.getAnonymousElementByAttribute(binding, "class", "statusIcon");
|
this.statusIcon = document.getAnonymousElementByAttribute(binding, "class", "statusIcon");
|
||||||
this.controlBar = document.getAnonymousElementByAttribute(binding, "class", "controlBar");
|
this.controlBar = document.getAnonymousElementByAttribute(binding, "class", "controlBar");
|
||||||
this.playButton = document.getAnonymousElementByAttribute(binding, "class", "playButton");
|
this.playButton = document.getAnonymousElementByAttribute(binding, "class", "playButton");
|
||||||
this.muteButton = document.getAnonymousElementByAttribute(binding, "class", "muteButton");
|
this.muteButton = document.getAnonymousElementByAttribute(binding, "class", "muteButton");
|
||||||
this.volumeControl = document.getAnonymousElementByAttribute(binding, "class", "volumeControl");
|
this.volumeControl = document.getAnonymousElementByAttribute(binding, "class", "volumeControl");
|
||||||
this.volumeStack = document.getAnonymousElementByAttribute(binding, "class", "volumeStack");
|
|
||||||
this.progressBar = document.getAnonymousElementByAttribute(binding, "class", "progressBar");
|
this.progressBar = document.getAnonymousElementByAttribute(binding, "class", "progressBar");
|
||||||
this.bufferBar = document.getAnonymousElementByAttribute(binding, "class", "bufferBar");
|
this.bufferBar = document.getAnonymousElementByAttribute(binding, "class", "bufferBar");
|
||||||
this.scrubber = document.getAnonymousElementByAttribute(binding, "class", "scrubber");
|
this.scrubber = document.getAnonymousElementByAttribute(binding, "class", "scrubber");
|
||||||
|
@ -1419,6 +1409,7 @@
|
||||||
this.controlsSpacer = document.getAnonymousElementByAttribute(binding, "class", "controlsSpacer");
|
this.controlsSpacer = document.getAnonymousElementByAttribute(binding, "class", "controlsSpacer");
|
||||||
this.clickToPlay = document.getAnonymousElementByAttribute(binding, "class", "clickToPlay");
|
this.clickToPlay = document.getAnonymousElementByAttribute(binding, "class", "clickToPlay");
|
||||||
this.fullscreenButton = document.getAnonymousElementByAttribute(binding, "class", "fullscreenButton");
|
this.fullscreenButton = document.getAnonymousElementByAttribute(binding, "class", "fullscreenButton");
|
||||||
|
this.volumeForeground = document.getAnonymousElementByAttribute(binding, "anonid", "volumeForeground");
|
||||||
|
|
||||||
this.statsTable = document.getAnonymousElementByAttribute(binding, "class", "statsTable");
|
this.statsTable = document.getAnonymousElementByAttribute(binding, "class", "statsTable");
|
||||||
this.stats.filename = document.getAnonymousElementByAttribute(binding, "class", "statFilename");
|
this.stats.filename = document.getAnonymousElementByAttribute(binding, "class", "statFilename");
|
||||||
|
@ -1432,6 +1423,7 @@
|
||||||
this.stats.framesPresented = document.getAnonymousElementByAttribute(binding, "class", "statFramesPresented");
|
this.stats.framesPresented = document.getAnonymousElementByAttribute(binding, "class", "statFramesPresented");
|
||||||
this.stats.framesPainted = document.getAnonymousElementByAttribute(binding, "class", "statFramesPainted");
|
this.stats.framesPainted = document.getAnonymousElementByAttribute(binding, "class", "statFramesPainted");
|
||||||
|
|
||||||
|
this.isAudioOnly = (this.video instanceof HTMLAudioElement);
|
||||||
this.setupInitialState();
|
this.setupInitialState();
|
||||||
this.setupNewLoadState();
|
this.setupNewLoadState();
|
||||||
|
|
||||||
|
@ -1459,15 +1451,6 @@
|
||||||
addListener(this.controlsSpacer, "click", this.clickToPlayClickHandler);
|
addListener(this.controlsSpacer, "click", this.clickToPlayClickHandler);
|
||||||
addListener(this.controlsSpacer, "dblclick", this.toggleFullscreen);
|
addListener(this.controlsSpacer, "dblclick", this.toggleFullscreen);
|
||||||
|
|
||||||
if (this.isAudioOnly) {
|
|
||||||
this.controlBar.classList.add("audio");
|
|
||||||
} else {
|
|
||||||
addListener(this.muteButton, "mouseover", this.onVolumeMouseInOut);
|
|
||||||
addListener(this.muteButton, "mouseout", this.onVolumeMouseInOut);
|
|
||||||
addListener(this.volumeStack, "mouseover", this.onVolumeMouseInOut);
|
|
||||||
addListener(this.volumeStack, "mouseout", this.onVolumeMouseInOut);
|
|
||||||
}
|
|
||||||
|
|
||||||
addListener(this.videocontrols, "resizevideocontrols", this.adjustControlSize);
|
addListener(this.videocontrols, "resizevideocontrols", this.adjustControlSize);
|
||||||
addListener(this.videocontrols, "transitionend", this.onTransitionEnd);
|
addListener(this.videocontrols, "transitionend", this.onTransitionEnd);
|
||||||
addListener(this.video.ownerDocument, "mozfullscreenchange", this.onFullscreenChange);
|
addListener(this.video.ownerDocument, "mozfullscreenchange", this.onFullscreenChange);
|
||||||
|
@ -1539,11 +1522,12 @@
|
||||||
<button class="muteButton"
|
<button class="muteButton"
|
||||||
mutelabel="&muteButton.muteLabel;"
|
mutelabel="&muteButton.muteLabel;"
|
||||||
unmutelabel="&muteButton.unmuteLabel;"/>
|
unmutelabel="&muteButton.unmuteLabel;"/>
|
||||||
<stack class="volumeStack" hidden="true" fadeout="true">
|
<stack class="volumeStack">
|
||||||
<box class="volumeBackgroundBar"/>
|
<box class="volumeBackground"/>
|
||||||
<scale class="volumeControl" orient="vertical" dir="reverse" movetoclick="true"/>
|
<box class="volumeForeground" anonid="volumeForeground"/>
|
||||||
|
<scale class="volumeControl" movetoclick="true"/>
|
||||||
</stack>
|
</stack>
|
||||||
</hbox>
|
</hbox>
|
||||||
<stack class="scrubberStack" flex="1">
|
<stack class="scrubberStack" flex="1">
|
||||||
<box class="backgroundBar"/>
|
<box class="backgroundBar"/>
|
||||||
<progressmeter class="bufferBar"/>
|
<progressmeter class="bufferBar"/>
|
||||||
|
|
|
@ -174,8 +174,8 @@ toolkit.jar:
|
||||||
skin/classic/global/media/error.png (media/error.png)
|
skin/classic/global/media/error.png (media/error.png)
|
||||||
skin/classic/global/media/throbber.png (media/throbber.png)
|
skin/classic/global/media/throbber.png (media/throbber.png)
|
||||||
skin/classic/global/media/stalled.png (media/stalled.png)
|
skin/classic/global/media/stalled.png (media/stalled.png)
|
||||||
skin/classic/global/media/volumeThumb.png (media/volumeThumb.png)
|
skin/classic/global/media/volume-empty.png (media/volume-empty.png)
|
||||||
skin/classic/global/media/volumeThumb@2x.png (media/volumeThumb@2x.png)
|
skin/classic/global/media/volume-full.png (media/volume-full.png)
|
||||||
skin/classic/global/media/clicktoplay-bgtexture.png (media/clicktoplay-bgtexture.png)
|
skin/classic/global/media/clicktoplay-bgtexture.png (media/clicktoplay-bgtexture.png)
|
||||||
skin/classic/global/media/videoClickToPlayButton.svg (media/videoClickToPlayButton.svg)
|
skin/classic/global/media/videoClickToPlayButton.svg (media/videoClickToPlayButton.svg)
|
||||||
skin/classic/global/menu/menu-arrow.png (menu/menu-arrow.png)
|
skin/classic/global/menu/menu-arrow.png (menu/menu-arrow.png)
|
||||||
|
|
|
@ -59,6 +59,10 @@
|
||||||
background-image: url(chrome://global/skin/media/noAudio.png);
|
background-image: url(chrome://global/skin/media/noAudio.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.muteButton[noAudio] + .volumeStack {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.fullscreenButton {
|
.fullscreenButton {
|
||||||
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton.png"), 0, 16, 16, 0);
|
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton.png"), 0, 16, 16, 0);
|
||||||
}
|
}
|
||||||
|
@ -67,36 +71,37 @@
|
||||||
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton.png"), 0, 32, 16, 16);
|
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton.png"), 0, 32, 16, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
.volumeStack {
|
|
||||||
width: 28px;
|
|
||||||
height: 70px;
|
|
||||||
background-color: rgba(35,31,32,.74);
|
|
||||||
/* use negative margin to place stack over the mute button to its left. */
|
|
||||||
margin: -70px 3px 28px -31px;
|
|
||||||
overflow: hidden; /* crop it when sliding down, don't grow the control bar */
|
|
||||||
position: relative; /* Trick to work around negative margin interfering with dragging the thumb. */
|
|
||||||
padding-top: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.volumeControl {
|
.volumeControl {
|
||||||
min-height: 64px;
|
height: 32px;
|
||||||
|
width: 32px;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.volumeBackground,
|
||||||
|
.volumeForeground {
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.volumeBackground {
|
||||||
|
background-image: url(chrome://global/skin/media/volume-empty.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.volumeForeground {
|
||||||
|
background-image: url(chrome://global/skin/media/volume-full.png);
|
||||||
|
background-clip: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.controlBar[audio-only] > .volumeStack {
|
||||||
|
-moz-margin-end: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* .scale-thumb is an element inside the <scale> implementation. */
|
|
||||||
.volumeControl .scale-thumb {
|
.volumeControl .scale-thumb {
|
||||||
/* Override the default thumb appearance with a custom image. */
|
min-width: 0;
|
||||||
-moz-appearance: none;
|
min-height: 32px;
|
||||||
background: url(chrome://global/skin/media/volumeThumb.png) no-repeat center;
|
opacity: 0;
|
||||||
border: none;
|
|
||||||
min-width: 20px;
|
|
||||||
min-height: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.volumeBackgroundBar {
|
|
||||||
/* margin left/right: make bar 8px wide (control width = 28, minus 2 * 10 margin) */
|
|
||||||
margin: 0 10px;
|
|
||||||
background-color: rgba(255,255,255,.75);
|
|
||||||
border-radius: 2.5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.durationBox {
|
.durationBox {
|
||||||
|
@ -337,10 +342,6 @@ html|table {
|
||||||
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton@2x.png"), 0, 64, 32, 32);
|
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton@2x.png"), 0, 64, 32, 32);
|
||||||
background-size: 16px 16px;
|
background-size: 16px 16px;
|
||||||
}
|
}
|
||||||
.volumeControl .scale-thumb {
|
|
||||||
background-image: url(chrome://global/skin/media/volumeThumb@2x.png);
|
|
||||||
background-size: 20px 10px;
|
|
||||||
}
|
|
||||||
.timeThumb {
|
.timeThumb {
|
||||||
background-image: url(chrome://global/skin/media/scrubberThumb@2x.png);
|
background-image: url(chrome://global/skin/media/scrubberThumb@2x.png);
|
||||||
background-size: 33px 28px;
|
background-size: 33px 28px;
|
||||||
|
|
После Ширина: | Высота: | Размер: 295 B |
После Ширина: | Высота: | Размер: 297 B |
Двоичные данные
toolkit/themes/osx/global/media/volumeThumb.png
До Ширина: | Высота: | Размер: 163 B |
Двоичные данные
toolkit/themes/osx/global/media/volumeThumb@2x.png
До Ширина: | Высота: | Размер: 281 B |
|
@ -163,7 +163,8 @@ toolkit.jar:
|
||||||
skin/classic/global/media/scrubberThumbWide.png (media/scrubberThumbWide.png)
|
skin/classic/global/media/scrubberThumbWide.png (media/scrubberThumbWide.png)
|
||||||
skin/classic/global/media/throbber.png (media/throbber.png)
|
skin/classic/global/media/throbber.png (media/throbber.png)
|
||||||
skin/classic/global/media/stalled.png (media/stalled.png)
|
skin/classic/global/media/stalled.png (media/stalled.png)
|
||||||
skin/classic/global/media/volumeThumb.png (media/volumeThumb.png)
|
skin/classic/global/media/volume-empty.png (media/volume-empty.png)
|
||||||
|
skin/classic/global/media/volume-full.png (media/volume-full.png)
|
||||||
skin/classic/global/media/error.png (media/error.png)
|
skin/classic/global/media/error.png (media/error.png)
|
||||||
skin/classic/global/media/clicktoplay-bgtexture.png (media/clicktoplay-bgtexture.png)
|
skin/classic/global/media/clicktoplay-bgtexture.png (media/clicktoplay-bgtexture.png)
|
||||||
skin/classic/global/media/videoClickToPlayButton.svg (media/videoClickToPlayButton.svg)
|
skin/classic/global/media/videoClickToPlayButton.svg (media/videoClickToPlayButton.svg)
|
||||||
|
@ -344,7 +345,8 @@ toolkit.jar:
|
||||||
skin/classic/aero/global/media/scrubberThumbWide.png (media/scrubberThumbWide.png)
|
skin/classic/aero/global/media/scrubberThumbWide.png (media/scrubberThumbWide.png)
|
||||||
skin/classic/aero/global/media/throbber.png (media/throbber.png)
|
skin/classic/aero/global/media/throbber.png (media/throbber.png)
|
||||||
skin/classic/aero/global/media/stalled.png (media/stalled.png)
|
skin/classic/aero/global/media/stalled.png (media/stalled.png)
|
||||||
skin/classic/aero/global/media/volumeThumb.png (media/volumeThumb.png)
|
skin/classic/aero/global/media/volume-empty.png (media/volume-empty.png)
|
||||||
|
skin/classic/aero/global/media/volume-full.png (media/volume-full.png)
|
||||||
skin/classic/aero/global/media/error.png (media/error.png)
|
skin/classic/aero/global/media/error.png (media/error.png)
|
||||||
skin/classic/aero/global/media/clicktoplay-bgtexture.png (media/clicktoplay-bgtexture.png)
|
skin/classic/aero/global/media/clicktoplay-bgtexture.png (media/clicktoplay-bgtexture.png)
|
||||||
skin/classic/aero/global/media/videoClickToPlayButton.svg (media/videoClickToPlayButton.svg)
|
skin/classic/aero/global/media/videoClickToPlayButton.svg (media/videoClickToPlayButton.svg)
|
||||||
|
|
|
@ -59,6 +59,10 @@
|
||||||
background-image: url(chrome://global/skin/media/noAudio.png);
|
background-image: url(chrome://global/skin/media/noAudio.png);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.muteButton[noAudio] + .volumeStack {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
|
|
||||||
.fullscreenButton {
|
.fullscreenButton {
|
||||||
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton.png"), 0, 16, 16, 0);
|
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton.png"), 0, 16, 16, 0);
|
||||||
}
|
}
|
||||||
|
@ -67,36 +71,37 @@
|
||||||
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton.png"), 0, 32, 16, 16);
|
background-image: -moz-image-rect(url("chrome://global/skin/media/fullscreenButton.png"), 0, 32, 16, 16);
|
||||||
}
|
}
|
||||||
|
|
||||||
.volumeStack {
|
|
||||||
width: 28px;
|
|
||||||
height: 70px;
|
|
||||||
background-color: rgba(35,31,32,.74);
|
|
||||||
/* use negative margin to place stack over the mute button to its left. */
|
|
||||||
margin: -70px 3px 28px -31px;
|
|
||||||
overflow: hidden; /* crop it when sliding down, don't grow the control bar */
|
|
||||||
position: relative; /* Trick to work around negative margin interfering with dragging the thumb. */
|
|
||||||
padding-top: 6px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.volumeControl {
|
.volumeControl {
|
||||||
min-height: 64px;
|
height: 32px;
|
||||||
|
width: 32px;
|
||||||
|
opacity: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.volumeBackground,
|
||||||
|
.volumeForeground {
|
||||||
|
background-repeat: no-repeat;
|
||||||
|
background-position: center;
|
||||||
|
width: 32px;
|
||||||
|
height: 32px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.volumeBackground {
|
||||||
|
background-image: url(chrome://global/skin/media/volume-empty.png);
|
||||||
|
}
|
||||||
|
|
||||||
|
.volumeForeground {
|
||||||
|
background-image: url(chrome://global/skin/media/volume-full.png);
|
||||||
|
background-clip: content-box;
|
||||||
|
}
|
||||||
|
|
||||||
|
.controlBar[audio-only] > .volumeStack {
|
||||||
|
-moz-margin-end: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* .scale-thumb is an element inside the <scale> implementation. */
|
|
||||||
.volumeControl .scale-thumb {
|
.volumeControl .scale-thumb {
|
||||||
/* Override the default thumb appearance with a custom image. */
|
min-width: 0;
|
||||||
-moz-appearance: none;
|
min-height: 32px;
|
||||||
background: url(chrome://global/skin/media/volumeThumb.png) no-repeat center;
|
opacity: 0;
|
||||||
border: none;
|
|
||||||
min-width: 20px;
|
|
||||||
min-height: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.volumeBackgroundBar {
|
|
||||||
/* margin left/right: make bar 8px wide (control width = 28, minus 2 * 10 margin) */
|
|
||||||
margin: 0 10px;
|
|
||||||
background-color: rgba(255,255,255,.75);
|
|
||||||
border-radius: 2.5px;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.durationBox {
|
.durationBox {
|
||||||
|
@ -170,7 +175,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
/* .scale-thumb is an element inside the <scale> implementation. */
|
/* .scale-thumb is an element inside the <scale> implementation. */
|
||||||
.scrubber .scale-thumb {
|
.scrubber .scale-thumb,
|
||||||
|
.volumeControl .scale-thumb {
|
||||||
/* Override the default thumb appearance with a custom image. */
|
/* Override the default thumb appearance with a custom image. */
|
||||||
-moz-appearance: none;
|
-moz-appearance: none;
|
||||||
background: transparent;
|
background: transparent;
|
||||||
|
|
После Ширина: | Высота: | Размер: 295 B |
После Ширина: | Высота: | Размер: 297 B |
Двоичные данные
toolkit/themes/windows/global/media/volumeThumb.png
До Ширина: | Высота: | Размер: 163 B |