diff --git a/src/LoopbackManager.Shell/Controls/AppList.cs b/src/LoopbackManager.Shell/Controls/AppList.cs index 9940aa0..78178c0 100644 --- a/src/LoopbackManager.Shell/Controls/AppList.cs +++ b/src/LoopbackManager.Shell/Controls/AppList.cs @@ -16,8 +16,8 @@ namespace LoopbackManager.Shell.Controls; /// and overlays the phase views — a virtualized ItemsRepeater of rows when the load /// succeeded with results, a centered spinner while loading, a retryable error, and an empty-state message — each shown /// by .Visible off the store's reactive phase flags, so a load settling or a filter change re-renders the right -/// one. The phases are mutually exclusive, so exactly one overlay child is visible at a time; the ItemsRepeater -/// stays mounted across phases (collapsed, then reconciled in place) rather than torn down and rebuilt. Because +/// one. The ScrollView always participates in layout, including while its repeater is empty, so its native input +/// host is established once instead of joining the composition tree only when loading finishes. Because /// is a Control (a live checkbox + open-folder button per row), it goes in through the /// two-closure ItemsRepeater overload; only a screenful is realized. /// @@ -27,9 +27,6 @@ public sealed partial class AppList : Control public AppList() => _store = Application.Current.Services.GetRequiredService(); - // Success with at least one (filtered) row → show the list. - private bool ShowList => _store.Apps.IsSuccess && _store.FilteredApps.Count > 0; - // Success but no (filtered) rows → show the empty state (covers both "no apps" and "no search match"). private bool ShowEmpty => _store.Apps.IsSuccess && _store.FilteredApps.Count == 0; @@ -57,8 +54,7 @@ public sealed partial class AppList : Control ) .Vertical(ScrollMode.Auto) .HorizontalScrollBar(ScrollBarVisibility.Hidden) - .Padding(12f, 0f) - .Visible(ShowList), + .Padding(12f, 0f), Stack( ProgressRing(new Size(32f, 32f)).HAlign(HorizontalAlignment.Center), Text(Resources.Loading) diff --git a/src/LoopbackManager.Shell/LoopbackManager.Shell.csproj b/src/LoopbackManager.Shell/LoopbackManager.Shell.csproj index 85e3baf..6c935dd 100644 --- a/src/LoopbackManager.Shell/LoopbackManager.Shell.csproj +++ b/src/LoopbackManager.Shell/LoopbackManager.Shell.csproj @@ -56,18 +56,18 @@ Microsoft.WindowsAppSDK.WinUI, so no WinUI XAML is pulled in: Sprout draws the UI itself. --> - - + + - + - + - +