Open HendrikMennen opened 2 years ago
hurried notes:
I took a jab at it in https://github.com/VisualMelon/oxyplot-avalonia/tree/av11
But the plots didn't render. I hard-coded something to do with invalidation to true and then they started flickering.
Something is wrong with the render invalidation, I believe, but the boring bits are done.
Thats where I got stuck too. Managed to make it "run" but never render. Don't really know the code so hard to know where to look
Changing PlotBase.IsUserVisible
to return element.IsEffectivelyVisible
seems to make the simple demo work, but it disappears when you pan the plot (so a good back if you just need static plots).
It's almost as if the old plot is being removed (by Canvas.Clear()
) before the redraw, but the new plot isn't being added before the redraw (if you remove the clear, then not only do you get fun patterns, but there is no flickering).
Changing
PlotBase.IsUserVisible
toreturn element.IsEffectivelyVisible
seems to make the simple demo work, but it disappears when you pan the plot (so a good back if you just need static plots).
Interesting. For me even panning works with a dynamic plot using this hack
Are you able to share your repo? Might be that you've fixed something else that I've missed.
I discarded my repo and used yours. Directly with my project, let me try the demos https://github.com/HendrikMennen/oxyplot-avalonia/tree/avalonia11
Are you able to share your repo? Might be that you've fixed something else that I've missed.
I think the flickering is solved by using Avalonia preview2
Cool, will try it out now. I fixed the ExampleBrowser so it works in 11 in my repo.
Yep, everything seems to be OK now. Still had to remove the bounds check in PlotBase.IsUserVisible
, so may be other issues with that down the line.
This check is also broken:
I think TransformedBounds
now returns null
when there's no transform, so a possible solution is to do this (while still keeping the one for transformed bounds I think):
this.GetObservable(BoundsProperty).Subscribe(bounds => OnSizeChanged(this, bounds.Size));
Even after that fix it doesn't always update: isUpdateRequired
is stuck with value 2, not sure what's supposed to happen in order to reset it. This loop never runs again:
Also, may I ask what are the plans for the update, i.e. will there be a version for Avalonia 11 preview or only for the stable release? I have some time available to contribute if needed!
Also, may I ask what are the plans for the update, i.e. will there be a version for Avalonia 11 preview or only for the stable release? I have some time available to contribute if needed!
There are no plans at the moment; I can't remember if I have rights to public releases, but if I do then I probably should sooner rather than later. Regarding 11, I'm not sure. Would need to look into it more to find out if we should be switching to 11, or if we need to keep it in parallel. (May be that we do 2.1 release with 10, then switch to 11 for the pre-release, in expectation that the next version is 11 only)
Is there an update on avalonia 11 support? I'm looking into upgrading my projects to avalonia and I'd like to use oxyplot.
@K-Luth sorry for the slow reply; still no specific plan (will depend on when 11 is release), but I think we have a working branch targeting 11-preview4 (though still not sure what's up with IsUserVisible
): https://github.com/VisualMelon/oxyplot-avalonia/tree/av11 - pre-release package at https://www.myget.org/feed/melonoxyplottesting/package/nuget/OxyPlot.Avalonia/2.1.0-av11 (but you shouldn't consider that feed reliable)
(2.1.0 was released a while back targeting Avalonia 10)
Update Looks like there is an issue with updating when resized.
Sorry for not replying earlier.
Preview 5 was released yesterday and will likely be the last preview (https://github.com/AvaloniaUI/Avalonia/discussions/10193#discussioncomment-4868225).
Looks like there is an issue with updating when resized.
This is the issue I was trying to describe in my previous comment. TransformedBounds
will probably be replaced soon because it's broken (https://github.com/AvaloniaUI/Avalonia/issues/9308#issuecomment-1296509447). Anyway, I believe PlotBase
doesn't need it, and Bounds
can be used for now, although using ArrangeOverride
would probably work too, not sure because I honestly couldn't understand the isUpdateRequired
logic.
@jp2masa howdy, I've already updated my branch to preview 5: https://github.com/VisualMelon/oxyplot-avalonia/tree/av11
Indeed, one of the changes was to listen to Bounds
rather than TransformedBounds
. I made that change without putting any real thought into it, but the resize issue did go away. https://github.com/VisualMelon/oxyplot-avalonia/commit/567f076b928b6379a6806ae525517e94b989a8c0#diff-0da552064490156cd714c002a2c4790ca84a2b140ba733b71001fc58600db80fL104
I can push that to myget if useful.
I tested it and I still have the 2nd issue I tried to describe in the other comment:
Even after that fix it doesn't always update: isUpdateRequired is stuck with value 2, not sure what's supposed to happen in order to reset it. This loop never runs again:
VisualMelon/oxyplot-avalonia@d4b0b66/Source/OxyPlot.Avalonia/PlotBase.cs#L238
I'm pretty sure it's related to InvalidatePlot(true)
, I'll try to create a repro.
I'll try to create a repro.
Cool, if you can do that I'll be happy to have a look. It's perfectly possible I broke everything when I re-fitted the update logic so that it could be called off-thread.
Here is the repro: https://github.com/jp2masa/oxyplot-avalonia/tree/repro
AvaloniaExamples
TabDemo
(it was adapted from the user control demo, but uses PlotView
/PlotModel
instead)I believe tabs are important here because of attached to/detached from visual tree events.
Thanks, I'll take a look now.
I've also noticed an issue with the ExampleBrowser: when you open, close, and re-open a category, it doesn't measure properly. Not been able to repro this outside of the ExampleBrowser yet, but feels like a bug in Avalonia. Oddy the bug doesn't occur if you set a non-small value for MinHeight
(e.g. 10).
@jp2masa pushed a fix in https://github.com/VisualMelon/oxyplot-avalonia/commit/1970da2e69cfa1a8c3c131622717861a9864ff75
The issue seems to be - as you said - that the invalidation state wasn't being reset when UpdateModel
detected there was nothing to draw.
I've also noticed an issue with the ExampleBrowser: when you open, close, and re-open a category, it doesn't measure properly. Not been able to repro this outside of the ExampleBrowser yet, but feels like a bug in Avalonia.
Yes, it seems to be a bug in Avalonia, I just tried switching to fluent theme and it works correctly, so maybe it's a bug in simple theme, I will investigate it.
pushed a fix in https://github.com/VisualMelon/oxyplot-avalonia/commit/1970da2e69cfa1a8c3c131622717861a9864ff75
Thanks! I will try it and give feedback.
We should probably bump the .NET versions of the examples to .NET 6; shout if you'd rather I didn't do that just yet in my Av11 branch.
The fix worked like a charm, thanks again!
We should probably bump the .NET versions of the examples to .NET 6; shout if you'd rather I didn't do that just yet in my Av11 branch.
I totally agree with it, I'm currently using .NET 6/7 on my projects.
Pushed https://www.myget.org/feed/melonoxyplottesting/package/nuget/OxyPlot.Avalonia/2.1.0-av11-preview4 and https://www.myget.org/feed/melonoxyplottesting/package/nuget/OxyPlot.Avalonia/2.1.0-av11-preview5 with this fix.
Noticed that the expander bug doesn't occur in preview 4 either.
Noticed that the expander bug doesn't occur in preview 4 either.
It is probably related to either AvaloniaUI/Avalonia#9677 or AvaloniaUI/Avalonia#9979.
Linking https://github.com/AvaloniaUI/Avalonia/issues/10226 (thanks for reporting that)
I was completely wrong, it was broken by control themes.
PR https://github.com/AvaloniaUI/Avalonia/pull/10273 should fix it, I tried the ExampleBrowser with the CI nuget and it seems to work fine.
@jp2masa thank you indeed
I'm not aware at this minute of any other bugs, then. There are some things I changed in the plot view that I didn't really understand, but not noticed any issues with them.
I should probably do some tests with a flyout/tooltip/dock (indeed, should add one of those to the AvaloniaExample) because they always seem to cause issues with the WPF and Avalonia provisions.
Added a simple flyout/tooltip/changing parent example to the Av11 branch to check that the plots respond to layout changes etc.: everything seems to work OK. Interested to know if there are other scenarios in the category of "I'm not sitting pretty in a rigid UI" that we need to consider.
I tried it and there's a small bug with the tooltip for me: when the cursor enters the "ToolTip" text from above, the tooltip appears correctly the first time but then it always shows at top left of the screen.
Video:
I tried to create a simple repro in Avalonia Sandbox, but the tooltip was only showing on the first hover, it seems to be broken...
Seems only to occur if you enter it from outside the window: if you move the TextBlock
down a bit it's possible to repro with some violent mouse movement, but doesn't occur if you enter from above slowly.
Might be related to this ;)
Avalonia.Controls\Primitives\PopupPositioning\IPopupPositioner.cs line 461
Better default would be the bottom-right corner of the control if we can't get the current pointer location.
That must be the problem, yes. Still a bit weird since it is a pointer over that triggers the popup, so LastPointerPosition
should be valid, but it seems to be updated only after pointer over is triggered:
Pushed nuget targetting avalonia 11-preview6 to my testing feed: https://www.myget.org/feed/melonoxyplottesting/package/nuget/OxyPlot.Avalonia/2.1.0-av11-preview6
Again, shouldn't be considered a reliable source
@jp2masa not seeing the tooltip bug with preview6
Yes, I reported the issue on a PR related to popup and flyout (referenced above), and maxkatz6 fixed it!
Done a hurried port to preview7 in my av11 branch; will look it over properly and push to myget when I have more time and stable internet.
Hi,avalonia version 11.0.0 has been released. Will oxyplot be updated
There is an open PR: https://github.com/oxyplot/oxyplot-avalonia/pull/55
Blockers from merging/shipping a nuget package are:
There is an open PR: #55
Blockers from merging/shipping a nuget package are:
- I need to retest it
- We need to decide whether we are going to support Avalonia 0.10 at all going forward and if so how
Ok
Avalonia 11 port merged into master
Avalonia 11 port merged into master
There is no update on the new version of nuget
@XueDee123 I've not had any feedback about 0.10 support, so I'm intending to release a version 2.1.2, targeting Avalonia 11 and OxyPlot 2.1.2 soon (hopefully in the next week or so)
Thank you very much and look forward to the new release
Hello, any news on this front?
There is an OxyPlot Avalonia 2.1.0-Avalonia11 on NuGet; I've still not made a decision about naming.
It should be compatible with OxyPlot.Core 2.1.2.
Cool, will check it out, thanks.
Hello, I'm noticing that the clickable tickers don't work anymore with the avalonia 11 pre-release version. Is there a specific thing to do to re-enable them?
Seems like this module is not as easy to port...