unoplatform / Uno.Gallery

The Uno Platform Gallery application
https://platform.uno/
Other
148 stars 41 forks source link

[Gallery][Windows][ShadowContainer] Crash on selection of Tabbar Neumorphic Style dropdown toolkit sample page. #1106

Closed avikeid2007 closed 3 weeks ago

avikeid2007 commented 2 months ago

Current behavior

Crash on the selection of Tabbar Neumorphic Style dropdown toolkit sample page in Gallery for Windows. This same crash happened in an Uno app developed by me for my organization. It is working fine in Other Heads i.e. [Wasm], [Desktop], & [Andi]

Msg: System.Runtime.InteropServices.COMException

StackTrace: at WinRT.ExceptionHelpers.gThrow|39_0(Int32 hr) at ABI.Microsoft.UI.Xaml.IUIElementMethods.Measure(IObjectReference _obj, Size availableSize) at Microsoft.UI.Xaml.UIElement.Measure(Size availableSize) at Uno.Toolkit.UI.TabBarListPanel.MeasureOverride(Size availableSize) at ABI.Microsoft.UI.Xaml.IFrameworkElementOverrides.Do_Abi_MeasureOverride_0(IntPtr thisPtr, Size availableSize, Size result) --- End of stack trace from previous location --- at WinRT.ExceptionHelpers.g__Throw|39_0(Int32 hr) at ABI.Microsoft.UI.Xaml.IFrameworkElementOverridesMethods.MeasureOverride(IObjectReference _obj, Size availableSize) at ABI.Microsoft.UI.Xaml.IFrameworkElementOverrides.Do_Abi_MeasureOverride_0(IntPtr thisPtr, Size availableSize, Size result) --- End of stack trace from previous location --- at WinRT.ExceptionHelpers.gThrow|39_0(Int32 hr) at ABI.Microsoft.UI.Xaml.IFrameworkElementOverridesMethods.MeasureOverride(IObjectReference _obj, Size availableSize) at ABI.Microsoft.UI.Xaml.IFrameworkElementOverrides.Do_Abi_MeasureOverride_0(IntPtr thisPtr, Size availableSize, Size result) --- End of stack trace from previous location --- at WinRT.ExceptionHelpers.g__Throw|39_0(Int32 hr) at ABI.Microsoft.UI.Xaml.IUIElementMethods.Measure(IObjectReference _obj, Size availableSize) at Microsoft.UI.Xaml.UIElement.Measure(Size availableSize) at CommunityToolkit.WinUI.UI.Controls.WrapPanel.MeasureOverride(Size availableSize) at ABI.Microsoft.UI.Xaml.IFrameworkElementOverrides.Do_Abi_MeasureOverride_0(IntPtr thisPtr, Size availableSize, Size result) --- End of stack trace from previous location --- at WinRT.ExceptionHelpers.g__Throw|39_0(Int32 hr) at ABI.Microsoft.UI.Xaml.IFrameworkElementOverridesMethods.MeasureOverride(IObjectReference _obj, Size availableSize) at ABI.Microsoft.UI.Xaml.IFrameworkElementOverrides.Do_Abi_MeasureOverride_0(IntPtr thisPtr, Size availableSize, Size* result)

Expected behavior

No crashes and unhandled exceptions.

How to reproduce it (as minimally and precisely as possible)

  1. Build and run the Uno.Gallery for Windows on the latest master.
  2. Go to Toolkit=>ShadowContainer
  3. Scroll down to Neumorphic Style dropdown
  4. Select Tabbar in Dropdown.

Environment

Nuget Package: Latest Master nugets Package Version(s): Latest Master nugets/ tried on 5.1 and 5.0 too Affected platform(s):

Windows

Visual Studio:

2022 (version: Preview)

Relevant plugins:

Anything else we need to know?

agneszitte commented 2 months ago

fyi @MartinZikmund & @kazo0 Maybe @morning4coffe-dev can help take a look

@eriklimakc, @vatsashah45 does this happen with your test with the new single project structure?

morning4coffe-dev commented 2 months ago

@agneszitte Jup, I can investigate more

morning4coffe-dev commented 1 month ago

I was able to repro on a newly created app with the latest packages. After a bit of investigation the issue is in the NeumorphicBaseContentTabBarItemStyle specifically in the BADGE section here: https://github.com/unoplatform/Uno.Gallery/blob/478b137b95918d864a595c348018ed4e76e95d3a/Uno.Gallery/Uno.Gallery.Shared/Views/Styles/NeumorphicStyles.xaml#L2396 The Visibility of the Ellipse and Border causes an exception on Windows. Before trying to fix, my question @agneszitte can we already replace it with InfoBadge from WinUI or are we still blocked?

agneszitte commented 1 month ago

The Visibility of the Ellipse and Border causes an exception on Windows. Before trying to fix, my question @agneszitte can we already replace it with InfoBadge from WinUI or are we still blocked?

FYI @MartinZikmund, @kazo0

MartinZikmund commented 1 month ago

As InfoBadge is now available everywhere, I think it would make sense to replace the Uno-specific code with InfoBadge directly

kazo0 commented 1 month ago

Created an issue for this here: https://github.com/unoplatform/uno.toolkit.ui/issues/1134