mirror of https://github.com/keeweb/keeweb
commit
0411fe4cfe
|
@ -5,6 +5,9 @@ const path = require('path');
|
|||
|
||||
const webpackConfig = require('./build/webpack.config');
|
||||
const pkg = require('./package.json');
|
||||
const hookRcedit = require('./build/util/hook-rcedit');
|
||||
|
||||
hookRcedit.setup();
|
||||
|
||||
module.exports = function(grunt) {
|
||||
require('time-grunt')(grunt);
|
||||
|
|
|
@ -254,7 +254,6 @@ const AutoType = {
|
|||
Events.emit('open-file');
|
||||
Events.once('closed-open-view', () => {
|
||||
this.selectEntryView.show();
|
||||
this.selectEntryView.setupKeys();
|
||||
});
|
||||
});
|
||||
},
|
||||
|
|
|
@ -17,10 +17,10 @@ class EntryCollection extends Collection {
|
|||
'-created': Comparators.dateComparator('created', false),
|
||||
'updated': Comparators.dateComparator('updated', true),
|
||||
'-updated': Comparators.dateComparator('updated', false),
|
||||
'-attachments'(x, y) {
|
||||
'-attachments': (x, y) => {
|
||||
return this.attachmentSortVal(x).localeCompare(this.attachmentSortVal(y));
|
||||
},
|
||||
'-rank': Comparators.rankComparator()
|
||||
'-rank': Comparators.rankComparator().bind(this)
|
||||
};
|
||||
|
||||
defaultComparator = 'title';
|
||||
|
|
|
@ -63,7 +63,7 @@ class KeyHandler {
|
|||
const keyShortcuts = this.shortcuts[code];
|
||||
if (keyShortcuts && keyShortcuts.length) {
|
||||
for (const sh of keyShortcuts) {
|
||||
if (this.modal && sh.modal !== this.modal) {
|
||||
if (this.modal && (sh.modal !== this.modal || sh.modal === '*')) {
|
||||
e.stopPropagation();
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -103,7 +103,8 @@ class AppView extends View {
|
|||
this.onKey(
|
||||
Keys.DOM_VK_I,
|
||||
this.openDevTools,
|
||||
KeyHandler.SHORTCUT_ACTION + KeyHandler.SHORTCUT_OPT
|
||||
KeyHandler.SHORTCUT_ACTION + KeyHandler.SHORTCUT_OPT,
|
||||
'*'
|
||||
);
|
||||
}
|
||||
|
||||
|
|
|
@ -61,6 +61,12 @@ class AutoTypeSelectView extends View {
|
|||
this.once('remove', () => {
|
||||
KeyHandler.setModal(null);
|
||||
});
|
||||
this.on('show', () => {
|
||||
KeyHandler.setModal('auto-type');
|
||||
});
|
||||
this.on('hide', () => {
|
||||
KeyHandler.setModal(null);
|
||||
});
|
||||
}
|
||||
|
||||
render() {
|
||||
|
|
|
@ -21,9 +21,10 @@ class ModalView extends View {
|
|||
if (typeof this.model.enter === 'string') {
|
||||
this.onKey(Keys.DOM_VK_RETURN, this.enterPressed, false, 'alert');
|
||||
}
|
||||
const prevModal = KeyHandler.modal;
|
||||
KeyHandler.setModal('alert');
|
||||
this.once('remove', () => {
|
||||
KeyHandler.setModal(null);
|
||||
KeyHandler.setModal(prevModal);
|
||||
if (this.model.view) {
|
||||
this.model.view.remove();
|
||||
}
|
||||
|
|
|
@ -60,15 +60,17 @@ class OpenView extends View {
|
|||
super(model);
|
||||
this.resetParams();
|
||||
this.passwordInput = new SecureInput();
|
||||
this.onKey(Keys.DOM_VK_Z, this.undoKeyPress, KeyHandler.SHORTCUT_ACTION);
|
||||
this.onKey(Keys.DOM_VK_TAB, this.tabKeyPress);
|
||||
this.onKey(Keys.DOM_VK_ENTER, this.enterKeyPress);
|
||||
this.onKey(Keys.DOM_VK_RETURN, this.enterKeyPress);
|
||||
this.onKey(Keys.DOM_VK_DOWN, this.moveOpenFileSelectionDown);
|
||||
this.onKey(Keys.DOM_VK_UP, this.moveOpenFileSelectionUp);
|
||||
this.onKey(Keys.DOM_VK_Z, this.undoKeyPress, KeyHandler.SHORTCUT_ACTION, 'open');
|
||||
this.onKey(Keys.DOM_VK_TAB, this.tabKeyPress, null, 'open');
|
||||
this.onKey(Keys.DOM_VK_ENTER, this.enterKeyPress, null, 'open');
|
||||
this.onKey(Keys.DOM_VK_RETURN, this.enterKeyPress, null, 'open');
|
||||
this.onKey(Keys.DOM_VK_DOWN, this.moveOpenFileSelectionDown, null, 'open');
|
||||
this.onKey(Keys.DOM_VK_UP, this.moveOpenFileSelectionUp, null, 'open');
|
||||
this.listenTo(Events, 'main-window-focus', this.windowFocused.bind(this));
|
||||
KeyHandler.setModal('open');
|
||||
this.once('remove', () => {
|
||||
this.passwordInput.reset();
|
||||
KeyHandler.setModal(null);
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,21 @@
|
|||
const childProcess = require('child_process');
|
||||
|
||||
// remove this once wine can be run on macOS
|
||||
|
||||
const childProcessSpawn = childProcess.spawn;
|
||||
|
||||
function hookedSpawn(command, options) {
|
||||
if (command === 'wine') {
|
||||
options = options.map(option => {
|
||||
if (option.includes(' ')) {
|
||||
option = `"${option.replace('"', '\\"')}"`;
|
||||
}
|
||||
return option;
|
||||
});
|
||||
}
|
||||
return childProcessSpawn.call(childProcess, command, options);
|
||||
}
|
||||
|
||||
module.exports.setup = function() {
|
||||
childProcess.spawn = hookedSpawn;
|
||||
};
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "KeeWeb",
|
||||
"version": "1.11.6",
|
||||
"version": "1.11.7",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "KeeWeb",
|
||||
"version": "1.11.6",
|
||||
"version": "1.11.7",
|
||||
"description": "Free cross-platform password manager compatible with KeePass",
|
||||
"main": "main.js",
|
||||
"homepage": "https://keeweb.info",
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "keeweb",
|
||||
"version": "1.11.6",
|
||||
"version": "1.11.7",
|
||||
"lockfileVersion": 1,
|
||||
"requires": true,
|
||||
"dependencies": {
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "keeweb",
|
||||
"version": "1.11.6",
|
||||
"version": "1.11.7",
|
||||
"description": "Free cross-platform password manager compatible with KeePass",
|
||||
"main": "Gruntfile.js",
|
||||
"private": true,
|
||||
|
|
|
@ -9,6 +9,10 @@ Release notes
|
|||
`+` #480: option to launch the app minimized
|
||||
`-` fix #1273: untranslated menu items
|
||||
|
||||
##### v1.11.7 (2019-10-08)
|
||||
`-` fix #1289: crash on Auto sorting mode
|
||||
`-` fix #1288: issues when opening a file during in auto-type mode
|
||||
|
||||
##### v1.11.6 (2019-10-04)
|
||||
`-` fix #1285: issues in moving entries across files
|
||||
|
||||
|
|
Loading…
Reference in New Issue