diff --git a/CHANGELOG.md b/CHANGELOG.md index d15974d0a..8ef28cbdc 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -82,6 +82,9 @@ et négociation HTTP/3 côté client PostIt. désactivé (grisé) et inerte au clic. Corrigé en `$parent[ContentPage].((vm:XxxViewModel)DataContext).Cmd` (syntaxe déjà en vigueur dans `CirclesPage` / `EstimateListPage`). +* [PostIt] Les messages de la barre de statut (`StatusBar`) n'étaient + pas sélectionnables/copiables : le texte était un `TextBlock` (non + sélectionnable dans Avalonia). Remplacé par `SelectableTextBlock`. * [Yavsc.Blogs] La suppression d'un fichier (`DELETE api/v1/fs/{name}`) renvoyait un 40x alors que le fichier était bien supprimé du disque. `DeleteUserDirOrFile` (et `DeleteUserFile`) lisaient diff --git a/src/PostIt/PostIt.Tests/StatusBarTests.cs b/src/PostIt/PostIt.Tests/StatusBarTests.cs new file mode 100644 index 000000000..4053dbaf3 --- /dev/null +++ b/src/PostIt/PostIt.Tests/StatusBarTests.cs @@ -0,0 +1,35 @@ +using Avalonia.Controls; +using Avalonia.Headless.XUnit; +using Avalonia.VisualTree; +using PostIt.Controls; +using PostIt.ViewModels; + +namespace PostIt.Tests; + +/// +/// The surfaces the page's action status +/// (success / warning / error message). The user reported being +/// unable to copy these messages — the status text was a +/// TextBlock, which Avalonia does not make selectable. It is +/// now a so the message can be +/// selected and copied (Ctrl+C / context menu). This test pins that: +/// if the message control regresses to a plain TextBlock, +/// selectability is lost and the test fails. +/// +public class StatusBarTests +{ + [AvaloniaFact] + public void Status_message_is_rendered_by_a_SelectableTextBlock() + { + var bar = new StatusBar { DataContext = StatusNotice.Error("Échec de la suppression : boom") }; + var window = new Window { Content = bar }; + window.Show(); + + var message = bar.GetVisualDescendants() + .OfType() + .FirstOrDefault(); + + Assert.NotNull(message); + Assert.Equal("Échec de la suppression : boom", message!.Text); + } +} \ No newline at end of file diff --git a/src/PostIt/PostIt/Controls/StatusBar.axaml b/src/PostIt/PostIt/Controls/StatusBar.axaml index eaa6f5a09..2f46fee33 100644 --- a/src/PostIt/PostIt/Controls/StatusBar.axaml +++ b/src/PostIt/PostIt/Controls/StatusBar.axaml @@ -13,7 +13,10 @@ FontWeight="Bold" Foreground="{Binding Foreground}" VerticalAlignment="Top"/> - +