Skip to content

Commit

Permalink
fix #116 by disallowing invalid accelerator keys, both on startup and…
Browse files Browse the repository at this point in the history
… in Prefs UI
  • Loading branch information
todbot committed Jul 2, 2019
1 parent 7050f3c commit 8216411
Show file tree
Hide file tree
Showing 3 changed files with 30 additions and 10 deletions.
24 changes: 18 additions & 6 deletions app/components/gui/preferencesModal.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ var ControlLabel = require('react-bootstrap').ControlLabel;
var Radio = require('react-bootstrap').Radio;
var Checkbox = require('react-bootstrap').Checkbox;

var isAccelerator = require("electron-is-accelerator");

var PatternsService = require('../../server/patternsService');
var Blink1Service = require('../../server/blink1Service');
Expand Down Expand Up @@ -85,8 +86,7 @@ loadSettings: function() {
patterns: patterns,
patternId: 'whiteflashes',
nonComputerPattern: patterns[0].id,
nonComputerStatus: '',
errormsg: ''
errorMsg: ''
};
return settings;
},
Expand Down Expand Up @@ -185,13 +185,21 @@ handleBlink1NonComputerSet: function(event) {
log.msg("setting pattern:",patt);
err = Blink1Service.writePatternToBlink1(patt,true,0);
}

this.setState({nonComputerStatus: err});
err = ( !err ) ? "success" : err;
this.setState({errorMsg: err});
},
handleInputChange: function(event) {
var target = event.target;
var value = target.type === 'checkbox' ? target.checked : target.value;
var name = target.name;
if( name == 'shortcutResetKey' && value != '') {
var accel = this.state.shortcutPrefix +"+"+ value;
log.msg("accel:",accel);
if( !isAccelerator(accel) ) {
this.setState({errorMsg: "Cannot use '"+value+"' as shortcut key"});
return;
}
}
this.setState({[name]: value});
},

Expand All @@ -210,6 +218,7 @@ render: function() {
paddingLeft: 15,
paddingBottom: 10
};
var errorSectStyle = { paddingLeft: 15, color:'red'};

return (
<div>
Expand Down Expand Up @@ -367,10 +376,13 @@ render: function() {
</Col>
</FormGroup>
</Form>
<span>{this.state.nonComputerStatus}</span>
</div>
</Col>

</Row>
<Row>
<Col>
<div style={errorSectStyle}>{this.state.errorMsg}</div>
</Col>
</Row>
</Modal.Body>
<Modal.Footer>
Expand Down
15 changes: 11 additions & 4 deletions app/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ var Menu = electron.Menu;
var crashReporter = electron.crashReporter;

var path = require('path');
var isAccelerator = require("electron-is-accelerator");

var updater = require('./updater');

Expand Down Expand Up @@ -203,14 +204,20 @@ app.on('ready', function () {
var globalShortcutPrefix = config.readSettings('startup:shortcutPrefix') || 'CommandOrControl+Shift';
var resetKey = config.readSettings('startup:shortcutResetKey') || 'R';
var resetShortcut = globalShortcutPrefix + '+' + resetKey;
console.log("global shortcut:", resetShortcut);

var ret = globalShortcut.register(resetShortcut, function() {
// console.log('resetShortcut is pressed');
mainWindow.webContents.send('resetAlerts');
if( isAccelerator( resetShortcut)) {
var ret = globalShortcut.register(resetShortcut, function() {
// console.log('resetShortcut is pressed');
mainWindow.webContents.send('resetAlerts');
});
if (!ret) { console.log('globalShortcut registration failed'); }
// Check whether a shortcut is registered.
console.log("global shortcut key registered:", globalShortcut.isRegistered(resetShortcut));
console.log("globalShortcut key registered:", globalShortcut.isRegistered(resetShortcut));
}
else {
console.log("ignoring bad globalShortcutkey: ",resetShortcut);
}

if( process.env.NODE_ENV === 'development' ) {
mainWindow = new BrowserWindow({
Expand Down
1 change: 1 addition & 0 deletions app/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@
"auto-launch": "^5.0.1",
"d3-timer": "^1.0.7",
"debug": "^2.2.0",
"electron-is-accelerator": "^0.1.2",
"electron-log": "^3.0.6",
"electron-updater": "^4.0.6",
"events": "^1.1.1",
Expand Down

0 comments on commit 8216411

Please sign in to comment.