wisp-forest / owo-lib

Open ωorthωhile Operations, yes the acronym was "totally accidental"
https://modrinth.com/mod/owo-lib
MIT License
193 stars 38 forks source link

Game crashed when dragging on a scroll container. #208

Open zly2006 opened 10 months ago

zly2006 commented 10 months ago

Reproduce: Dragging out of the screen

Screen recording:

https://github.com/wisp-forest/owo-lib/assets/66198935/cc8ab6ea-25f9-4af9-bc23-3511e27cdce0

Crash report:

crash-2023-12-25_23.33.44-client.txt

My GUI: https://github.com/zly2006/reden-is-what-we-made/blob/0e81abc89d4903a3cb356b622ced01824470a66d/src/main/java/com/github/zly2006/reden/debugger/gui/BreakpointListComponent.kt

I am not using stable owo versions, I built one from the 1.20.3 branch myself to develop mods on mc 1.20.4.

zly2006 commented 10 months ago

Confirmed on the latest 1.20.3 branch.

gliscowo commented 9 months ago

While I haven't reverse-engineered your entire screen, this problem smells strongly like you nested some part of your component hierarchy into itself - there isn't (or shouldn't be) any other way for this kind of infinite recursion to appear given the framework's implementation of the mouse dragging handler

Cheers

zly2006 commented 9 months ago

Hmm, I attached the debugger and found that this here is a scroll container. When I drag the scrollbar out of the screen, it set scrollbaring to true the first time onMouseDrag is called, after that the mouse x/y coordinate is no longer inside the scrollbar, so onMouseDrag goes to super (BaseParentComponent), and it checks the focused element, but the element is scroll container itself.

So I believe it could be an owolib bug