1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00

Fixed status bar

This commit is contained in:
Laurent Cozic 2017-10-15 18:20:54 +01:00
parent 7e2b4f7da5
commit 7d45e1000d
2 changed files with 59 additions and 25 deletions

View File

@ -361,7 +361,28 @@ class AppGui {
this.widget('console').addItem(v);
}
if (object.length) this.widget('statusBar').setItemAt(0, object[object.length-1]);
this.updateStatusBarMessage();
}
updateStatusBarMessage() {
const consoleWidget = this.widget('console');
let msg = '';
const text = consoleWidget.items.length ? consoleWidget.items[consoleWidget.items.length - 1] : '';
const cmd = this.app().currentCommand();
if (cmd) {
msg += cmd.name();
if (cmd.cancellable()) msg += ' [Press Ctrl+C to cancel]';
msg += ': ';
}
if (text && text.length) {
msg += text;
}
if (msg !== '') this.widget('statusBar').setItemAt(0, msg);
}
async start() {
@ -419,38 +440,44 @@ class AppGui {
this.lastShortcutKeyTime_ = now;
if (name === ':' && !statusBar.promptActive) {
const cmd = await statusBar.prompt();
await this.processCommand(cmd);
} else {
// Don't process shortcut keys if the console is active, except if the shortcut
// starts with CTRL (eg. CTRL+J CTRL+Z to maximize the console window).
if (!statusBar.promptActive || (this.currentShortcutKeys_.length && this.currentShortcutKeys_[0].indexOf('CTRL') === 0)) {
this.logger().debug('Now: ' + name + ', Keys: ', this.currentShortcutKeys_);
if (!this.app().currentCommand()) {
if (name === ':' && !statusBar.promptActive) {
const cmd = await statusBar.prompt();
await this.processCommand(cmd);
} else {
// Don't process shortcut keys if the console is active, except if the shortcut
// starts with CTRL (eg. CTRL+J CTRL+Z to maximize the console window).
if (!statusBar.promptActive || (this.currentShortcutKeys_.length && this.currentShortcutKeys_[0].indexOf('CTRL') === 0)) {
this.logger().debug('Now: ' + name + ', Keys: ', this.currentShortcutKeys_);
const shortcutKey = this.currentShortcutKeys_.join('');
if (shortcutKey in this.shortcuts_) {
const cmd = this.shortcuts_[shortcutKey].action;
if (!cmd.isDocOnly) {
this.currentShortcutKeys_ = [];
if (typeof cmd === 'function') {
await cmd();
} else if (typeof cmd === 'object') {
if (cmd.type === 'prompt') {
const commandString = await statusBar.prompt(cmd.initialText ? cmd.initialText : '');
this.stdout(commandString);
await this.processCommand(commandString);
const shortcutKey = this.currentShortcutKeys_.join('');
if (shortcutKey in this.shortcuts_) {
const cmd = this.shortcuts_[shortcutKey].action;
if (!cmd.isDocOnly) {
this.currentShortcutKeys_ = [];
if (typeof cmd === 'function') {
await cmd();
} else if (typeof cmd === 'object') {
if (cmd.type === 'prompt') {
const commandString = await statusBar.prompt(cmd.initialText ? cmd.initialText : '');
this.stdout(commandString);
await this.processCommand(commandString);
} else {
throw new Error('Unknown command: ' + JSON.stringify(cmd));
}
} else {
throw new Error('Unknown command: ' + JSON.stringify(cmd));
this.stdout(cmd);
await this.processCommand(cmd);
}
} else {
this.stdout(cmd);
await this.processCommand(cmd);
}
}
}
}
}
// Optimisation: Update the status bar only
// if the user is not already typing a command:
if (!statusBar.promptActive) this.updateStatusBarMessage();
});
} catch (error) {
this.fullScreen(false);

View File

@ -66,6 +66,13 @@ class StatusBarWidget extends BaseWidget {
this.term.showCursor(true);
if (this.inputEventEmitter_) {
this.inputEventEmitter_.redraw();
// TODO: use termutils:
this.inputEventEmitter_.rebase(this.absoluteInnerX + this.promptState_.promptString.length, this.absoluteInnerY);
return;
}
let options = {
cancelable: true,
history: this.history,