Fixed #55 - AvaloniaEdit control accessibility
Some checks failed
Dotnet build and test / build (pull_request) Failing after 14m11s
Forgejo Release / release (push) Failing after 22s

This commit is contained in:
Paul Schneider 2026-09-27 00:24:43 +01:00
commit 46fa53c513
Signed by: notazof
GPG key ID: AD4B9B545FBD7D12
2 changed files with 32 additions and 32 deletions

View file

@ -17,18 +17,14 @@
<Design.DataContext> <Design.DataContext>
<vm:BlogsViewModel /> <vm:BlogsViewModel />
</Design.DataContext> </Design.DataContext>
<ScrollViewer <ScrollViewer HorizontalScrollBarVisibility="Disabled"
Margin="5" Margin="5,5,10,5" HorizontalAlignment="Stretch" BringIntoViewOnFocusChange="False"
Padding="5" VerticalAlignment="Stretch">
HorizontalScrollBarVisibility="Disabled" <StackPanel>
VerticalScrollBarVisibility="Visible">
<WrapPanel x:Name="BlogsHeaderPanel"
<StackPanel HorizontalAlignment="Stretch">
<StackPanel
Margin="5" Margin="5"
Orientation="Horizontal" Orientation="Horizontal">
Spacing="10">
<TextBlock <TextBlock
FontSize="20" FontSize="20"
FontWeight="SemiBold" FontWeight="SemiBold"
@ -37,8 +33,9 @@
HorizontalAlignment="Right" HorizontalAlignment="Right"
PlaceholderText="Filter by title or author..." PlaceholderText="Filter by title or author..."
Text="{Binding SearchText, Mode=TwoWay}" /> Text="{Binding SearchText, Mode=TwoWay}" />
</StackPanel> </WrapPanel>
<CommandBar HorizontalAlignment="Right" IsDynamicOverflowEnabled="True"> <CommandBar x:Name="BlogsCommandBar"
HorizontalAlignment="Right" IsDynamicOverflowEnabled="True">
<CommandBar.PrimaryCommands> <CommandBar.PrimaryCommands>
<CommandBarButton Command="{Binding RefreshAsync}" Label="Refresh"> <CommandBarButton Command="{Binding RefreshAsync}" Label="Refresh">
<CommandBarButton.Icon> <CommandBarButton.Icon>
@ -106,18 +103,22 @@
</CommandBar.PrimaryCommands> </CommandBar.PrimaryCommands>
</CommandBar> </CommandBar>
<Grid Margin="12" RowSpacing="12"> <Grid Margin="12" RowSpacing="12" x:Name="MainGrid">
<Grid.RowDefinitions> <Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="*" /> <RowDefinition Height="*" />
<RowDefinition Height="Auto" /> <RowDefinition Height="Auto" />
<RowDefinition Height="Auto" />
</Grid.RowDefinitions> </Grid.RowDefinitions>
<Border <Border
Grid.Row="1" Grid.Row="1"
Padding="8" Padding="8"
BorderBrush="Gray" BorderBrush="Gray"
BorderThickness="1"> BorderThickness="1">
<ListBox ItemsSource="{Binding FilteredPosts}" SelectedItem="{Binding SelectedPost, Mode=TwoWay}"> <ListBox
x:Name="PostsListBox"
ItemsSource="{Binding FilteredPosts}" SelectedItem="{Binding SelectedPost, Mode=TwoWay}">
<ListBox.ItemTemplate> <ListBox.ItemTemplate>
<DataTemplate x:DataType="models:BlogPostDto"> <DataTemplate x:DataType="models:BlogPostDto">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
@ -139,6 +140,8 @@
<Border <Border
Grid.Row="2" Grid.Row="2"
Padding="8" Padding="8"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
BorderBrush="Gray" BorderBrush="Gray"
BorderThickness="1" BorderThickness="1"
IsVisible="{Binding IsMarkdownViewerVisible}"> IsVisible="{Binding IsMarkdownViewerVisible}">
@ -150,6 +153,8 @@
Padding="8" Padding="8"
BorderBrush="Gray" BorderBrush="Gray"
BorderThickness="1" BorderThickness="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch"
IsVisible="{Binding !IsMarkdownViewerVisible}"> IsVisible="{Binding !IsMarkdownViewerVisible}">
<Grid <Grid
HorizontalAlignment="Stretch" HorizontalAlignment="Stretch"
@ -177,6 +182,7 @@
<AvaloniaEdit:TextEditor <AvaloniaEdit:TextEditor
x:Name="DraftArticleTextEditor"
Grid.Row="2" Grid.Row="2"
VerticalAlignment="Stretch" VerticalAlignment="Stretch"
Document="{Binding DraftArticleDocument, Mode=TwoWay}" Document="{Binding DraftArticleDocument, Mode=TwoWay}"
@ -190,14 +196,15 @@
HorizontalScrollBarVisibility="Disabled" HorizontalScrollBarVisibility="Disabled"
TextInputOptions.Multiline="True" TextInputOptions.Multiline="True"
TextInputOptions.ReturnKeyType="Default" TextInputOptions.ReturnKeyType="Default"
ClipToBounds="True"
/> />
<Border <Border x:Name="AttachmentsBorder"
Grid.Row="3" Grid.Row="3"
Padding="8" Padding="8"
BorderBrush="LightGray" BorderBrush="LightGray"
BorderThickness="1"> BorderThickness="1"
HorizontalAlignment="Stretch"
VerticalAlignment="Stretch">
<StackPanel Spacing="4"> <StackPanel Spacing="4">
<TextBlock FontWeight="SemiBold" Text="Pièces jointes" /> <TextBlock FontWeight="SemiBold" Text="Pièces jointes" />
<ItemsControl ItemsSource="{Binding DraftAttachments}"> <ItemsControl ItemsSource="{Binding DraftAttachments}">
@ -210,7 +217,7 @@
</StackPanel> </StackPanel>
</Border> </Border>
<postitControls:StatusBar Grid.Row="4" DataContext="{Binding ActionStatus}" /> <postitControls:StatusBar Grid.Row="4" DataContext="{Binding ActionStatus}" x:Name="StatusBar" />
</Grid> </Grid>
</Border> </Border>

