mirror of
https://github.com/embarklabs/neo-blessed.git
synced 2025-02-03 22:55:43 +00:00
mouse interactive scrollbar.
This commit is contained in:
parent
b7cf7d08f6
commit
bcf9b630bb
@ -4771,6 +4771,38 @@ function ScrollableBox(options) {
|
|||||||
}
|
}
|
||||||
this.track.style = this.style.track;
|
this.track.style = this.style.track;
|
||||||
}
|
}
|
||||||
|
// Allow controlling of the scrollbar via the mouse:
|
||||||
|
this.on('mousedown', function(data) {
|
||||||
|
if (self._scrollingBar) {
|
||||||
|
// Do not allow dragging on the scrollbar:
|
||||||
|
delete self._drag;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
var x = data.x - self.aleft;
|
||||||
|
var y = data.y - self.atop;
|
||||||
|
if (x === self.width - self.iright - 1) {
|
||||||
|
// Do not allow dragging on the scrollbar:
|
||||||
|
delete self._drag;
|
||||||
|
var perc = (y - self.itop) / (self.height - self.iheight);
|
||||||
|
self.setScrollPerc(perc * 100 | 0);
|
||||||
|
self.screen.render();
|
||||||
|
var smd, smu;
|
||||||
|
self._scrollingBar = true;
|
||||||
|
self.screen.on('mousedown', smd = function(data) {
|
||||||
|
var y = data.y - self.atop;
|
||||||
|
var perc = y / self.height;
|
||||||
|
self.setScrollPerc(perc * 100 | 0);
|
||||||
|
self.screen.render();
|
||||||
|
});
|
||||||
|
// If mouseup occurs out of the window, no mouseup event fires, and
|
||||||
|
// scrollbar will drag again on mousedown until another mouseup occurs.
|
||||||
|
self.screen.on('mouseup', smu = function(data) {
|
||||||
|
self._scrollingBar = false;
|
||||||
|
self.screen.removeListener('mousedown', smd);
|
||||||
|
self.screen.removeListener('mouseup', smu);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (options.mouse) {
|
if (options.mouse) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user