From 3ded369d093e9de0437c78a51b76a276949c9816 Mon Sep 17 00:00:00 2001 From: William Petit Date: Thu, 7 Apr 2016 17:53:42 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20d=C3=A9lai=20minimum=20de=202s?= =?UTF-8?q?=20entre=20deux=20clics=20pour=20=C3=A9viter=20des=20lancements?= =?UTF-8?q?=20intempestifs=20d'applications.=20Fixes=20#4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/launcher/launcher-view.js | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/components/launcher/launcher-view.js b/src/components/launcher/launcher-view.js index 5143168..c6dea96 100644 --- a/src/components/launcher/launcher-view.js +++ b/src/components/launcher/launcher-view.js @@ -8,9 +8,11 @@ var connect = require('react-redux').connect; var logger = require('../../util/logger'); var CrossfadeImage = require('../common/crossfade-image'); var path = require('path'); +var _ = require('lodash'); var DEFAULT_PROFILE = path.join(__dirname, '..', '..', '..', 'default-profile.json'); var DEFAULT_BACKGROUND = ''; +var MIN_CLICK_DELTATIME = 2000; var LauncherView = React.createClass({ @@ -19,7 +21,8 @@ var LauncherView = React.createClass({ getInitialState: function() { return { currentItemPath: '', - currentItem: null + currentItem: null, + lastClickTimestamp: 0 }; }, @@ -90,6 +93,12 @@ var LauncherView = React.createClass({ logger.debug(item); + var clickDeltaTime = Date.now() - this.state.lastClickTimestamp; + if( clickDeltaTime < MIN_CLICK_DELTATIME ) { + logger.debug('Item clicked within %sms. No action.', MIN_CLICK_DELTATIME); + return; + } + if(item.items) { this.play(this.refs.appList, 'slide-out-left 250ms ease-in-out') @@ -117,6 +126,8 @@ var LauncherView = React.createClass({ logger.info('No action associated with item "'+item.label+'".'); } + this.setState({ lastClickTimestamp: Date.now() }); + }, _getItemByPath: function(itemPath, rootItem) {