[g-a-devel]inconsistent in gnopernicus event process for HTML input widgets



Hi,

I am working on a mozilla bug: #187203(http://bugzilla.mozilla.org/show_bug.cgi?id=187203)
and found some inconsistent actions in gnopernicus for the HTML input widgets:
edit, checkbox, radiobox and combobox. (Attachment #1 is a demo homepage for them.)

For the first three widgets, when first time they got focus, gnopernicus will read the label and status/content.
After that, when the status/content of them changed, gnopernicus reads the status/content only, without label.
For the last widget (combobox), gnopernicus reads the content(list-item) only for both situation!

Attachment #2 is a patch for gnopernicus event process in "gnopernicus/srcore/srmain.c".

Comments are appreciated.

Best regards,
Simford

Title: Examples: WAI Web Content Accessibility Curriculum - slide "12.4 - Associate labels explicitly with their controls."

Example for Checkpoint
12.4 - Associate labels explicitly with their controls.

Example
Slide 96 of 120

Following this checkpoint means that the (non-visual) user will be able to identify the correct label for a control even if the label is not located such that it is immediately obvious that it corresponds to a particular control. Future screen readers or other user agents will be able to offer this extra information about form controls to the user to aid their navigation and understanding of complex forms.

The following example lays out four checkbox controls and their text labels in such a way that the user of a screen reader might have difficulty determining which label is associated with a particular checkbox.

Options Required


All DEC HP Macintosh PC SGI Sun Other



View the code that created this example to see how the LABEL element can be use to overcome this barrier.

It will not hurt your design to start using the LABEL element now, and your page will be more accessible when agents do start supporting it. In the meantime, refer to the example for Checkpoint 10.2 for an accessible fix.

To Checkpoints for Guideline 12.
Next slide: Example for Checkpoint 13.1


Chuck Letourneau & Geoff Freed


Copyright © 2000 W3C
Index: srcore/srmain.c
===================================================================
RCS file: /cvs/gnome/gnopernicus/srcore/srmain.c,v
retrieving revision 1.70
diff -u -r1.70 srmain.c
--- srcore/srmain.c	21 Jan 2003 16:45:41 -0000	1.70
+++ srcore/srmain.c	24 Jan 2003 06:14:02 -0000
@@ -233,6 +233,50 @@
 		    src_last_key_echo = NULL;
 		}
 		txt = src_presentation_present_sro_for_device (obj, reason, "speech");
+
+                //modified by simford
+                if (strcmp (reason, "focus:") == 0)
+                {
+                    static gchar* lastTxt;
+
+                    if (role == SR_ROLE_LIST_ITEM)
+                    {
+                        SRObject* newParent;
+                        gchar* parentTxt;
+                        SRObjectRoles parentRole;
+
+                        if (sro_default_get_parent(obj, &newParent)
+                            && sro_get_role (newParent, &parentRole, SR_INDEX_CONTAINER)
+                            && parentRole == SR_ROLE_LIST
+                           )
+                        {
+                            parentTxt = src_presentation_present_sro_for_device (newParent, reason, "speech");
+                            if (parentTxt && strcmp(parentTxt, lastTxt) != 0){
+                                gchar* tempTxt;
+                                g_free (lastTxt);
+                                lastTxt = g_strdup(parentTxt);
+
+                                tempTxt = g_strconcat (parentTxt, txt, NULL);
+                                g_free (txt);
+                                txt = g_strdup(tempTxt);
+                                g_free (tempTxt);
+                            }
+                        }
+                        else
+                        {   
+                            g_free (lastTxt);
+                            lastTxt = g_strdup ("");
+                        }
+                        g_free (newParent);
+                        g_free (parentTxt);
+                    }
+                    else
+                    {
+                        g_free (lastTxt);
+                        lastTxt = g_strdup ("");
+                    }
+                } //end of modified by simford
+
     		if (txt)
     		{
 		    gchar *tmp;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]