Fix for 3867759, .mac regression where scrollers don't show up. Make sure you can...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Feb 2005 22:30:56 +0000 (22:30 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Thu, 10 Feb 2005 22:30:56 +0000 (22:30 +0000)
.height properties on the Image object.

        Reviewed by John Sullivan

        * khtml/ecma/kjs_html.cpp:
        (ImageConstructorImp::construct):
        (Image::getValueProperty):
        (Image::putValue):
        (Image::Image):
        * khtml/ecma/kjs_html.h:

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/ecma/kjs_html.cpp
WebCore/khtml/ecma/kjs_html.h

index 38a22f8..81de011 100644 (file)
@@ -1,3 +1,17 @@
+2005-02-10  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3867759, .mac regression where scrollers don't show up.  Make sure you can set the .width and
+       .height properties on the Image object.
+       
+        Reviewed by John Sullivan
+
+        * khtml/ecma/kjs_html.cpp:
+        (ImageConstructorImp::construct):
+        (Image::getValueProperty):
+        (Image::putValue):
+        (Image::Image):
+        * khtml/ecma/kjs_html.h:
+
 2005-02-10  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by Chris
index 594c761..5735dbd 100644 (file)
@@ -3340,14 +3340,25 @@ bool ImageConstructorImp::implementsConstruct() const
   return true;
 }
 
-Object ImageConstructorImp::construct(ExecState *, const List &)
+Object ImageConstructorImp::construct(ExecState * exec, const List & list)
 {
-  /* TODO: fetch optional height & width from arguments */
-
-  Object result(new Image(doc));
-  /* TODO: do we need a prototype ? */
-
-  return result;
+    bool widthSet = false, heightSet = false;
+    int width = 0, height = 0;
+    if (list.size() > 0) {
+        widthSet = true;
+        Value w = list.at(0);
+        width = w.toInt32(exec);
+    }
+    if (list.size() > 1) {
+        heightSet = true;
+        Value h = list.at(1);
+        height = h.toInt32(exec);
+    }
+        
+    Object result(new Image(doc, widthSet, width, heightSet, height));
+  
+    /* TODO: do we need a prototype ? */
+    return result;
 }
 
 const ClassInfo KJS::Image::info = { "Image", 0, &ImageTable, 0 };
@@ -3381,22 +3392,26 @@ Value Image::getValueProperty(ExecState *, int token) const
       return Null();
     }
   case Width: {
-    int width = 0;
+    if (widthSet)
+        return Number(width);
+    int w = 0;
     if (img) {
       QSize size = img->pixmap_size();
       if (size.isValid())
-        width = size.width();
+        w = size.width();
     }
-    return Number(width);
+    return Number(w);
   }
   case Height: {
-    int height = 0;
+    if (heightSet)
+        return Number(height);
+    int h = 0;
     if (img) {
       QSize size = img->pixmap_size();
       if (size.isValid())
-        height = size.height();
+        h = size.height();
     }
-    return Number(height);
+    return Number(h);
   }
   default:
     kdWarning() << "Image::getValueProperty unhandled token " << token << endl;
@@ -3425,6 +3440,14 @@ void Image::putValue(ExecState *exec, int token, const Value& value, int /*attr*
     onLoadListener = Window::retrieveActive(exec)->getJSEventListener(value, true);
     if (onLoadListener) onLoadListener->ref();
     break;
+  case Width:
+    widthSet = true;
+    width = value.toInt32(exec);
+    break;
+  case Height:
+    heightSet = true;
+    height = value.toInt32(exec);
+    break;
   default:
     kdWarning() << "HTMLDocument::putValue unhandled token " << token << endl;
   }
@@ -3439,9 +3462,13 @@ void Image::notifyFinished(khtml::CachedObject *)
   }
 }
 
-Image::Image(const DOM::Document &d)
+Image::Image(const DOM::Document &d, bool ws, int w, bool hs, int h)
   : doc(static_cast<DOM::DocumentImpl*>(d.handle())), img(0), onLoadListener(0)
 {
+      widthSet = ws;
+      width = w;
+      heightSet = hs;
+      height = h;
 }
 
 Image::~Image()
index 9d71d83..0fa7c70 100644 (file)
@@ -223,7 +223,7 @@ namespace KJS {
 
   class Image : public DOMObject, public khtml::CachedObjectClient {
   public:
-    Image(const DOM::Document &d);
+    Image(const DOM::Document &d, bool ws, int w, bool hs, int h);
     ~Image();
     virtual Value tryGet(ExecState *exec, const Identifier &propertyName) const;
     Value getValueProperty(ExecState *exec, int token) const;
@@ -242,6 +242,10 @@ namespace KJS {
     QGuardedPtr<DOM::DocumentImpl> doc;
     khtml::CachedImage* img;
     JSEventListener *onLoadListener;
+    bool widthSet;
+    bool heightSet;
+    int width;
+    int height;
   };
 
   ////////////////////// Context2D Object ////////////////////////