mirror of
https://github.com/gryf/pentadactyl-pm.git
synced 2025-12-20 07:28:00 +01:00
Fix a race.
--HG-- branch : groups
This commit is contained in:
@@ -36,6 +36,8 @@ var Editor = Module("editor", {
|
||||
let text = dactyl.clipboardRead(clipboard);
|
||||
if (!text)
|
||||
return;
|
||||
if (isinstance(elem, [HTMLInputElement, XULTextBoxElement]))
|
||||
text = text.replace(/\n+/g, "");
|
||||
|
||||
// This is a hacky fix - but it works.
|
||||
// <s-insert> in the bottom of a long textarea bounces up
|
||||
@@ -46,7 +48,9 @@ var Editor = Module("editor", {
|
||||
let end = elem.selectionEnd;
|
||||
let value = elem.value.substring(0, start) + text + elem.value.substring(end);
|
||||
elem.value = value;
|
||||
|
||||
Editor.getEditor(elem).rootElement.firstChild.textContent = value;
|
||||
|
||||
elem.selectionStart = Math.min(start + (toStart ? 0 : text.length), elem.value.length);
|
||||
elem.selectionEnd = elem.selectionStart;
|
||||
|
||||
|
||||
@@ -245,6 +245,8 @@ var Modes = Module("modes", {
|
||||
|
||||
getCharModes: function (chr) (this.modeChars[chr] || []).slice(),
|
||||
|
||||
have: function have(mode) this._modeStack.some(function (m) isinstance(m.main, mode)),
|
||||
|
||||
matchModes: function (obj)
|
||||
this._modes.filter(function (mode) Object.keys(obj)
|
||||
.every(function (k) obj[k] == (mode[k] || false))),
|
||||
@@ -397,7 +399,7 @@ var Modes = Module("modes", {
|
||||
},
|
||||
|
||||
isinstance: function (obj)
|
||||
this.allBases.indexOf(obj) >= 0 || callable(obj) && this instanceof obj,
|
||||
this === obj || this.allBases.indexOf(obj) >= 0 || callable(obj) && this instanceof obj,
|
||||
|
||||
allBases: Class.memoize(function () {
|
||||
let seen = {}, res = [], queue = this.bases;
|
||||
|
||||
@@ -10,25 +10,28 @@ var MOW = Module("mow", {
|
||||
init: function () {
|
||||
|
||||
this._resize = Timer(20, 400, function () {
|
||||
if (this.visible) {
|
||||
if (this.visible)
|
||||
this.resize(false);
|
||||
|
||||
if (this.visible && isinstance(modes.main, modes.OUTPUT_MULTILINE))
|
||||
this.updateMorePrompt();
|
||||
}
|
||||
}, this);
|
||||
|
||||
this._timer = Timer(20, 400, function () {
|
||||
this.resize(true);
|
||||
if (modes.have(modes.OUTPUT_MULTILINE)) {
|
||||
this.resize(true);
|
||||
|
||||
if (options["more"] && this.isScrollable(1)) {
|
||||
// start the last executed command's output at the top of the screen
|
||||
let elements = this.document.getElementsByClassName("ex-command-output");
|
||||
elements[elements.length - 1].scrollIntoView(true);
|
||||
if (options["more"] && this.isScrollable(1)) {
|
||||
// start the last executed command's output at the top of the screen
|
||||
let elements = this.document.getElementsByClassName("ex-command-output");
|
||||
elements[elements.length - 1].scrollIntoView(true);
|
||||
}
|
||||
else
|
||||
this.body.scrollTop = this.body.scrollHeight;
|
||||
|
||||
dactyl.focus(this.window);
|
||||
this.updateMorePrompt();
|
||||
}
|
||||
else
|
||||
this.body.scrollTop = this.body.scrollHeight;
|
||||
|
||||
dactyl.focus(this.window);
|
||||
this.updateMorePrompt();
|
||||
}, this);
|
||||
|
||||
events.listen(window, this, "windowEvents");
|
||||
|
||||
@@ -440,25 +440,24 @@ function isinstance(object, interfaces) {
|
||||
if (object == null)
|
||||
return false;
|
||||
|
||||
interfaces = Array.concat(interfaces);
|
||||
for (var i = 0; i < interfaces.length; i++) {
|
||||
if (typeof interfaces[i] === "string") {
|
||||
if (objproto.toString.call(object) === "[object " + interfaces[i] + "]")
|
||||
return Array.concat(interfaces).some(function isinstance_some(iface) {
|
||||
if (typeof iface === "string") {
|
||||
if (objproto.toString.call(object) === "[object " + iface + "]")
|
||||
return true;
|
||||
}
|
||||
else if (typeof object === "object" && "isinstance" in object && object.isinstance !== isinstance) {
|
||||
if (object.isinstance(interfaces[i]))
|
||||
if (object.isinstance(iface))
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
if (object instanceof interfaces[i])
|
||||
if (object instanceof iface)
|
||||
return true;
|
||||
var type = isinstance_types[typeof object];
|
||||
if (type && isSubclass(interfaces[i], type))
|
||||
if (type && isSubclass(iface, type))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
return false;
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user