From 92299aa1428e05db8deffbf9aa80dd4c96273adf Mon Sep 17 00:00:00 2001 From: "Ricardo Bossan (BEYONDSOFT CONSULTING INC) (from Dev Box)" Date: Fri, 21 Nov 2025 21:40:11 -0300 Subject: [PATCH] Adds ExpandColapse pattern to SplitButton --- ...StripSplitButton.ToolStripSplitButtonExAccessibleObject.cs | 3 ++- ...ipSplitButton.ToolStripSplitButtonAccessibleObjectTests.cs | 4 ++-- ...SplitButton.ToolStripSplitButtonExAccessibleObjectTests.cs | 2 +- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/System.Windows.Forms/System/Windows/Forms/Controls/ToolStrips/ToolStripSplitButton.ToolStripSplitButtonExAccessibleObject.cs b/src/System.Windows.Forms/System/Windows/Forms/Controls/ToolStrips/ToolStripSplitButton.ToolStripSplitButtonExAccessibleObject.cs index 2ed0b67bb41..c0f3f89aabe 100644 --- a/src/System.Windows.Forms/System/Windows/Forms/Controls/ToolStrips/ToolStripSplitButton.ToolStripSplitButtonExAccessibleObject.cs +++ b/src/System.Windows.Forms/System/Windows/Forms/Controls/ToolStrips/ToolStripSplitButton.ToolStripSplitButtonExAccessibleObject.cs @@ -24,9 +24,10 @@ internal override VARIANT GetPropertyValue(UIA_PROPERTY_ID propertyID) => // If we don't set a default role for the accessible object // it will be retrieved from Windows. // And we don't have a 100% guarantee it will be correct, hence set it ourselves. + // SplitButton control type requires ExpandCollapse pattern support. UIA_PROPERTY_ID.UIA_ControlTypePropertyId when _owningToolStripSplitButton.AccessibleRole == AccessibleRole.Default - => (VARIANT)(int)UIA_CONTROLTYPE_ID.UIA_ButtonControlTypeId, + => (VARIANT)(int)UIA_CONTROLTYPE_ID.UIA_SplitButtonControlTypeId, _ => base.GetPropertyValue(propertyID) }; diff --git a/src/test/unit/System.Windows.Forms/System/Windows/Forms/AccessibleObjects/ToolStripSplitButton.ToolStripSplitButtonAccessibleObjectTests.cs b/src/test/unit/System.Windows.Forms/System/Windows/Forms/AccessibleObjects/ToolStripSplitButton.ToolStripSplitButtonAccessibleObjectTests.cs index ec9599e8486..678e4dfe4e3 100644 --- a/src/test/unit/System.Windows.Forms/System/Windows/Forms/AccessibleObjects/ToolStripSplitButton.ToolStripSplitButtonAccessibleObjectTests.cs +++ b/src/test/unit/System.Windows.Forms/System/Windows/Forms/AccessibleObjects/ToolStripSplitButton.ToolStripSplitButtonAccessibleObjectTests.cs @@ -20,14 +20,14 @@ public void ToolStripSplitButtonAccessibleObject_Ctor_Default() } [WinFormsFact] - public void ToolStripSplitButtonAccessibleObject_ControlType_IsButton_IfAccessibleRoleIsDefault() + public void ToolStripSplitButtonAccessibleObject_ControlType_IsSplitButton_IfAccessibleRoleIsDefault() { using ToolStripSplitButton toolStripSplitButton = new(); // AccessibleRole is not set = Default var actual = (UIA_CONTROLTYPE_ID)(int)toolStripSplitButton.AccessibilityObject.GetPropertyValue(UIA_PROPERTY_ID.UIA_ControlTypePropertyId); - Assert.Equal(UIA_CONTROLTYPE_ID.UIA_ButtonControlTypeId, actual); + Assert.Equal(UIA_CONTROLTYPE_ID.UIA_SplitButtonControlTypeId, actual); } [WinFormsFact] diff --git a/src/test/unit/System.Windows.Forms/System/Windows/Forms/AccessibleObjects/ToolStripSplitButton.ToolStripSplitButtonExAccessibleObjectTests.cs b/src/test/unit/System.Windows.Forms/System/Windows/Forms/AccessibleObjects/ToolStripSplitButton.ToolStripSplitButtonExAccessibleObjectTests.cs index 846069bc878..6ed7721c0df 100644 --- a/src/test/unit/System.Windows.Forms/System/Windows/Forms/AccessibleObjects/ToolStripSplitButton.ToolStripSplitButtonExAccessibleObjectTests.cs +++ b/src/test/unit/System.Windows.Forms/System/Windows/Forms/AccessibleObjects/ToolStripSplitButton.ToolStripSplitButtonExAccessibleObjectTests.cs @@ -23,7 +23,7 @@ public void ToolStripSplitButtonExAccessibleObject_ControlType_ReturnsExpected() ToolStripSplitButtonExAccessibleObject accessibleObject = new(toolStripSplitButton); - Assert.Equal(UIA_CONTROLTYPE_ID.UIA_ButtonControlTypeId, (UIA_CONTROLTYPE_ID)(int)accessibleObject.GetPropertyValue(UIA_PROPERTY_ID.UIA_ControlTypePropertyId)); + Assert.Equal(UIA_CONTROLTYPE_ID.UIA_SplitButtonControlTypeId, (UIA_CONTROLTYPE_ID)(int)accessibleObject.GetPropertyValue(UIA_PROPERTY_ID.UIA_ControlTypePropertyId)); } [WinFormsFact]