1
0
mirror of https://github.com/gryf/pentadactyl-pm.git synced 2025-12-20 08:27:59 +01:00

Fix some command line focus issues.

This commit is contained in:
Kris Maglione
2011-02-03 22:01:05 -05:00
parent 6d5a7b0849
commit 0f796e823b
2 changed files with 11 additions and 6 deletions

View File

@@ -329,6 +329,8 @@ var CommandMode = Class("CommandMode", {
this.completions.complete(true, false); this.completions.complete(true, false);
}, },
get holdFocus() this.widgets.active.command.inputField,
get mappingSelf() this, get mappingSelf() this,
get widgets() commandline.widgets, get widgets() commandline.widgets,
@@ -801,12 +803,8 @@ var CommandLine = Module("commandline", {
} }
]).toObject(), ]).toObject(),
{ {
blur: function onBlur(event) {
if (this.commandMode && event.originalTarget === this.widgets.active.command.inputField)
dactyl.focus(this.widgets.active.command.inputField);
},
focus: function onFocus(event) { focus: function onFocus(event) {
if (!this.commandMode if (!this.commandSession
&& event.originalTarget === this.widgets.active.command.inputField) { && event.originalTarget === this.widgets.active.command.inputField) {
event.target.blur(); event.target.blur();
dactyl.beep(); dactyl.beep();

View File

@@ -966,7 +966,8 @@ var Events = Module("events", {
blur: function onBlur(event) { blur: function onBlur(event) {
let elem = event.originalTarget; let elem = event.originalTarget;
if (event.originalTarget instanceof Window && services.focus.activeWindow == null) { if (elem instanceof Window && services.focus.activeWindow == null
&& document.commandDispatcher.focusedWindow !== window) {
// Deals with circumstances where, after the main window // Deals with circumstances where, after the main window
// blurs while a collapsed frame has focus, re-activating // blurs while a collapsed frame has focus, re-activating
// the main window does not restore focus and we lose key // the main window does not restore focus and we lose key
@@ -974,6 +975,12 @@ var Events = Module("events", {
services.focus.clearFocus(window); services.focus.clearFocus(window);
document.commandDispatcher.focusedWindow = Editor.getEditor(content) ? window : content; document.commandDispatcher.focusedWindow = Editor.getEditor(content) ? window : content;
} }
let hold = modes.topOfStack.params.holdFocus;
if (elem == hold) {
dactyl.focus(hold);
this.timeout(function () { dactyl.focus(hold); });
}
}, },
// TODO: Merge with onFocusChange // TODO: Merge with onFocusChange