Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

pointerclick is fired on drag enq but click is not #1756

Open
hovox opened this issue May 7, 2024 · 3 comments
Open

pointerclick is fired on drag enq but click is not #1756

hovox opened this issue May 7, 2024 · 3 comments

Comments

@hovox
Copy link

hovox commented May 7, 2024

Thank you for this awesome project.

Here is an example project, if you try to drag the circle and drop , pointerclick will fire but click will not.

Looking at the code I have found that there is this code.

window.addEventListener('mouseup', DD._endDragBefore, true);
window.addEventListener('touchend', DD._endDragBefore, true);

and also Konva._mouseListenClick = false; in _endDragBefore .

In case of pointerclick - _endDragBefore is called before _pointerup - thuse setting Konva._mouseListenClick = false; , after which in _pointerup this check fails - if (Konva['_' + eventType + 'ListenClick'] ...

@hovox
Copy link
Author

hovox commented May 7, 2024

I have noticed jsbin sometimes is not saving and gives old url, here is the source code in case it will give an old version.

const stage = new Konva.Stage({
  container: 'container',
  width: window.innerWidth,
  height: window.innerHeight
});

stage.on('pointerclick', () => {
  console.log('pointer click');
})

stage.on('click', () => {
  console.log('click');
})

const layer = new Konva.Layer();
stage.add(layer);

const circle = new Konva.Circle({
  x: stage.width() / 2,
  y: stage.height() / 2,
  radius: 50,
  fill: 'green',
  draggable: true,
});
layer.add(circle);




layer.draw();

@lavrton
Copy link
Member

lavrton commented May 15, 2024

I am not sure if there is a good way to fix that. I added a test for that issue: fdd0e64

@hovox
Copy link
Author

hovox commented May 26, 2024

I think moving to pointer events would be good option. It can also simplify the source code of the library.
We have found a workaround - in onpointerclick we do -

if (Konva.DD.isDragging) {
      // no op
      return;
}
...

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants