Rewrite the img/form document property lookup strategy. This
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 26 Nov 2002 01:08:45 +0000 (01:08 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 26 Nov 2002 01:08:45 +0000 (01:08 +0000)
should be faster and actually work (gasp!).  Fixes the dhtml
on hrweb to at least show up.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocument::tryGet):
        * khtml/html/html_miscimpl.cpp:
        (HTMLCollectionImpl::nextItem):

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

WebCore/ChangeLog-2002-12-03
WebCore/ChangeLog-2003-10-25
WebCore/ChangeLog-2005-08-23
WebCore/khtml/ecma/kjs_html.cpp
WebCore/khtml/html/html_miscimpl.cpp

index c0293c7..2460fe3 100644 (file)
@@ -1,5 +1,16 @@
 2002-11-25  David Hyatt  <hyatt@apple.com>
 
+       Rewrite the img/form document property lookup strategy.  This
+       should be faster and actually work (gasp!).  Fixes the dhtml
+       on hrweb to at least show up.
+       
+        * khtml/ecma/kjs_html.cpp:
+        (KJS::HTMLDocument::tryGet):
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLCollectionImpl::nextItem):
+
+2002-11-25  David Hyatt  <hyatt@apple.com>
+
        Add support to QFont for multiple families.  NOw all that's left
        is getting the multiple families out of the font and down into
        WebKit.
index c0293c7..2460fe3 100644 (file)
@@ -1,5 +1,16 @@
 2002-11-25  David Hyatt  <hyatt@apple.com>
 
+       Rewrite the img/form document property lookup strategy.  This
+       should be faster and actually work (gasp!).  Fixes the dhtml
+       on hrweb to at least show up.
+       
+        * khtml/ecma/kjs_html.cpp:
+        (KJS::HTMLDocument::tryGet):
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLCollectionImpl::nextItem):
+
+2002-11-25  David Hyatt  <hyatt@apple.com>
+
        Add support to QFont for multiple families.  NOw all that's left
        is getting the multiple families out of the font and down into
        WebKit.
index c0293c7..2460fe3 100644 (file)
@@ -1,5 +1,16 @@
 2002-11-25  David Hyatt  <hyatt@apple.com>
 
+       Rewrite the img/form document property lookup strategy.  This
+       should be faster and actually work (gasp!).  Fixes the dhtml
+       on hrweb to at least show up.
+       
+        * khtml/ecma/kjs_html.cpp:
+        (KJS::HTMLDocument::tryGet):
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLCollectionImpl::nextItem):
+
+2002-11-25  David Hyatt  <hyatt@apple.com>
+
        Add support to QFont for multiple families.  NOw all that's left
        is getting the multiple families out of the font and down into
        WebKit.
index 1c4f642..de7b47e 100644 (file)
@@ -155,16 +155,6 @@ Value KJS::HTMLDocument::tryGet(ExecState *exec, const Identifier &propertyName)
 
   KHTMLView *view = static_cast<DOM::DocumentImpl*>(doc.handle())->view();
 
-  // image and form elements with the name p will be looked up first
-  DOM::HTMLCollection coll = doc.all();
-  DOM::HTMLElement element = coll.namedItem(propertyName.string());
-  if (!element.isNull() &&
-      (element.elementId() == ID_IMG || element.elementId() == ID_FORM))
-  {
-    KJS::HTMLCollection htmlcoll(exec,coll);
-    return htmlcoll.getNamedItems(exec, propertyName); // Get all the items with the same name
-  }
-
   const HashEntry* entry = Lookup::findEntry(&HTMLDocumentTable, propertyName);
   if (entry) {
     switch (entry->value) {
@@ -256,10 +246,43 @@ Value KJS::HTMLDocument::tryGet(ExecState *exec, const Identifier &propertyName)
     return DOMDocument::tryGet(exec, propertyName);
 
   //kdDebug(6070) << "KJS::HTMLDocument::tryGet " << propertyName.qstring() << " not found, returning element" << endl;
+  // image and form elements with the name p will be looked up last
+  DOM::HTMLCollection coll = doc.images();
+  DOM::HTMLCollection coll2 = doc.forms();
+  DOM::HTMLElement element = coll.namedItem(propertyName.string());
+  DOM::HTMLElement element2;
+  if (element.isNull()) {
+    element = coll2.namedItem(propertyName.string());
+    element2 = coll2.nextNamedItem(propertyName.string());
+  }
+  else {
+    element2 = coll.nextNamedItem(propertyName.string());
+    if (element2.isNull())
+        element2 = coll2.namedItem(propertyName.string());
+  }
+  
+  if (!element.isNull() && (element.elementId() == ID_IMG || element.elementId() == ID_FORM))
+  {
+    if (element2.isNull())
+        return getDOMNode(exec, element);
+    else {
+        DOM::HTMLCollection collAll = doc.all();
+        KJS::HTMLCollection htmlcoll(exec,collAll);
+        return htmlcoll.getNamedItems(exec, propertyName); // Get all the items with the same name
+    }
+  }
+
+  DOM::HTMLCollection collAll = doc.all();
+  element = collAll.namedItem(propertyName.string());
+  element2 = collAll.nextNamedItem(propertyName.string());
   if(!element.isNull())
   {
-    KJS::HTMLCollection htmlcoll(exec,coll);
-    return htmlcoll.getNamedItems(exec, propertyName); // Get all the items with the same name
+    if (element2.isNull())
+      return getDOMNode(exec, element);
+    else {
+      KJS::HTMLCollection htmlcoll(exec,coll);
+      return htmlcoll.getNamedItems(exec, propertyName); // Get all the items with the same name
+    }
   }
   return Undefined();
 }
index 5a7b776..d8bb9e4 100644 (file)
@@ -255,7 +255,7 @@ NodeImpl *HTMLCollectionImpl::nextItem() const
         return retval;
     }
     // retval was 0, means we have to go up
-    while( !retval && currentItem->parentNode()
+    while( !retval && currentItem && currentItem->parentNode()
            && currentItem->parentNode() != base )
     {
         currentItem = currentItem->parentNode();