cogentcore / core

A free and open source framework for building powerful, fast, and elegant 2D and 3D apps that run on macOS, Windows, Linux, iOS, Android, and the Web with a single pure Go codebase, allowing you to Code Once, Run Everywhere.
http://cogentcore.org/core
BSD 3-Clause "New" or "Revised" License
1.32k stars 71 forks source link

Vertical splits mixed with other elements can cause weird behavior and panics #850

Closed kkoreilly closed 4 months ago

kkoreilly commented 5 months ago

Describe the bug

The contained and surrounding content does not shift correctly, and the app sometimes panics.

How to reproduce

Drag the handle of one of the examples on the events doc page.

Example code

No response

Relevant output

Crash log saved in C:\Users\korei\AppData\Roaming\CogentCore\crash-logs\Cogent Core Docs

panic: runtime error: invalid memory address or nil pointer dereference

goroutine 14 [running]:
runtime/debug.Stack()
    C:/Program Files/Go/src/runtime/debug/stack.go:24 +0x5e
cogentcore.org/core/gi.HandleRecover({0x7ff6232c66c0, 0x7ff623186d40})
    C:/msys64/home/Kai/cogent/core/gi/recover.go:28 +0x52
cogentcore.org/core/gi.(*RenderWin).EventLoop.func1()
    C:/msys64/home/Kai/cogent/core/gi/renderwin.go:575 +0x24
panic({0x7ff6232c66c0?, 0x7ff623186d40?})
    C:/Program Files/Go/src/runtime/panic.go:914 +0x21f
cogentcore.org/core/gi.(*Slider).AsWidget(0x7ff622965005?)
    <autogenerated>:1 +0x9
cogentcore.org/core/gi.(*EventMgr).GetMouseInBBox(0xc00027bd50, {0x7ff6249c8f80?, 0x0?}, {0x0?, 0xc000651550?})
    C:/msys64/home/Kai/cogent/core/gi/eventmgr.go:606 +0x34
cogentcore.org/core/gi.(*EventMgr).GetMouseInBBox.func1({0x7ff6249c8c68?, 0xc000dc6900}, 0xc000dc6900)
    C:/msys64/home/Kai/cogent/core/gi/eventmgr.go:626 +0x1ce
cogentcore.org/core/gi.(*EventMgr).GetMouseInBBox.(*WidgetBase).WidgetWalkPre.func2({0x7ff6249b5b30?, 0xc000dc6900?})
    C:/msys64/home/Kai/cogent/core/gi/widget.go:538 +0xab
cogentcore.org/core/ki.(*Node).WalkPre(0xc000dc6900, 0xc00045a800)
    C:/msys64/home/Kai/cogent/core/ki/node.go:878 +0x1ad
cogentcore.org/core/gi.(*WidgetBase).WidgetWalkPre(...)
    C:/msys64/home/Kai/cogent/core/gi/widget.go:533
cogentcore.org/core/gi.(*EventMgr).GetMouseInBBox(0xc00027bd50, {0x7ff6249c8c68?, 0xc000dc6900?}, {0x0?, 0x7ff6233c7080?})
    C:/msys64/home/Kai/cogent/core/gi/eventmgr.go:607 +0xd0
cogentcore.org/core/gi.(*EventMgr).GetMouseInBBox.func1({0x7ff6249c95b0?, 0xc0009bfb00}, 0xc0009bfb00)
    C:/msys64/home/Kai/cogent/core/gi/eventmgr.go:620 +0x148
cogentcore.org/core/gi.(*EventMgr).GetMouseInBBox.(*WidgetBase).WidgetWalkPre.func2({0x7ff6249b5f90?, 0xc0009bfb00?})
    C:/msys64/home/Kai/cogent/core/gi/widget.go:538 +0xab
cogentcore.org/core/ki.(*Node).WalkPre(0xc00027b400, 0xc00045a7b0)
    C:/msys64/home/Kai/cogent/core/ki/node.go:878 +0x1ad
cogentcore.org/core/gi.(*WidgetBase).WidgetWalkPre(...)
    C:/msys64/home/Kai/cogent/core/gi/widget.go:533
cogentcore.org/core/gi.(*EventMgr).GetMouseInBBox(0xc00027bd50, {0x7ff6249c8008?, 0xc00027b400?}, {0x0?, 0x7?})
    C:/msys64/home/Kai/cogent/core/gi/eventmgr.go:607 +0xd0
cogentcore.org/core/gi.(*EventMgr).HandlePosEvent(0xc00027bd50, {0x7ff6249aba70, 0xc0015bd6c0})
    C:/msys64/home/Kai/cogent/core/gi/eventmgr.go:250 +0x1fd
cogentcore.org/core/gi.(*EventMgr).HandleEvent(0xc0006d6000?, {0x7ff6249aba70, 0xc0015bd6c0})
    C:/msys64/home/Kai/cogent/core/gi/eventmgr.go:153 +0x5a
cogentcore.org/core/gi.(*Stage).MainHandleEvent(0xc000194480, {0x7ff6249aba70?, 0xc0015bd6c0})
    C:/msys64/home/Kai/cogent/core/gi/mainstage.go:308 +0x165
cogentcore.org/core/gi.(*StageMgr).MainHandleEvent(0xc00060e038, {0x7ff6249aba70, 0xc0015bd6c0})
    C:/msys64/home/Kai/cogent/core/gi/mainstage.go:316 +0x6e
cogentcore.org/core/gi.(*RenderWin).HandleEvent(0xc00060e000, {0x7ff6249aba70, 0xc0015bd6c0})
    C:/msys64/home/Kai/cogent/core/gi/renderwin.go:627 +0x114
cogentcore.org/core/gi.(*RenderWin).EventLoop(0xc00060e000)
    C:/msys64/home/Kai/cogent/core/gi/renderwin.go:589 +0x125
created by cogentcore.org/core/gi.(*RenderWin).GoStartEventLoop in goroutine 1
    C:/msys64/home/Kai/cogent/core/gi/renderwin.go:543 +0xa5

Platform

Windows

kkoreilly commented 4 months ago

I wrote a test for this in the commit above, and there are no immediately reproduceable issues. If this ever comes up again, this issue can be reopened.