X-Git-Url: https://git.proxmox.com/?a=blobdiff_plain;f=src%2Fxterm.js;h=5aa069e796c688b291265b60ae1d1920291a772c;hb=106eda70675296907643782358134d2628872ca4;hp=b0ed3eb7ba231069a1365a2769ba2cd2dce8f054;hpb=9a30b98880fe2fc511b077f20994702ed7301ce5;p=mirror_xterm.js.git diff --git a/src/xterm.js b/src/xterm.js index b0ed3eb..5aa069e 100644 --- a/src/xterm.js +++ b/src/xterm.js @@ -429,7 +429,7 @@ Terminal.prototype.setOption = function(key, value) { switch (key) { case 'cursorBlink': this.setCursorBlinking(value); break; case 'cursorStyle': - // Style 'block' applies with no class + this.element.classList.toggle(`xterm-cursor-style-block`, value === 'block'); this.element.classList.toggle(`xterm-cursor-style-underline`, value === 'underline'); this.element.classList.toggle(`xterm-cursor-style-bar`, value === 'bar'); break; @@ -517,7 +517,7 @@ Terminal.prototype.initGlobal = function() { on(this.element, 'copy', event => { // If mouse events are active it means the selection manager is disabled and // copy should be handled by the host program. - if (!term.hasSelection) { + if (!term.hasSelection()) { return; } copyHandler(event, term, this.selectionManager); @@ -639,6 +639,7 @@ Terminal.prototype.open = function(parent, focus) { this.element.classList.add('terminal'); this.element.classList.add('xterm'); this.element.classList.add('xterm-theme-' + this.theme); + this.element.classList.add(`xterm-cursor-style-${this.options.cursorStyle}`); this.setCursorBlinking(this.options.cursorBlink); this.element.setAttribute('tabindex', 0); @@ -746,15 +747,6 @@ Terminal.prototype.open = function(parent, focus) { this.focus(); } - on(this.element, 'click', function() { - var selection = document.getSelection(), - collapsed = selection.isCollapsed, - isRange = typeof collapsed == 'boolean' ? !collapsed : selection.type == 'Range'; - if (!isRange) { - self.focus(); - } - }); - // Listen for mouse events and translate // them into terminal mouse protocols. this.bindMouse(); @@ -1025,14 +1017,17 @@ Terminal.prototype.bindMouse = function() { } on(el, 'mousedown', function(ev) { + + // Prevent the focus on the textarea from getting lost + // and make sure we get focused on mousedown + ev.preventDefault(); + self.focus(); + if (!self.mouseEvents) return; // send the button sendButton(ev); - // ensure focus - self.focus(); - // fix for odd bug //if (self.vt200Mouse && !self.normalMouse) { if (self.vt200Mouse) { @@ -1941,6 +1936,9 @@ Terminal.prototype.resize = function(x, y) { ch = [this.defAttr, ' ', 1]; // does xterm use the default attr? i = this.buffer.lines.length; while (i--) { + if (this.buffer.lines.get(i) === undefined) { + this.buffer.lines.set(i, this.blankLine()); + } while (this.buffer.lines.get(i).length < x) { this.buffer.lines.get(i).push(ch); } @@ -2198,7 +2196,7 @@ Terminal.prototype.ch = function(cur) { /** - * Evaluate if the current erminal is the given argument. + * Evaluate if the current terminal is the given argument. * @param {object} term The terminal to evaluate */ Terminal.prototype.is = function(term) {