Reviewed by Darin.
authormjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 15 Jun 2004 09:44:45 +0000 (09:44 +0000)
committermjs <mjs@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 15 Jun 2004 09:44:45 +0000 (09:44 +0000)
<rdar://problem/3685236>: (Safari does not support onselectstart event handler)

        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::getValueProperty):
        (DOMNode::putValue):
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMNode::):
        * khtml/ecma/kjs_dom.lut.h:
        (KJS::):
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseHTMLAttribute):
        * khtml/misc/htmlattrs.c:
        (hash_attr):
        (findAttr):
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:
        * khtml/rendering/render_object.cpp:
        (RenderObject::shouldSelect):
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::typeToId):
        (EventImpl::idToType):
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::):

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/ecma/kjs_dom.cpp
WebCore/khtml/ecma/kjs_dom.h
WebCore/khtml/ecma/kjs_dom.lut.h
WebCore/khtml/html/html_elementimpl.cpp
WebCore/khtml/misc/htmlattrs.c
WebCore/khtml/misc/htmlattrs.h
WebCore/khtml/misc/htmlattrs.in
WebCore/khtml/rendering/render_object.cpp
WebCore/khtml/xml/dom2_eventsimpl.cpp
WebCore/khtml/xml/dom2_eventsimpl.h

index 61ff892..417ea10 100644 (file)
@@ -2,6 +2,34 @@
 
         Reviewed by Darin.
 
+       <rdar://problem/3685236>: (Safari does not support onselectstart event handler)
+
+        * khtml/ecma/kjs_dom.cpp:
+        (DOMNode::getValueProperty):
+        (DOMNode::putValue):
+        * khtml/ecma/kjs_dom.h:
+        (KJS::DOMNode::):
+        * khtml/ecma/kjs_dom.lut.h:
+        (KJS::):
+        * khtml/html/html_elementimpl.cpp:
+        (HTMLElementImpl::parseHTMLAttribute):
+        * khtml/misc/htmlattrs.c:
+        (hash_attr):
+        (findAttr):
+        * khtml/misc/htmlattrs.h:
+        * khtml/misc/htmlattrs.in:
+        * khtml/rendering/render_object.cpp:
+        (RenderObject::shouldSelect):
+        * khtml/xml/dom2_eventsimpl.cpp:
+        (EventImpl::typeToId):
+        (EventImpl::idToType):
+        * khtml/xml/dom2_eventsimpl.h:
+        (DOM::EventImpl::):
+
+2004-06-15  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
        Fix crash with last checkin.
 
         * khtml/ecma/kjs_binding.cpp:
index 02b7ad9..13f93b6 100644 (file)
@@ -94,7 +94,7 @@ bool DOMNode::toBoolean(ExecState *) const
 }
 
 /* Source for DOMNodeTable. Use "make hashtables" to regenerate.
-@begin DOMNodeTable 66
+@begin DOMNodeTable 67
   nodeName     DOMNode::NodeName       DontDelete|ReadOnly
   nodeValue    DOMNode::NodeValue      DontDelete
   nodeType     DOMNode::NodeType       DontDelete|ReadOnly
@@ -150,6 +150,7 @@ bool DOMNode::toBoolean(ExecState *) const
   onscroll      DOMNode::OnScroll               DontDelete
   onsearch      DOMNode::OnSearch               DontDelete
   onselect     DOMNode::OnSelect               DontDelete
+  onselectstart        DOMNode::OnSelectStart          DontDelete
   onsubmit     DOMNode::OnSubmit               DontDelete
   onunload     DOMNode::OnUnload               DontDelete
 # IE extensions
@@ -285,6 +286,8 @@ Value DOMNode::getValueProperty(ExecState *exec, int token) const
 #endif
   case OnSelect:
     return getListener(DOM::EventImpl::SELECT_EVENT);
+  case OnSelectStart:
+    return getListener(DOM::EventImpl::SELECTSTART_EVENT);
   case OnSubmit:
     return getListener(DOM::EventImpl::SUBMIT_EVENT);
   case OnUnload:
@@ -467,6 +470,9 @@ void DOMNode::putValue(ExecState *exec, int token, const Value& value, int /*att
   case OnSelect:
     setListener(exec,DOM::EventImpl::SELECT_EVENT,value);
     break;
+  case OnSelectStart:
+    setListener(exec,DOM::EventImpl::SELECTSTART_EVENT,value);
+    break;
   case OnSubmit:
     setListener(exec,DOM::EventImpl::SUBMIT_EVENT,value);
     break;
index 0572dde..fe768a4 100644 (file)
@@ -61,7 +61,7 @@ namespace KJS {
            DispatchEvent, Contains,
            OnAbort, OnBlur, OnChange, OnClick, OnContextMenu, OnDblClick, OnDragDrop, OnError,
            OnDragEnter, OnDragOver, OnDragLeave, OnDrop, OnDragStart, OnDrag, OnDragEnd,
-           OnBeforeCut, OnCut, OnBeforeCopy, OnCopy, OnBeforePaste, OnPaste,
+           OnBeforeCut, OnCut, OnBeforeCopy, OnCopy, OnBeforePaste, OnPaste, OnSelectStart,
            OnFocus, OnInput, OnKeyDown, OnKeyPress, OnKeyUp, OnLoad, OnMouseDown,
            OnMouseMove, OnMouseOut, OnMouseOver, OnMouseUp, OnMove, OnReset,
            OnResize, OnScroll, OnSearch, OnSelect, OnSubmit, OnUnload,
index 6621342..48c7235 100644 (file)
@@ -29,99 +29,100 @@ const struct HashTable DOMNodeProtoTable = { 2, 17, DOMNodeProtoTableEntries, 13
 namespace KJS {
 
 const struct HashEntry DOMNodeTableEntries[] = {
-   { "ownerDocument", DOMNode::OwnerDocument, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[73] },
+   { "ondragdrop", DOMNode::OnDragDrop, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "scrollHeight", DOMNode::ScrollHeight, DontDelete|ReadOnly, 0, 0 },
-   { "onbeforepaste", DOMNode::OnBeforePaste, DontDelete, 0, &DOMNodeTableEntries[81] },
-   { "oncopy", DOMNode::OnCopy, DontDelete, 0, 0 },
-   { "ondragstart", DOMNode::OnDragStart, DontDelete, 0, 0 },
-   { "onunload", DOMNode::OnUnload, DontDelete, 0, 0 },
-   { "nodeValue", DOMNode::NodeValue, DontDelete, 0, 0 },
+   { "onclick", DOMNode::OnClick, DontDelete, 0, 0 },
+   { "nodeName", DOMNode::NodeName, DontDelete|ReadOnly, 0, 0 },
    { 0, 0, 0, 0, 0 },
+   { "onscroll", DOMNode::OnScroll, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
+   { "ondragover", DOMNode::OnDragOver, DontDelete, 0, &DOMNodeTableEntries[76] },
+   { "ondragend", DOMNode::OnDragEnd, DontDelete, 0, &DOMNodeTableEntries[75] },
    { 0, 0, 0, 0, 0 },
-   { "offsetParent", DOMNode::OffsetParent, DontDelete|ReadOnly, 0, 0 },
+   { "onsubmit", DOMNode::OnSubmit, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "onclick", DOMNode::OnClick, DontDelete, 0, &DOMNodeTableEntries[77] },
+   { "onmouseover", DOMNode::OnMouseOver, DontDelete, 0, &DOMNodeTableEntries[81] },
    { 0, 0, 0, 0, 0 },
-   { "nodeName", DOMNode::NodeName, DontDelete|ReadOnly, 0, 0 },
-   { "ondragdrop", DOMNode::OnDragDrop, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "onscroll", DOMNode::OnScroll, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
+   { "childNodes", DOMNode::ChildNodes, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[84] },
+   { "oncut", DOMNode::OnCut, DontDelete, 0, 0 },
+   { "onbeforecopy", DOMNode::OnBeforeCopy, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "previousSibling", DOMNode::PreviousSibling, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[79] },
-   { "ondragend", DOMNode::OnDragEnd, DontDelete, 0, 0 },
-   { "ondragover", DOMNode::OnDragOver, DontDelete, 0, &DOMNodeTableEntries[82] },
+   { "nextSibling", DOMNode::NextSibling, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[67] },
+   { "ondragleave", DOMNode::OnDragLeave, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "oncut", DOMNode::OnCut, DontDelete, 0, &DOMNodeTableEntries[75] },
-   { "onmousedown", DOMNode::OnMouseDown, DontDelete, 0, 0 },
+   { "attributes", DOMNode::Attributes, DontDelete|ReadOnly, 0, 0 },
+   { "parentElement", DOMNode::ParentElement, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[69] },
+   { "onpaste", DOMNode::OnPaste, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "clientWidth", DOMNode::ClientWidth, DontDelete|ReadOnly, 0, 0 },
-   { "onmouseover", DOMNode::OnMouseOver, DontDelete, 0, &DOMNodeTableEntries[83] },
-   { "childNodes", DOMNode::ChildNodes, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[67] },
+   { "onfocus", DOMNode::OnFocus, DontDelete, 0, &DOMNodeTableEntries[90] },
    { 0, 0, 0, 0, 0 },
    { 0, 0, 0, 0, 0 },
+   { "firstChild", DOMNode::FirstChild, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[68] },
+   { "ondrag", DOMNode::OnDrag, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
+   { "onload", DOMNode::OnLoad, DontDelete, 0, &DOMNodeTableEntries[88] },
+   { "parentNode", DOMNode::ParentNode, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[73] },
+   { "nodeType", DOMNode::NodeType, DontDelete|ReadOnly, 0, 0 },
+   { "localName", DOMNode::LocalName, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[83] },
+   { "ondragenter", DOMNode::OnDragEnter, DontDelete, 0, &DOMNodeTableEntries[72] },
    { 0, 0, 0, 0, 0 },
-   { "onpaste", DOMNode::OnPaste, DontDelete, 0, 0 },
-   { "nextSibling", DOMNode::NextSibling, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[68] },
-   { "ondragleave", DOMNode::OnDragLeave, DontDelete, 0, &DOMNodeTableEntries[88] },
-   { "attributes", DOMNode::Attributes, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[71] },
+   { "ondblclick", DOMNode::OnDblClick, DontDelete, 0, 0 },
+   { "onbeforecut", DOMNode::OnBeforeCut, DontDelete, 0, 0 },
+   { "namespaceURI", DOMNode::NamespaceURI, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[74] },
    { 0, 0, 0, 0, 0 },
-   { "ondrag", DOMNode::OnDrag, DontDelete, 0, 0 },
-   { "onreset", DOMNode::OnReset, DontDelete, 0, 0 },
-   { "onchange", DOMNode::OnChange, DontDelete, 0, &DOMNodeTableEntries[74] },
-   { "parentElement", DOMNode::ParentElement, DontDelete|ReadOnly, 0, 0 },
-   { "oncontextmenu", DOMNode::OnContextMenu, DontDelete, 0, &DOMNodeTableEntries[89] },
-   { "firstChild", DOMNode::FirstChild, DontDelete|ReadOnly, 0, 0 },
+   { "oninput", DOMNode::OnInput, DontDelete, 0, 0 },
+   { "scrollLeft", DOMNode::ScrollLeft, DontDelete, 0, 0 },
+   { "ownerDocument", DOMNode::OwnerDocument, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[77] },
+   { "onsearch", DOMNode::OnSearch, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "nodeType", DOMNode::NodeType, DontDelete|ReadOnly, 0, 0 },
-   { "onerror", DOMNode::OnError, DontDelete, 0, 0 },
-   { "parentNode", DOMNode::ParentNode, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[66] },
-   { "onkeypress", DOMNode::OnKeyPress, DontDelete, 0, 0 },
-   { "offsetLeft", DOMNode::OffsetLeft, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[86] },
-   { "onkeyup", DOMNode::OnKeyUp, DontDelete, 0, 0 },
+   { "lastChild", DOMNode::LastChild, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[70] },
+   { "scrollHeight", DOMNode::ScrollHeight, DontDelete|ReadOnly, 0, 0 },
+   { "prefix", DOMNode::Prefix, DontDelete, 0, 0 },
+   { "onkeydown", DOMNode::OnKeyDown, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "ondblclick", DOMNode::OnDblClick, DontDelete, 0, &DOMNodeTableEntries[69] },
+   { "ondragstart", DOMNode::OnDragStart, DontDelete, 0, 0 },
+   { "onblur", DOMNode::OnBlur, DontDelete, 0, &DOMNodeTableEntries[71] },
    { 0, 0, 0, 0, 0 },
+   { "onmove", DOMNode::OnMove, DontDelete, 0, &DOMNodeTableEntries[80] },
    { 0, 0, 0, 0, 0 },
-   { "onbeforecut", DOMNode::OnBeforeCut, DontDelete, 0, 0 },
-   { "namespaceURI", DOMNode::NamespaceURI, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[80] },
-   { "prefix", DOMNode::Prefix, DontDelete, 0, &DOMNodeTableEntries[85] },
+   { "offsetParent", DOMNode::OffsetParent, DontDelete|ReadOnly, 0, 0 },
+   { "nodeValue", DOMNode::NodeValue, DontDelete, 0, &DOMNodeTableEntries[82] },
+   { "oncopy", DOMNode::OnCopy, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "lastChild", DOMNode::LastChild, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[76] },
    { 0, 0, 0, 0, 0 },
-   { "onblur", DOMNode::OnBlur, DontDelete, 0, &DOMNodeTableEntries[70] },
+   { "previousSibling", DOMNode::PreviousSibling, DontDelete|ReadOnly, 0, 0 },
+   { "onmouseup", DOMNode::OnMouseUp, DontDelete, 0, 0 },
    { 0, 0, 0, 0, 0 },
-   { "localName", DOMNode::LocalName, DontDelete|ReadOnly, 0, 0 },
-   { "onabort", DOMNode::OnAbort, DontDelete, 0, 0 },
-   { "onbeforecopy", DOMNode::OnBeforeCopy, DontDelete, 0, &DOMNodeTableEntries[84] },
-   { "ondragenter", DOMNode::OnDragEnter, DontDelete, 0, &DOMNodeTableEntries[72] },
+   { "onabort", DOMNode::OnAbort, DontDelete, 0, &DOMNodeTableEntries[85] },
+   { "onchange", DOMNode::OnChange, DontDelete, 0, &DOMNodeTableEntries[78] },
+   { "oncontextmenu", DOMNode::OnContextMenu, DontDelete, 0, &DOMNodeTableEntries[89] },
+   { "onbeforepaste", DOMNode::OnBeforePaste, DontDelete, 0, 0 },
    { "ondrop", DOMNode::OnDrop, DontDelete, 0, 0 },
-   { "onfocus", DOMNode::OnFocus, DontDelete, 0, 0 },
-   { "oninput", DOMNode::OnInput, DontDelete, 0, 0 },
-   { "onkeydown", DOMNode::OnKeyDown, DontDelete, 0, &DOMNodeTableEntries[78] },
-   { "onload", DOMNode::OnLoad, DontDelete, 0, 0 },
+   { "onerror", DOMNode::OnError, DontDelete, 0, 0 },
+   { "onkeypress", DOMNode::OnKeyPress, DontDelete, 0, 0 },
+   { "onkeyup", DOMNode::OnKeyUp, DontDelete, 0, &DOMNodeTableEntries[86] },
+   { "onmousedown", DOMNode::OnMouseDown, DontDelete, 0, &DOMNodeTableEntries[79] },
    { "onmousemove", DOMNode::OnMouseMove, DontDelete, 0, 0 },
    { "onmouseout", DOMNode::OnMouseOut, DontDelete, 0, 0 },
-   { "onmouseup", DOMNode::OnMouseUp, DontDelete, 0, 0 },
-   { "onmove", DOMNode::OnMove, DontDelete, 0, 0 },
+   { "onreset", DOMNode::OnReset, DontDelete, 0, 0 },
    { "onresize", DOMNode::OnResize, DontDelete, 0, 0 },
-   { "onsearch", DOMNode::OnSearch, DontDelete, 0, 0 },
    { "onselect", DOMNode::OnSelect, DontDelete, 0, 0 },
-   { "onsubmit", DOMNode::OnSubmit, DontDelete, 0, 0 },
+   { "onselectstart", DOMNode::OnSelectStart, DontDelete, 0, &DOMNodeTableEntries[87] },
+   { "onunload", DOMNode::OnUnload, DontDelete, 0, 0 },
+   { "offsetLeft", DOMNode::OffsetLeft, DontDelete|ReadOnly, 0, 0 },
    { "offsetTop", DOMNode::OffsetTop, DontDelete|ReadOnly, 0, 0 },
    { "offsetWidth", DOMNode::OffsetWidth, DontDelete|ReadOnly, 0, 0 },
-   { "offsetHeight", DOMNode::OffsetHeight, DontDelete|ReadOnly, 0, &DOMNodeTableEntries[87] },
+   { "offsetHeight", DOMNode::OffsetHeight, DontDelete|ReadOnly, 0, 0 },
+   { "clientWidth", DOMNode::ClientWidth, DontDelete|ReadOnly, 0, 0 },
    { "clientHeight", DOMNode::ClientHeight, DontDelete|ReadOnly, 0, 0 },
-   { "scrollLeft", DOMNode::ScrollLeft, DontDelete, 0, 0 },
    { "scrollTop", DOMNode::ScrollTop, DontDelete, 0, 0 },
    { "scrollWidth", DOMNode::ScrollWidth, DontDelete|ReadOnly, 0, 0 }
 };
 
-const struct HashTable DOMNodeTable = { 2, 90, DOMNodeTableEntries, 66 };
+const struct HashTable DOMNodeTable = { 2, 91, DOMNodeTableEntries, 67 };
 
 } // namespace
 
index 5d2b794..8010059 100644 (file)
@@ -499,6 +499,10 @@ void HTMLElementImpl::parseHTMLAttribute(HTMLAttributeImpl *attr)
         setHTMLEventListener(EventImpl::DRAGEND_EVENT,
                              getDocument()->createHTMLEventListener(attr->value().string()));
         break;
+    case ATTR_ONSELECTSTART:
+        setHTMLEventListener(EventImpl::SELECTSTART_EVENT,
+                             getDocument()->createHTMLEventListener(attr->value().string()));
+        break;
         // other misc attributes
     default:
 #ifdef UNSUPPORTED_ATTR
index 92f01a3..9f07241 100644 (file)
@@ -8,7 +8,7 @@ struct attrs {
     const char *name;
     int id;
 };
-/* maximum key range = 1396, duplicates = 1 */
+/* maximum key range = 1379, duplicates = 1 */
 
 #ifdef __GNUC__
 __inline
