View | Details | Raw Unified | Return to bug 459223
Collapse All | Expand All

(-)System.Windows.Forms/Control.cs (-25 / +15 lines)
Lines 130-142 Link Here
130
		// to be categorized...
130
		// to be categorized...
131
		ControlCollection       child_controls; // our children
131
		ControlCollection       child_controls; // our children
132
		Control                 parent; // our parent control
132
		Control                 parent; // our parent control
133
		AccessibleObject        accessibility_object; // object that contains accessibility information about our control
134
		BindingContext          binding_context;
133
		BindingContext          binding_context;
135
		RightToLeft             right_to_left; // drawing direction for control
134
		RightToLeft             right_to_left; // drawing direction for control
136
		ContextMenu             context_menu; // Context menu associated with the control
135
		ContextMenu             context_menu; // Context menu associated with the control
137
		internal bool		use_compatible_text_rendering;
136
		internal bool		use_compatible_text_rendering;
138
		private bool		use_wait_cursor;
137
		private bool		use_wait_cursor;
139
138
139
		//accessibility
140
		string accessible_name;
141
		string accessible_description;
142
		string accessible_default_action;
143
		AccessibleRole accessible_role = AccessibleRole.Default;
144
		AccessibleObject accessibility_object; // object that contains accessibility information about our control
145
140
		// double buffering
146
		// double buffering
141
		DoubleBuffer            backbuffer;
147
		DoubleBuffer            backbuffer;
142
148
Lines 2113-2127 Link Here
2113
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
2119
		[DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)]
2114
		public string AccessibleDefaultActionDescription {
2120
		public string AccessibleDefaultActionDescription {
2115
			get {
2121
			get {
2116
				if (accessibility_object != null)
2122
				return accessible_default_action;
2117
					return accessibility_object.default_action;
2118
				else
2119
					return null;
2120
			}
2123
			}
2121
2124
2122
			set {
2125
			set {
2123
				if (accessibility_object != null)
2126
				accessible_default_action = value;
2124
					AccessibilityObject.default_action = value;
2125
			}
2127
			}
2126
		}
2128
		}
2127
2129
Lines 2130-2144 Link Here
2130
		[MWFCategory("Accessibility")]
2132
		[MWFCategory("Accessibility")]
2131
		public string AccessibleDescription {
2133
		public string AccessibleDescription {
2132
			get {
2134
			get {
2133
				if (accessibility_object != null)
2135
				return accessible_description;
2134
					return accessibility_object.description;
2135
				else
2136
					return null;
2137
			}
2136
			}
2138
2137
2139
			set {
2138
			set {
2140
				if (accessibility_object != null)
2139
				accessible_description = value;
2141
					AccessibilityObject.description = value;
2142
			}
2140
			}
2143
		}
2141
		}
2144
2142
Lines 2147-2161 Link Here
2147
		[MWFCategory("Accessibility")]
2145
		[MWFCategory("Accessibility")]
2148
		public string AccessibleName {
2146
		public string AccessibleName {
2149
			get {
2147
			get {
2150
				if (accessibility_object != null)
2148
				return accessible_name;
2151
					return accessibility_object.Name;
2152
				else
2153
					return null;
2154
			}
2149
			}
2155
2150
2156
			set {
2151
			set {
2157
				if (accessibility_object != null)
2152
				accessible_name = value;
2158
					AccessibilityObject.Name = value;
2159
			}
2153
			}
2160
		}
2154
		}
2161
2155
Lines 2163-2177 Link Here
2163
		[MWFDescription("Role of the control"), MWFCategory("Accessibility")]
2157
		[MWFDescription("Role of the control"), MWFCategory("Accessibility")]
2164
		public AccessibleRole AccessibleRole {
2158
		public AccessibleRole AccessibleRole {
2165
			get {
2159
			get {
2166
				if (accessibility_object != null)
2160
				return accessible_role;
2167
					return accessibility_object.role;
2168
				else
2169
					return AccessibleRole.Default;
2170
			}
2161
			}
2171
2162
2172
			set {
2163
			set {
2173
				if (accessibility_object != null)
2164
				accessible_role = value;
2174
					AccessibilityObject.role = value;
2175
			}
2165
			}
2176
		}
2166
		}
