Separators Rendering Issues
Checklist
- [X] I have searched the issue tracker for open issues that relate to the same problem, before opening a new one.
- [X] This issue only relates to a single bug. I will open new issues for any other problems.
Describe the bug
Separators become invisible on occasion. Interacting with an element might bring them back. Resizing the window might make them show up or become invisible again. I am experiencing this issue on Linux, however on Discord channel I heard form a Windows user that they experience exactly the same issue.
I do not get any warning in the console, therefore I am unable to supply debug information.
How to reproduce
There are not specific steps, apart from resizing the window.
Screenshots
VS.
Tree element:
VS.
Example code
container.NewVBox( widget.NewLabel("test"), widget.NewSeparator(), )
Fyne version
2.4.2
Go compiler version
1.20
Operating system and version
Linux
Additional Information
No response
Isn't this the same as #3573 ?
Isn't this the same as #3573 ?
I personally haven't experienced inconsistent stroke width. They're either the right size or not shown at all. Does this make the issue distinct enough?
If you are on a low DPI device (i.e. not retina/4k) then it's probably the same. i.e. you're seeing the difference between 1 and 0 whereas the other post is HighDPI and seeing 2 vs 1 - that is my guess anyhow.
If you are on a low DPI device (i.e. not retina/4k) then it's probably the same
I broke my 4k monitor couple of weeks ago, can't test. At the moment, I'm using 1920x1080 laptop's builtin monitor. Will update you once I get a new 4k.
Can you share a simpler code example for reproducing the issue? As per the issue template, the issue template needs to be runnable and not just a code snippet.
I've had the same issue for some time. Just looked at the code and it seems pretty clear to me what the problem is:
In tree.go Layout():
// Hide any separators that haven't been reused
for ; separatorCount < len(r.separators); separatorCount++ {
r.separators[separatorCount].Hide()
}
Yet, when we reuse that separator again when we expand the tree, we don't call Show() on it:
if addSeparator {
var separator fyne.CanvasObject
if separatorCount < len(r.separators) {
>>> separator = r.separators[separatorCount]
} else {
separator = NewSeparator()
r.separators = append(r.separators, separator)
}
Tried adding the fix locally and I no longer get missing separators after expanding and contracting the tree.
separator = r.separators[separatorCount]
separator.Show()