From 4c03e98a194ddc79785938dc119819a3dcb8b760 Mon Sep 17 00:00:00 2001 From: DC Date: Tue, 8 Mar 2016 01:47:32 -0800 Subject: [PATCH] Video controls: never hide when paused Also simplifies CSS --- renderer/index.css | 20 ++++++++++---------- renderer/index.js | 2 +- renderer/views/app.js | 15 +++++++++++++-- renderer/views/header.js | 6 +----- renderer/views/player.js | 6 +----- 5 files changed, 26 insertions(+), 23 deletions(-) diff --git a/renderer/index.css b/renderer/index.css index e8d465df..93127717 100644 --- a/renderer/index.css +++ b/renderer/index.css @@ -153,12 +153,12 @@ a:not(.disabled):hover, i:not(.disabled):hover { } .view-player .header { - opacity: 0; + opacity: 0.8; } -.view-player:hover .header:not(.hide) { +.app.hide-video-controls .view-player .header { opacity: 0.8; - cursor: default; + cursor: none; } .header .title { @@ -368,22 +368,22 @@ body.drag::before { width: 100%; height: 38px; bottom: 0; - opacity: 0; transition: all 0.15s ease-out; } -.player:hover .player-controls { - opacity: 1; -} - -.player.hide:hover .player-controls { +.app.hide-video-controls .player-controls { opacity: 0; } -.player.hide { +.app.hide-video-controls .player { cursor: none; } +.app.hide-video-controls .player .player-controls:hover { + opacity: 1; + cursor: default; +} + /* invisible click target for scrubbing */ .player-controls .scrub-bar { position: absolute; diff --git a/renderer/index.js b/renderer/index.js index 84045280..0593af1c 100644 --- a/renderer/index.js +++ b/renderer/index.js @@ -74,7 +74,7 @@ function init () { }, 1000) // All state lives in state.js. `state.saved` is read from and written to a - // file. All other state is ephemeral. Here we'll load state.saved: + // file. All other state is ephemeral. window.addEventListener('beforeunload', saveState) // listen for messages from the main process diff --git a/renderer/views/app.js b/renderer/views/app.js index ca661fc0..b8615e83 100644 --- a/renderer/views/app.js +++ b/renderer/views/app.js @@ -11,10 +11,21 @@ var TorrentList = require('./torrent-list') var isOSX = process.platform === 'darwin' function App (state, dispatch) { + // Hide player controls while playing video, if the mouse stays still for a while + // Never hide the controls when: + // * The mouse is over the controls or we're scrubbing (see CSS) + // * The video is paused + var isVideoPlayer = state.url === '/player' + var hideControls = isVideoPlayer && + state.video.mouseStationarySince !== 0 && + new Date().getTime() - state.video.mouseStationarySince > 2000 && + !state.video.isPaused + var cls = [ - process.platform, + process.platform, /* 'windows', 'linux', or 'darwin' for OSX */ state.isFullScreen ? 'fullscreen' : 'not-fullscreen', - state.url === '/player' ? 'view-player' : '' + isVideoPlayer ? 'view-player' : '', + hideControls ? 'hide-video-controls' : '' ] return hx` diff --git a/renderer/views/header.js b/renderer/views/header.js index d29365c9..b40cf3e0 100644 --- a/renderer/views/header.js +++ b/renderer/views/header.js @@ -5,12 +5,8 @@ var hyperx = require('hyperx') var hx = hyperx(h) function Header (state, dispatch) { - var hideControls = state.url === '/player' && - state.video.mouseStationarySince !== 0 && - new Date().getTime() - state.video.mouseStationarySince > 2000 - return hx` -
+
${getTitle()}