2177
2167
(-)Test/System.Windows.Forms/ControlTest.cs (-7 / +56 lines)
Lines 1019-1038 Link Here
1019
			Assert.IsFalse (c.Created, "A1");
1019
			Assert.IsFalse (c.Created, "A1");
1020
		}
1020
		}
1021
1021
1022
		class CustomA11yEnabledControl : Control {
1023
			public CustomA11yEnabledControl () : base() { }
1024
			protected override AccessibleObject CreateAccessibilityInstance () { return new CustomAccessibleObject (this); }
1025
1026
			class CustomAccessibleObject : ControlAccessibleObject {
1027
				public CustomAccessibleObject (CustomA11yEnabledControl control) : base(control) { }
1028
				public override string Name { get { return "custom name"; } }
1029
				public override string DefaultAction { get { return "custom default action"; } }
1030
				public override string Description { get { return "custom description"; } }
1031
				public override AccessibleRole Role { get { return AccessibleRole.Alert; } }
1032
			}
1033
		}
1034
1022
		[Test]
1035
		[Test]
1023
		[Category ("NotWorking")]
1024
		public void CreatedAccessibilityTest ()
1036
		public void CreatedAccessibilityTest ()
1025
		{
1037
		{
1026
			Control c = new Control ();
1038
			CustomA11yEnabledControl c = new CustomA11yEnabledControl ();
1027
			Assert.IsFalse (c.Created, "A1");
1039
			Assert.IsFalse(c.Created, "A1");
1028
1040
1029
			Helper.TestAccessibility(c, null, null, null, AccessibleRole.Default);
1041
			// Tests default values
1030
1042
1031
			Assert.IsTrue (c.Created, "A2");
1043
			Assert.AreEqual (null, c.AccessibleDefaultActionDescription, "A2.0");
1044
			Assert.IsFalse(c.IsHandleCreated, "A2.1");
1032
1045
1046
			Assert.AreEqual (null, c.AccessibleDescription, "A3.0");
1047
			Assert.IsFalse(c.IsHandleCreated, "A3.1");
1048
1049
			Assert.AreEqual (null, c.AccessibleName, "A4.0");
1050
			Assert.IsFalse(c.IsHandleCreated, "A4.1");
1051
1052
			Assert.AreEqual (AccessibleRole.Default, c.AccessibleRole, "A5.0");
1053
			Assert.IsFalse(c.IsHandleCreated, "A5.1");
1054
1055
			object o = c.AccessibilityObject;
1056
			Assert.IsTrue(c.IsHandleCreated, "A6");
1057
1058
			// Tests to confirm that:
1059
			// - calling Control.AccessibleXXXXX is not returning AccessibleObject.XXXXX
1060
			// - Handle is not Created when calling Control.AccessibleXXXXX
1061
			c = new CustomA11yEnabledControl ();
1062
1063
 			string accessibleDefaultActionDescription = "default action description";
1064
			c.AccessibleDefaultActionDescription = accessibleDefaultActionDescription;
1065
			Assert.IsFalse (c.IsHandleCreated, "A7.0");
1066
			Assert.AreEqual (accessibleDefaultActionDescription, c.AccessibleDefaultActionDescription, "A7.1");
1067
1068
			string accessibleDescription = "accessible description";
1069
			c.AccessibleDescription = accessibleDescription;
1070
			Assert.IsFalse (c.IsHandleCreated, "A8.0");
1071
			Assert.AreEqual (accessibleDescription, c.AccessibleDescription, "A8.1");
1072
1073
			string accessibleName = "accessible name";
1074
			c.AccessibleName = accessibleName;
1075
			Assert.IsFalse (c.IsHandleCreated, "A9.0");
1076
			Assert.AreEqual (accessibleName, c.AccessibleName, "A9.1");
1077
1078
			AccessibleRole accessibleRole = AccessibleRole.Diagram;
1079
			c.AccessibleRole = accessibleRole;
1080
			Assert.AreEqual (accessibleRole, c.AccessibleRole, "A10.0");
1081
			Assert.IsFalse (c.IsHandleCreated, "A10.1");
1082
1033
			c.Dispose ();
1083
			c.Dispose ();
1034
1084
			Assert.IsFalse (c.Created, "A11");
1035
			Assert.IsFalse (c.Created, "A3");
1036
		}
1085
		}
1037
1086
1038
		[Test]
1087
		[Test]

Return to bug 459223