Status bar text is selectionnable
This commit is contained in:
parent
7844449c99
commit
5104cbc3f1
3 changed files with 42 additions and 1 deletions
|
|
@ -82,6 +82,9 @@ et négociation HTTP/3 côté client PostIt.
|
||||||
désactivé (grisé) et inerte au clic. Corrigé en
|
désactivé (grisé) et inerte au clic. Corrigé en
|
||||||
`$parent[ContentPage].((vm:XxxViewModel)DataContext).Cmd` (syntaxe
|
`$parent[ContentPage].((vm:XxxViewModel)DataContext).Cmd` (syntaxe
|
||||||
déjà en vigueur dans `CirclesPage` / `EstimateListPage`).
|
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}`)
|
* [Yavsc.Blogs] La suppression d'un fichier (`DELETE api/v1/fs/{name}`)
|
||||||
renvoyait un 40x alors que le fichier était bien supprimé du disque.
|
renvoyait un 40x alors que le fichier était bien supprimé du disque.
|
||||||
`DeleteUserDirOrFile` (et `DeleteUserFile`) lisaient
|
`DeleteUserDirOrFile` (et `DeleteUserFile`) lisaient
|
||||||
|
|
|
||||||
35
src/PostIt/PostIt.Tests/StatusBarTests.cs
Normal file
35
src/PostIt/PostIt.Tests/StatusBarTests.cs
Normal file
|
|
@ -0,0 +1,35 @@
|
||||||
|
using Avalonia.Controls;
|
||||||
|
using Avalonia.Headless.XUnit;
|
||||||
|
using Avalonia.VisualTree;
|
||||||
|
using PostIt.Controls;
|
||||||
|
using PostIt.ViewModels;
|
||||||
|
|
||||||
|
namespace PostIt.Tests;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The <see cref="StatusBar"/> surfaces the page's action status
|
||||||
|
/// (success / warning / error message). The user reported being
|
||||||
|
/// unable to copy these messages — the status text was a
|
||||||
|
/// <c>TextBlock</c>, which Avalonia does not make selectable. It is
|
||||||
|
/// now a <see cref="SelectableTextBlock"/> so the message can be
|
||||||
|
/// selected and copied (Ctrl+C / context menu). This test pins that:
|
||||||
|
/// if the message control regresses to a plain <c>TextBlock</c>,
|
||||||
|
/// selectability is lost and the test fails.
|
||||||
|
/// </summary>
|
||||||
|
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<SelectableTextBlock>()
|
||||||
|
.FirstOrDefault();
|
||||||
|
|
||||||
|
Assert.NotNull(message);
|
||||||
|
Assert.Equal("Échec de la suppression : boom", message!.Text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -13,7 +13,10 @@
|
||||||
FontWeight="Bold"
|
FontWeight="Bold"
|
||||||
Foreground="{Binding Foreground}"
|
Foreground="{Binding Foreground}"
|
||||||
VerticalAlignment="Top"/>
|
VerticalAlignment="Top"/>
|
||||||
<TextBlock Text="{Binding Message}"
|
<!-- SelectableTextBlock so the user can select + copy the
|
||||||
|
status message (TextBlock is not selectable in
|
||||||
|
Avalonia). Keeps Text/TextWrapping/Foreground. -->
|
||||||
|
<SelectableTextBlock Text="{Binding Message}"
|
||||||
Foreground="{Binding Foreground}"
|
Foreground="{Binding Foreground}"
|
||||||
TextWrapping="Wrap"
|
TextWrapping="Wrap"
|
||||||
VerticalAlignment="Center"/>
|
VerticalAlignment="Center"/>
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue