From d19fe2250c0f394e6ba77084a9a7b764d7513f50 Mon Sep 17 00:00:00 2001 From: Robert McRackan Date: Mon, 6 May 2024 21:56:00 -0400 Subject: [PATCH] Add accessibility text to grid stoplight buttons --- Source/AppScaffolding/AppScaffolding.csproj | 2 +- .../LiberateDataGridViewImageButtonColumn.cs | 25 +++++++++++++++++-- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/Source/AppScaffolding/AppScaffolding.csproj b/Source/AppScaffolding/AppScaffolding.csproj index ead8f9c9..b6c85246 100644 --- a/Source/AppScaffolding/AppScaffolding.csproj +++ b/Source/AppScaffolding/AppScaffolding.csproj @@ -2,7 +2,7 @@ net8.0 - 11.3.8.1 + 11.3.9.1 diff --git a/Source/LibationWinForms/GridView/LiberateDataGridViewImageButtonColumn.cs b/Source/LibationWinForms/GridView/LiberateDataGridViewImageButtonColumn.cs index 0fcbe100..07be9ee0 100644 --- a/Source/LibationWinForms/GridView/LiberateDataGridViewImageButtonColumn.cs +++ b/Source/LibationWinForms/GridView/LiberateDataGridViewImageButtonColumn.cs @@ -16,7 +16,27 @@ namespace LibationWinForms.GridView internal class LiberateDataGridViewImageButtonCell : DataGridViewImageButtonCell { - private static readonly Brush DISABLED_GRAY = new SolidBrush(Color.FromArgb(0x60, Color.LightGray)); + #region Accessibility + private string accessibilityName => "Liberate Image Button"; + private string accessibilityDescription = "undefined"; + protected override AccessibleObject CreateAccessibilityInstance() => new MyAccessibilityObject(accessibilityName, accessibilityDescription); + protected class MyAccessibilityObject : DataGridViewCellAccessibleObject + { + public override string Name => _name; + public override string Description => _description; + + private string _name { get; } + private string _description { get; } + + public MyAccessibilityObject(string name, string description) : base() + { + _name = name; + _description = description; + } + } + #endregion + + private static readonly Brush DISABLED_GRAY = new SolidBrush(Color.FromArgb(0x60, Color.LightGray)); private static readonly Color HiddenForeColor = Color.LightGray; protected override void Paint(Graphics graphics, Rectangle clipBounds, Rectangle cellBounds, int rowIndex, DataGridViewElementStates elementState, object value, object formattedValue, string errorText, DataGridViewCellStyle cellStyle, DataGridViewAdvancedBorderStyle advancedBorderStyle, DataGridViewPaintParts paintParts) { @@ -31,7 +51,8 @@ namespace LibationWinForms.GridView base.Paint(graphics, clipBounds, cellBounds, rowIndex, elementState, null, null, null, cellStyle, advancedBorderStyle, paintParts); DrawButtonImage(graphics, (Image)status.ButtonImage, cellBounds); - ToolTipText = status.ToolTip; + accessibilityDescription = status.ToolTip; + ToolTipText = status.ToolTip; if (status.IsUnavailable || status.Opacity < 1) graphics.FillRectangle(DISABLED_GRAY, cellBounds);