View file

@ -5,6 +5,9 @@ using Avalonia.Platform.Storage;
using Avalonia.Controls.Primitives; using Avalonia.Controls.Primitives;
using Avalonia.Interactivity; using Avalonia.Interactivity;
using Avalonia.Controls.Platform; using Avalonia.Controls.Platform;
using Avalonia.Input;
using System;
using Avalonia;
namespace PostIt.Views.Blogs; namespace PostIt.Views.Blogs;
@ -17,7 +20,7 @@ public partial class BlogsPage : ContentPage
InitializeComponent(); InitializeComponent();
} }
protected override void OnLoaded(RoutedEventArgs e) protected override void OnLoaded(RoutedEventArgs e)
{ {
base.OnLoaded(e); base.OnLoaded(e);
@ -49,25 +52,15 @@ public partial class BlogsPage : ContentPage
private void UpdateLayoutForKeyboard(double keyboardHeight) private void UpdateLayoutForKeyboard(double keyboardHeight)
{ {
var app = App.Current as App; double visibleHeight = this.Bounds.Height - keyboardHeight;
app.View.Margin = new Avalonia.Thickness(0, 0, 0, keyboardHeight);
// OPTION B : Si vous devez explicitement appliquer un masque de découpage (Clip) basé sur la hauteur :
/*
if (keyboardHeight > 0) if (keyboardHeight > 0)
{ {
double visibleHeight = this.Bounds.Height - keyboardHeight; DraftArticleTextEditor.MaxHeight = visibleHeight;
if (visibleHeight > 0)
{
MainContainer.Clip = new Avalonia.Media.RectangleGeometry(
new Avalonia.Rect(0, 0, this.Bounds.Width, visibleHeight));
}
} }
else else
{ {
MainContainer.Clip = null; // Réinitialise le clip quand le clavier se ferme DraftArticleTextEditor.MaxHeight = double.PositiveInfinity;
} }
*/
} }
private void OnInputPaneStateChanged(object? sender, InputPaneStateEventArgs e) private void OnInputPaneStateChanged(object? sender, InputPaneStateEventArgs e)