SpyrexDE / SmoothScroll

Addon for the Godot Game Engine that adds a SmoothScrollContainer.
https://spyrexde.github.io/SmoothScroll/
MIT License
132 stars 10 forks source link

Disabling "overdrag" not only does not prevent overdrag, but causes jittery movement on right and bottom edges #52

Closed ReikaKalseki closed 2 months ago

ReikaKalseki commented 2 months ago

By "jittery" I mean trying to drag the pane around causes it to flicker wildly as it reaches the bottom or right edges of the valid scroll zone. So wildly in fact, that OBS cannot capture it properly.

In addition to this, I can still clearly drag it well past the left and top borders, which defeats the entire point of the option.

What I expected disabling the "Allow Overdrag" option to do was simply hard-limit the scrolling to within [0,size]. I saw on another issue here - related to overdrag - some debate over desired behavior, so I am going to say this in case this is for some reason not what that option is meant to do: I do not want phone-like UX, be that overdrag, "drag physics", or anything like that; I want a standard windows-style scrollable pane that also supports click-drag for movement.

SpyrexDE commented 2 months ago

Thank you for reporting this issue. It's probably caused by the major changes we introduced in v1.3.0. As you correctly described, the option allow overdragging is meant to affect both axes, but for some reason breaks when the container is scrollable on both axes. If you want to use a working version until this issue gets fixed, v1.2.9 will probably not have this and the other issue you reported.

@HaroldLever maybe you have an idea what could cause this issue?

HaroldLever commented 2 months ago

By "jittery" I mean trying to drag the pane around causes it to flicker wildly as it reaches the bottom or right edges of the valid scroll zone. So wildly in fact, that OBS cannot capture it properly. In addition to this, I can still clearly drag it well past the left and top borders, which defeats the entire point of the option.

If it is convenient for you, please provide more information like Godot version, Smooth scroll container version, detail description (how does it behave and what do you think it should work like), steps to reproduce and minimal reproduction project. This would help us find out where the issue is more easily.

I have found a bug that might be relative to this issue. #53 You could fix it manually to see if it can fix the issue you mentioned. Restrict max fps in project setting might slow down the situation which you said "jittery", it could be useful to record videos.

What I expected disabling the "Allow Overdrag" option to do was simply hard-limit the scrolling to within [0,size]. I saw on another issue here - related to overdrag - some debate over desired behavior, so I am going to say this in case this is for some reason not what that option is meant to do: I do not want phone-like UX, be that overdrag, "drag physics", or anything like that; I want a standard windows-style scrollable pane that also supports click-drag for movement.

If so, I believe unchecking allow_overdrag is exaclty what you want.

ReikaKalseki commented 2 months ago

If it is convenient for you, please provide more information like Godot version, Smooth scroll container version, detail description (how does it behave and what do you think it should work like), steps to reproduce and minimal reproduction project. This would help us find out where the issue is more easily.

The versions are the same as in my other issue (#51); "latest as of yesterday" for the plugin and 4.2.1 for Godot. I already described the current and expected behavior, as well as the step to reproduce (literally just disable overdrag and try dragging to the edges). I do not have the ability to make a reproduction project, but if this is a "native issue" in SmoothScroll it should be as simple as setting up a basic scrollable pane (my top-level script does not have _Process overridden so should be irrelevant):

Turning down the FPS did however allow me to get a clearer view of what is happening:

  1. Dragging the pane up and to the left does not "break", but does not prevent overscroll; I still have a large gap at the lower and right sides and the pane will "bounce back" when the mouse is released.
  2. Dragging the pane down and to the right results in the scroll position randomly flickering between the top-left (ie zero scroll) position and the bottom-right (ie max scroll) position.

I am going to link to #2 because it sounds kind of similar.

@SpyrexDE How do I roll back a plugin to a specific version? I see no option in asset lib or the project plugins menu to do this.

Or should I not try because you appeared to have merged the fix into master?

SpyrexDE commented 2 months ago

Godot does not offer choosing specific plugin versions yet. You can however, download the new version v1.3.1 that (hopefully) fixed your issue here: https://github.com/SpyrexDE/SmoothScroll/archive/refs/tags/godot4-v1.3.1.zip. Then just replace your addons/SmoothScroll directory with the addons/SmoothScroll in the extracted zip file.

ReikaKalseki commented 2 months ago

I can confirm you fixed it. :)