1
0
mirror of https://github.com/psychopy/psychojs.git synced 2025-05-10 10:40:54 +00:00

even better pointerdown handling;

This commit is contained in:
lgtst 2022-06-16 20:29:02 +03:00
parent d60e9273f1
commit 1e3d524192

View File

@ -257,6 +257,7 @@ export class Slider extends util.mix(VisualStim).with(ColorMixin, WindowMixin)
this._psychoJS.experimentLogger.exp(`Created ${this.name} = ${this.toString()}`);
}
this._handlePointerDownBinded = this._handlePointerDown.bind(this);
this._handlePointerUpBinded = this._handlePointerUp.bind(this);
this._handlePointerMoveBinded = this._handlePointerMove.bind(this);
}
@ -846,6 +847,27 @@ export class Slider extends util.mix(VisualStim).with(ColorMixin, WindowMixin)
}
}
/**
* Handle pointerdown event.
*
* @name module:visual.Slider#_handlePointerDown
* @private
*/
_handlePointerDown (e) {
if (e.data.button === 0)
{
this._markerDragging = true;
if (!this._frozenMarker)
{
const mouseLocalPos_px = e.data.getLocalPosition(this._pixi);
const rating = this._posToRating([mouseLocalPos_px.x, mouseLocalPos_px.y]);
this.setMarkerPos(rating);
}
}
e.stopPropagation();
}
/**
* Handle pointermove event.
*
@ -898,32 +920,7 @@ export class Slider extends util.mix(VisualStim).with(ColorMixin, WindowMixin)
*/
_addEventListeners ()
{
this._marker.pointerdown = (e) =>
{
if (e.data.button === 0)
{
this._markerDragging = true;
}
e.stopPropagation();
};
this._pixi.pointerdown = (e) =>
{
if (e.data.button === 0)
{
this._markerDragging = true;
if (!this._frozenMarker)
{
const mouseLocalPos_px = e.data.getLocalPosition(this._pixi);
const rating = this._posToRating([mouseLocalPos_px.x, mouseLocalPos_px.y]);
this.setMarkerPos(rating);
}
}
e.stopPropagation();
};
this._pixi.on("pointerdown", this._handlePointerDownBinded);
this._win._rootContainer.on("pointermove", this._handlePointerMoveBinded);
this._win._rootContainer.on("pointerup", this._handlePointerUpBinded);
}
@ -938,8 +935,7 @@ export class Slider extends util.mix(VisualStim).with(ColorMixin, WindowMixin)
{
if (this._pixi)
{
this._marker.pointerdown = undefined;
this._pixi.pointerdown = undefined;
this._pixi.off("pointerdown", this._handlePointerDownBinded);
}
this._win._rootContainer.off("pointermove", this._handlePointerMoveBinded);
this._win._rootContainer.off("pointerup", this._handlePointerUpBinded);