GrapesJS / grapesjs

Free and Open source Web Builder Framework. Next generation tool for building templates without coding
https://grapesjs.com
BSD 3-Clause "New" or "Revised" License
22.37k stars 4.05k forks source link

BUG: CanvasView.getPosition returns strange values in designer mode with a narrow device #4386

Closed contentfree closed 2 years ago

contentfree commented 2 years ago

GrapesJS version

What browser are you using?

Version 102.0.5005.61

Reproducible demo link

https://jsfiddle.net/tLvwfhu3/

Describe the bug

Starting at the demo fiddle, drop a text block into the narrow canvas. An alert pops up with the result of CanvasView.getPosition() containing the strange values. It seems that either the left value or the width value are wrong as left is the left edge of the visible canvas but width contains all the blank margin on either side of the canvas.

I believe this is causing some of the issues with initial component positioning in designer mode as editor.Canvas.getMouseRelativeCanvas adds the left value (and top value) to the clientX/Y values. Maybe it should subtract them instead?

Code of Conduct

artf commented 2 years ago

Yeah I'd say it's definitely confusing (width and height refer to the canvas, top and left to the frame) but any direct change to those functions breaks some functionality in other points as those were built around this confusing logic 😞 (eg. the sorter of blocks in the standard mode). So I guess before doing any kind of change here we should probably refactor the logic in other points. I'll probably close this issue as the method itself is not really public/documented.