@@ -22,32 +22,32 @@ hash_attr (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413,    0, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413,   15,  115,   10,
-        45,    0,  130,  120,   10,   15,    0,   20,   15,  170,
-         0,    0,  365,    0,  175,   70,    0,   25,  280,   45,
-        15,   20,    5, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413, 1413,
-      1413, 1413, 1413, 1413, 1413, 1413
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382,   10, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382,   30,  170,   10,
+        45,    0,  120,   55,  100,    0,    0,   90,   30,  360,
+         0,    0,    0,    0,  215,    5,    0,   65,   20,   35,
+        25,   15,    0, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382, 1382,
+      1382, 1382, 1382, 1382, 1382, 1382
     };
   register int hval = len;
 
@@ -97,316 +97,316 @@ findAttr (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 180,
+      TOTAL_KEYWORDS = 181,
       MIN_WORD_LENGTH = 2,
       MAX_WORD_LENGTH = 15,
-      MIN_HASH_VALUE = 17,
-      MAX_HASH_VALUE = 1412
+      MIN_HASH_VALUE = 3,
+      MAX_HASH_VALUE = 1381
     };
 
   static const struct attrs wordlist_attr[] =
     {
+      {"top", ATTR_TOP},
+      {"size", ATTR_SIZE},
+      {"cite", ATTR_CITE},
       {"content", ATTR_CONTENT},
+      {"type", ATTR_TYPE},
+      {"scope", ATTR_SCOPE},
       {"text", ATTR_TEXT},
-      {"cite", ATTR_CITE},
-      {"alt", ATTR_ALT},
+      {"oncopy", ATTR_ONCOPY},
+      {"enctype", ATTR_ENCTYPE},
+      {"loop", ATTR_LOOP},
       {"title", ATTR_TITLE},
-      {"oncut", ATTR_ONCUT},
+      {"span", ATTR_SPAN},
+      {"onpaste", ATTR_ONPASTE},
       {"action", ATTR_ACTION},
-      {"link", ATTR_LINK},
-      {"code", ATTR_CODE},
       {"id", ATTR_ID},
-      {"alink", ATTR_ALINK},
-      {"onclick", ATTR_ONCLICK},
-      {"data", ATTR_DATA},
-      {"onload", ATTR_ONLOAD},
-      {"z-index", ATTR_Z_INDEX},
-      {"size", ATTR_SIZE},
-      {"unknown", ATTR_UNKNOWN},
       {"cols", ATTR_COLS},
-      {"checked", ATTR_CHECKED},
       {"onselect", ATTR_ONSELECT},
-      {"onunload", ATTR_ONUNLOAD},
       {"style", ATTR_STYLE},
+      {"accept", ATTR_ACCEPT},
+      {"code", ATTR_CODE},
+      {"nosave", ATTR_NOSAVE},
+      {"alt", ATTR_ALT},
       {"axis", ATTR_AXIS},
-      {"width", ATTR_WIDTH},
-      {"hidden", ATTR_HIDDEN},
-      {"object", ATTR_OBJECT},
-      {"onkeydown", ATTR_ONKEYDOWN},
-      {"noshade", ATTR_NOSHADE},
+      {"plain", ATTR_PLAIN},
+      {"vspace", ATTR_VSPACE},
+      {"oninput", ATTR_ONINPUT},
+      {"codetype", ATTR_CODETYPE},
+      {"oncut", ATTR_ONCUT},
+      {"colspan", ATTR_COLSPAN},
+      {"class", ATTR_CLASS},
+      {"z-index", ATTR_Z_INDEX},
       {"selected", ATTR_SELECTED},
-      {"left", ATTR_LEFT},
+      {"pagey", ATTR_PAGEY},
+      {"data", ATTR_DATA},
+      {"onload", ATTR_ONLOAD},
+      {"pagex", ATTR_PAGEX},
       {"lang", ATTR_LANG},
+      {"align", ATTR_ALIGN},
+      {"link", ATTR_LINK},
+      {"keytype", ATTR_KEYTYPE},
+      {"classid", ATTR_CLASSID},
+      {"shape", ATTR_SHAPE},
+      {"valign", ATTR_VALIGN},
+      {"vlink", ATTR_VLINK},
+      {"onclick", ATTR_ONCLICK},
+      {"value", ATTR_VALUE},
+      {"hspace", ATTR_HSPACE},
+      {"longdesc", ATTR_LONGDESC},
+      {"left", ATTR_LEFT},
+      {"alink", ATTR_ALINK},
+      {"autosave", ATTR_AUTOSAVE},
       {"face", ATTR_FACE},
-      {"height", ATTR_HEIGHT},
+      {"valuetype", ATTR_VALUETYPE},
+      {"accesskey", ATTR_ACCESSKEY},
+      {"onkeyup", ATTR_ONKEYUP},
+      {"onunload", ATTR_ONUNLOAD},
+      {"cellspacing", ATTR_CELLSPACING},
+      {"width", ATTR_WIDTH},
+      {"object", ATTR_OBJECT},
+      {"noshade", ATTR_NOSHADE},
+      {"onkeydown", ATTR_ONKEYDOWN},
+      {"hidden", ATTR_HIDDEN},
+      {"unknown", ATTR_UNKNOWN},
       {"onchange", ATTR_ONCHANGE},
-      {"label", ATTR_LABEL},
-      {"align", ATTR_ALIGN},
-      {"class", ATTR_CLASS},
-      {"min", ATTR_MIN},
-      {"name", ATTR_NAME},
+      {"http-equiv", ATTR_HTTP_EQUIV},
+      {"onfocus", ATTR_ONFOCUS},
+      {"onreset", ATTR_ONRESET},
+      {"noresize", ATTR_NORESIZE},
+      {"onresize", ATTR_ONRESIZE},
+      {"src", ATTR_SRC},
+      {"rev", ATTR_REV},
+      {"precision", ATTR_PRECISION},
+      {"pluginpage", ATTR_PLUGINPAGE},
+      {"version", ATTR_VERSION},
       {"rel", ATTR_REL},
-      {"challenge", ATTR_CHALLENGE},
-      {"html", ATTR_HTML},
-      {"max", ATTR_MAX},
+      {"visibility", ATTR_VISIBILITY},
+      {"pluginspage", ATTR_PLUGINSPAGE},
+      {"start", ATTR_START},
+      {"cellpadding", ATTR_CELLPADDING},
+      {"rows", ATTR_ROWS},
       {"color", ATTR_COLOR},
+      {"height", ATTR_HEIGHT},
+      {"checked", ATTR_CHECKED},
+      {"dir", ATTR_DIR},
+      {"challenge", ATTR_CHALLENGE},
+      {"label", ATTR_LABEL},
+      {"ondrop", ATTR_ONDROP},
+      {"codebase", ATTR_CODEBASE},
+      {"standby", ATTR_STANDBY},
+      {"language", ATTR_LANGUAGE},
       {"tabindex", ATTR_TABINDEX},
-      {"char", ATTR_CHAR},
+      {"direction", ATTR_DIRECTION},
+      {"coords", ATTR_COORDS},
+      {"wrap", ATTR_WRAP},
+      {"nowrap", ATTR_NOWRAP},
       {"clear", ATTR_CLEAR},
-      {"accesskey", ATTR_ACCESSKEY},
+      {"rowspan", ATTR_ROWSPAN},
+      {"onscroll", ATTR_ONSCROLL},
       {"contenteditable", ATTR_CONTENTEDITABLE},
-      {"method", ATTR_METHOD},
-      {"oncontextmenu", ATTR_ONCONTEXTMENU},
-      {"dir", ATTR_DIR},
-      {"onfocus", ATTR_ONFOCUS},
-      {"classid", ATTR_CLASSID},
-      {"media", ATTR_MEDIA},
-      {"onreset", ATTR_ONRESET},
-      {"datetime", ATTR_DATETIME},
-      {"ondblclick", ATTR_ONDBLCLICK},
-      {"src", ATTR_SRC},
-      {"codebase", ATTR_CODEBASE},
-      {"start", ATTR_START},
-      {"scheme", ATTR_SCHEME},
+      {"target", ATTR_TARGET},
+      {"onselectstart", ATTR_ONSELECTSTART},
+      {"rules", ATTR_RULES},
+      {"results", ATTR_RESULTS},
+      {"disabled", ATTR_DISABLED},
       {"declare", ATTR_DECLARE},
-      {"longdesc", ATTR_LONGDESC},
-      {"direction", ATTR_DIRECTION},
-      {"standby", ATTR_STANDBY},
-      {"noresize", ATTR_NORESIZE},
-      {"onresize", ATTR_ONRESIZE},
+      {"for", ATTR_FOR},
+      {"truespeed", ATTR_TRUESPEED},
+      {"onkeypress", ATTR_ONKEYPRESS},
       {"readonly", ATTR_READONLY},
+      {"ondrag", ATTR_ONDRAG},
+      {"scrolling", ATTR_SCROLLING},
+      {"char", ATTR_CHAR},
+      {"min", ATTR_MIN},
       {"charset", ATTR_CHARSET},
       {"onsearch", ATTR_ONSEARCH},
-      {"rules", ATTR_RULES},
-      {"onscroll", ATTR_ONSCROLL},
-      {"rows", ATTR_ROWS},
-      {"onmouseout", ATTR_ONMOUSEOUT},
-      {"coords", ATTR_COORDS},
-      {"for", ATTR_FOR},
+      {"profile", ATTR_PROFILE},
+      {"archive", ATTR_ARCHIVE},
+      {"composite", ATTR_COMPOSITE},
+      {"defer", ATTR_DEFER},
+      {"name", ATTR_NAME},
+      {"ondblclick", ATTR_ONDBLCLICK},
+      {"ondragend", ATTR_ONDRAGEND},
+      {"ismap", ATTR_ISMAP},
+      {"headers", ATTR_HEADERS},
+      {"compact", ATTR_COMPACT},
+      {"max", ATTR_MAX},
+      {"scrolldelay", ATTR_SCROLLDELAY},
       {"onabort", ATTR_ONABORT},
-      {"target", ATTR_TARGET},
-      {"language", ATTR_LANGUAGE},
+      {"accept-charset", ATTR_ACCEPT_CHARSET},
+      {"ondragleave", ATTR_ONDRAGLEAVE},
       {"href", ATTR_HREF},
+      {"media", ATTR_MEDIA},
       {"nohref", ATTR_NOHREF},
-      {"headers", ATTR_HEADERS},
-      {"disabled", ATTR_DISABLED},
-      {"vlink", ATTR_VLINK},
+      {"datetime", ATTR_DATETIME},
+      {"usemap", ATTR_USEMAP},
+      {"pluginurl", ATTR_PLUGINURL},
+      {"placeholder", ATTR_PLACEHOLDER},
+      {"oversrc", ATTR_OVERSRC},
+      {"oncontextmenu", ATTR_ONCONTEXTMENU},
+      {"scheme", ATTR_SCHEME},
       {"onblur", ATTR_ONBLUR},
-      {"value", ATTR_VALUE},
-      {"maxlength", ATTR_MAXLENGTH},
-      {"defer", ATTR_DEFER},
-      {"ondrag", ATTR_ONDRAG},
-      {"results", ATTR_RESULTS},
+      {"bgcolor", ATTR_BGCOLOR},
+      {"multiple", ATTR_MULTIPLE},
+      {"html", ATTR_HTML},
+      {"onmouseup", ATTR_ONMOUSEUP},
+      {"onmouseout", ATTR_ONMOUSEOUT},
+      {"autocomplete", ATTR_AUTOCOMPLETE},
+      {"method", ATTR_METHOD},
       {"onmousedown", ATTR_ONMOUSEDOWN},
-      {"top", ATTR_TOP},
-      {"nosave", ATTR_NOSAVE},
-      {"loop", ATTR_LOOP},
-      {"type", ATTR_TYPE},
-      {"scrolldelay", ATTR_SCROLLDELAY},
-      {"oncopy", ATTR_ONCOPY},
-      {"enctype", ATTR_ENCTYPE},
-      {"onsubmit", ATTR_ONSUBMIT},
-      {"accept", ATTR_ACCEPT},
-      {"ondragend", ATTR_ONDRAGEND},
-      {"incremental", ATTR_INCREMENTAL},
-      {"oninput", ATTR_ONINPUT},
-      {"autosave", ATTR_AUTOSAVE},
-      {"plain", ATTR_PLAIN},
+      {"onbeforecopy", ATTR_ONBEFORECOPY},
+      {"behavior", ATTR_BEHAVIOR},
+      {"onbeforepaste", ATTR_ONBEFOREPASTE},
+      {"hreflang", ATTR_HREFLANG},
+      {"ondragenter", ATTR_ONDRAGENTER},
+      {"prompt", ATTR_PROMPT},
       {"abbr", ATTR_ABBR},
-      {"scrolling", ATTR_SCROLLING},
-      {"keytype", ATTR_KEYTYPE},
-      {"onkeyup", ATTR_ONKEYUP},
-      {"bgcolor", ATTR_BGCOLOR},
-      {"codetype", ATTR_CODETYPE},
-      {"scope", ATTR_SCOPE},
-      {"valign", ATTR_VALIGN},
-      {"span", ATTR_SPAN},
-      {"onpaste", ATTR_ONPASTE},
-      {"rev", ATTR_REV},
-      {"shape", ATTR_SHAPE},
+      {"ondragover", ATTR_ONDRAGOVER},
       {"onbeforecut", ATTR_ONBEFORECUT},
-      {"hreflang", ATTR_HREFLANG},
-      {"hspace", ATTR_HSPACE},
       {"charoff", ATTR_CHAROFF},
-      {"colspan", ATTR_COLSPAN},
-      {"frame", ATTR_FRAME},
-      {"scrollamount", ATTR_SCROLLAMOUNT},
-      {"archive", ATTR_ARCHIVE},
+      {"ondragstart", ATTR_ONDRAGSTART},
+      {"onsubmit", ATTR_ONSUBMIT},
+      {"maxlength", ATTR_MAXLENGTH},
+      {"mayscript", ATTR_MAYSCRIPT},
       {"border", ATTR_BORDER},
-      {"pagex", ATTR_PAGEX},
-      {"pagey", ATTR_PAGEY},
       {"onerror", ATTR_ONERROR},
+      {"incremental", ATTR_INCREMENTAL},
+      {"topmargin", ATTR_TOPMARGIN},
+      {"bgproperties", ATTR_BGPROPERTIES},
+      {"onmouseover", ATTR_ONMOUSEOVER},
       {"background", ATTR_BACKGROUND},
-      {"ondragenter", ATTR_ONDRAGENTER},
-      {"version", ATTR_VERSION},
       {"cellborder", ATTR_CELLBORDER},
-      {"visibility", ATTR_VISIBILITY},
-      {"compact", ATTR_COMPACT},
-      {"ondrop", ATTR_ONDROP},
-      {"wrap", ATTR_WRAP},
-      {"nowrap", ATTR_NOWRAP},
-      {"autocomplete", ATTR_AUTOCOMPLETE},
-      {"multiple", ATTR_MULTIPLE},
-      {"behavior", ATTR_BEHAVIOR},
-      {"marginwidth", ATTR_MARGINWIDTH},
-      {"ondragstart", ATTR_ONDRAGSTART},
-      {"composite", ATTR_COMPOSITE},
-      {"ismap", ATTR_ISMAP},
-      {"cellspacing", ATTR_CELLSPACING},
+      {"frame", ATTR_FRAME},
+      {"scrollamount", ATTR_SCROLLAMOUNT},
       {"leftmargin", ATTR_LEFTMARGIN},
-      {"usemap", ATTR_USEMAP},
-      {"summary", ATTR_SUMMARY},
-      {"cellpadding", ATTR_CELLPADDING},
-      {"precision", ATTR_PRECISION},
-      {"placeholder", ATTR_PLACEHOLDER},
-      {"marginheight", ATTR_MARGINHEIGHT},
-      {"onmouseup", ATTR_ONMOUSEUP},
+      {"onmousemove", ATTR_ONMOUSEMOVE},
+      {"marginwidth", ATTR_MARGINWIDTH},
       {"tableborder", ATTR_TABLEBORDER},
-      {"ondragleave", ATTR_ONDRAGLEAVE},
-      {"rowspan", ATTR_ROWSPAN},
-      {"truespeed", ATTR_TRUESPEED},
-      {"accept-charset", ATTR_ACCEPT_CHARSET},
-      {"http-equiv", ATTR_HTTP_EQUIV},
-      {"profile", ATTR_PROFILE},
-      {"oversrc", ATTR_OVERSRC},
       {"bordercolor", ATTR_BORDERCOLOR},
-      {"onmousemove", ATTR_ONMOUSEMOVE},
-      {"valuetype", ATTR_VALUETYPE},
-      {"onkeypress", ATTR_ONKEYPRESS},
-      {"onmouseover", ATTR_ONMOUSEOVER},
-      {"vspace", ATTR_VSPACE},
-      {"pluginurl", ATTR_PLUGINURL},
-      {"ondragover", ATTR_ONDRAGOVER},
-      {"onbeforecopy", ATTR_ONBEFORECOPY},
-      {"mayscript", ATTR_MAYSCRIPT},
-      {"topmargin", ATTR_TOPMARGIN},
-      {"onbeforepaste", ATTR_ONBEFOREPASTE},
-      {"frameborder", ATTR_FRAMEBORDER},
-      {"pluginpage", ATTR_PLUGINPAGE},
-      {"prompt", ATTR_PROMPT},
-      {"pluginspage", ATTR_PLUGINSPAGE},
-      {"bgproperties", ATTR_BGPROPERTIES}
+      {"marginheight", ATTR_MARGINHEIGHT},
+      {"summary", ATTR_SUMMARY},
+      {"frameborder", ATTR_FRAMEBORDER}
     };
 
   static const short lookup[] =
     {
+        -1,   -1,   -1,    0,   -1,   -1,   -1,   -1,
+        -1,    1,   -1,   -1,   -1,   -1,    2,   -1,
+        -1,    3,   -1,    4,    5,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,    6,   -1,    7,
+         8,   -1,    9,   10,   -1,   -1,   -1,   11,
+        -1,   -1,   12,   -1,   -1,   -1,   13,   14,
+        -1,   15,   -1,   -1,   -1,   16,   -1,   17,
+        18,   -1,   -1,   19,   -1,   20,   -1,   21,
+        22,   23,   -1,   -1,   -1,   -1,   -1,   24,
+        25,   -1,   -1,   -1,   -1,   -1,   26,   -1,
+        27,   -1,   28,   -1,   -1,   29,   -1,   30,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   31,   -1,   -1,   -1,   -1,   -1,
+        -1,   32,   -1,   -1,   -1,   33,   -1,   34,
+        -1,   -1,   -1,   35,   -1,   -1,   -1,   36,
+        37,   -1,   -1,   -1,   38,   -1,   -1,   39,
+        -1,   -1,   -1,   -1,   40,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   41,   42,   -1,   -1,
+        -1,   43,   -1,   44,   -1,   -1,   45,   46,
+        -1,   47,   48,   49,   -1,   -1,   50,   -1,
+        -1,   -1,   -1,   -1,   51,   -1,   -1,   -1,
+        -1,   52,   -1,   -1,   -1,   -1,   53,   -1,
+        -1,   54,   55,   -1,   -1,   56,   -1,   -1,
+        -1,   57,   58,   59,   -1,   -1,   -1,   -1,
+        -1,   -1,   60,   -1,   61,   62,   -1,   -1,
+        -1,   -1,   -1,   63,   -1,   64,   -1,   65,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,    0,   -1,    1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,    2,   -1,   -1,
-        -1,    3,   -1,    4,   -1,   -1,   -1,   -1,
-         5,   -1,   -1,   -1,   -1,   -1,    6,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,    7,   -1,
-        -1,   -1,   -1,    8,   -1,   -1,    9,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   10,   -1,
-        -1,   -1,   -1,   -1,   -1,   11,   -1,   12,
-        -1,   13,   -1,   -1,   -1,   -1,   -1,   14,
-        -1,   -1,   -1,   -1,   -1,   -1,   15,   -1,
-        -1,   16,   -1,   17,   -1,   -1,   18,   19,
-        -1,   -1,   -1,   -1,   20,   -1,   21,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   22,
-        23,   24,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   25,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   26,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   27,   28,   29,   -1,   -1,
-        -1,   -1,   30,   -1,   -1,   -1,   -1,   31,
-        -1,   32,   -1,   33,   -1,   34,   -1,   -1,
-        -1,   -1,   35,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   36,   -1,   -1,   37,   38,   -1,   -1,
-        -1,   39,   40,   -1,   -1,   -1,   -1,   41,
-        -1,   -1,   -1,   42,   -1,   43,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   44,   45,   -1,
-        -1,   -1,   -1,   -1,   46,   -1,   -1,   -1,
-        47,   -1,   -1,   -1,   -1,   -1,   48,   49,
-        -1,   50,   -1,   -1,   -1,   -1,   51,   -1,
-        -1,   -1,   52,   -1,   -1,   -1,   -1,   53,
-        -1,   -1,   54,   -1,   55,   56,   -1,   57,
-        -1,   -1,   58,   -1,   -1,   -1,   -1,   59,
-        -1,   60,   61,   62,   63,   64,   -1,   -1,
-        65, -455, -114,   -2,   -1,   -1,   68,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   69,
-        70,   -1,   71,   -1,   -1,   72,   73,   -1,
-        -1,   -1,   -1,   -1,   74,   -1,   -1,   -1,
-        -1,   -1,   75,   -1,   76,   -1,   -1,   -1,
-        77,   -1,   -1,   -1,   78,   -1,   79,   80,
-        -1,   81,   82,   -1,   -1,   -1,   -1,   -1,
-        83,   -1,   -1,   -1,   -1,   -1,   -1,   84,
-        85,   -1,   -1,   -1,   86,   -1,   -1,   -1,
+        -1,   -1,   -1,   66, -411, -114,   -2,   -1,
+        -1,   69,   -1,   -1,   -1,   -1,   70,   71,
+        -1,   -1,   -1,   -1,   -1,   72,   -1,   73,
+        74,   -1,   75,   76,   -1,   -1,   -1,   77,
+        78,   -1,   -1,   79,   80,   81,   82,   83,
+        84,   85,   86,   -1,   87,   -1,   -1,   -1,
+        88,   89,   -1,   -1,   -1,   -1,   90,   91,
+        -1,   92,   -1,   -1,   93,   -1,   94,   -1,
+        -1,   -1,   95,   -1,   96,   -1,   -1,   -1,
+        -1,   -1,   97,   -1,   98,   -1,   -1,   -1,
+        -1,   -1,   99,   -1,  100,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   87,   88,   -1,   -1,   -1,   -1,
-        -1,   89,   90,   -1,   -1,   -1,   91,   -1,
-        92,   -1,   -1,   93,   -1,   -1,   -1,   -1,
+       101,   -1,   -1,   -1,   -1,   -1,   -1,  102,
+        -1,   -1,   -1,   -1,   -1,  103,   -1,   -1,
+        -1,  104,  105,  106,  107,   -1,   -1,  108,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  109,
+        -1,   -1,  110,   -1,   -1,   -1,   -1,  111,
+        -1,   -1,   -1,  112,   -1,   -1,   -1,  113,
+       114,   -1,   -1,   -1,  115,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  116,   -1,
+       117,  118,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  119,  120,   -1,   -1,   -1,  121,
+       122,   -1,  123,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        94,   -1,   -1,   -1,   -1,   95,   -1,   96,
+        -1,  124,  125,   -1,   -1,  126,  127,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   97,   98,   99,   -1,   -1,  100,   -1,
-        -1,  101,   -1,  102,  103,  104,   -1,  105,
+        -1,   -1,  128,   -1,  129,   -1,   -1,  130,
+       131,  132,   -1,  133,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       106,   -1,   -1,   -1,   -1,  107,   -1,   -1,
-       108,   -1,   -1,   -1,   -1,  109,   -1,   -1,
-        -1,   -1,  110,   -1,   -1,   -1,   -1,   -1,
-       111,   -1,  112,  113,   -1,   -1,  114,   -1,
-        -1,  115,  116,   -1,   -1,   -1,   -1,   -1,
-        -1,  117,  118,   -1,   -1,   -1,   -1,   -1,
-        -1,  119,   -1,   -1,  120,  121,   -1,   -1,
-        -1,   -1,  122,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  123,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  124,   -1,   -1,   -1,   -1,
-       125,   -1,   -1,   -1,  126,   -1,   -1,   -1,
-       127,   -1,   -1,   -1,   -1,  128,   -1,   -1,
-        -1,   -1,   -1,   -1,  129,   -1,   -1,  130,
-        -1,   -1,   -1,   -1,   -1,  131,   -1,   -1,
-        -1,   -1,   -1,  132,   -1,   -1,   -1,   -1,
+        -1,   -1,  134,   -1,   -1,  135,   -1,  136,
+       137,  138,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  139,   -1,   -1,   -1,   -1,  140,  141,
+        -1,   -1,   -1,   -1,   -1,  142,  143,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       133,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  134,   -1,   -1,   -1,   -1,   -1,
-        -1,  135,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  136,
+       144,  145,   -1,  146,   -1,   -1,   -1,  147,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  137,   -1,  138,   -1,
-        -1,   -1,   -1,   -1,  139,  140,   -1,   -1,
-        -1,   -1,  141,   -1,   -1,  142,   -1,   -1,
-        -1,   -1,  143,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  144,
-       145,   -1,   -1,   -1,   -1,   -1,  146,   -1,
-        -1,   -1,  147,  148,  149,   -1,   -1,   -1,
-       150,   -1,   -1,  151,   -1,  152,  153,   -1,
-       154,   -1,  155,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  156,  157,   -1,   -1,
+        -1,  148,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  158,   -1,   -1,   -1,   -1,  159,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  149,  150,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  160,   -1,  161,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  162,   -1,   -1,
-        -1,  163,   -1,   -1,   -1,   -1,  164,   -1,
-        -1,  165,  166,  167,   -1,   -1,   -1,   -1,
+        -1,  151,   -1,   -1,   -1,   -1,  152,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  168,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  153,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  154,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  155,  156,  157,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  169,   -1,   -1,   -1,
+        -1,   -1,  158,   -1,   -1,   -1,  159,   -1,
+       160,  161,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  162,   -1,   -1,   -1,
+        -1,   -1,   -1,  163,  164,   -1,   -1,   -1,
+       165,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  166,   -1,   -1,
+       167,   -1,   -1,   -1,  168,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  169,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  170,   -1,   -1,   -1,
-        -1,   -1,   -1,  171,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  170,   -1,   -1,
+        -1,   -1,  171,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  172,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  173,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  172,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  174,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  173,  174,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  175,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  176,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  177,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  178,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -416,21 +416,18 @@ findAttr (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  175,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  176,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  177,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  179,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  178,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -466,7 +463,7 @@ findAttr (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  179
+        -1,   -1,   -1,   -1,   -1,  180
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -631,6 +628,7 @@ static const char * const attrList[] = {
     "ONSCROLL",
     "ONSEARCH",
     "ONSELECT",
+    "ONSELECTSTART",
     "ONSUBMIT",
     "ONUNLOAD",
     "OVERSRC",
index 9500624..313acf4 100644 (file)
@@ -132,62 +132,63 @@ htmlattrs.in by makeattrs, do not edit */
 #define ATTR_ONSCROLL 123
 #define ATTR_ONSEARCH 124
 #define ATTR_ONSELECT 125
-#define ATTR_ONSUBMIT 126
-#define ATTR_ONUNLOAD 127
-#define ATTR_OVERSRC 128
-#define ATTR_PAGEX 129
-#define ATTR_PAGEY 130
-#define ATTR_PLACEHOLDER 131
-#define ATTR_PLAIN 132
-#define ATTR_PLUGINPAGE 133
-#define ATTR_PLUGINSPAGE 134
-#define ATTR_PLUGINURL 135
-#define ATTR_PRECISION 136
-#define ATTR_PROFILE 137
-#define ATTR_PROMPT 138
-#define ATTR_READONLY 139
-#define ATTR_REL 140
-#define ATTR_RESULTS 141
-#define ATTR_REV 142
-#define ATTR_ROWS 143
-#define ATTR_ROWSPAN 144
-#define ATTR_RULES 145
-#define ATTR_SCHEME 146
-#define ATTR_SCOPE 147
-#define ATTR_SCROLLAMOUNT 148
-#define ATTR_SCROLLDELAY 149
-#define ATTR_SCROLLING 150
-#define ATTR_SELECTED 151
-#define ATTR_SHAPE 152
-#define ATTR_SIZE 153
-#define ATTR_SPAN 154
-#define ATTR_SRC 155
-#define ATTR_STANDBY 156
-#define ATTR_START 157
-#define ATTR_STYLE 158
-#define ATTR_SUMMARY 159
-#define ATTR_TABINDEX 160
-#define ATTR_TABLEBORDER 161
-#define ATTR_TARGET 162
-#define ATTR_TEXT 163
-#define ATTR_TITLE 164
-#define ATTR_TOP 165
-#define ATTR_TOPMARGIN 166
-#define ATTR_TRUESPEED 167
-#define ATTR_TYPE 168
-#define ATTR_UNKNOWN 169
-#define ATTR_USEMAP 170
-#define ATTR_VALIGN 171
-#define ATTR_VALUE 172
-#define ATTR_VALUETYPE 173
-#define ATTR_VERSION 174
-#define ATTR_VISIBILITY 175
-#define ATTR_VLINK 176
-#define ATTR_VSPACE 177
-#define ATTR_WIDTH 178
-#define ATTR_WRAP 179
-#define ATTR_Z_INDEX 180
-#define ATTR_LAST_ATTR 180
+#define ATTR_ONSELECTSTART 126
+#define ATTR_ONSUBMIT 127
+#define ATTR_ONUNLOAD 128
+#define ATTR_OVERSRC 129
+#define ATTR_PAGEX 130
+#define ATTR_PAGEY 131
+#define ATTR_PLACEHOLDER 132
+#define ATTR_PLAIN 133
+#define ATTR_PLUGINPAGE 134
+#define ATTR_PLUGINSPAGE 135
+#define ATTR_PLUGINURL 136
+#define ATTR_PRECISION 137
+#define ATTR_PROFILE 138
+#define ATTR_PROMPT 139
+#define ATTR_READONLY 140
+#define ATTR_REL 141
+#define ATTR_RESULTS 142
+#define ATTR_REV 143
+#define ATTR_ROWS 144
+#define ATTR_ROWSPAN 145
+#define ATTR_RULES 146
+#define ATTR_SCHEME 147
+#define ATTR_SCOPE 148
+#define ATTR_SCROLLAMOUNT 149
+#define ATTR_SCROLLDELAY 150
+#define ATTR_SCROLLING 151
+#define ATTR_SELECTED 152
+#define ATTR_SHAPE 153
+#define ATTR_SIZE 154
+#define ATTR_SPAN 155
+#define ATTR_SRC 156
+#define ATTR_STANDBY 157
+#define ATTR_START 158
+#define ATTR_STYLE 159
+#define ATTR_SUMMARY 160
+#define ATTR_TABINDEX 161
+#define ATTR_TABLEBORDER 162
+#define ATTR_TARGET 163
+#define ATTR_TEXT 164
+#define ATTR_TITLE 165
+#define ATTR_TOP 166
+#define ATTR_TOPMARGIN 167
+#define ATTR_TRUESPEED 168
+#define ATTR_TYPE 169
+#define ATTR_UNKNOWN 170
+#define ATTR_USEMAP 171
+#define ATTR_VALIGN 172
+#define ATTR_VALUE 173
+#define ATTR_VALUETYPE 174
+#define ATTR_VERSION 175
+#define ATTR_VISIBILITY 176
+#define ATTR_VLINK 177
+#define ATTR_VSPACE 178
+#define ATTR_WIDTH 179
+#define ATTR_WRAP 180
+#define ATTR_Z_INDEX 181
+#define ATTR_LAST_ATTR 181
 DOM::DOMString getAttrName(unsigned short id);
 
 #endif
index 38f6417..657489c 100644 (file)
@@ -123,6 +123,7 @@ onresize
 onscroll
 onsearch
 onselect
+onselectstart
 onsubmit
 onunload
 oversrc
index 0258b4a..6d460bf 100644 (file)
@@ -30,6 +30,7 @@
 #include "rendering/render_list.h"
 #include "rendering/render_canvas.h"
 #include "xml/dom_elementimpl.h"
+#include "xml/dom2_eventsimpl.h"
 #include "xml/dom_docimpl.h"
 #include "xml/dom_position.h"
 #include "css/cssstyleselector.h"
@@ -1370,12 +1371,20 @@ void RenderObject::dump(QTextStream *stream, QString ind) const
 bool RenderObject::shouldSelect() const
 {
     const RenderObject* curr = this;
+    DOM::NodeImpl *node = 0;
+
     while (curr) {
         if (!curr->style()->userSelect())
             return false;
+       if (!node)
+           node = curr->element();
         curr = curr->parent();
     }
-    return true;
+
+    // somewhere up the render tree there must be an element!
+    assert(node);
+
+    return node->dispatchHTMLEvent(DOM::EventImpl::SELECTSTART_EVENT, true, true);
 }
 
 DOM::NodeImpl* RenderObject::draggableNode(bool dhtmlOK, bool uaOK, bool& dhtmlWillDrag) const
index 66b895f..bb9fb19 100644 (file)
@@ -209,6 +209,8 @@ EventImpl::EventId EventImpl::typeToId(DOMString type)
        return DRAG_EVENT;
     else if (type == "dragend")
        return DRAGEND_EVENT;
+    else if (type == "selectstart")
+       return SELECTSTART_EVENT;
     else if (type == "DOMSubtreeModified")
        return DOMSUBTREEMODIFIED_EVENT;
     else if (type == "DOMNodeInserted")
@@ -315,6 +317,8 @@ DOMString EventImpl::idToType(EventImpl::EventId id)
            return "drag";
        case DRAGEND_EVENT:
            return "dragend";
+       case SELECTSTART_EVENT:
+           return "selectstart";
        case DOMSUBTREEMODIFIED_EVENT:
            return "DOMSubtreeModified";
        case DOMNODEINSERTED_EVENT:
index 22880d4..a620476 100644 (file)
@@ -75,6 +75,8 @@ public:
         DRAGSTART_EVENT,
         DRAG_EVENT,
         DRAGEND_EVENT,
+       // IE selection events
+       SELECTSTART_EVENT,
         // Mutation events
         DOMSUBTREEMODIFIED_EVENT,
         DOMNODEINSERTED_EVENT,