diff --git a/lib/program.js b/lib/program.js index a071c5f..12b4427 100644 --- a/lib/program.js +++ b/lib/program.js @@ -488,7 +488,8 @@ Program.prototype._bindMouse = function(s, buf) { // NOTE: x10 and urxvt have no way // of telling which button mouseup used. key.action = 'mouseup'; - key.button = 'unknown'; + key.button = this._lastButton || 'unknown'; + delete this._lastButton; } else { key.action = 'mousedown'; var button = b & 3; @@ -497,6 +498,7 @@ Program.prototype._bindMouse = function(s, buf) { : button === 1 ? 'middle' : button === 2 ? 'right' : 'unknown'; + this._lastButton = key.button; } // Probably a movement. @@ -558,7 +560,8 @@ Program.prototype._bindMouse = function(s, buf) { // NOTE: x10 and urxvt have no way // of telling which button mouseup used. key.action = 'mouseup'; - key.button = 'unknown'; + key.button = this._lastButton || 'unknown'; + delete this._lastButton; } else { key.action = 'mousedown'; var button = b & 3; @@ -567,6 +570,7 @@ Program.prototype._bindMouse = function(s, buf) { : button === 1 ? 'middle' : button === 2 ? 'right' : 'unknown'; + this._lastButton = key.button; } // Probably a movement. diff --git a/lib/widget.js b/lib/widget.js index b5d9b12..6d091ba 100644 --- a/lib/widget.js +++ b/lib/widget.js @@ -552,7 +552,6 @@ Screen.prototype._listenMouse = function(el) { set = true; } el.emit(data.action, data); - break; } }