Reviewed by Ken.
authordarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 30 Aug 2004 22:36:16 +0000 (22:36 +0000)
committerdarin <darin@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Mon, 30 Aug 2004 22:36:16 +0000 (22:36 +0000)
        - fixed <rdar://problem/3779122> No accesskey support on LABEL element

        * khtml/html/html_formimpl.h: Change type of m_currValue to DOMString. Should have been done
        as part of my form data check-in, but harmless to do now. Add accessKeyAction function for
        HTMLLabelElementImpl.
        * khtml/html/html_formimpl.cpp:
        (DOM::HTMLButtonElementImpl::parseHTMLAttribute): Remove conversion of DOMString to QString
        for m_currValue.
        (DOM::HTMLLabelElementImpl::formElement): If there's no "for" attribute, search children for
        the first control.
        (DOM::HTMLLabelElementImpl::accessKeyAction): Forward the accesskey action to the formElement.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@7406 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebCore/ChangeLog-2005-08-23
WebCore/khtml/html/html_formimpl.cpp
WebCore/khtml/html/html_formimpl.h

index 5edd46b3b56c6050a99df8c4f2aa85ab4d78f29e..eaf1d693738de32bc950fdd89d711d606a2bdfe8 100644 (file)
@@ -1,3 +1,19 @@
+2004-08-30  Darin Adler  <darin@apple.com>
+
+        Reviewed by Ken.
+
+        - fixed <rdar://problem/3779122> No accesskey support on LABEL element
+
+        * khtml/html/html_formimpl.h: Change type of m_currValue to DOMString. Should have been done
+        as part of my form data check-in, but harmless to do now. Add accessKeyAction function for
+        HTMLLabelElementImpl.
+        * khtml/html/html_formimpl.cpp:
+        (DOM::HTMLButtonElementImpl::parseHTMLAttribute): Remove conversion of DOMString to QString
+        for m_currValue.
+        (DOM::HTMLLabelElementImpl::formElement): If there's no "for" attribute, search children for
+        the first control.
+        (DOM::HTMLLabelElementImpl::accessKeyAction): Forward the accesskey action to the formElement.
+
 2004-08-30  Darin Adler  <darin@apple.com>
 
         Reviewed by Dave.
index 6bd8b76c3e6396273d184756ba208603c5c9f43f..6dd184524249fc4bf050594bb4372dcd163bdfdc 100644 (file)
@@ -1053,7 +1053,7 @@ void HTMLButtonElementImpl::parseHTMLAttribute(HTMLAttributeImpl *attr)
         break;
     case ATTR_VALUE:
         m_value = attr->value();
-        m_currValue = m_value.string();
+        m_currValue = m_value;
         break;
     case ATTR_ACCESSKEY:
         break;
@@ -1976,11 +1976,31 @@ void HTMLLabelElementImpl::parseHTMLAttribute(HTMLAttributeImpl *attr)
 ElementImpl *HTMLLabelElementImpl::formElement()
 {
     DOMString formElementId = getAttribute(ATTR_FOR);
-    if (formElementId.isNull() || formElementId.isEmpty())
+    if (formElementId.isNull()) {
+        // Search children of the label element for a form element.
+        NodeImpl *node = this;
+        while ((node = node->traverseNextNode(this))) {
+            if (node->isHTMLElement()) {
+                HTMLElementImpl *element = static_cast<HTMLElementImpl *>(node);
+                if (element->isGenericFormElement()) {
+                    return element;
+                }
+            }
+        }
+        return 0;
+    }
+    if (formElementId.isEmpty())
         return 0;
     return getDocument()->getElementById(formElementId);
 }
 
+void HTMLLabelElementImpl::accessKeyAction()
+{
+    ElementImpl *element = formElement();
+    if (element)
+        element->accessKeyAction();
+}
+
 // -------------------------------------------------------------------------
 
 HTMLLegendElementImpl::HTMLLegendElementImpl(DocumentPtr *doc, HTMLFormElementImpl *f)
index 5e99bca4bf550aff42fe3dbc14cbcdfa8d2bf9c7..625ad596edb4f2f803098d6bbd92ba49b9e50c9f 100644 (file)
@@ -231,7 +231,7 @@ public:
     
 protected:
     DOMString m_value;
-    QString   m_currValue;
+    DOMString m_currValue;
     typeEnum  m_type : 2;
     bool      m_dirty : 1;
     bool      m_activeSubmit : 1;
@@ -386,10 +386,13 @@ public:
 
     virtual void parseHTMLAttribute(HTMLAttributeImpl *attr);
 
+    virtual void accessKeyAction();
+
     /**
      * the form element this label is associated to.
      */
     ElementImpl *formElement();
+
  private:
     DOMString m_formElementID;
 };