[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

kocienda kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:51:58 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 60bddac02e2da9792985163692bbf10861d62010
Author: kocienda <kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Nov 8 14:53:32 2001 +0000

    A large set of changes:
    
    	- I did a pass over all .mm files in WebCore/src/kwq, adding
    	actual return values for all functions that return something
    	(there were *many* cases where callers were left dangling).
    	- I added numerous log statements throughout the code.
    	- I made the log statement system configurable at runtime, so the
    	amount of logging can be increased or decreased as desired.
    	- I added an implementation for QVariant.
    	- I cleaned up the implementations of QBrush and QPen.
    	- I made general fixups and cleanups in various places.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@423 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/khtml/css/html4.css b/WebCore/khtml/css/html4.css
index 4888612..4b97b7e 100644
--- a/WebCore/khtml/css/html4.css
+++ b/WebCore/khtml/css/html4.css
@@ -450,6 +450,7 @@ acronym {
 }
 
 :focus          { outline: 1px dotted invert }
+a:link          { color: blue; text-decoration: underline; }
 a:link:active          { color: red; outline: 1px dotted invert; }
 a:visited:active          { color: red; outline: 1px dotted invert; }
 
diff --git a/WebCore/khtml/ecma/.cvsignore b/WebCore/khtml/ecma/.cvsignore
index 708a929..f8af57a 100644
--- a/WebCore/khtml/ecma/.cvsignore
+++ b/WebCore/khtml/ecma/.cvsignore
@@ -5,5 +5,6 @@ Makefile.in
 *.dep
 *.moc
 *.gperf
+testecma
 export-objects
 export-headers
diff --git a/WebCore/khtml/rendering/render_text.cpp b/WebCore/khtml/rendering/render_text.cpp
index 2365b14..e44e521 100644
--- a/WebCore/khtml/rendering/render_text.cpp
+++ b/WebCore/khtml/rendering/render_text.cpp
@@ -107,7 +107,7 @@ void TextSlave::printDecoration( QPainter *pt, RenderText* p, int _tx, int _ty,
     int width = m_width;
 
     if( begin )
- 	width -= p->paddingLeft() + p->borderLeft();
+ 	    width -= p->paddingLeft() + p->borderLeft();
 
     if ( end )
         width -= p->paddingRight() + p->borderRight();
@@ -115,6 +115,11 @@ void TextSlave::printDecoration( QPainter *pt, RenderText* p, int _tx, int _ty,
     int underlineOffset = ( pt->fontMetrics().height() + m_baseline ) / 2;
     if(underlineOffset <= m_baseline) underlineOffset = m_baseline+1;
 
+    // FIXME: [kocienda]
+    // This hack gets the underline in a better place but we should be
+    // doing something better.
+    underlineOffset+=2;
+
     if(deco & UNDERLINE)
         pt->drawLine(_tx, _ty + underlineOffset, _tx + width, _ty + underlineOffset );
     if(deco & OVERLINE)
diff --git a/WebCore/kwq/KWQApplication.mm b/WebCore/kwq/KWQApplication.mm
index eb031d2..e2bcd7f 100644
--- a/WebCore/kwq/KWQApplication.mm
+++ b/WebCore/kwq/KWQApplication.mm
@@ -22,6 +22,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+#include <kwqdebug.h>
 
 #include <qapplication.h>
 #include <qpalette.h>
@@ -30,6 +31,7 @@
 
 // FIXME: 
 static QPalette DEFAULT_PALETTE = QPalette();
+static QSize DEFAULT_SIZE = QSize(0,0);
 
 QPalette QApplication::palette(const QWidget *p)
 {
@@ -39,46 +41,46 @@ QPalette QApplication::palette(const QWidget *p)
 
 QWidget *QApplication::desktop()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
     return 0;
 }
 
 
 int QApplication::startDragDistance()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
      return 2;
 }
 
 
 QSize QApplication::globalStrut()
 {
-    static QSize *structSize = new QSize(0,0); 
-    NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
-    return *structSize;
+    _logNotYetImplemented();
+    return DEFAULT_SIZE;
 }
 
 
 void QApplication::setOverrideCursor(const QCursor &c)
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 void QApplication::restoreOverrideCursor()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 bool QApplication::sendEvent(QObject *o, QEvent *e)
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 void QApplication::sendPostedEvents(QObject *receiver, int event_type)
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQBitmap.mm b/WebCore/kwq/KWQBitmap.mm
index 7f632fe..65c2ea2 100644
--- a/WebCore/kwq/KWQBitmap.mm
+++ b/WebCore/kwq/KWQBitmap.mm
@@ -23,35 +23,43 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qbitmap.h>
 
 QBitmap::QBitmap()
 {
+    _logNotYetImplemented();
 }
 
 
 QBitmap::QBitmap(int,int)
 {
+    _logNotYetImplemented();
 }
 
 
 QBitmap::QBitmap(const QBitmap &)
 {
+    _logNotYetImplemented();
 }
 
 
 QBitmap &QBitmap::operator=(const QBitmap &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
 QBitmap &QBitmap::operator=(const QPixmap &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
 QBitmap &QBitmap::operator=(const QImage &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
-
-
diff --git a/WebCore/kwq/KWQBrush.h b/WebCore/kwq/KWQBrush.h
index c8222ee..f859435 100644
--- a/WebCore/kwq/KWQBrush.h
+++ b/WebCore/kwq/KWQBrush.h
@@ -33,6 +33,8 @@
 #include "qcolor.h"
 #include "qnamespace.h"
 
+class QBrushPrivate;
+
 // class QBrush ================================================================
 
 class QBrush : public Qt {
@@ -48,6 +50,7 @@ public:
 
     QBrush();
     QBrush(const QColor &);
+    QBrush::QBrush(const QColor &c, BrushStyle style);
     QBrush(const QBrush &);
     QBrush &operator=(const QBrush &);
     ~QBrush();
@@ -56,6 +59,8 @@ public:
     
     const QColor &color() const;
     void setColor(const QColor &);
+    BrushStyle style() const;
+    void setStyle(BrushStyle);
     
     // operators ---------------------------------------------------------------
     
@@ -64,8 +69,14 @@ public:
 
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
-    QColor qcolor;
-    BrushStyle qbrushstyle;
+private:
+    void init(const QColor &, BrushStyle);
+    QBrush copy() const;
+    void detach();
+    struct QBrushData : public QShared { 
+        BrushStyle brushStyle;
+        QColor color;
+    } *data;
 
 }; // class QBrush =============================================================
 
diff --git a/WebCore/kwq/KWQBrush.mm b/WebCore/kwq/KWQBrush.mm
index 30287d6..376b91a 100644
--- a/WebCore/kwq/KWQBrush.mm
+++ b/WebCore/kwq/KWQBrush.mm
@@ -25,52 +25,91 @@
 
 #include <qbrush.h>
 
+void QBrush::init(const QColor &color, BrushStyle style)
+{
+    data = new QBrushData();
+    data->color = color;
+    data->brushStyle = style;
+}
+
 QBrush::QBrush()
 {
-    qcolor = Qt::black;
-    qbrushstyle = SolidPattern;
+    init(Qt::black, SolidPattern);
 }
 
 
 QBrush::QBrush(const QColor &c)
 {
-    qcolor = c;
-    qbrushstyle = SolidPattern;
+    init(c, SolidPattern);
 }
 
+QBrush::QBrush(const QColor &c, BrushStyle style)
+{
+    init(c, style);
+}
 
 QBrush::QBrush(const QBrush &copyFrom)
 {
-    qcolor = copyFrom.qcolor;
-    qbrushstyle = copyFrom.qbrushstyle;
+    data = copyFrom.data;
+    data->ref();
 }
 
-
 QBrush &QBrush::operator=(const QBrush &assignFrom)
 {
-    qcolor = assignFrom.qcolor;
-    qbrushstyle = assignFrom.qbrushstyle;
+    assignFrom.data->ref();
+    if (data->deref()) {
+        delete data;
+    }
+    data = assignFrom.data;
     return *this;
 }
 
-
 QBrush::~QBrush()
 {
+    if (data->deref()) {
+        delete data;
+    }
+}
+
+QBrush QBrush::copy() const
+{
+    return QBrush(data->color, data->brushStyle);
+}
+
+void QBrush::detach()
+{
+    if (data->count != 1) {
+        *this = copy();
+    }
 }
 
 const QColor &QBrush::color() const
 {
-    return qcolor;
+    return data->color;
 }
 
 void QBrush::setColor(const QColor &c)
 {
-    qcolor = c;
+    detach();
+    data->color = c;
+}
+
+Qt::BrushStyle QBrush::style() const
+{
+    return data->brushStyle;
+}
+
+void QBrush::setStyle(Qt::BrushStyle bs)
+{
+    detach();
+    data->brushStyle = bs;
 }
 
 bool QBrush::operator==(const QBrush &compareTo) const
 {
-    return qcolor == compareTo.qcolor;
+    return (compareTo.data == data) || 
+        (compareTo.data->brushStyle == data->brushStyle && 
+         compareTo.data->color == data->color);
 }
 
 
diff --git a/WebCore/kwq/KWQColor.mm b/WebCore/kwq/KWQColor.mm
index 13c2b00..dec0cd5 100644
--- a/WebCore/kwq/KWQColor.mm
+++ b/WebCore/kwq/KWQColor.mm
@@ -49,10 +49,13 @@ QColor::QColor()
 
 QColor::QColor(int r, int g, int b)
 {
-    if ( !globals_init )
-	initGlobalColors();
-    else
+    color = nil;
+    if (!globals_init) {
+	    initGlobalColors();
+	}
+    else {
         _initialize (r, g, b);
+    }
 }
 
 QColor::QColor(const QString &name)
@@ -85,14 +88,12 @@ QColor::~QColor(){
 
 QColor::QColor(const QColor &copyFrom)
 {
-    if (color == copyFrom.color)
-        return;
-    //if (color != nil)
-    //    [color release];
-    if (copyFrom.color != nil)
+    if (copyFrom.color != nil) {
         color = [copyFrom.color retain];
-    else
+    }
+    else {
         color = nil;
+    }
 }
 
 QString QColor::name() const
@@ -241,9 +242,41 @@ void QColor::setRgb(int rgb)
 }
 
 
-void QColor::hsv(int *, int *, int *) const
+void QColor::hsv(int *h, int *s, int *v) const
 {
-    _logNotYetImplemented();
+    int r = red(); 
+    int g = green(); 
+    int b = blue(); 
+    int i, w, x, f;
+        
+    x = w = r;
+    
+    if (g > x) {
+        x = g;
+    } 
+    if (g < w) {
+        w = g;
+    }
+    
+    if (b > x) {
+        x = b;
+    } 
+    if (b < w) {
+        w = b;
+    }
+  
+    if (w == x) {
+        *h = -1;
+        *s = 0;
+        *v = w;
+    }
+    else {
+        f = (r == x) ? g - b : ((g == x) ? b - r : r - g); 
+        i = (r == x) ? 3 : ((g == x) ? 5 : 1); 
+        *h = i - f /(w - x);
+        *s = (w - x)/w;
+        *v = w; 
+    }
 }
 
 QColor QColor::light(int f = 150) const
diff --git a/WebCore/kwq/KWQColorGroup.mm b/WebCore/kwq/KWQColorGroup.mm
index fdcfd4b..b3bb094 100644
--- a/WebCore/kwq/KWQColorGroup.mm
+++ b/WebCore/kwq/KWQColorGroup.mm
@@ -22,6 +22,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+#include <kwqdebug.h>
 
 #include <qpalette.h>
 #include <qcolor.h>
@@ -64,8 +65,6 @@ private:
     QBrush *brushes;  
 };
 
-#include <kwqdebug.h>
-
 QColorGroup::QColorGroup()
 {
     d = new QColorGroupPrivate();
diff --git a/WebCore/kwq/KWQComboBox.mm b/WebCore/kwq/KWQComboBox.mm
index b368b3a..9a3d9e0 100644
--- a/WebCore/kwq/KWQComboBox.mm
+++ b/WebCore/kwq/KWQComboBox.mm
@@ -68,6 +68,7 @@ int QComboBox::count() const
 QListBox *QComboBox::listBox() const
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
@@ -80,6 +81,7 @@ void QComboBox::popup()
 bool QComboBox::eventFilter(QObject *object, QEvent *event)
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
diff --git a/WebCore/kwq/KWQCompletion.mm b/WebCore/kwq/KWQCompletion.mm
index a0dcc44..94f5a31 100644
--- a/WebCore/kwq/KWQCompletion.mm
+++ b/WebCore/kwq/KWQCompletion.mm
@@ -23,34 +23,36 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <KWQCompletion.h>
 
 KCompletion::KCompletion()
 {
+    _logNotYetImplemented();
 }
 
-
 KCompletion::~KCompletion()
 {
+    _logNotYetImplemented();
 }
 
-
 void KCompletion::setItems(const QStringList &)
 {
+    _logNotYetImplemented();
 }
 
-
 KCompletionBase::KCompletionBase()
 {
+    _logNotYetImplemented();
 }
 
-
 KCompletionBase::~KCompletionBase()
 {
+    _logNotYetImplemented();
 }
 
 KCompletion *KCompletionBase::completionObject(bool hsig = true)
 {
+    _logNotYetImplemented();
+    return 0L;
 }
-
-
diff --git a/WebCore/kwq/KWQCursor.mm b/WebCore/kwq/KWQCursor.mm
index f3be66f..9948928 100644
--- a/WebCore/kwq/KWQCursor.mm
+++ b/WebCore/kwq/KWQCursor.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qcursor.h>
 
 const QCursor & Qt::sizeAllCursor = QCursor();
@@ -31,27 +32,32 @@ const QCursor & Qt::splitVCursor = QCursor();
 
 QCursor::QCursor()
 {
+    _logNotYetImplemented();
 }
 
-
 QCursor::QCursor(const QPixmap &pixmap, int hotX, int hotY)
 {
-}
-
-QPoint QCursor::pos()
-{
+    _logNotYetImplemented();
 }
 
 QCursor::QCursor(const QCursor &)
 {
+    _logNotYetImplemented();
 }
 
-
 QCursor::~QCursor()
 {
+    _logNotYetImplemented();
 }
       
+QPoint QCursor::pos()
+{
+    _logNotYetImplemented();
+    return QPoint();
+}
 
 QCursor &QCursor::operator=(const QCursor &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
diff --git a/WebCore/kwq/KWQDrawUtil.mm b/WebCore/kwq/KWQDrawUtil.mm
index 88c9198..47d8c59 100644
--- a/WebCore/kwq/KWQDrawUtil.mm
+++ b/WebCore/kwq/KWQDrawUtil.mm
@@ -23,11 +23,82 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qdrawutil.h>
 
-void qDrawShadePanel(QPainter *, int, int, int, int, const QColorGroup &, bool
-        sunken = FALSE, int lineWidth = 1, const QBrush *fill = 0)
+void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool
+        sunken = FALSE, int lineWidth, const QBrush *fill)
 {
-    NSLog (@"WARNING %s:%s:%d (NOT YET IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    if ( w == 0 || h == 0 ) {
+        return;
+    }
+
+    QPen oldPen = p->pen();                     // save pen
+    QPointArray a(4 * lineWidth);
+    
+    if (sunken) {
+        p->setPen(g.dark());
+    }
+    else {
+        p->setPen(g.light());
+    }
+
+    int x1, y1, x2, y2;
+    int i;
+    int n = 0;
+    x1 = x;
+    y1 = y2 = y;
+    x2 = x+w-2;
+
+    for (i = 0; i < lineWidth; i++) {             // top shadow
+        a.setPoint(n++, x1, y1++);
+        a.setPoint(n++, x2--, y2++);
+    }
+
+    x2 = x1;
+    y1 = y+h-2;
+
+    for (i = 0; i < lineWidth; i++) {             // left shadow
+        a.setPoint(n++, x1++, y1);
+        a.setPoint(n++, x2++, y2--);
+    }
+
+    p->drawLineSegments(a);
+    n = 0;
+
+    if (sunken) {
+        p->setPen(g.light());
+    }
+    else {
+        p->setPen(g.dark());
+    }
+
+    x1 = x;
+    y1 = y2 = y+h-1;
+    x2 = x+w-1;
+
+    for (i = 0; i < lineWidth; i++) {             // bottom shadow
+        a.setPoint(n++, x1++, y1--);
+        a.setPoint(n++, x2, y2--);
+    }
+
+    x1 = x2;
+    y1 = y;
+    y2 = y+h-lineWidth-1;
+
+    for (i = 0; i < lineWidth; i++) {             // right shadow
+        a.setPoint(n++, x1--, y1++);
+        a.setPoint(n++, x2--, y2);
+    }
+
+    p->drawLineSegments(a);
+    if (fill) {                               // fill with fill color
+        QBrush oldBrush = p->brush();
+        p->setPen(Qt::NoPen);
+        p->setBrush(*fill);
+        p->drawRect(x+lineWidth, y+lineWidth, w-lineWidth*2, h-lineWidth*2);
+        p->setBrush(oldBrush);
+    }
+    p->setPen(oldPen);                        // restore pen
 }
 
diff --git a/WebCore/kwq/KWQEvent.mm b/WebCore/kwq/KWQEvent.mm
index 92180dd..ef2caf3 100644
--- a/WebCore/kwq/KWQEvent.mm
+++ b/WebCore/kwq/KWQEvent.mm
@@ -23,22 +23,30 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qevent.h>
 
+// FIXME: replace this hack
+static const QPoint ORIGIN(0,0);
+
 // class QEvent ================================================================
 
 QEvent::QEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
 QEvent::~QEvent()
 {
+    _logNotYetImplemented();
 }
 
 
 QEvent::Type QEvent::type() const
 {
+    _logNotYetImplemented();
+    return MouseButtonPress;
 }
 
 
@@ -46,46 +54,64 @@ QEvent::Type QEvent::type() const
 
 QMouseEvent::QMouseEvent(Type type, const QPoint &pos, int button, int state)
 {
+    _logNotYetImplemented();
 }
 
 
 int QMouseEvent::x()
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QMouseEvent::y()
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QMouseEvent::globalX()
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QMouseEvent::globalY()
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 const QPoint &QMouseEvent::pos() const
 {
+    _logNotYetImplemented();
+    // FIXME: replace this hack
+    return ORIGIN;
 }
 
 
 Qt::ButtonState QMouseEvent::button()
 {
+    _logNotYetImplemented();
+    return Qt::NoButton;
 }
 
 
 Qt::ButtonState QMouseEvent::state()
 {
+    _logNotYetImplemented();
+    return Qt::NoButton;
 }
 
 
 Qt::ButtonState QMouseEvent::stateAfter()
 {
+    _logNotYetImplemented();
+    return Qt::NoButton;
 }
 
 
@@ -93,16 +119,20 @@ Qt::ButtonState QMouseEvent::stateAfter()
 
 QTimerEvent::QTimerEvent(int timerId)
 {
+    _logNotYetImplemented();
 }
 
 
 QTimerEvent::~QTimerEvent()
 {
+    _logNotYetImplemented();
 }
 
 
 int QTimerEvent::timerId() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
@@ -110,26 +140,33 @@ int QTimerEvent::timerId() const
 
 QKeyEvent::QKeyEvent(Type, Key, int, int)
 {
+    _logNotYetImplemented();
 }
 
 
 int QKeyEvent::key() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 Qt::ButtonState QKeyEvent::state() const
 {
+    _logNotYetImplemented();
+    return Qt::NoButton;
 }
 
 
 void QKeyEvent::accept()
 {
+    _logNotYetImplemented();
 }
 
 
 void QKeyEvent::ignore()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -137,6 +174,7 @@ void QKeyEvent::ignore()
 
 QFocusEvent::QFocusEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -144,6 +182,7 @@ QFocusEvent::QFocusEvent(Type)
 
 QHideEvent::QHideEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -151,6 +190,7 @@ QHideEvent::QHideEvent(Type)
 
 QResizeEvent::QResizeEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -158,6 +198,7 @@ QResizeEvent::QResizeEvent(Type)
 
 QShowEvent::QShowEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -165,16 +206,19 @@ QShowEvent::QShowEvent(Type)
 
 QWheelEvent::QWheelEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
 void QWheelEvent::accept()
 {
+    _logNotYetImplemented();
 }
 
 
 void QWheelEvent::ignore()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -182,4 +226,5 @@ void QWheelEvent::ignore()
 
 QCustomEvent::QCustomEvent(Type)
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/kwq/KWQFontDatabase.mm b/WebCore/kwq/KWQFontDatabase.mm
index 6043ebb..a4713c9 100644
--- a/WebCore/kwq/KWQFontDatabase.mm
+++ b/WebCore/kwq/KWQFontDatabase.mm
@@ -23,29 +23,39 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qfontdatabase.h>
 
 QFontDatabase::QFontDatabase()
 {
+    _logNotYetImplemented();
 }
 
 
 QFont QFontDatabase::font(const QString, const QString &, int, const QString charSetName)
 {
+    _logNotYetImplemented();
+    return QFont();
 }
 
 
 bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &style, const QString &charSet) const
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 QValueList<int> QFontDatabase::smoothSizes(const QString &, const QString &, const QString &charSet)
 {
+    _logNotYetImplemented();
+    return QValueList<int>();
 }
 
 
 QString QFontDatabase::styleString(const QFont &)
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
diff --git a/WebCore/kwq/KWQFontInfo.mm b/WebCore/kwq/KWQFontInfo.mm
index 8eb33b5..b398c2e 100644
--- a/WebCore/kwq/KWQFontInfo.mm
+++ b/WebCore/kwq/KWQFontInfo.mm
@@ -23,26 +23,31 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-
+#include <kwqdebug.h>
 #include <qfontinfo.h>
 
 QFontInfo::QFontInfo(const QFont &)
 {
+    _logNotYetImplemented();
 }
 
 
 QFontInfo::QFontInfo(const QFontInfo &)
 {
+    _logNotYetImplemented();
 }
 
 
 QFontInfo::~QFontInfo()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QFontInfo::fixedPitch() const
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
@@ -50,5 +55,7 @@ bool QFontInfo::fixedPitch() const
 
 QFontInfo &QFontInfo::operator=(const QFontInfo &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
diff --git a/WebCore/kwq/KWQFontMetrics.mm b/WebCore/kwq/KWQFontMetrics.mm
index a86a48a..56b0bdf 100644
--- a/WebCore/kwq/KWQFontMetrics.mm
+++ b/WebCore/kwq/KWQFontMetrics.mm
@@ -22,10 +22,12 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+#include <math.h>
 
+#include <kwqdebug.h>
 #include <qfontmetrics.h>
 
-#include <kwqdebug.h>
+#define ROUND_TO_INT(f) ((int)rint((f)))
 
 QFontMetrics::QFontMetrics()
 {
@@ -83,7 +85,7 @@ int QFontMetrics::ascent() const
     // Qt seems to use [font defaultLineHeightForFont] + [font descender] instead
     // of what seems more natural [font ascender].
     // Remember that descender is negative. 
-    return (int)([data->font defaultLineHeightForFont] + [data->font descender]);
+    return ROUND_TO_INT([data->font defaultLineHeightForFont] + [data->font descender]);
 }
 
 
@@ -92,7 +94,7 @@ int QFontMetrics::height() const
     // According to Qt documentation: 
     // "This is always equal to ascent()+descent()+1 (the 1 is for the base line)."
     // However, the [font defaultLineHeightForFont] seems more appropriate.
-    return (int)[data->font defaultLineHeightForFont];
+    return ROUND_TO_INT([data->font defaultLineHeightForFont]);
 }
 
 
@@ -100,14 +102,14 @@ int QFontMetrics::width(QChar qc) const
 {
     ushort c = qc.unicode();
     NSString *string = [NSString stringWithCharacters: (const unichar *)&c length: 1];
-    return (int)[data->font widthOfString: string];
+    return ROUND_TO_INT([data->font widthOfString: string]);
 }
 
 
 int QFontMetrics::width(char c) const
 {
     NSString *string = [NSString stringWithCString: &c length: 1];
-    return (int)[data->font widthOfString: string];
+    return ROUND_TO_INT([data->font widthOfString: string]);
 }
 
 
@@ -119,32 +121,33 @@ int QFontMetrics::width(const QString &qstring, int len) const
         string = QSTRING_TO_NSSTRING_LENGTH (qstring, len);
     else
         string = QSTRING_TO_NSSTRING (qstring);
-    return (int)[data->font widthOfString: string];
+    return ROUND_TO_INT([data->font widthOfString: string]);
 }
 
 
 int QFontMetrics::descent() const
 {
-    return -(int)[data->font descender];
+    return -ROUND_TO_INT([data->font descender]);
 }
 
 
 QRect QFontMetrics::boundingRect(const QString &, int len=-1) const
 {
     _logNotYetImplemented();
+    return QRect();
 }
 
 
 QRect QFontMetrics::boundingRect(QChar) const
 {
     _logNotYetImplemented();
+    return QRect();
 }
 
 
 QSize QFontMetrics::size(int, const QString &qstring, int len, int tabstops, 
     int *tabarray, char **intern ) const
 {
-    _logNotYetImplemented();
     if (tabstops != 0){
         NSLog (@"ERROR:  QFontMetrics::size() tabs not supported.\n");
     }
diff --git a/WebCore/kwq/KWQHBox.mm b/WebCore/kwq/KWQHBox.mm
index 9380340..deab0ec 100644
--- a/WebCore/kwq/KWQHBox.mm
+++ b/WebCore/kwq/KWQHBox.mm
@@ -41,11 +41,13 @@ QHBox::QHBox()
 
 QHBox::QHBox(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 QHBox::~QHBox()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -62,5 +64,7 @@ void QHBox::setFocusProxy( QWidget *lineEdit)
 
 bool QHBox::setStretchFactor(QWidget*, int stretch)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
diff --git a/WebCore/kwq/KWQImage.mm b/WebCore/kwq/KWQImage.mm
index e2412d5..394d5bd 100644
--- a/WebCore/kwq/KWQImage.mm
+++ b/WebCore/kwq/KWQImage.mm
@@ -23,86 +23,115 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qimage.h>
 
 
 QImage::QImage()
 {
+    _logNotYetImplemented();
 }
 
 
 QImage::QImage(const QImage &)
 {
+    _logNotYetImplemented();
 }
 
 
 QImage::~QImage()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QImage::isNull()
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 QRgb QImage::color(int) const
 {
+    _logNotYetImplemented();
+    return qRgb(0,0,0);
 }
 
 
 void QImage::setColor(int, QRgb)
 {
+    _logNotYetImplemented();
 }
 
 
 int QImage::width() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QImage::height() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QImage::depth() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QImage::pixelIndex(int,int) const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 bool QImage::create(int,int,int,int numColors=0)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 QImage QImage::createAlphaMask(int conversion_flags=0) const
 {
+    _logNotYetImplemented();
+    return QImage();
 }
 
 
 bool QImage::hasAlphaBuffer() const
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 uchar **QImage::jumpTable() const
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
 uchar *QImage::scanLine(int) const
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
 QImage &QImage::operator=(const QImage &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
diff --git a/WebCore/kwq/KWQKApplication.mm b/WebCore/kwq/KWQKApplication.mm
index c1b858f..be59cc4 100644
--- a/WebCore/kwq/KWQKApplication.mm
+++ b/WebCore/kwq/KWQKApplication.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kapp.h>
 
 
@@ -31,18 +32,19 @@ KApplication *KApplication::KApp;
 
 KApplication::KApplication()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 KApplication::~KApplication()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 DCOPClient *KApplication::dcopClient()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
+    return 0L;
 }
 
diff --git a/WebCore/kwq/KWQKCharsets.mm b/WebCore/kwq/KWQKCharsets.mm
index bad62c1..5fddd32 100644
--- a/WebCore/kwq/KWQKCharsets.mm
+++ b/WebCore/kwq/KWQKCharsets.mm
@@ -72,18 +72,20 @@ QFont::CharSet KCharsets::charsetForEncoding(const QString &, bool) const
     return QFont::Latin1;
 }
 
-void KCharsets::setQFont(QFont &, QFont::CharSet) const
+void KCharsets::setQFont(QFont &font, QFont::CharSet) const
 {
     // FIXME: do we need a real implementation here?
-    _logPartiallyImplemented();
+    // [kocienda: 2001-11-05] I don't think we need to implement this
     // do nothing
+    _logNeverImplemented();
 }
 
 void KCharsets::setQFont(QFont &, QString) const
 {
     // FIXME: do we need a real implementation here?
-    _logPartiallyImplemented();
+    // [kocienda: 2001-11-05] I don't think we need to implement this
     // do nothing
+    _logNeverImplemented();
 }
 
 QString KCharsets::name(QFont::CharSet)
diff --git a/WebCore/kwq/KWQKComboBox.mm b/WebCore/kwq/KWQKComboBox.mm
index 476a06f..9298c4a 100644
--- a/WebCore/kwq/KWQKComboBox.mm
+++ b/WebCore/kwq/KWQKComboBox.mm
@@ -22,20 +22,22 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
-
+#include <kwqdebug.h>
 #include <kcombobox.h>
 
-
 KComboBox::KComboBox(QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 
 KComboBox::KComboBox(bool rw, QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 KComboBox::~KComboBox()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQKCompletionBox.mm b/WebCore/kwq/KWQKCompletionBox.mm
index 6a429e8..688d366 100644
--- a/WebCore/kwq/KWQKCompletionBox.mm
+++ b/WebCore/kwq/KWQKCompletionBox.mm
@@ -23,12 +23,15 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kcompletionbox.h>
   
 KCompletionBox::KCompletionBox()
 {
+    _logNotYetImplemented();
 }
 
 KCompletionBox::~KCompletionBox() 
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/kwq/KWQKConfigBase.mm b/WebCore/kwq/KWQKConfigBase.mm
index 5e41f2f..94129b9 100644
--- a/WebCore/kwq/KWQKConfigBase.mm
+++ b/WebCore/kwq/KWQKConfigBase.mm
@@ -23,20 +23,24 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kconfig.h>
 
 KConfigBase::KConfigBase()
 {
+    _logNotYetImplemented();
 }
 
 
 KConfigBase::~KConfigBase()
 {
+    _logNotYetImplemented();
 }
 
 
 void KConfigBase::setGroup(const QString &pGroup)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -44,6 +48,7 @@ void KConfigBase::writeEntry(const QString &pKey, const QStringList &rValue,
     char sep=',', bool bPersistent=true, bool bGlobal=false, 
     bool bNLS=false)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -51,7 +56,7 @@ void KConfigBase::writeEntry(const QString &pKey, const QStringList &rValue,
 QString KConfigBase::readEntry(const char *pKey, 
     const QString& aDefault=QString::null) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return QString();
 }
 
@@ -59,7 +64,7 @@ QString KConfigBase::readEntry(const char *pKey,
 
 int KConfigBase::readNumEntry(const char *pKey, int nDefault=0) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return 0;
 }
 
@@ -68,28 +73,28 @@ int KConfigBase::readNumEntry(const char *pKey, int nDefault=0) const
 unsigned int KConfigBase::readUnsignedNumEntry(const char *pKey, 
     unsigned int nDefault=0) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return 0;
 }
 
 
 bool KConfigBase::readBoolEntry(const char *pKey, bool nDefault=0) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return FALSE;
 }
 
 
 QColor KConfigBase::readColorEntry(const char *pKey, const QColor *pDefault=0L) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return QColor(0,0,0);
 }
 
 
 QStringList KConfigBase::readListEntry(const QString &pKey, char sep=',') const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return QStringList();
 }
 
@@ -98,12 +103,11 @@ QStringList KConfigBase::readListEntry(const QString &pKey, char sep=',') const
 
 KConfig::KConfig(const QString &n, bool bReadOnly=false)
 {
+    _logNotYetImplemented();
 }
 
 
 KConfig::~KConfig()
 {
+    _logNotYetImplemented();
 }
-
-
-
diff --git a/WebCore/kwq/KWQKFactory.mm b/WebCore/kwq/KWQKFactory.mm
index a1b377b..2a2bfed 100644
--- a/WebCore/kwq/KWQKFactory.mm
+++ b/WebCore/kwq/KWQKFactory.mm
@@ -23,17 +23,20 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <factory.h>
 
 namespace KParts {
 
 Factory::Factory()
 {
+    _logNotYetImplemented();
 }
 
 
 Factory::~Factory()
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQKFileDialog.mm b/WebCore/kwq/KWQKFileDialog.mm
index 3a7c516..49fe027 100644
--- a/WebCore/kwq/KWQKFileDialog.mm
+++ b/WebCore/kwq/KWQKFileDialog.mm
@@ -23,20 +23,25 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kfiledialog.h>
 
 QString KFileDialog::getOpenFileName(const QString &startDir, 
     const QString &filter, QWidget *parent, const QString &caption)
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 KFileDialog::KFileDialog()
 {
+    _logNotYetImplemented();
 }
 
 
 KFileDialog::~KFileDialog()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQKFileItem.mm b/WebCore/kwq/KWQKFileItem.mm
index b103f19..5a7fca1 100644
--- a/WebCore/kwq/KWQKFileItem.mm
+++ b/WebCore/kwq/KWQKFileItem.mm
@@ -23,22 +23,27 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kfileitem.h>
 
 
 KFileItem::KFileItem(const KIO::UDSEntry &, const KURL &, bool foo=false, 
     bool bar=false)
 {
+    _logNotYetImplemented();
 }
 
 
 KFileItem::~KFileItem()
 {
+    _logNotYetImplemented();
 }
 
 
 bool KFileItem::isDir() const
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
diff --git a/WebCore/kwq/KWQKGlobal.h b/WebCore/kwq/KWQKGlobal.h
index 4295c2f..0c3bcca 100644
--- a/WebCore/kwq/KWQKGlobal.h
+++ b/WebCore/kwq/KWQKGlobal.h
@@ -83,6 +83,10 @@ public:
 // private ---------------------------------------------------------------------
 
 private:
+    static KWQStaticStringDict *_stringDict;
+    static KInstance *_instance;
+    static KLocale *_locale;
+    static KCharsets *_charsets;
 
 // add copy constructor
 // this private declaration prevents copying
diff --git a/WebCore/kwq/KWQKGlobal.mm b/WebCore/kwq/KWQKGlobal.mm
index 5e64591..72a3056 100644
--- a/WebCore/kwq/KWQKGlobal.mm
+++ b/WebCore/kwq/KWQKGlobal.mm
@@ -24,8 +24,9 @@
  */
 #include <kwqdebug.h>
 
-#include <kconfig.h>
 #include <kglobal.h>
+#include <kconfig.h>
+#include <kcharsets.h>
 
 #include <qdict.h>
 
@@ -37,35 +38,44 @@
 #undef Rect
 #undef Boolean
 
+KWQStaticStringDict *KGlobal::_stringDict = 0L;
+KInstance *KGlobal::_instance = 0L;
+KLocale *KGlobal::_locale = 0L;
+KCharsets *KGlobal::_charsets = 0L;
+
 class KWQStaticStringDict : public QDict<QString>
 {
 public:
     KWQStaticStringDict() : QDict<QString>() { };
 };
 
-KWQStaticStringDict *KGlobal::staticStringDict = 0;
-
 KInstance *KGlobal::instance()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KCharsets *KGlobal::charsets()
 {
-    _logNotYetImplemented();
+    if (_charsets == 0L) {
+        _charsets = new KCharsets();    
+    }
+    return _charsets;
 }
 
 
 KLocale *KGlobal::locale()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KStandardDirs *KGlobal::dirs()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
@@ -77,14 +87,14 @@ KConfig *KGlobal::config()
 
 const QString &KGlobal::staticQString(const QString &str)
 {
-    if (!staticStringDict) {
-        staticStringDict = new KWQStaticStringDict;
+    if (!_stringDict) {
+        _stringDict = new KWQStaticStringDict;
     }
-    QString *result = staticStringDict->find(str);
+    QString *result = _stringDict->find(str);
     if (!result)
     {
         result = new QString(str);
-        staticStringDict->insert(str, result);
+        _stringDict->insert(str, result);
     }
     return *result;
 }
diff --git a/WebCore/kwq/KWQKHTMLFactory.mm b/WebCore/kwq/KWQKHTMLFactory.mm
index 50a91cd..254ec35 100644
--- a/WebCore/kwq/KWQKHTMLFactory.mm
+++ b/WebCore/kwq/KWQKHTMLFactory.mm
@@ -17,6 +17,7 @@
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */
+#include <kwqdebug.h>
 #include <khtml_factory.h>
 
 QList<KHTMLPart> *KHTMLFactory::s_parts;
@@ -24,24 +25,31 @@ QList<KHTMLPart> *KHTMLFactory::s_parts;
 
 KHTMLFactory::KHTMLFactory( bool clone = false )
 {
+    _logNotYetImplemented();
 }
 
-
 KHTMLFactory::~KHTMLFactory()
 {
+    _logNotYetImplemented();
 }
 
 KParts::Part *KHTMLFactory::createPartObject( QWidget *parentWidget, const char *widgetName, QObject *parent, const char *name, const char *className, const QStringList &args )
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
 KInstance *KHTMLFactory::instance()
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
 KHTMLSettings *KHTMLFactory::defaultHTMLSettings()
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index c5d7d5c..d0cbd14 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -111,7 +111,8 @@ public:
     bool m_bFirstData:1;
     bool m_haveEncoding:1;
     bool m_haveCharset:1;
-    
+    bool m_onlyLocalReferences:1;
+
     KJSProxy *m_jscript;
     int m_runningScripts;
 
@@ -134,6 +135,7 @@ public:
         
         m_jscript = 0L;
         m_runningScripts = 0;
+        m_onlyLocalReferences = 0;
     }
 
     ~KHTMLPartPrivate()
@@ -322,12 +324,14 @@ bool KHTMLPart::javaEnabled() const
 KJavaAppletContext *KHTMLPart::javaContext()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KJavaAppletContext *KHTMLPart::createJavaContext()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
@@ -340,6 +344,7 @@ void KHTMLPart::setPluginsEnabled( bool enable )
 bool KHTMLPart::pluginsEnabled() const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -352,18 +357,19 @@ void KHTMLPart::setAutoloadImages( bool enable )
 bool KHTMLPart::autoloadImages() const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
 void KHTMLPart::setOnlyLocalReferences(bool enable)
 {
-    _logNeverImplemented();
+    d->m_onlyLocalReferences = enable;
 }
 
 
 bool KHTMLPart::onlyLocalReferences() const
 {
-    _logNeverImplemented();
+    return d->m_onlyLocalReferences;
 }
 
 
@@ -501,18 +507,21 @@ void KHTMLPart::setBaseTarget( const QString &target )
 QString KHTMLPart::baseTarget() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
 bool KHTMLPart::setCharset( const QString &name, bool override = false )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
 bool KHTMLPart::setEncoding( const QString &name, bool override = false )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -520,6 +529,7 @@ bool KHTMLPart::setEncoding( const QString &name, bool override = false )
 QString KHTMLPart::encoding()
 {
     _logNeverImplemented();
+    return d->m_settings->encoding();
 }
 
 
@@ -569,6 +579,7 @@ void KHTMLPart::setFixedFont( const QString &name )
 bool KHTMLPart::gotoAnchor( const QString &name )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -595,6 +606,7 @@ void KHTMLPart::findTextBegin()
 bool KHTMLPart::findTextNext( const QRegExp &exp, bool forward )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -602,6 +614,7 @@ bool KHTMLPart::findTextNext( const QRegExp &exp, bool forward )
 bool KHTMLPart::findTextNext( const QString &str, bool forward, bool caseSensitive )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -609,6 +622,7 @@ bool KHTMLPart::findTextNext( const QString &str, bool forward, bool caseSensiti
 QString KHTMLPart::selectedText() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
@@ -630,6 +644,7 @@ void KHTMLPart::setSelection( const DOM::Range & )
 bool KHTMLPart::hasSelection() const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -655,12 +670,14 @@ void KHTMLPart::setJSDefaultStatusBarText( const QString &text )
 QString KHTMLPart::jsStatusBarText() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
 QString KHTMLPart::jsDefaultStatusBarText() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
@@ -695,9 +712,9 @@ KJSProxy *KHTMLPart::jScript()
 }
 
 
-KURL KHTMLPart::completeURL( const QString &url, const QString &target = QString::null )
+KURL KHTMLPart::completeURL(const QString &url, const QString &target = QString::null)
 {
-    _logNotYetImplemented();
+    return KURL(d->m_workingURL);
 }
 
 
@@ -727,30 +744,35 @@ void KHTMLPart::setView(KHTMLView *view)
 QWidget *KHTMLPart::widget()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KHTMLPart *KHTMLPart::opener()
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 KHTMLPart *KHTMLPart::parentPart()
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 const QList<KParts::ReadOnlyPart> KHTMLPart::frames() const
 {
     _logNeverImplemented();
+    return QList<KParts::ReadOnlyPart>(); 
 }
 
 
 KHTMLPart *KHTMLPart::findFrame( const QString &f )
 {
     _logNeverImplemented();
+    return this;
 }
 
 
@@ -763,6 +785,7 @@ void KHTMLPart::setOpener(KHTMLPart *_opener)
 bool KHTMLPart::openedByJS()
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -775,24 +798,28 @@ void KHTMLPart::setOpenedByJS(bool _openedByJS)
 KParts::BrowserExtension *KHTMLPart::browserExtension() const
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 DOM::EventListener *KHTMLPart::createHTMLEventListener( QString code )
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 QString KHTMLPart::requestFrameName()
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
 bool KHTMLPart::frameExists( const QString &frameName )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -800,6 +827,7 @@ bool KHTMLPart::requestFrame( khtml::RenderPart *frame, const QString &url, cons
                     const QStringList &args, bool isIFrame)
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -828,6 +856,7 @@ bool KHTMLPart::requestObject( khtml::RenderPart *frame, const QString &url, con
                     const QStringList &args)
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -840,6 +869,7 @@ void KHTMLPart::nodeActivated(const DOM::Node &)
 QVariant KHTMLPart::executeScheduledScript()
 {
     _logNeverImplemented();
+    return QVariant();
 }
 
 
diff --git a/WebCore/kwq/KWQKHTMLPartBrowserExtension.mm b/WebCore/kwq/KWQKHTMLPartBrowserExtension.mm
index d8d9126..4881918 100644
--- a/WebCore/kwq/KWQKHTMLPartBrowserExtension.mm
+++ b/WebCore/kwq/KWQKHTMLPartBrowserExtension.mm
@@ -23,14 +23,17 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <khtml_ext.h>
 
 
 void KHTMLPartBrowserExtension::editableWidgetFocused( QWidget *widget )
 {
+    _logNotYetImplemented();
 }
 
 
 void KHTMLPartBrowserExtension::editableWidgetBlurred( QWidget *widget )
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.mm b/WebCore/kwq/KWQKHTMLPartImpl.mm
index c5d7d5c..d0cbd14 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.mm
+++ b/WebCore/kwq/KWQKHTMLPartImpl.mm
@@ -111,7 +111,8 @@ public:
     bool m_bFirstData:1;
     bool m_haveEncoding:1;
     bool m_haveCharset:1;
-    
+    bool m_onlyLocalReferences:1;
+
     KJSProxy *m_jscript;
     int m_runningScripts;
 
@@ -134,6 +135,7 @@ public:
         
         m_jscript = 0L;
         m_runningScripts = 0;
+        m_onlyLocalReferences = 0;
     }
 
     ~KHTMLPartPrivate()
@@ -322,12 +324,14 @@ bool KHTMLPart::javaEnabled() const
 KJavaAppletContext *KHTMLPart::javaContext()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KJavaAppletContext *KHTMLPart::createJavaContext()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
@@ -340,6 +344,7 @@ void KHTMLPart::setPluginsEnabled( bool enable )
 bool KHTMLPart::pluginsEnabled() const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -352,18 +357,19 @@ void KHTMLPart::setAutoloadImages( bool enable )
 bool KHTMLPart::autoloadImages() const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
 void KHTMLPart::setOnlyLocalReferences(bool enable)
 {
-    _logNeverImplemented();
+    d->m_onlyLocalReferences = enable;
 }
 
 
 bool KHTMLPart::onlyLocalReferences() const
 {
-    _logNeverImplemented();
+    return d->m_onlyLocalReferences;
 }
 
 
@@ -501,18 +507,21 @@ void KHTMLPart::setBaseTarget( const QString &target )
 QString KHTMLPart::baseTarget() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
 bool KHTMLPart::setCharset( const QString &name, bool override = false )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
 bool KHTMLPart::setEncoding( const QString &name, bool override = false )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -520,6 +529,7 @@ bool KHTMLPart::setEncoding( const QString &name, bool override = false )
 QString KHTMLPart::encoding()
 {
     _logNeverImplemented();
+    return d->m_settings->encoding();
 }
 
 
@@ -569,6 +579,7 @@ void KHTMLPart::setFixedFont( const QString &name )
 bool KHTMLPart::gotoAnchor( const QString &name )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -595,6 +606,7 @@ void KHTMLPart::findTextBegin()
 bool KHTMLPart::findTextNext( const QRegExp &exp, bool forward )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -602,6 +614,7 @@ bool KHTMLPart::findTextNext( const QRegExp &exp, bool forward )
 bool KHTMLPart::findTextNext( const QString &str, bool forward, bool caseSensitive )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -609,6 +622,7 @@ bool KHTMLPart::findTextNext( const QString &str, bool forward, bool caseSensiti
 QString KHTMLPart::selectedText() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
@@ -630,6 +644,7 @@ void KHTMLPart::setSelection( const DOM::Range & )
 bool KHTMLPart::hasSelection() const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -655,12 +670,14 @@ void KHTMLPart::setJSDefaultStatusBarText( const QString &text )
 QString KHTMLPart::jsStatusBarText() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
 QString KHTMLPart::jsDefaultStatusBarText() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
@@ -695,9 +712,9 @@ KJSProxy *KHTMLPart::jScript()
 }
 
 
-KURL KHTMLPart::completeURL( const QString &url, const QString &target = QString::null )
+KURL KHTMLPart::completeURL(const QString &url, const QString &target = QString::null)
 {
-    _logNotYetImplemented();
+    return KURL(d->m_workingURL);
 }
 
 
@@ -727,30 +744,35 @@ void KHTMLPart::setView(KHTMLView *view)
 QWidget *KHTMLPart::widget()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KHTMLPart *KHTMLPart::opener()
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 KHTMLPart *KHTMLPart::parentPart()
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 const QList<KParts::ReadOnlyPart> KHTMLPart::frames() const
 {
     _logNeverImplemented();
+    return QList<KParts::ReadOnlyPart>(); 
 }
 
 
 KHTMLPart *KHTMLPart::findFrame( const QString &f )
 {
     _logNeverImplemented();
+    return this;
 }
 
 
@@ -763,6 +785,7 @@ void KHTMLPart::setOpener(KHTMLPart *_opener)
 bool KHTMLPart::openedByJS()
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -775,24 +798,28 @@ void KHTMLPart::setOpenedByJS(bool _openedByJS)
 KParts::BrowserExtension *KHTMLPart::browserExtension() const
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 DOM::EventListener *KHTMLPart::createHTMLEventListener( QString code )
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 QString KHTMLPart::requestFrameName()
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
 bool KHTMLPart::frameExists( const QString &frameName )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -800,6 +827,7 @@ bool KHTMLPart::requestFrame( khtml::RenderPart *frame, const QString &url, cons
                     const QStringList &args, bool isIFrame)
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -828,6 +856,7 @@ bool KHTMLPart::requestObject( khtml::RenderPart *frame, const QString &url, con
                     const QStringList &args)
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -840,6 +869,7 @@ void KHTMLPart::nodeActivated(const DOM::Node &)
 QVariant KHTMLPart::executeScheduledScript()
 {
     _logNeverImplemented();
+    return QVariant();
 }
 
 
diff --git a/WebCore/kwq/KWQKHTMLSettings.h b/WebCore/kwq/KWQKHTMLSettings.h
index a5b26da..fb7e8a5 100644
--- a/WebCore/kwq/KWQKHTMLSettings.h
+++ b/WebCore/kwq/KWQKHTMLSettings.h
@@ -72,8 +72,9 @@ public:
     int maxFormCompletionItems() const;
 
 private:
-    QValueList<int>     m_fontSizes;
+    QValueList<int> m_fontSizes;
     QString m_fontFamilies;
+    QFont::CharSet m_charSet;
 };
 
 #endif
diff --git a/WebCore/kwq/KWQKHTMLSettings.mm b/WebCore/kwq/KWQKHTMLSettings.mm
index 433f449..bb78bb4 100644
--- a/WebCore/kwq/KWQKHTMLSettings.mm
+++ b/WebCore/kwq/KWQKHTMLSettings.mm
@@ -25,6 +25,9 @@
 #include <kwqdebug.h>
 #include <khtml_settings.h>
 
+// FIXME: remove this hack
+static const QString DEFAULT_ENCODING = NSSTRING_TO_QSTRING(@"NSISOLatin1StringEncoding");
+
 KHTMLSettings::KHTMLSettings()
 {    
     // set available font families...ask the system
@@ -41,6 +44,8 @@ KHTMLSettings::KHTMLSettings()
     for(i=0; i<[fontSizeArray count]; i++){
         m_fontSizes << [[fontSizeArray objectAtIndex:i] intValue];
     }
+    
+    m_charSet = QFont::Latin1;
 }
 
 QString KHTMLSettings::stdFontName() const
@@ -87,19 +92,21 @@ QString KHTMLSettings::settingsToCSS() const
 
 QFont::CharSet KHTMLSettings::charset() const
 {
-    _logNotYetImplemented();
+    return m_charSet;
 }
 
 
 void KHTMLSettings::setCharset( QFont::CharSet c )
 {
-    _logNotYetImplemented();
+    m_charSet = c;
 }
 
 
 const QString &KHTMLSettings::encoding() const
 {
     _logNotYetImplemented();
+    // FIXME: remove this hack
+    return DEFAULT_ENCODING;
 }
 
 
@@ -117,13 +124,13 @@ QString KHTMLSettings::availableFamilies() const
 
 QFont::CharSet KHTMLSettings::script() const
 {
-    _logNotYetImplemented();
+    return m_charSet;
 }
 
 
-void KHTMLSettings::setScript( QFont::CharSet c )
+void KHTMLSettings::setScript(QFont::CharSet c)
 {
-    _logNotYetImplemented();
+    m_charSet = c;
 }
 
 
@@ -137,18 +144,21 @@ const QValueList<int> &KHTMLSettings::fontSizes() const
 bool KHTMLSettings::changeCursor()
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
 bool KHTMLSettings::isFormCompletionEnabled() const
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
 int KHTMLSettings::maxFormCompletionItems() const
 {
     _logNotYetImplemented();
+    return 0;
 }
 
 
diff --git a/WebCore/kwq/KWQKIONetAccess.mm b/WebCore/kwq/KWQKIONetAccess.mm
index 8e83069..d37bebb 100644
--- a/WebCore/kwq/KWQKIONetAccess.mm
+++ b/WebCore/kwq/KWQKIONetAccess.mm
@@ -23,27 +23,35 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <netaccess.h>
 
 namespace KIO {
 
 bool NetAccess::stat(const KURL &, KIO::UDSEntry &)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 QString NetAccess::lastErrorString()
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 bool NetAccess::download(const KURL &, QString &)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 void NetAccess::removeTempFile(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 } // namespace KIO
diff --git a/WebCore/kwq/KWQKIconLoader.mm b/WebCore/kwq/KWQKIconLoader.mm
index 2f9df8e..58497e6 100644
--- a/WebCore/kwq/KWQKIconLoader.mm
+++ b/WebCore/kwq/KWQKIconLoader.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kiconloader.h>
 
 
@@ -30,17 +31,20 @@
 
 KIcon::KIcon()
 {
+    _logNotYetImplemented();
 }
 
 // class KIconLoader ===========================================================
     
 KIconLoader::KIconLoader()
 {
+    _logNotYetImplemented();
 }
 
 
 KIconLoader::~KIconLoader()
 {
+    _logNotYetImplemented();
 }
 
         
@@ -48,4 +52,6 @@ QPixmap KIconLoader::loadIcon(const QString &name, int group, int size=0,
     int state=KIcon::DefaultState, QString *path_store=0L, 
     bool canReturnNull=false) const
 {
+    _logNotYetImplemented();
+    return QPixmap();
 }
diff --git a/WebCore/kwq/KWQKImageIO.mm b/WebCore/kwq/KWQKImageIO.mm
index dc4e076..7ecae1c 100644
--- a/WebCore/kwq/KWQKImageIO.mm
+++ b/WebCore/kwq/KWQKImageIO.mm
@@ -22,14 +22,14 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
-
-
+#include <kwqdebug.h>
 #include <kimageio.h>
 
 // class KImageIO ==============================================================
 
 void KImageIO::registerFormats()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -38,5 +38,6 @@ QStringList KImageIO::mimeTypes(Mode mode=Writing)
     // FIXME: need real implementation
     QStringList mimeList;
     mimeList.append ( "image/gif" );
+    mimeList.append ( "image/jpeg" );
     return mimeList;
 }
diff --git a/WebCore/kwq/KWQKInstance.mm b/WebCore/kwq/KWQKInstance.mm
index a5d2776..d19e72b 100644
--- a/WebCore/kwq/KWQKInstance.mm
+++ b/WebCore/kwq/KWQKInstance.mm
@@ -23,20 +23,25 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kinstance.h>
 
 KInstance::KInstance(const QCString &)
 {
+    _logNotYetImplemented();
 }
 
 
 KInstance::~KInstance()
 {
+    _logNotYetImplemented();
 }
 
 
 KIconLoader *KInstance::iconLoader() const
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
diff --git a/WebCore/kwq/KWQKJavaEmbed.mm b/WebCore/kwq/KWQKJavaEmbed.mm
index 0f09898..a944955 100644
--- a/WebCore/kwq/KWQKJavaEmbed.mm
+++ b/WebCore/kwq/KWQKJavaEmbed.mm
@@ -24,34 +24,43 @@ to work better with java applets.
 *****************************************************************************/
 
 
+#include <kwqdebug.h>
 #include <javaembed.h>
 
 KJavaEmbed::KJavaEmbed( QWidget *parent=0, const char *name=0, WFlags f = 0 )
 {
+    _logNotYetImplemented();
 }
 
 
 KJavaEmbed::~KJavaEmbed()
 {
+    _logNotYetImplemented();
 }
 
 
 void KJavaEmbed::embed( WId w )
 {
+    _logNotYetImplemented();
 }
 
 
 QSize KJavaEmbed::sizeHint() const
 {
+    _logNotYetImplemented();
+    return QSize();
 }
 
 
 QSize KJavaEmbed::minimumSizeHint() const
 {
+    _logNotYetImplemented();
+    return QSize();
 }
 
 
 void KJavaEmbed::focusOutEvent( QFocusEvent * )
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQKJob.mm b/WebCore/kwq/KWQKJob.mm
index 229ceec..d19966e 100644
--- a/WebCore/kwq/KWQKJob.mm
+++ b/WebCore/kwq/KWQKJob.mm
@@ -23,12 +23,15 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <job.h>
 
 namespace KIO {
 
 SimpleJob *http_update_cache(const KURL &, bool, time_t)
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 TransferJob *get(const KURL &url, bool reload=false, bool showProgressInfo=true)
diff --git a/WebCore/kwq/KWQKJobClasses.h b/WebCore/kwq/KWQKJobClasses.h
index 5f51556..6a56efc 100644
--- a/WebCore/kwq/KWQKJobClasses.h
+++ b/WebCore/kwq/KWQKJobClasses.h
@@ -59,7 +59,7 @@ public:
 
     // member functions --------------------------------------------------------
 
-    int error();
+    virtual int error();
     const QString & errorText();
     QString errorString();
     virtual void kill(bool quietly=TRUE);
@@ -153,6 +153,7 @@ public:
 
     // member functions --------------------------------------------------------
 
+    int error();
     bool isErrorPage() const;
     QString queryMetaData(const QString &key);
     void addMetaData(const QString &key, const QString &value);
diff --git a/WebCore/kwq/KWQKJobClasses.mm b/WebCore/kwq/KWQKJobClasses.mm
index a2d36bb..6a897d1 100644
--- a/WebCore/kwq/KWQKJobClasses.mm
+++ b/WebCore/kwq/KWQKJobClasses.mm
@@ -31,6 +31,8 @@
 #include <Foundation/Foundation.h>
 #include <WCURICache.h>
 
+static const QString DEFAULT_ERROR_TEXT = "DEFAULT_ERROR_TEXT";
+
 namespace KIO {
 
 // class Job ===================================================================
@@ -42,23 +44,28 @@ Job::~Job()
 
 int Job::error()
 {
-    _logNotYetImplemented();
+    _logNeverImplemented();
     return 0;
 }
 
 
-const QString & Job::errorText()
+const QString &Job::errorText()
 {
+    _logNotYetImplemented();
+    return DEFAULT_ERROR_TEXT;
 }
 
 
 QString Job::errorString()
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 void Job::kill(bool quietly=TRUE)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -66,6 +73,7 @@ void Job::kill(bool quietly=TRUE)
 
 SimpleJob::~SimpleJob()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -121,6 +129,11 @@ bool TransferJob::isErrorPage() const
     return (_status != 0);
 }
 
+int TransferJob::error()
+{
+    return _status;
+}
+
 QString TransferJob::queryMetaData(const QString &key)
 {
     NSString *_key;
@@ -145,20 +158,14 @@ void TransferJob::addMetaData(const QString &key, const QString &value)
 
 void TransferJob::kill(bool quietly=TRUE)
 {
-    id <WCURICache> uriCache;
-
-    uriCache = WCGetDefaultURICache();
-    [uriCache cancelRequestWithURL:d->url requestor:d->requestor];
+    [WCGetDefaultURICache() cancelRequestWithURL:d->url requestor:d->requestor];
 }
 
 void TransferJob::begin(id requestor, void *userData)
 {
-    id <WCURICache> uriCache;
-
-    uriCache = WCGetDefaultURICache();
     //FIXME: load uri
     d->requestor = requestor;
-    [uriCache requestWithURL:d->url requestor:requestor userData:userData];
+    [WCGetDefaultURICache() requestWithURL:d->url requestor:requestor userData:userData];
 }
 
 } // namespace KIO
diff --git a/WebCore/kwq/KWQKLineEdit.mm b/WebCore/kwq/KWQKLineEdit.mm
index 2060317..22039d7 100644
--- a/WebCore/kwq/KWQKLineEdit.mm
+++ b/WebCore/kwq/KWQKLineEdit.mm
@@ -54,5 +54,6 @@ void KLineEdit::setContextMenuEnabled(bool showMenu)
 KCompletionBox *KLineEdit::completionBox(bool create)
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
diff --git a/WebCore/kwq/KWQKMimeType.mm b/WebCore/kwq/KWQKMimeType.mm
index 0c09774..4410afc 100644
--- a/WebCore/kwq/KWQKMimeType.mm
+++ b/WebCore/kwq/KWQKMimeType.mm
@@ -23,18 +23,23 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kmimetype.h>
 
 KMimeType::Ptr KMimeType::findByURL(const KURL &, mode_t=0, bool=false, bool)
 {
+    _logNotYetImplemented();
 }
 
 
 KMimeType::~KMimeType()
 {
+    _logNotYetImplemented();
 }
 
 
 QString KMimeType::name() const
 {
+    _logNotYetImplemented();
+    return QString();
 }
diff --git a/WebCore/kwq/KWQKPartsEvent.mm b/WebCore/kwq/KWQKPartsEvent.mm
index 295d671..9800a6a 100644
--- a/WebCore/kwq/KWQKPartsEvent.mm
+++ b/WebCore/kwq/KWQKPartsEvent.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <event.h>
 
 class QPainter;
@@ -31,15 +32,20 @@ namespace KParts {
 
 bool Event::test(const QEvent *)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 bool Event::test(const QEvent *, const char *)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 Event::Event(const char *)
 {
+    _logNotYetImplemented();
 }
 
 } // namespace KParts
diff --git a/WebCore/kwq/KWQKPrinter.mm b/WebCore/kwq/KWQKPrinter.mm
index 003f79f..b3ec1a6 100644
--- a/WebCore/kwq/KWQKPrinter.mm
+++ b/WebCore/kwq/KWQKPrinter.mm
@@ -23,35 +23,45 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kprinter.h>
 
 bool KPrinter::setup(QWidget *parent=0)
 {
+    _logNeverImplemented();
+    return FALSE;
 }
 
 
 bool KPrinter::newPage()
 {
+    _logNeverImplemented();
+    return FALSE;
 }
 
 
 void KPrinter::setDocName(const QString &)
 {
+    _logNeverImplemented();
 }
 
 
 void KPrinter::setCreator(const QString &)
 {
+    _logNeverImplemented();
 }
 
 
 void KPrinter::setFullPage(bool)
 {
+    _logNeverImplemented();
 }
 
 
 QSize KPrinter::margins() const
 {
+    _logNeverImplemented();
+    return QSize();
 }
 
 
diff --git a/WebCore/kwq/KWQKProcess.mm b/WebCore/kwq/KWQKProcess.mm
index 1d4d7d3..b1a5c5c 100644
--- a/WebCore/kwq/KWQKProcess.mm
+++ b/WebCore/kwq/KWQKProcess.mm
@@ -23,51 +23,64 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kprocess.h>
 
 KProcess::KProcess()
 {
+    _logNotYetImplemented();
 }
 
 
 KProcess::~KProcess()
 {
+    _logNotYetImplemented();
 }
 
 
 QStrList *KProcess::args()
 {
+    _logNotYetImplemented();
+    return new QStrList();
 }
 
 
 bool KProcess::isRunning() const
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 bool KProcess::writeStdin(const char *buffer, int buflen)
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 bool KProcess::start(RunMode runmode, Communication comm)
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 bool KProcess::kill(int signo=SIGTERM)
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 void KProcess::resume()
 {
+    _logNotYetImplemented();
 }
 
 
 KProcess &KProcess::operator<<(const QString& arg)
 {
+    _logNotYetImplemented();
+    return *this;
 }
-
-
-
diff --git a/WebCore/kwq/KWQKScheduler.mm b/WebCore/kwq/KWQKScheduler.mm
index fe42291..e6d7042 100644
--- a/WebCore/kwq/KWQKScheduler.mm
+++ b/WebCore/kwq/KWQKScheduler.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <scheduler.h>
 
 namespace KIO {
@@ -30,11 +31,13 @@ namespace KIO {
 
 void Scheduler::scheduleJob(SimpleJob *job)
 {
+    _logNeverImplemented();
 }
 
 
 Scheduler::~Scheduler()
 {
+    _logNeverImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQKSimpleConfig.mm b/WebCore/kwq/KWQKSimpleConfig.mm
index e001a12..defe3a6 100644
--- a/WebCore/kwq/KWQKSimpleConfig.mm
+++ b/WebCore/kwq/KWQKSimpleConfig.mm
@@ -23,11 +23,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <ksimpleconfig.h>
 
 
 KSimpleConfig::KSimpleConfig(const QString &s, bool bReadOnly) : KConfig (s, bReadOnly)
 {
-    NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQKWinModule.mm b/WebCore/kwq/KWQKWinModule.mm
index c735df8..e1af293 100644
--- a/WebCore/kwq/KWQKWinModule.mm
+++ b/WebCore/kwq/KWQKWinModule.mm
@@ -23,26 +23,32 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kwinmodule.h>
 
 
 KWinModule::KWinModule(QObject* parent=0)
 {
+    _logNotYetImplemented();
 }
 
 
 KWinModule::~KWinModule()
 {
+    _logNotYetImplemented();
 }
 
 
 QRect KWinModule::workArea(int desktop=-1) const
 {
+    _logNotYetImplemented();
+    return QRect();
 }
 
 
 void KWinModule::doNotManage(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQKnetaccess.mm b/WebCore/kwq/KWQKnetaccess.mm
index 8e83069..d37bebb 100644
--- a/WebCore/kwq/KWQKnetaccess.mm
+++ b/WebCore/kwq/KWQKnetaccess.mm
@@ -23,27 +23,35 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <netaccess.h>
 
 namespace KIO {
 
 bool NetAccess::stat(const KURL &, KIO::UDSEntry &)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 QString NetAccess::lastErrorString()
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 bool NetAccess::download(const KURL &, QString &)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 void NetAccess::removeTempFile(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 } // namespace KIO
diff --git a/WebCore/kwq/KWQLineEdit.mm b/WebCore/kwq/KWQLineEdit.mm
index c65a0ba..d77966a 100644
--- a/WebCore/kwq/KWQLineEdit.mm
+++ b/WebCore/kwq/KWQLineEdit.mm
@@ -95,12 +95,14 @@ void QLineEdit::setReadOnly(bool flag)
 bool QLineEdit::event(QEvent *)
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
 bool QLineEdit::frame() const
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
@@ -128,6 +130,7 @@ QLineEdit::QLineEdit(const QLineEdit &)
 QLineEdit &QLineEdit::operator=(const QLineEdit &)
 {
     _logNeverImplemented();
+    return *this;
 }
 
 
diff --git a/WebCore/kwq/KWQMovie.h b/WebCore/kwq/KWQMovie.h
index 81e3b7c..c0f53e8 100644
--- a/WebCore/kwq/KWQMovie.h
+++ b/WebCore/kwq/KWQMovie.h
@@ -36,6 +36,10 @@
 #include "qimage.h"
 #include "qrect.h"
 
+#ifdef _KWQ_
+class QMoviePrivate;
+#endif
+
 // class QMovie ================================================================
 
 class QMovie {
@@ -84,6 +88,10 @@ public:
 
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
+private:
+#ifdef _KWQ_
+    QMoviePrivate *d;
+#endif
 
 }; // class QMovie =============================================================
 
diff --git a/WebCore/kwq/KWQMovie.mm b/WebCore/kwq/KWQMovie.mm
index bbad2a7..81a98ea 100644
--- a/WebCore/kwq/KWQMovie.mm
+++ b/WebCore/kwq/KWQMovie.mm
@@ -23,106 +23,152 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qmovie.h>
 
+class QMoviePrivate {
+friend class QMovie;
+public:
+    QMoviePrivate() {
+    }
+    
+    ~QMoviePrivate() {
+    }
+    
+private:
+    QRect rect;    
+    QPixmap pixmap;
+    QImage image;    
+};
+
 QMovie::QMovie()
 {
+    _logNotYetImplemented();
+    d = new QMoviePrivate();
 }
 
 
 QMovie::QMovie(QDataSource*, int bufsize)
 {
+    _logPartiallyImplemented();
+    d = new QMoviePrivate();
 }
 
 
-QMovie::QMovie(const QMovie &)
+QMovie::QMovie(const QMovie &other)
 {
+    _logPartiallyImplemented();
+    d->rect = other.d->rect;
+    d->pixmap = other.d->pixmap;
+    d->image = other.d->image;
 }
 
 
 QMovie::~QMovie()
 {
+    _logPartiallyImplemented();
+    delete d;
 }
 
 
 void QMovie::unpause()
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::pause()
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::restart()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QMovie::finished()
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 bool QMovie::running()
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 int QMovie::frameNumber() const
 {
+    _logNotYetImplemented();
+    return 0;    
 }
 
 
-const QRect& QMovie::getValidRect() const
+const QRect &QMovie::getValidRect() const
 {
+    _logPartiallyImplemented();
+    return d->rect;
 }
 
 
-const QPixmap& QMovie::framePixmap() const
+const QPixmap &QMovie::framePixmap() const
 {
+    _logPartiallyImplemented();
+    return d->pixmap;
 }
 
 
-const QImage& QMovie::frameImage() const
+const QImage &QMovie::frameImage() const
 {
+    _logPartiallyImplemented();
+    return d->image;
 }
 
 
 void QMovie::connectResize(QObject* receiver, const char *member)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::connectUpdate(QObject* receiver, const char *member)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::connectStatus(QObject* receiver, const char *member)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::disconnectResize(QObject* receiver, const char *member=0)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::disconnectUpdate(QObject* receiver, const char *member=0)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::disconnectStatus(QObject* receiver, const char *member=0)
 {
+    _logNotYetImplemented();
 }
 
 
 QMovie &QMovie::operator=(const QMovie &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
-
-
-
diff --git a/WebCore/kwq/KWQNamespace.h b/WebCore/kwq/KWQNamespace.h
index 37a6db1..f5c7d6f 100644
--- a/WebCore/kwq/KWQNamespace.h
+++ b/WebCore/kwq/KWQNamespace.h
@@ -81,6 +81,9 @@ public:
         SolidLine,
         DotLine,
         DashLine,
+        DashDotLine,
+        DashDotDotLine,
+        MPenStyle = 0x0f
     };
 
     enum BrushStyle {
diff --git a/WebCore/kwq/KWQObject.mm b/WebCore/kwq/KWQObject.mm
index 82b40e1..0e13998 100644
--- a/WebCore/kwq/KWQObject.mm
+++ b/WebCore/kwq/KWQObject.mm
@@ -33,7 +33,6 @@ bool QObject::connect(const QObject *src, const char *signal, const QObject *des
 {
     NSLog (@"QObject::connect() signal %s, slot %s\n", signal, slot);
     return FALSE;
-//    _logNeverImplemented();
 }
 
 
@@ -74,23 +73,27 @@ void QObject::setName(const char *)
 QVariant QObject::property(const char *name) const
 {
     _logNeverImplemented();
+    return QVariant();
 }
 
 bool QObject::inherits(const char *) const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
 bool QObject::connect(const QObject *, const char *, const char *) const
 {
     _logNeverImplemented();
+    return FALSE;    
 }
 
 
 int QObject:: startTimer(int)
 {
     _logNeverImplemented();
+    return 0;    
 }
 
 
diff --git a/WebCore/kwq/KWQPainter.h b/WebCore/kwq/KWQPainter.h
index 6c308aa..a1d54b0 100644
--- a/WebCore/kwq/KWQPainter.h
+++ b/WebCore/kwq/KWQPainter.h
@@ -123,6 +123,7 @@ public:
     const QPen &pen() const;
     void setPen(const QPen &);
     void setPen(PenStyle);
+    const QBrush &QPainter::brush() const;
     void setBrush(const QBrush &);
     void setBrush(BrushStyle);
 
@@ -133,6 +134,7 @@ public:
     
     void drawRect(int, int, int, int);
     void drawLine(int, int, int, int);
+    void drawLineSegments(const QPointArray &, int index=0, int nlines=-1);
     void drawEllipse(int, int, int, int);
     void drawArc(int, int, int, int, int, int);
     void drawPolyline(const QPointArray &, int index=0, int npoints=-1);
diff --git a/WebCore/kwq/KWQPainter.mm b/WebCore/kwq/KWQPainter.mm
index 7761de9..fb6fd53 100644
--- a/WebCore/kwq/KWQPainter.mm
+++ b/WebCore/kwq/KWQPainter.mm
@@ -145,13 +145,16 @@ void QPainter::setBrush(const QBrush &brush)
     data->qbrush = brush;
 }
 
-
 void QPainter::setBrush(BrushStyle style)
 {
     // Either NoBrush or SolidPattern.
-    data->qbrush.qbrushstyle = style;
+    data->qbrush.setStyle(style);
 }
 
+const QBrush &QPainter::brush() const
+{
+    return data->qbrush;
+}
 
 QRect QPainter::xForm(const QRect &) const
 {
@@ -202,7 +205,7 @@ void QPainter::restore()
 void QPainter::drawRect(int x, int y, int w, int h)
 {
     _lockFocus();
-    if (data->qbrush.qbrushstyle == SolidPattern){
+    if (data->qbrush.style() == SolidPattern){
         //_setColorFromBrush();
         //[NSBezierPath fillRect:NSMakeRect(x, y, w, h)];
     }
@@ -214,7 +217,7 @@ void QPainter::drawRect(int x, int y, int w, int h)
 
 void QPainter::_setColorFromBrush()
 {
-    [data->qbrush.qcolor.color set];
+    [data->qbrush.color().color set];
 }
 
 
@@ -226,9 +229,18 @@ void QPainter::_setColorFromPen()
 
 void QPainter::drawLine(int x1, int y1, int x2, int y2)
 {
+    NSBezierPath *path;
+
+    [NSBezierPath setDefaultLineWidth:0];
+
     _lockFocus();
     _setColorFromPen();
-    [NSBezierPath strokeLineFromPoint:NSMakePoint(x1, y1) toPoint:NSMakePoint(x2, y2)];
+    path = [NSBezierPath bezierPath];
+    [path setLineWidth:0];
+    [path moveToPoint:NSMakePoint(x1, y1)];
+    [path lineToPoint:NSMakePoint(x2, y2)];
+    [path closePath];
+    [path stroke];
     _unlockFocus();
 }
 
@@ -240,7 +252,7 @@ void QPainter::drawEllipse(int x, int y, int w, int h)
     path = [NSBezierPath bezierPathWithOvalInRect: NSMakeRect (x, y, w, h)];
     
     _lockFocus();
-    if (data->qbrush.qbrushstyle == SolidPattern){
+    if (data->qbrush.style() == SolidPattern){
         _setColorFromBrush();
         [path fill];
     }
@@ -277,6 +289,10 @@ void QPainter::drawArc (int x, int y, int w, int h, int a, int alen)
     _unlockFocus();
 }
 
+void QPainter::drawLineSegments(const QPointArray &points, int index, int nlines)
+{
+    _drawPoints (points, 0, index, nlines, FALSE);
+}
 
 void QPainter::drawPolyline(const QPointArray &points, int index, int npoints)
 {
@@ -314,7 +330,7 @@ void QPainter::_drawPoints (const QPointArray &_points, bool winding, int index,
         
         _lockFocus();
 
-        if (fill == TRUE && data->qbrush.qbrushstyle == SolidPattern){
+        if (fill == TRUE && data->qbrush.style() == SolidPattern){
             if (winding == TRUE)
                 [path setWindingRule: NSNonZeroWindingRule];
             else
@@ -488,8 +504,8 @@ void QPainter::drawText(int x, int y, int w, int h, int flags, const QString&qst
 void QPainter::fillRect(int x, int y, int w, int h, const QBrush &brush)
 {
     _lockFocus();
-    if (brush.qbrushstyle == SolidPattern){
-        [brush.qcolor.color set];
+    if (brush.style() == SolidPattern){
+        [brush.color().color set];
         [NSBezierPath fillRect:NSMakeRect(x, y, w, h)];
     }
     _unlockFocus();
diff --git a/WebCore/kwq/KWQPart.mm b/WebCore/kwq/KWQPart.mm
index df22f89..4d78676 100644
--- a/WebCore/kwq/KWQPart.mm
+++ b/WebCore/kwq/KWQPart.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <part.h>
 
 
@@ -30,21 +31,25 @@
 
 KParts::Part::Part()
 {
+    _logNotYetImplemented();
 }
 
 
 KParts::Part::~Part()
 {
+    _logNotYetImplemented();
 }
 
 
 QWidget *KParts::Part::widget()
 {
+    _logNotYetImplemented();
 }
 
 
 void KParts::Part::setWindowCaption(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -52,16 +57,18 @@ void KParts::Part::setWindowCaption(const QString &)
 
 KParts::ReadOnlyPart::ReadOnlyPart()
 {
+    _logNotYetImplemented();
 }
 
 
 KParts::ReadOnlyPart::~ReadOnlyPart()
 {
+    _logNotYetImplemented();
 }
 
 
 const KURL &KParts::ReadOnlyPart::url() const
 {
+    // must override
+    _logNeverImplemented();
 }
-
-
diff --git a/WebCore/kwq/KWQPen.h b/WebCore/kwq/KWQPen.h
index 4942dad..96eecca 100644
--- a/WebCore/kwq/KWQPen.h
+++ b/WebCore/kwq/KWQPen.h
@@ -72,8 +72,17 @@ public:
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
 private:
-    QPenPrivate *d;
-
+    QPen copy()  const;
+    void detach();
+    void init(const QColor &, uint, uint);
+    
+    struct QPenData : public QShared {
+        PenStyle  style;
+        uint      width;
+        QColor    color;
+        Q_UINT16  linest;
+    } *data;
+ 
 }; // class QPen ===============================================================
 
 #endif
diff --git a/WebCore/kwq/KWQPen.mm b/WebCore/kwq/KWQPen.mm
index fc3d666..b972cdc 100644
--- a/WebCore/kwq/KWQPen.mm
+++ b/WebCore/kwq/KWQPen.mm
@@ -25,92 +25,109 @@
 
 #include <qpen.h>
 
-class QPenPrivate
+void QPen::init(const QColor &color, uint width, uint linestyle)
 {
-friend class QPen;
-public:
-
-    QPenPrivate(const QColor &c, uint w, QPen::PenStyle ps) : 
-        qcolor(c), width(w), penStyle(ps)
-    {
-    }
-
-    ~QPenPrivate() {}
-
-private:    
-    QColor qcolor;
-    uint width;
-    QPen::PenStyle penStyle;
-};
-
+    data = new QPenData();
+    data->style = (PenStyle)(linestyle & MPenStyle);
+    data->width = width;
+    data->color = color;
+    data->linest = linestyle;
+}
 
 QPen::QPen()
 {
-    d = new QPenPrivate(Qt::black, 3, SolidLine);
+    init(Qt::black, 1, SolidLine);
 }
 
 
-QPen::QPen(const QColor &c, uint w, PenStyle ps)
+QPen::QPen(const QColor &color, uint width, PenStyle style)
 {
-    d = new QPenPrivate(c, w, ps);
+    init(color, width, style);
 }
 
 
 QPen::QPen(const QPen &copyFrom)
 {
-    d->qcolor = copyFrom.d->qcolor;
+    data = copyFrom.data;
+    data->ref();
 }
 
 
 QPen::~QPen()
 {
-    delete d;
+    if (data->deref()) {
+        delete data;
+    }
+}
+
+QPen QPen::copy() const
+{
+    QPen p(data->color, data->width, data->style);
+    return p;
 }
 
+void QPen::detach()
+{
+    if (data->count != 1) {
+        *this = copy();
+    }
+}
 
 const QColor &QPen::color() const
 {
-    return d->qcolor;
+    return data->color;
 }
 
 uint QPen::width() const
 {
-    return d->width;
+    return data->width;
 }
 
 QPen::PenStyle QPen::style() const
 {
-    return d->penStyle;
+    return data->style;
 }
 
-void QPen::setColor(const QColor &c)
+void QPen::setColor(const QColor &color)
 {
-    d->qcolor = c;
+    detach();
+    data->color = color;
 }
 
-void QPen::setWidth(uint w)
+void QPen::setWidth(uint width)
 {
-    d->width = w;
+    if (data->width == width) {
+        return;
+    }
+    detach();
+    data->width = width;
 }
 
-void QPen::setStyle(PenStyle ps)
+void QPen::setStyle(PenStyle style)
 {
-    d->penStyle = ps;
+    if (data->style == style) {
+        return;
+    }
+    detach();
+    data->style = style;
+    data->linest = (data->linest & ~MPenStyle) | style;
 }
 
 QPen &QPen::operator=(const QPen &assignFrom)
 {
-    d->qcolor = assignFrom.d->qcolor;
-    d->width = assignFrom.d->width;
-    d->penStyle = assignFrom.d->penStyle;
+    assignFrom.data->ref();
+    if (data->deref()) {
+        delete data;
+    }
+    data = assignFrom.data;
     return *this;
 }
 
 bool QPen::operator==(const QPen &compareTo) const
 {
-    return (d->width == compareTo.d->width) &&
-        (d->penStyle == compareTo.d->penStyle) &&
-        (d->qcolor == compareTo.d->qcolor);
+    return (data->width == compareTo.data->width) &&
+        (data->style == compareTo.data->style) &&
+        (data->color == compareTo.data->color);
 }
 
 
diff --git a/WebCore/kwq/KWQPixmap.mm b/WebCore/kwq/KWQPixmap.mm
index f0e3853..65e0f82 100644
--- a/WebCore/kwq/KWQPixmap.mm
+++ b/WebCore/kwq/KWQPixmap.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qpixmap.h>
 
 /*
@@ -96,13 +97,13 @@ QPixmap::~QPixmap()
 
 void QPixmap::setMask(const QBitmap &)
 {
-    NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 const QBitmap *QPixmap::mask() const
 {
-    NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQScrollView.mm b/WebCore/kwq/KWQScrollView.mm
index 9bb629e..5653d13 100644
--- a/WebCore/kwq/KWQScrollView.mm
+++ b/WebCore/kwq/KWQScrollView.mm
@@ -113,12 +113,14 @@ void QScrollView::setContentsPos(int x, int y)
 QScrollBar *QScrollView::horizontalScrollBar() const
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 QScrollBar *QScrollView::verticalScrollBar() const
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
@@ -178,6 +180,7 @@ void QScrollView::repaintContents(int x, int y, int w, int h, bool erase=TRUE)
 QPoint QScrollView::contentsToViewport(const QPoint &)
 {
     _logNeverImplemented();
+    return QPoint();
 }
 
 
@@ -196,6 +199,7 @@ void QScrollView::viewportWheelEvent(QWheelEvent *)
 QWidget *QScrollView::clipper() const
 {
     _logNeverImplemented();
+    return (QWidget *)this;
 }
 
 
diff --git a/WebCore/kwq/KWQSignalStubs.mm b/WebCore/kwq/KWQSignalStubs.mm
index 4eedd55..f91062d 100644
--- a/WebCore/kwq/KWQSignalStubs.mm
+++ b/WebCore/kwq/KWQSignalStubs.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
  
+#include <kwqdebug.h>
 #include <khtmlview.h>
 #include <misc/loader.h>
 #include <java/kjavaappletcontext.h>
@@ -30,29 +31,35 @@
 
 void KHTMLView::cleared()
 {
+    _logNotYetImplemented();
 }
 
 void KJavaAppletContext::showStatus  ( const QString& txt )
 {
+    _logNotYetImplemented();
 }
 
 
 void KJavaAppletContext::showDocument( const QString& url, const QString& target )
 {
+    _logNotYetImplemented();
 }
 
 
 void KJavaProcess::received( const QByteArray& )
 {
+    _logNotYetImplemented();
 }
 
 
 void khtml::Loader::requestDone( const DOM::DOMString &baseURL, khtml::CachedObject *obj )
 {
+    _logNotYetImplemented();
 }
 
 
 void khtml::Loader::requestFailed( const DOM::DOMString &baseURL, khtml::CachedObject *obj )
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQString.mm b/WebCore/kwq/KWQString.mm
index e1e4b91..c7e8fb6 100644
--- a/WebCore/kwq/KWQString.mm
+++ b/WebCore/kwq/KWQString.mm
@@ -26,6 +26,7 @@
 // FIXME: obviously many functions here can be made inline
 
 #include <Foundation/Foundation.h>
+#include <kwqdebug.h>
 #include <qstring.h>
 #include <qregexp.h>
 #include <stdio.h>
@@ -1143,15 +1144,13 @@ void QString::fill(QChar qc, int len)
 void QString::compose()
 {
     // FIXME: unimplemented because we don't do ligatures yet
-    NSLog(@"WARNING %s:%s:%d (NOT YET IMPLEMENTED)\n", __FILE__, __FUNCTION__,
-            __LINE__);
+    _logNotYetImplemented();
 }
 
 QString QString::visual()
 {
     // FIXME: unimplemented because we don't do BIDI yet
-    NSLog(@"WARNING %s:%s:%d (NOT YET IMPLEMENTED)\n", __FILE__, __FUNCTION__,
-            __LINE__);
+    _logNotYetImplemented();
     return QString(*this);
 }
 
diff --git a/WebCore/kwq/KWQStyle.mm b/WebCore/kwq/KWQStyle.mm
index e73fa69..62aec75 100644
--- a/WebCore/kwq/KWQStyle.mm
+++ b/WebCore/kwq/KWQStyle.mm
@@ -23,19 +23,23 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <KWQStyle.h>
 
 QStyle::QStyle()
 {
+    _logNotYetImplemented();
 }
 
 
 QStyle::~QStyle()
 {
+    _logNotYetImplemented();
 }
 
 
 Qt::GUIStyle QStyle::guiStyle() const
 {
+    return MacStyle;
 }
 
diff --git a/WebCore/kwq/KWQTextStream.mm b/WebCore/kwq/KWQTextStream.mm
index 8a31a9e..f856216 100644
--- a/WebCore/kwq/KWQTextStream.mm
+++ b/WebCore/kwq/KWQTextStream.mm
@@ -25,42 +25,55 @@
 
 #define NEED_BOGUS_TEXTSTREAMS 1
 
+#include <kwqdebug.h>
+
 #include <qtextstream.h>
 
 // class QTextStream ===========================================================
 
 QTextStream::QTextStream()
 {
+    _logNotYetImplemented();
 }
 
 
 QTextStream::QTextStream(QByteArray, int)
 {
+    _logNotYetImplemented();
 }
 
 
 QTextStream::~QTextStream()
 {
+    _logNotYetImplemented();
 }
 
 
 QTextStream &QTextStream::operator<<(char)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
 QTextStream &QTextStream::operator<<(const char *)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
 QTextStream &QTextStream::operator<<(const QCString &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
 QTextStream &QTextStream::operator<<(const QString &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
@@ -68,11 +81,14 @@ QTextStream &QTextStream::operator<<(const QString &)
 
 QTextIStream::QTextIStream(QString *)
 {
+    _logNotYetImplemented();
 }
 
 
 QString QTextIStream::readLine()
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
@@ -80,14 +96,18 @@ QString QTextIStream::readLine()
 
 QTextOStream::QTextOStream(QString *)
 {
+    _logNotYetImplemented();
 }
 
 
 QTextOStream::QTextOStream(QByteArray)
 {
+    _logNotYetImplemented();
 }
 
 QString QTextOStream::readLine()
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
diff --git a/WebCore/kwq/KWQTimer.mm b/WebCore/kwq/KWQTimer.mm
index 52e507f..28b7d17 100644
--- a/WebCore/kwq/KWQTimer.mm
+++ b/WebCore/kwq/KWQTimer.mm
@@ -23,10 +23,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
+
 #include <qtimer.h>
 
 void QTimer::singleShot(int, QObject *, const char *)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQToolTip.mm b/WebCore/kwq/KWQToolTip.mm
index 9eb29fb..17b06c9 100644
--- a/WebCore/kwq/KWQToolTip.mm
+++ b/WebCore/kwq/KWQToolTip.mm
@@ -22,6 +22,8 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+
+#include <kwqdebug.h>
 #include <qtooltip.h>
 
 // FIXME: 
@@ -29,17 +31,20 @@ static QPalette DEFAULT_PALETTE = QPalette();
 
 QPalette QToolTip::palette()
 {
+    _logNotYetImplemented();
     return DEFAULT_PALETTE;
 }
 
 
 QToolTip::QToolTip(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 void QToolTip::tip(const QRect &, const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQVariant.h b/WebCore/kwq/KWQVariant.h
index 54b0cbc..41290ff 100644
--- a/WebCore/kwq/KWQVariant.h
+++ b/WebCore/kwq/KWQVariant.h
@@ -33,6 +33,7 @@
 typedef unsigned int uint;
 
 class QString;
+class QVariantPrivate;
 
 // class QVariant ==============================================================
 
@@ -42,7 +43,10 @@ public:
     // typedefs ----------------------------------------------------------------
 
     enum Type {
+        Invalid,
+        String,
         UInt,
+        Double,
         Bool
     };
 
@@ -71,6 +75,9 @@ public:
 
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
+private:
+    
+    QVariantPrivate *d;
 
 }; // class QVariant ===========================================================
 
diff --git a/WebCore/kwq/KWQVariant.mm b/WebCore/kwq/KWQVariant.mm
index 6e81d8b..923b557 100644
--- a/WebCore/kwq/KWQVariant.mm
+++ b/WebCore/kwq/KWQVariant.mm
@@ -22,71 +22,160 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+#include <kwqdebug.h>
 
 #include <qvariant.h>
-
-#include <kwqdebug.h>
+#include <qstring.h>
+#include <_qshared.h>
+
+class QVariantPrivate : public QShared {
+friend class QVariant;
+public:
+    QVariantPrivate() {
+        t = QVariant::Invalid;
+    }
+    
+    QVariantPrivate(QVariantPrivate *other) {
+        switch (other->t) {
+            case QVariant::Invalid:
+                break;
+            case QVariant::String:
+                value.p = new QString(*((QString*)other->value.p));
+                break;
+            case QVariant::UInt:
+                value.u = other->value.u;
+                break;
+            case QVariant::Double:
+                value.d = other->value.d;
+                break;
+            case QVariant::Bool:
+                value.b = other->value.b;
+                break;
+        }
+    }
+    
+    ~QVariantPrivate() {
+         clear();
+    }
+    
+    void clear()
+    {
+        switch (t) {
+            case QVariant::Invalid:
+            case QVariant::UInt:
+            case QVariant::Double:
+            case QVariant::Bool:
+                break;
+            case QVariant::String:
+                delete (QString*)value.p;
+                break;
+        }
+        t = QVariant::Invalid;
+    }
+    
+    QVariant::Type t;
+
+    union {
+        bool b;
+        uint u;
+        double d;
+        void *p;
+    } value;
+};
 
 QVariant::QVariant()
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
 }
 
 
-QVariant::QVariant(bool b, int i)
+QVariant::QVariant(bool val, int i)
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
+    d->t = Bool;
+    d->value.d = val;
 }
 
 
-QVariant::QVariant(double d)
+QVariant::QVariant(double val)
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
+    d->t = Double;
+    d->value.d = val;
 }
 
 
 QVariant::QVariant(const QString &s)
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
+    d->t = String;
+    d->value.p = new QString(s);
 }
 
 
 QVariant::QVariant(const QVariant &other)
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
+    *this = other;
 }
 
 
 QVariant::~QVariant()
 {
-    _logNotYetImplemented();
+    if (d->deref()) {
+        delete d;
+    }
 }
 
 
 QVariant::Type QVariant::type() const
 {
-    _logNotYetImplemented();
-    return UInt;
+    return d->t;
 }
 
 
 bool QVariant::toBool() const
 {
-    _logNotYetImplemented();
-    return 0;
+    if (d->t == Bool) {
+        return d->value.b;
+    }
+    if (d->t == Double) {
+        return d->value.d != 0.0;
+    }
+    if (d->t == UInt) {
+        return d->value.u != 0;
+    }
+
+    return FALSE;
 }
 
 
 uint QVariant::toUInt() const
 {
-    _logNotYetImplemented();
+    if (d->t == UInt) {
+        return (int)d->value.u;
+    }
+    if (d->t == Double) {
+        return (int)d->value.d;
+    }
+    if (d->t == Bool) {
+        return (int)d->value.b;
+    }
+    
     return 0;
 }
 
 
 QVariant &QVariant::operator=(const QVariant &other)
 {
-    _logNotYetImplemented();
+    QVariant &variant = (QVariant &)other;
+    
+    variant.d->ref();
+    if (d->deref()) {
+        delete d;
+    }
+    d = variant.d;
+    
     return *this;
 }
 
diff --git a/WebCore/kwq/KWQXml.mm b/WebCore/kwq/KWQXml.mm
index 7ce69f5..c409d65 100644
--- a/WebCore/kwq/KWQXml.mm
+++ b/WebCore/kwq/KWQXml.mm
@@ -23,6 +23,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
+
 #include <qstring.h>
 
 #include <qxml.h>
@@ -31,41 +33,54 @@
     
 QXmlAttributes::QXmlAttributes()
 {
+    _logNotYetImplemented();
 }
 
 
 QXmlAttributes::QXmlAttributes(const QXmlAttributes &)
 {
+    _logNotYetImplemented();
 }
 
 
 QXmlAttributes::~QXmlAttributes()
 {
+    _logNotYetImplemented();
 }
 
 
 QString QXmlAttributes::value(const QString &) const
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 int QXmlAttributes::length() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 QString QXmlAttributes::localName(int index) const
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 QString QXmlAttributes::value(int index) const
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 QXmlAttributes &QXmlAttributes::operator=(const QXmlAttributes &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
@@ -76,16 +91,19 @@ QXmlAttributes &QXmlAttributes::operator=(const QXmlAttributes &)
 
 QXmlInputSource::QXmlInputSource()
 {
+    _logNotYetImplemented();
 }
 
 
 QXmlInputSource::~QXmlInputSource()
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlInputSource::setData(const QString& data)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -111,6 +129,7 @@ void QXmlInputSource::setData(const QString& data)
 
 QXmlDefaultHandler::~QXmlDefaultHandler()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -118,41 +137,50 @@ QXmlDefaultHandler::~QXmlDefaultHandler()
 
 QXmlSimpleReader::QXmlSimpleReader()
 {
+    _logNotYetImplemented();
 }
 
 
 QXmlSimpleReader::~QXmlSimpleReader()
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlSimpleReader::setContentHandler(QXmlContentHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QXmlSimpleReader::parse(const QXmlInputSource &input)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 void QXmlSimpleReader::setLexicalHandler(QXmlLexicalHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlSimpleReader::setDTDHandler(QXmlDTDHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlSimpleReader::setDeclHandler(QXmlDeclHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlSimpleReader::setErrorHandler(QXmlErrorHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -160,21 +188,27 @@ void QXmlSimpleReader::setErrorHandler(QXmlErrorHandler *handler)
 
 QXmlParseException::QXmlParseException()
 {
+    _logNotYetImplemented();
 }
 
 
 QString QXmlParseException::message() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QXmlParseException::columnNumber() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QXmlParseException::lineNumber() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
diff --git a/WebCore/kwq/KWQasyncimageio.mm b/WebCore/kwq/KWQasyncimageio.mm
index 97363c9..bd94f69 100644
--- a/WebCore/kwq/KWQasyncimageio.mm
+++ b/WebCore/kwq/KWQasyncimageio.mm
@@ -23,29 +23,36 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h> 
 #include <qasyncimageio.h> 
 
 // class QImageConsumer ========================================================
 
-const char* QImageConsumer::formatName(const uchar* buffer, int length)
+const char *QImageConsumer::formatName(const uchar* buffer, int length)
 {
+    _logNotYetImplemented();
+    return "";
 }
 
 
 // class QImageDecoder =========================================================
 
-const char* QImageDecoder::formatName(const uchar* buffer, int length)
+const char *QImageDecoder::formatName(const uchar* buffer, int length)
 {
+    _logNotYetImplemented();
+    return "";
 }
 
 
 QImageDecoder::QImageDecoder(QImageConsumer *)
 {
+    _logNotYetImplemented();
 }
 
 
 QImageDecoder::~QImageDecoder()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -53,6 +60,7 @@ QImageDecoder::~QImageDecoder()
 
 QImageFormat::~QImageFormat()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -60,5 +68,6 @@ QImageFormat::~QImageFormat()
 
 QImageFormatType::~QImageFormatType()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQasyncio.mm b/WebCore/kwq/KWQasyncio.mm
index 3e0a6ec..adbb721 100644
--- a/WebCore/kwq/KWQasyncio.mm
+++ b/WebCore/kwq/KWQasyncio.mm
@@ -23,21 +23,25 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qasyncio.h>
 
 // class QAsyncIO ==============================================================
 
 QAsyncIO::QAsyncIO()
 {
+    _logNotYetImplemented();
 }
 
 
 QAsyncIO::~QAsyncIO()
 {
+    _logNotYetImplemented();
 }
 
 void QAsyncIO::ready()
 {
+    _logNotYetImplemented();
 }
 
 // class QDataSource ===========================================================
@@ -45,10 +49,12 @@ void QAsyncIO::ready()
 
 void QDataSource::rewind()
 {
+    _logNotYetImplemented();
 }
 
 
 void QDataSource::maybeReady()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQsignals.mm b/WebCore/kwq/KWQsignals.mm
index 4eedd55..f91062d 100644
--- a/WebCore/kwq/KWQsignals.mm
+++ b/WebCore/kwq/KWQsignals.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
  
+#include <kwqdebug.h>
 #include <khtmlview.h>
 #include <misc/loader.h>
 #include <java/kjavaappletcontext.h>
@@ -30,29 +31,35 @@
 
 void KHTMLView::cleared()
 {
+    _logNotYetImplemented();
 }
 
 void KJavaAppletContext::showStatus  ( const QString& txt )
 {
+    _logNotYetImplemented();
 }
 
 
 void KJavaAppletContext::showDocument( const QString& url, const QString& target )
 {
+    _logNotYetImplemented();
 }
 
 
 void KJavaProcess::received( const QByteArray& )
 {
+    _logNotYetImplemented();
 }
 
 
 void khtml::Loader::requestDone( const DOM::DOMString &baseURL, khtml::CachedObject *obj )
 {
+    _logNotYetImplemented();
 }
 
 
 void khtml::Loader::requestFailed( const DOM::DOMString &baseURL, khtml::CachedObject *obj )
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/kdecore/kglobal.h b/WebCore/kwq/kdecore/kglobal.h
index 4295c2f..0c3bcca 100644
--- a/WebCore/kwq/kdecore/kglobal.h
+++ b/WebCore/kwq/kdecore/kglobal.h
@@ -83,6 +83,10 @@ public:
 // private ---------------------------------------------------------------------
 
 private:
+    static KWQStaticStringDict *_stringDict;
+    static KInstance *_instance;
+    static KLocale *_locale;
+    static KCharsets *_charsets;
 
 // add copy constructor
 // this private declaration prevents copying
diff --git a/WebCore/kwq/khtml/khtml_settings.h b/WebCore/kwq/khtml/khtml_settings.h
index a5b26da..fb7e8a5 100644
--- a/WebCore/kwq/khtml/khtml_settings.h
+++ b/WebCore/kwq/khtml/khtml_settings.h
@@ -72,8 +72,9 @@ public:
     int maxFormCompletionItems() const;
 
 private:
-    QValueList<int>     m_fontSizes;
+    QValueList<int> m_fontSizes;
     QString m_fontFamilies;
+    QFont::CharSet m_charSet;
 };
 
 #endif
diff --git a/WebCore/kwq/kio/jobclasses.h b/WebCore/kwq/kio/jobclasses.h
index 5f51556..6a56efc 100644
--- a/WebCore/kwq/kio/jobclasses.h
+++ b/WebCore/kwq/kio/jobclasses.h
@@ -59,7 +59,7 @@ public:
 
     // member functions --------------------------------------------------------
 
-    int error();
+    virtual int error();
     const QString & errorText();
     QString errorString();
     virtual void kill(bool quietly=TRUE);
@@ -153,6 +153,7 @@ public:
 
     // member functions --------------------------------------------------------
 
+    int error();
     bool isErrorPage() const;
     QString queryMetaData(const QString &key);
     void addMetaData(const QString &key, const QString &value);
diff --git a/WebCore/kwq/kwqdebug.h b/WebCore/kwq/kwqdebug.h
index b833bf0..301c20b 100644
--- a/WebCore/kwq/kwqdebug.h
+++ b/WebCore/kwq/kwqdebug.h
@@ -34,14 +34,32 @@
 #undef Rect
 #undef Boolean
 
+extern int KWQ_LOG_LEVEL;
+extern int KWQ_LOG_NEVER_IMPLEMENTED;
+extern int KWQ_LOG_PARTIALLY_IMPLEMENTED;
+extern int KWQ_LOG_NOT_YET_IMPLEMENTED;
+
 #define _logNeverImplemented() \
-        NSLog(@"ERROR %s:%d  %s (NOT IMPLEMENTED)\n", __FILE__, __LINE__, \
-                __FUNCTION__)
+    do { \
+        if (KWQ_LOG_LEVEL & KWQ_LOG_NEVER_IMPLEMENTED) { \
+            NSLog(@"ERROR %s:%d  %s (NOT IMPLEMENTED)\n", __FILE__, __LINE__, __FUNCTION__); \
+        } \
+    } while (0)
+
 #define _logPartiallyImplemented() \
-        NSLog(@"ERROR %s:%d  %s (PARTIALLY IMPLEMENTED)\n", __FILE__, \
-                __LINE__, __FUNCTION__)
+    do { \
+        if (KWQ_LOG_LEVEL & KWQ_LOG_PARTIALLY_IMPLEMENTED) { \
+            NSLog(@"WARNING %s:%d  %s (PARTIALLY IMPLEMENTED)\n", __FILE__, __LINE__, __FUNCTION__); \
+        } \
+    } while (0)
+
 #define _logNotYetImplemented() \
-        NSLog (@"WARNING %s:%d  %s (NOT YET IMPLEMENTED)\n", __FILE__, \
-                __LINE__, __FUNCTION__)
+    do { \
+        if (KWQ_LOG_LEVEL & KWQ_LOG_NOT_YET_IMPLEMENTED) { \
+            NSLog (@"WARNING %s:%d  %s (NOT YET IMPLEMENTED)\n", __FILE__, __LINE__, __FUNCTION__); \
+        } \
+    } while (0)
 
 #endif
+
+void KWQSetLogLevel(int mask);
diff --git a/WebCore/kwq/kwqdebug.mm b/WebCore/kwq/kwqdebug.mm
index 04cf569..3faa0a9 100644
--- a/WebCore/kwq/kwqdebug.mm
+++ b/WebCore/kwq/kwqdebug.mm
@@ -24,3 +24,17 @@
  */
 
 #include <kwqdebug.h>
+
+int KWQ_LOG_NONE = 0;
+int KWQ_LOG_ALL = 0x7f;
+
+int KWQ_LOG_NEVER_IMPLEMENTED = 0x1;
+int KWQ_LOG_PARTIALLY_IMPLEMENTED = 0x2;
+int KWQ_LOG_NOT_YET_IMPLEMENTED = 0x4;
+
+int KWQ_LOG_LEVEL = KWQ_LOG_ALL;
+
+
+void KWQSetLogLevel(int mask) {
+    KWQ_LOG_LEVEL = mask;    
+}
\ No newline at end of file
diff --git a/WebCore/kwq/qt/qbrush.h b/WebCore/kwq/qt/qbrush.h
index c8222ee..f859435 100644
--- a/WebCore/kwq/qt/qbrush.h
+++ b/WebCore/kwq/qt/qbrush.h
@@ -33,6 +33,8 @@
 #include "qcolor.h"
 #include "qnamespace.h"
 
+class QBrushPrivate;
+
 // class QBrush ================================================================
 
 class QBrush : public Qt {
@@ -48,6 +50,7 @@ public:
 
     QBrush();
     QBrush(const QColor &);
+    QBrush::QBrush(const QColor &c, BrushStyle style);
     QBrush(const QBrush &);
     QBrush &operator=(const QBrush &);
     ~QBrush();
@@ -56,6 +59,8 @@ public:
     
     const QColor &color() const;
     void setColor(const QColor &);
+    BrushStyle style() const;
+    void setStyle(BrushStyle);
     
     // operators ---------------------------------------------------------------
     
@@ -64,8 +69,14 @@ public:
 
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
-    QColor qcolor;
-    BrushStyle qbrushstyle;
+private:
+    void init(const QColor &, BrushStyle);
+    QBrush copy() const;
+    void detach();
+    struct QBrushData : public QShared { 
+        BrushStyle brushStyle;
+        QColor color;
+    } *data;
 
 }; // class QBrush =============================================================
 
diff --git a/WebCore/kwq/qt/qmovie.h b/WebCore/kwq/qt/qmovie.h
index 81e3b7c..c0f53e8 100644
--- a/WebCore/kwq/qt/qmovie.h
+++ b/WebCore/kwq/qt/qmovie.h
@@ -36,6 +36,10 @@
 #include "qimage.h"
 #include "qrect.h"
 
+#ifdef _KWQ_
+class QMoviePrivate;
+#endif
+
 // class QMovie ================================================================
 
 class QMovie {
@@ -84,6 +88,10 @@ public:
 
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
+private:
+#ifdef _KWQ_
+    QMoviePrivate *d;
+#endif
 
 }; // class QMovie =============================================================
 
diff --git a/WebCore/kwq/qt/qnamespace.h b/WebCore/kwq/qt/qnamespace.h
index 37a6db1..f5c7d6f 100644
--- a/WebCore/kwq/qt/qnamespace.h
+++ b/WebCore/kwq/qt/qnamespace.h
@@ -81,6 +81,9 @@ public:
         SolidLine,
         DotLine,
         DashLine,
+        DashDotLine,
+        DashDotDotLine,
+        MPenStyle = 0x0f
     };
 
     enum BrushStyle {
diff --git a/WebCore/kwq/qt/qpainter.h b/WebCore/kwq/qt/qpainter.h
index 6c308aa..a1d54b0 100644
--- a/WebCore/kwq/qt/qpainter.h
+++ b/WebCore/kwq/qt/qpainter.h
@@ -123,6 +123,7 @@ public:
     const QPen &pen() const;
     void setPen(const QPen &);
     void setPen(PenStyle);
+    const QBrush &QPainter::brush() const;
     void setBrush(const QBrush &);
     void setBrush(BrushStyle);
 
@@ -133,6 +134,7 @@ public:
     
     void drawRect(int, int, int, int);
     void drawLine(int, int, int, int);
+    void drawLineSegments(const QPointArray &, int index=0, int nlines=-1);
     void drawEllipse(int, int, int, int);
     void drawArc(int, int, int, int, int, int);
     void drawPolyline(const QPointArray &, int index=0, int npoints=-1);
diff --git a/WebCore/kwq/qt/qpen.h b/WebCore/kwq/qt/qpen.h
index 4942dad..96eecca 100644
--- a/WebCore/kwq/qt/qpen.h
+++ b/WebCore/kwq/qt/qpen.h
@@ -72,8 +72,17 @@ public:
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
 private:
-    QPenPrivate *d;
-
+    QPen copy()  const;
+    void detach();
+    void init(const QColor &, uint, uint);
+    
+    struct QPenData : public QShared {
+        PenStyle  style;
+        uint      width;
+        QColor    color;
+        Q_UINT16  linest;
+    } *data;
+ 
 }; // class QPen ===============================================================
 
 #endif
diff --git a/WebCore/kwq/qt/qvariant.h b/WebCore/kwq/qt/qvariant.h
index 54b0cbc..41290ff 100644
--- a/WebCore/kwq/qt/qvariant.h
+++ b/WebCore/kwq/qt/qvariant.h
@@ -33,6 +33,7 @@
 typedef unsigned int uint;
 
 class QString;
+class QVariantPrivate;
 
 // class QVariant ==============================================================
 
@@ -42,7 +43,10 @@ public:
     // typedefs ----------------------------------------------------------------
 
     enum Type {
+        Invalid,
+        String,
         UInt,
+        Double,
         Bool
     };
 
@@ -71,6 +75,9 @@ public:
 
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
+private:
+    
+    QVariantPrivate *d;
 
 }; // class QVariant ===========================================================
 
diff --git a/WebCore/src/kdelibs/khtml/css/html4.css b/WebCore/src/kdelibs/khtml/css/html4.css
index 4888612..4b97b7e 100644
--- a/WebCore/src/kdelibs/khtml/css/html4.css
+++ b/WebCore/src/kdelibs/khtml/css/html4.css
@@ -450,6 +450,7 @@ acronym {
 }
 
 :focus          { outline: 1px dotted invert }
+a:link          { color: blue; text-decoration: underline; }
 a:link:active          { color: red; outline: 1px dotted invert; }
 a:visited:active          { color: red; outline: 1px dotted invert; }
 
diff --git a/WebCore/src/kdelibs/khtml/ecma/.cvsignore b/WebCore/src/kdelibs/khtml/ecma/.cvsignore
index 708a929..f8af57a 100644
--- a/WebCore/src/kdelibs/khtml/ecma/.cvsignore
+++ b/WebCore/src/kdelibs/khtml/ecma/.cvsignore
@@ -5,5 +5,6 @@ Makefile.in
 *.dep
 *.moc
 *.gperf
+testecma
 export-objects
 export-headers
diff --git a/WebCore/src/kdelibs/khtml/rendering/render_text.cpp b/WebCore/src/kdelibs/khtml/rendering/render_text.cpp
index 2365b14..e44e521 100644
--- a/WebCore/src/kdelibs/khtml/rendering/render_text.cpp
+++ b/WebCore/src/kdelibs/khtml/rendering/render_text.cpp
@@ -107,7 +107,7 @@ void TextSlave::printDecoration( QPainter *pt, RenderText* p, int _tx, int _ty,
     int width = m_width;
 
     if( begin )
- 	width -= p->paddingLeft() + p->borderLeft();
+ 	    width -= p->paddingLeft() + p->borderLeft();
 
     if ( end )
         width -= p->paddingRight() + p->borderRight();
@@ -115,6 +115,11 @@ void TextSlave::printDecoration( QPainter *pt, RenderText* p, int _tx, int _ty,
     int underlineOffset = ( pt->fontMetrics().height() + m_baseline ) / 2;
     if(underlineOffset <= m_baseline) underlineOffset = m_baseline+1;
 
+    // FIXME: [kocienda]
+    // This hack gets the underline in a better place but we should be
+    // doing something better.
+    underlineOffset+=2;
+
     if(deco & UNDERLINE)
         pt->drawLine(_tx, _ty + underlineOffset, _tx + width, _ty + underlineOffset );
     if(deco & OVERLINE)
diff --git a/WebCore/src/kwq/KWQApplication.mm b/WebCore/src/kwq/KWQApplication.mm
index eb031d2..e2bcd7f 100644
--- a/WebCore/src/kwq/KWQApplication.mm
+++ b/WebCore/src/kwq/KWQApplication.mm
@@ -22,6 +22,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+#include <kwqdebug.h>
 
 #include <qapplication.h>
 #include <qpalette.h>
@@ -30,6 +31,7 @@
 
 // FIXME: 
 static QPalette DEFAULT_PALETTE = QPalette();
+static QSize DEFAULT_SIZE = QSize(0,0);
 
 QPalette QApplication::palette(const QWidget *p)
 {
@@ -39,46 +41,46 @@ QPalette QApplication::palette(const QWidget *p)
 
 QWidget *QApplication::desktop()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
     return 0;
 }
 
 
 int QApplication::startDragDistance()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
      return 2;
 }
 
 
 QSize QApplication::globalStrut()
 {
-    static QSize *structSize = new QSize(0,0); 
-    NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
-    return *structSize;
+    _logNotYetImplemented();
+    return DEFAULT_SIZE;
 }
 
 
 void QApplication::setOverrideCursor(const QCursor &c)
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 void QApplication::restoreOverrideCursor()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 bool QApplication::sendEvent(QObject *o, QEvent *e)
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 void QApplication::sendPostedEvents(QObject *receiver, int event_type)
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQBitmap.mm b/WebCore/src/kwq/KWQBitmap.mm
index 7f632fe..65c2ea2 100644
--- a/WebCore/src/kwq/KWQBitmap.mm
+++ b/WebCore/src/kwq/KWQBitmap.mm
@@ -23,35 +23,43 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qbitmap.h>
 
 QBitmap::QBitmap()
 {
+    _logNotYetImplemented();
 }
 
 
 QBitmap::QBitmap(int,int)
 {
+    _logNotYetImplemented();
 }
 
 
 QBitmap::QBitmap(const QBitmap &)
 {
+    _logNotYetImplemented();
 }
 
 
 QBitmap &QBitmap::operator=(const QBitmap &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
 QBitmap &QBitmap::operator=(const QPixmap &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
 QBitmap &QBitmap::operator=(const QImage &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
-
-
diff --git a/WebCore/src/kwq/KWQBrush.mm b/WebCore/src/kwq/KWQBrush.mm
index 30287d6..376b91a 100644
--- a/WebCore/src/kwq/KWQBrush.mm
+++ b/WebCore/src/kwq/KWQBrush.mm
@@ -25,52 +25,91 @@
 
 #include <qbrush.h>
 
+void QBrush::init(const QColor &color, BrushStyle style)
+{
+    data = new QBrushData();
+    data->color = color;
+    data->brushStyle = style;
+}
+
 QBrush::QBrush()
 {
-    qcolor = Qt::black;
-    qbrushstyle = SolidPattern;
+    init(Qt::black, SolidPattern);
 }
 
 
 QBrush::QBrush(const QColor &c)
 {
-    qcolor = c;
-    qbrushstyle = SolidPattern;
+    init(c, SolidPattern);
 }
 
+QBrush::QBrush(const QColor &c, BrushStyle style)
+{
+    init(c, style);
+}
 
 QBrush::QBrush(const QBrush &copyFrom)
 {
-    qcolor = copyFrom.qcolor;
-    qbrushstyle = copyFrom.qbrushstyle;
+    data = copyFrom.data;
+    data->ref();
 }
 
-
 QBrush &QBrush::operator=(const QBrush &assignFrom)
 {
-    qcolor = assignFrom.qcolor;
-    qbrushstyle = assignFrom.qbrushstyle;
+    assignFrom.data->ref();
+    if (data->deref()) {
+        delete data;
+    }
+    data = assignFrom.data;
     return *this;
 }
 
-
 QBrush::~QBrush()
 {
+    if (data->deref()) {
+        delete data;
+    }
+}
+
+QBrush QBrush::copy() const
+{
+    return QBrush(data->color, data->brushStyle);
+}
+
+void QBrush::detach()
+{
+    if (data->count != 1) {
+        *this = copy();
+    }
 }
 
 const QColor &QBrush::color() const
 {
-    return qcolor;
+    return data->color;
 }
 
 void QBrush::setColor(const QColor &c)
 {
-    qcolor = c;
+    detach();
+    data->color = c;
+}
+
+Qt::BrushStyle QBrush::style() const
+{
+    return data->brushStyle;
+}
+
+void QBrush::setStyle(Qt::BrushStyle bs)
+{
+    detach();
+    data->brushStyle = bs;
 }
 
 bool QBrush::operator==(const QBrush &compareTo) const
 {
-    return qcolor == compareTo.qcolor;
+    return (compareTo.data == data) || 
+        (compareTo.data->brushStyle == data->brushStyle && 
+         compareTo.data->color == data->color);
 }
 
 
diff --git a/WebCore/src/kwq/KWQColor.mm b/WebCore/src/kwq/KWQColor.mm
index 13c2b00..dec0cd5 100644
--- a/WebCore/src/kwq/KWQColor.mm
+++ b/WebCore/src/kwq/KWQColor.mm
@@ -49,10 +49,13 @@ QColor::QColor()
 
 QColor::QColor(int r, int g, int b)
 {
-    if ( !globals_init )
-	initGlobalColors();
-    else
+    color = nil;
+    if (!globals_init) {
+	    initGlobalColors();
+	}
+    else {
         _initialize (r, g, b);
+    }
 }
 
 QColor::QColor(const QString &name)
@@ -85,14 +88,12 @@ QColor::~QColor(){
 
 QColor::QColor(const QColor &copyFrom)
 {
-    if (color == copyFrom.color)
-        return;
-    //if (color != nil)
-    //    [color release];
-    if (copyFrom.color != nil)
+    if (copyFrom.color != nil) {
         color = [copyFrom.color retain];
-    else
+    }
+    else {
         color = nil;
+    }
 }
 
 QString QColor::name() const
@@ -241,9 +242,41 @@ void QColor::setRgb(int rgb)
 }
 
 
-void QColor::hsv(int *, int *, int *) const
+void QColor::hsv(int *h, int *s, int *v) const
 {
-    _logNotYetImplemented();
+    int r = red(); 
+    int g = green(); 
+    int b = blue(); 
+    int i, w, x, f;
+        
+    x = w = r;
+    
+    if (g > x) {
+        x = g;
+    } 
+    if (g < w) {
+        w = g;
+    }
+    
+    if (b > x) {
+        x = b;
+    } 
+    if (b < w) {
+        w = b;
+    }
+  
+    if (w == x) {
+        *h = -1;
+        *s = 0;
+        *v = w;
+    }
+    else {
+        f = (r == x) ? g - b : ((g == x) ? b - r : r - g); 
+        i = (r == x) ? 3 : ((g == x) ? 5 : 1); 
+        *h = i - f /(w - x);
+        *s = (w - x)/w;
+        *v = w; 
+    }
 }
 
 QColor QColor::light(int f = 150) const
diff --git a/WebCore/src/kwq/KWQColorGroup.mm b/WebCore/src/kwq/KWQColorGroup.mm
index fdcfd4b..b3bb094 100644
--- a/WebCore/src/kwq/KWQColorGroup.mm
+++ b/WebCore/src/kwq/KWQColorGroup.mm
@@ -22,6 +22,7 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+#include <kwqdebug.h>
 
 #include <qpalette.h>
 #include <qcolor.h>
@@ -64,8 +65,6 @@ private:
     QBrush *brushes;  
 };
 
-#include <kwqdebug.h>
-
 QColorGroup::QColorGroup()
 {
     d = new QColorGroupPrivate();
diff --git a/WebCore/src/kwq/KWQComboBox.mm b/WebCore/src/kwq/KWQComboBox.mm
index b368b3a..9a3d9e0 100644
--- a/WebCore/src/kwq/KWQComboBox.mm
+++ b/WebCore/src/kwq/KWQComboBox.mm
@@ -68,6 +68,7 @@ int QComboBox::count() const
 QListBox *QComboBox::listBox() const
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
@@ -80,6 +81,7 @@ void QComboBox::popup()
 bool QComboBox::eventFilter(QObject *object, QEvent *event)
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
diff --git a/WebCore/src/kwq/KWQCompletion.mm b/WebCore/src/kwq/KWQCompletion.mm
index a0dcc44..94f5a31 100644
--- a/WebCore/src/kwq/KWQCompletion.mm
+++ b/WebCore/src/kwq/KWQCompletion.mm
@@ -23,34 +23,36 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <KWQCompletion.h>
 
 KCompletion::KCompletion()
 {
+    _logNotYetImplemented();
 }
 
-
 KCompletion::~KCompletion()
 {
+    _logNotYetImplemented();
 }
 
-
 void KCompletion::setItems(const QStringList &)
 {
+    _logNotYetImplemented();
 }
 
-
 KCompletionBase::KCompletionBase()
 {
+    _logNotYetImplemented();
 }
 
-
 KCompletionBase::~KCompletionBase()
 {
+    _logNotYetImplemented();
 }
 
 KCompletion *KCompletionBase::completionObject(bool hsig = true)
 {
+    _logNotYetImplemented();
+    return 0L;
 }
-
-
diff --git a/WebCore/src/kwq/KWQCursor.mm b/WebCore/src/kwq/KWQCursor.mm
index f3be66f..9948928 100644
--- a/WebCore/src/kwq/KWQCursor.mm
+++ b/WebCore/src/kwq/KWQCursor.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qcursor.h>
 
 const QCursor & Qt::sizeAllCursor = QCursor();
@@ -31,27 +32,32 @@ const QCursor & Qt::splitVCursor = QCursor();
 
 QCursor::QCursor()
 {
+    _logNotYetImplemented();
 }
 
-
 QCursor::QCursor(const QPixmap &pixmap, int hotX, int hotY)
 {
-}
-
-QPoint QCursor::pos()
-{
+    _logNotYetImplemented();
 }
 
 QCursor::QCursor(const QCursor &)
 {
+    _logNotYetImplemented();
 }
 
-
 QCursor::~QCursor()
 {
+    _logNotYetImplemented();
 }
       
+QPoint QCursor::pos()
+{
+    _logNotYetImplemented();
+    return QPoint();
+}
 
 QCursor &QCursor::operator=(const QCursor &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
diff --git a/WebCore/src/kwq/KWQDrawUtil.mm b/WebCore/src/kwq/KWQDrawUtil.mm
index 88c9198..47d8c59 100644
--- a/WebCore/src/kwq/KWQDrawUtil.mm
+++ b/WebCore/src/kwq/KWQDrawUtil.mm
@@ -23,11 +23,82 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qdrawutil.h>
 
-void qDrawShadePanel(QPainter *, int, int, int, int, const QColorGroup &, bool
-        sunken = FALSE, int lineWidth = 1, const QBrush *fill = 0)
+void qDrawShadePanel(QPainter *p, int x, int y, int w, int h, const QColorGroup &g, bool
+        sunken = FALSE, int lineWidth, const QBrush *fill)
 {
-    NSLog (@"WARNING %s:%s:%d (NOT YET IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    if ( w == 0 || h == 0 ) {
+        return;
+    }
+
+    QPen oldPen = p->pen();                     // save pen
+    QPointArray a(4 * lineWidth);
+    
+    if (sunken) {
+        p->setPen(g.dark());
+    }
+    else {
+        p->setPen(g.light());
+    }
+
+    int x1, y1, x2, y2;
+    int i;
+    int n = 0;
+    x1 = x;
+    y1 = y2 = y;
+    x2 = x+w-2;
+
+    for (i = 0; i < lineWidth; i++) {             // top shadow
+        a.setPoint(n++, x1, y1++);
+        a.setPoint(n++, x2--, y2++);
+    }
+
+    x2 = x1;
+    y1 = y+h-2;
+
+    for (i = 0; i < lineWidth; i++) {             // left shadow
+        a.setPoint(n++, x1++, y1);
+        a.setPoint(n++, x2++, y2--);
+    }
+
+    p->drawLineSegments(a);
+    n = 0;
+
+    if (sunken) {
+        p->setPen(g.light());
+    }
+    else {
+        p->setPen(g.dark());
+    }
+
+    x1 = x;
+    y1 = y2 = y+h-1;
+    x2 = x+w-1;
+
+    for (i = 0; i < lineWidth; i++) {             // bottom shadow
+        a.setPoint(n++, x1++, y1--);
+        a.setPoint(n++, x2, y2--);
+    }
+
+    x1 = x2;
+    y1 = y;
+    y2 = y+h-lineWidth-1;
+
+    for (i = 0; i < lineWidth; i++) {             // right shadow
+        a.setPoint(n++, x1--, y1++);
+        a.setPoint(n++, x2--, y2);
+    }
+
+    p->drawLineSegments(a);
+    if (fill) {                               // fill with fill color
+        QBrush oldBrush = p->brush();
+        p->setPen(Qt::NoPen);
+        p->setBrush(*fill);
+        p->drawRect(x+lineWidth, y+lineWidth, w-lineWidth*2, h-lineWidth*2);
+        p->setBrush(oldBrush);
+    }
+    p->setPen(oldPen);                        // restore pen
 }
 
diff --git a/WebCore/src/kwq/KWQEvent.mm b/WebCore/src/kwq/KWQEvent.mm
index 92180dd..ef2caf3 100644
--- a/WebCore/src/kwq/KWQEvent.mm
+++ b/WebCore/src/kwq/KWQEvent.mm
@@ -23,22 +23,30 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qevent.h>
 
+// FIXME: replace this hack
+static const QPoint ORIGIN(0,0);
+
 // class QEvent ================================================================
 
 QEvent::QEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
 QEvent::~QEvent()
 {
+    _logNotYetImplemented();
 }
 
 
 QEvent::Type QEvent::type() const
 {
+    _logNotYetImplemented();
+    return MouseButtonPress;
 }
 
 
@@ -46,46 +54,64 @@ QEvent::Type QEvent::type() const
 
 QMouseEvent::QMouseEvent(Type type, const QPoint &pos, int button, int state)
 {
+    _logNotYetImplemented();
 }
 
 
 int QMouseEvent::x()
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QMouseEvent::y()
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QMouseEvent::globalX()
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QMouseEvent::globalY()
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 const QPoint &QMouseEvent::pos() const
 {
+    _logNotYetImplemented();
+    // FIXME: replace this hack
+    return ORIGIN;
 }
 
 
 Qt::ButtonState QMouseEvent::button()
 {
+    _logNotYetImplemented();
+    return Qt::NoButton;
 }
 
 
 Qt::ButtonState QMouseEvent::state()
 {
+    _logNotYetImplemented();
+    return Qt::NoButton;
 }
 
 
 Qt::ButtonState QMouseEvent::stateAfter()
 {
+    _logNotYetImplemented();
+    return Qt::NoButton;
 }
 
 
@@ -93,16 +119,20 @@ Qt::ButtonState QMouseEvent::stateAfter()
 
 QTimerEvent::QTimerEvent(int timerId)
 {
+    _logNotYetImplemented();
 }
 
 
 QTimerEvent::~QTimerEvent()
 {
+    _logNotYetImplemented();
 }
 
 
 int QTimerEvent::timerId() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
@@ -110,26 +140,33 @@ int QTimerEvent::timerId() const
 
 QKeyEvent::QKeyEvent(Type, Key, int, int)
 {
+    _logNotYetImplemented();
 }
 
 
 int QKeyEvent::key() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 Qt::ButtonState QKeyEvent::state() const
 {
+    _logNotYetImplemented();
+    return Qt::NoButton;
 }
 
 
 void QKeyEvent::accept()
 {
+    _logNotYetImplemented();
 }
 
 
 void QKeyEvent::ignore()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -137,6 +174,7 @@ void QKeyEvent::ignore()
 
 QFocusEvent::QFocusEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -144,6 +182,7 @@ QFocusEvent::QFocusEvent(Type)
 
 QHideEvent::QHideEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -151,6 +190,7 @@ QHideEvent::QHideEvent(Type)
 
 QResizeEvent::QResizeEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -158,6 +198,7 @@ QResizeEvent::QResizeEvent(Type)
 
 QShowEvent::QShowEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -165,16 +206,19 @@ QShowEvent::QShowEvent(Type)
 
 QWheelEvent::QWheelEvent(Type)
 {
+    _logNotYetImplemented();
 }
 
 
 void QWheelEvent::accept()
 {
+    _logNotYetImplemented();
 }
 
 
 void QWheelEvent::ignore()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -182,4 +226,5 @@ void QWheelEvent::ignore()
 
 QCustomEvent::QCustomEvent(Type)
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/src/kwq/KWQFontDatabase.mm b/WebCore/src/kwq/KWQFontDatabase.mm
index 6043ebb..a4713c9 100644
--- a/WebCore/src/kwq/KWQFontDatabase.mm
+++ b/WebCore/src/kwq/KWQFontDatabase.mm
@@ -23,29 +23,39 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qfontdatabase.h>
 
 QFontDatabase::QFontDatabase()
 {
+    _logNotYetImplemented();
 }
 
 
 QFont QFontDatabase::font(const QString, const QString &, int, const QString charSetName)
 {
+    _logNotYetImplemented();
+    return QFont();
 }
 
 
 bool QFontDatabase::isSmoothlyScalable(const QString &family, const QString &style, const QString &charSet) const
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 QValueList<int> QFontDatabase::smoothSizes(const QString &, const QString &, const QString &charSet)
 {
+    _logNotYetImplemented();
+    return QValueList<int>();
 }
 
 
 QString QFontDatabase::styleString(const QFont &)
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
diff --git a/WebCore/src/kwq/KWQFontInfo.mm b/WebCore/src/kwq/KWQFontInfo.mm
index 8eb33b5..b398c2e 100644
--- a/WebCore/src/kwq/KWQFontInfo.mm
+++ b/WebCore/src/kwq/KWQFontInfo.mm
@@ -23,26 +23,31 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-
+#include <kwqdebug.h>
 #include <qfontinfo.h>
 
 QFontInfo::QFontInfo(const QFont &)
 {
+    _logNotYetImplemented();
 }
 
 
 QFontInfo::QFontInfo(const QFontInfo &)
 {
+    _logNotYetImplemented();
 }
 
 
 QFontInfo::~QFontInfo()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QFontInfo::fixedPitch() const
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
@@ -50,5 +55,7 @@ bool QFontInfo::fixedPitch() const
 
 QFontInfo &QFontInfo::operator=(const QFontInfo &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
diff --git a/WebCore/src/kwq/KWQFontMetrics.mm b/WebCore/src/kwq/KWQFontMetrics.mm
index a86a48a..56b0bdf 100644
--- a/WebCore/src/kwq/KWQFontMetrics.mm
+++ b/WebCore/src/kwq/KWQFontMetrics.mm
@@ -22,10 +22,12 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+#include <math.h>
 
+#include <kwqdebug.h>
 #include <qfontmetrics.h>
 
-#include <kwqdebug.h>
+#define ROUND_TO_INT(f) ((int)rint((f)))
 
 QFontMetrics::QFontMetrics()
 {
@@ -83,7 +85,7 @@ int QFontMetrics::ascent() const
     // Qt seems to use [font defaultLineHeightForFont] + [font descender] instead
     // of what seems more natural [font ascender].
     // Remember that descender is negative. 
-    return (int)([data->font defaultLineHeightForFont] + [data->font descender]);
+    return ROUND_TO_INT([data->font defaultLineHeightForFont] + [data->font descender]);
 }
 
 
@@ -92,7 +94,7 @@ int QFontMetrics::height() const
     // According to Qt documentation: 
     // "This is always equal to ascent()+descent()+1 (the 1 is for the base line)."
     // However, the [font defaultLineHeightForFont] seems more appropriate.
-    return (int)[data->font defaultLineHeightForFont];
+    return ROUND_TO_INT([data->font defaultLineHeightForFont]);
 }
 
 
@@ -100,14 +102,14 @@ int QFontMetrics::width(QChar qc) const
 {
     ushort c = qc.unicode();
     NSString *string = [NSString stringWithCharacters: (const unichar *)&c length: 1];
-    return (int)[data->font widthOfString: string];
+    return ROUND_TO_INT([data->font widthOfString: string]);
 }
 
 
 int QFontMetrics::width(char c) const
 {
     NSString *string = [NSString stringWithCString: &c length: 1];
-    return (int)[data->font widthOfString: string];
+    return ROUND_TO_INT([data->font widthOfString: string]);
 }
 
 
@@ -119,32 +121,33 @@ int QFontMetrics::width(const QString &qstring, int len) const
         string = QSTRING_TO_NSSTRING_LENGTH (qstring, len);
     else
         string = QSTRING_TO_NSSTRING (qstring);
-    return (int)[data->font widthOfString: string];
+    return ROUND_TO_INT([data->font widthOfString: string]);
 }
 
 
 int QFontMetrics::descent() const
 {
-    return -(int)[data->font descender];
+    return -ROUND_TO_INT([data->font descender]);
 }
 
 
 QRect QFontMetrics::boundingRect(const QString &, int len=-1) const
 {
     _logNotYetImplemented();
+    return QRect();
 }
 
 
 QRect QFontMetrics::boundingRect(QChar) const
 {
     _logNotYetImplemented();
+    return QRect();
 }
 
 
 QSize QFontMetrics::size(int, const QString &qstring, int len, int tabstops, 
     int *tabarray, char **intern ) const
 {
-    _logNotYetImplemented();
     if (tabstops != 0){
         NSLog (@"ERROR:  QFontMetrics::size() tabs not supported.\n");
     }
diff --git a/WebCore/src/kwq/KWQHBox.mm b/WebCore/src/kwq/KWQHBox.mm
index 9380340..deab0ec 100644
--- a/WebCore/src/kwq/KWQHBox.mm
+++ b/WebCore/src/kwq/KWQHBox.mm
@@ -41,11 +41,13 @@ QHBox::QHBox()
 
 QHBox::QHBox(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 QHBox::~QHBox()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -62,5 +64,7 @@ void QHBox::setFocusProxy( QWidget *lineEdit)
 
 bool QHBox::setStretchFactor(QWidget*, int stretch)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
diff --git a/WebCore/src/kwq/KWQImage.mm b/WebCore/src/kwq/KWQImage.mm
index e2412d5..394d5bd 100644
--- a/WebCore/src/kwq/KWQImage.mm
+++ b/WebCore/src/kwq/KWQImage.mm
@@ -23,86 +23,115 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qimage.h>
 
 
 QImage::QImage()
 {
+    _logNotYetImplemented();
 }
 
 
 QImage::QImage(const QImage &)
 {
+    _logNotYetImplemented();
 }
 
 
 QImage::~QImage()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QImage::isNull()
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 QRgb QImage::color(int) const
 {
+    _logNotYetImplemented();
+    return qRgb(0,0,0);
 }
 
 
 void QImage::setColor(int, QRgb)
 {
+    _logNotYetImplemented();
 }
 
 
 int QImage::width() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QImage::height() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QImage::depth() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QImage::pixelIndex(int,int) const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 bool QImage::create(int,int,int,int numColors=0)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 QImage QImage::createAlphaMask(int conversion_flags=0) const
 {
+    _logNotYetImplemented();
+    return QImage();
 }
 
 
 bool QImage::hasAlphaBuffer() const
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 uchar **QImage::jumpTable() const
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
 uchar *QImage::scanLine(int) const
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
 QImage &QImage::operator=(const QImage &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
diff --git a/WebCore/src/kwq/KWQKApplication.mm b/WebCore/src/kwq/KWQKApplication.mm
index c1b858f..be59cc4 100644
--- a/WebCore/src/kwq/KWQKApplication.mm
+++ b/WebCore/src/kwq/KWQKApplication.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kapp.h>
 
 
@@ -31,18 +32,19 @@ KApplication *KApplication::KApp;
 
 KApplication::KApplication()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 KApplication::~KApplication()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 DCOPClient *KApplication::dcopClient()
 {
-     NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
+    return 0L;
 }
 
diff --git a/WebCore/src/kwq/KWQKCharsets.mm b/WebCore/src/kwq/KWQKCharsets.mm
index bad62c1..5fddd32 100644
--- a/WebCore/src/kwq/KWQKCharsets.mm
+++ b/WebCore/src/kwq/KWQKCharsets.mm
@@ -72,18 +72,20 @@ QFont::CharSet KCharsets::charsetForEncoding(const QString &, bool) const
     return QFont::Latin1;
 }
 
-void KCharsets::setQFont(QFont &, QFont::CharSet) const
+void KCharsets::setQFont(QFont &font, QFont::CharSet) const
 {
     // FIXME: do we need a real implementation here?
-    _logPartiallyImplemented();
+    // [kocienda: 2001-11-05] I don't think we need to implement this
     // do nothing
+    _logNeverImplemented();
 }
 
 void KCharsets::setQFont(QFont &, QString) const
 {
     // FIXME: do we need a real implementation here?
-    _logPartiallyImplemented();
+    // [kocienda: 2001-11-05] I don't think we need to implement this
     // do nothing
+    _logNeverImplemented();
 }
 
 QString KCharsets::name(QFont::CharSet)
diff --git a/WebCore/src/kwq/KWQKComboBox.mm b/WebCore/src/kwq/KWQKComboBox.mm
index 476a06f..9298c4a 100644
--- a/WebCore/src/kwq/KWQKComboBox.mm
+++ b/WebCore/src/kwq/KWQKComboBox.mm
@@ -22,20 +22,22 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
-
+#include <kwqdebug.h>
 #include <kcombobox.h>
 
-
 KComboBox::KComboBox(QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 
 KComboBox::KComboBox(bool rw, QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 KComboBox::~KComboBox()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQKCompletionBox.mm b/WebCore/src/kwq/KWQKCompletionBox.mm
index 6a429e8..688d366 100644
--- a/WebCore/src/kwq/KWQKCompletionBox.mm
+++ b/WebCore/src/kwq/KWQKCompletionBox.mm
@@ -23,12 +23,15 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kcompletionbox.h>
   
 KCompletionBox::KCompletionBox()
 {
+    _logNotYetImplemented();
 }
 
 KCompletionBox::~KCompletionBox() 
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/src/kwq/KWQKConfigBase.mm b/WebCore/src/kwq/KWQKConfigBase.mm
index 5e41f2f..94129b9 100644
--- a/WebCore/src/kwq/KWQKConfigBase.mm
+++ b/WebCore/src/kwq/KWQKConfigBase.mm
@@ -23,20 +23,24 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kconfig.h>
 
 KConfigBase::KConfigBase()
 {
+    _logNotYetImplemented();
 }
 
 
 KConfigBase::~KConfigBase()
 {
+    _logNotYetImplemented();
 }
 
 
 void KConfigBase::setGroup(const QString &pGroup)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -44,6 +48,7 @@ void KConfigBase::writeEntry(const QString &pKey, const QStringList &rValue,
     char sep=',', bool bPersistent=true, bool bGlobal=false, 
     bool bNLS=false)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -51,7 +56,7 @@ void KConfigBase::writeEntry(const QString &pKey, const QStringList &rValue,
 QString KConfigBase::readEntry(const char *pKey, 
     const QString& aDefault=QString::null) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return QString();
 }
 
@@ -59,7 +64,7 @@ QString KConfigBase::readEntry(const char *pKey,
 
 int KConfigBase::readNumEntry(const char *pKey, int nDefault=0) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return 0;
 }
 
@@ -68,28 +73,28 @@ int KConfigBase::readNumEntry(const char *pKey, int nDefault=0) const
 unsigned int KConfigBase::readUnsignedNumEntry(const char *pKey, 
     unsigned int nDefault=0) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return 0;
 }
 
 
 bool KConfigBase::readBoolEntry(const char *pKey, bool nDefault=0) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return FALSE;
 }
 
 
 QColor KConfigBase::readColorEntry(const char *pKey, const QColor *pDefault=0L) const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return QColor(0,0,0);
 }
 
 
 QStringList KConfigBase::readListEntry(const QString &pKey, char sep=',') const
 {
-    // FIXME: need to return a real value
+    _logNotYetImplemented();
     return QStringList();
 }
 
@@ -98,12 +103,11 @@ QStringList KConfigBase::readListEntry(const QString &pKey, char sep=',') const
 
 KConfig::KConfig(const QString &n, bool bReadOnly=false)
 {
+    _logNotYetImplemented();
 }
 
 
 KConfig::~KConfig()
 {
+    _logNotYetImplemented();
 }
-
-
-
diff --git a/WebCore/src/kwq/KWQKFactory.mm b/WebCore/src/kwq/KWQKFactory.mm
index a1b377b..2a2bfed 100644
--- a/WebCore/src/kwq/KWQKFactory.mm
+++ b/WebCore/src/kwq/KWQKFactory.mm
@@ -23,17 +23,20 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <factory.h>
 
 namespace KParts {
 
 Factory::Factory()
 {
+    _logNotYetImplemented();
 }
 
 
 Factory::~Factory()
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQKFileDialog.mm b/WebCore/src/kwq/KWQKFileDialog.mm
index 3a7c516..49fe027 100644
--- a/WebCore/src/kwq/KWQKFileDialog.mm
+++ b/WebCore/src/kwq/KWQKFileDialog.mm
@@ -23,20 +23,25 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kfiledialog.h>
 
 QString KFileDialog::getOpenFileName(const QString &startDir, 
     const QString &filter, QWidget *parent, const QString &caption)
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 KFileDialog::KFileDialog()
 {
+    _logNotYetImplemented();
 }
 
 
 KFileDialog::~KFileDialog()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQKFileItem.mm b/WebCore/src/kwq/KWQKFileItem.mm
index b103f19..5a7fca1 100644
--- a/WebCore/src/kwq/KWQKFileItem.mm
+++ b/WebCore/src/kwq/KWQKFileItem.mm
@@ -23,22 +23,27 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kfileitem.h>
 
 
 KFileItem::KFileItem(const KIO::UDSEntry &, const KURL &, bool foo=false, 
     bool bar=false)
 {
+    _logNotYetImplemented();
 }
 
 
 KFileItem::~KFileItem()
 {
+    _logNotYetImplemented();
 }
 
 
 bool KFileItem::isDir() const
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
diff --git a/WebCore/src/kwq/KWQKGlobal.mm b/WebCore/src/kwq/KWQKGlobal.mm
index 5e64591..72a3056 100644
--- a/WebCore/src/kwq/KWQKGlobal.mm
+++ b/WebCore/src/kwq/KWQKGlobal.mm
@@ -24,8 +24,9 @@
  */
 #include <kwqdebug.h>
 
-#include <kconfig.h>
 #include <kglobal.h>
+#include <kconfig.h>
+#include <kcharsets.h>
 
 #include <qdict.h>
 
@@ -37,35 +38,44 @@
 #undef Rect
 #undef Boolean
 
+KWQStaticStringDict *KGlobal::_stringDict = 0L;
+KInstance *KGlobal::_instance = 0L;
+KLocale *KGlobal::_locale = 0L;
+KCharsets *KGlobal::_charsets = 0L;
+
 class KWQStaticStringDict : public QDict<QString>
 {
 public:
     KWQStaticStringDict() : QDict<QString>() { };
 };
 
-KWQStaticStringDict *KGlobal::staticStringDict = 0;
-
 KInstance *KGlobal::instance()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KCharsets *KGlobal::charsets()
 {
-    _logNotYetImplemented();
+    if (_charsets == 0L) {
+        _charsets = new KCharsets();    
+    }
+    return _charsets;
 }
 
 
 KLocale *KGlobal::locale()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KStandardDirs *KGlobal::dirs()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
@@ -77,14 +87,14 @@ KConfig *KGlobal::config()
 
 const QString &KGlobal::staticQString(const QString &str)
 {
-    if (!staticStringDict) {
-        staticStringDict = new KWQStaticStringDict;
+    if (!_stringDict) {
+        _stringDict = new KWQStaticStringDict;
     }
-    QString *result = staticStringDict->find(str);
+    QString *result = _stringDict->find(str);
     if (!result)
     {
         result = new QString(str);
-        staticStringDict->insert(str, result);
+        _stringDict->insert(str, result);
     }
     return *result;
 }
diff --git a/WebCore/src/kwq/KWQKHTMLFactory.mm b/WebCore/src/kwq/KWQKHTMLFactory.mm
index 50a91cd..254ec35 100644
--- a/WebCore/src/kwq/KWQKHTMLFactory.mm
+++ b/WebCore/src/kwq/KWQKHTMLFactory.mm
@@ -17,6 +17,7 @@
 * the Free Software Foundation, Inc., 59 Temple Place - Suite 330,
 * Boston, MA 02111-1307, USA.
 */
+#include <kwqdebug.h>
 #include <khtml_factory.h>
 
 QList<KHTMLPart> *KHTMLFactory::s_parts;
@@ -24,24 +25,31 @@ QList<KHTMLPart> *KHTMLFactory::s_parts;
 
 KHTMLFactory::KHTMLFactory( bool clone = false )
 {
+    _logNotYetImplemented();
 }
 
-
 KHTMLFactory::~KHTMLFactory()
 {
+    _logNotYetImplemented();
 }
 
 KParts::Part *KHTMLFactory::createPartObject( QWidget *parentWidget, const char *widgetName, QObject *parent, const char *name, const char *className, const QStringList &args )
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
 KInstance *KHTMLFactory::instance()
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
 KHTMLSettings *KHTMLFactory::defaultHTMLSettings()
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
diff --git a/WebCore/src/kwq/KWQKHTMLPart.mm b/WebCore/src/kwq/KWQKHTMLPart.mm
index c5d7d5c..d0cbd14 100644
--- a/WebCore/src/kwq/KWQKHTMLPart.mm
+++ b/WebCore/src/kwq/KWQKHTMLPart.mm
@@ -111,7 +111,8 @@ public:
     bool m_bFirstData:1;
     bool m_haveEncoding:1;
     bool m_haveCharset:1;
-    
+    bool m_onlyLocalReferences:1;
+
     KJSProxy *m_jscript;
     int m_runningScripts;
 
@@ -134,6 +135,7 @@ public:
         
         m_jscript = 0L;
         m_runningScripts = 0;
+        m_onlyLocalReferences = 0;
     }
 
     ~KHTMLPartPrivate()
@@ -322,12 +324,14 @@ bool KHTMLPart::javaEnabled() const
 KJavaAppletContext *KHTMLPart::javaContext()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KJavaAppletContext *KHTMLPart::createJavaContext()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
@@ -340,6 +344,7 @@ void KHTMLPart::setPluginsEnabled( bool enable )
 bool KHTMLPart::pluginsEnabled() const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -352,18 +357,19 @@ void KHTMLPart::setAutoloadImages( bool enable )
 bool KHTMLPart::autoloadImages() const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
 void KHTMLPart::setOnlyLocalReferences(bool enable)
 {
-    _logNeverImplemented();
+    d->m_onlyLocalReferences = enable;
 }
 
 
 bool KHTMLPart::onlyLocalReferences() const
 {
-    _logNeverImplemented();
+    return d->m_onlyLocalReferences;
 }
 
 
@@ -501,18 +507,21 @@ void KHTMLPart::setBaseTarget( const QString &target )
 QString KHTMLPart::baseTarget() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
 bool KHTMLPart::setCharset( const QString &name, bool override = false )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
 bool KHTMLPart::setEncoding( const QString &name, bool override = false )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -520,6 +529,7 @@ bool KHTMLPart::setEncoding( const QString &name, bool override = false )
 QString KHTMLPart::encoding()
 {
     _logNeverImplemented();
+    return d->m_settings->encoding();
 }
 
 
@@ -569,6 +579,7 @@ void KHTMLPart::setFixedFont( const QString &name )
 bool KHTMLPart::gotoAnchor( const QString &name )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -595,6 +606,7 @@ void KHTMLPart::findTextBegin()
 bool KHTMLPart::findTextNext( const QRegExp &exp, bool forward )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -602,6 +614,7 @@ bool KHTMLPart::findTextNext( const QRegExp &exp, bool forward )
 bool KHTMLPart::findTextNext( const QString &str, bool forward, bool caseSensitive )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -609,6 +622,7 @@ bool KHTMLPart::findTextNext( const QString &str, bool forward, bool caseSensiti
 QString KHTMLPart::selectedText() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
@@ -630,6 +644,7 @@ void KHTMLPart::setSelection( const DOM::Range & )
 bool KHTMLPart::hasSelection() const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -655,12 +670,14 @@ void KHTMLPart::setJSDefaultStatusBarText( const QString &text )
 QString KHTMLPart::jsStatusBarText() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
 QString KHTMLPart::jsDefaultStatusBarText() const
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
@@ -695,9 +712,9 @@ KJSProxy *KHTMLPart::jScript()
 }
 
 
-KURL KHTMLPart::completeURL( const QString &url, const QString &target = QString::null )
+KURL KHTMLPart::completeURL(const QString &url, const QString &target = QString::null)
 {
-    _logNotYetImplemented();
+    return KURL(d->m_workingURL);
 }
 
 
@@ -727,30 +744,35 @@ void KHTMLPart::setView(KHTMLView *view)
 QWidget *KHTMLPart::widget()
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
 
 KHTMLPart *KHTMLPart::opener()
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 KHTMLPart *KHTMLPart::parentPart()
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 const QList<KParts::ReadOnlyPart> KHTMLPart::frames() const
 {
     _logNeverImplemented();
+    return QList<KParts::ReadOnlyPart>(); 
 }
 
 
 KHTMLPart *KHTMLPart::findFrame( const QString &f )
 {
     _logNeverImplemented();
+    return this;
 }
 
 
@@ -763,6 +785,7 @@ void KHTMLPart::setOpener(KHTMLPart *_opener)
 bool KHTMLPart::openedByJS()
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -775,24 +798,28 @@ void KHTMLPart::setOpenedByJS(bool _openedByJS)
 KParts::BrowserExtension *KHTMLPart::browserExtension() const
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 DOM::EventListener *KHTMLPart::createHTMLEventListener( QString code )
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 QString KHTMLPart::requestFrameName()
 {
     _logNeverImplemented();
+    return QString();
 }
 
 
 bool KHTMLPart::frameExists( const QString &frameName )
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -800,6 +827,7 @@ bool KHTMLPart::requestFrame( khtml::RenderPart *frame, const QString &url, cons
                     const QStringList &args, bool isIFrame)
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -828,6 +856,7 @@ bool KHTMLPart::requestObject( khtml::RenderPart *frame, const QString &url, con
                     const QStringList &args)
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
@@ -840,6 +869,7 @@ void KHTMLPart::nodeActivated(const DOM::Node &)
 QVariant KHTMLPart::executeScheduledScript()
 {
     _logNeverImplemented();
+    return QVariant();
 }
 
 
diff --git a/WebCore/src/kwq/KWQKHTMLPartBrowserExtension.mm b/WebCore/src/kwq/KWQKHTMLPartBrowserExtension.mm
index d8d9126..4881918 100644
--- a/WebCore/src/kwq/KWQKHTMLPartBrowserExtension.mm
+++ b/WebCore/src/kwq/KWQKHTMLPartBrowserExtension.mm
@@ -23,14 +23,17 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <khtml_ext.h>
 
 
 void KHTMLPartBrowserExtension::editableWidgetFocused( QWidget *widget )
 {
+    _logNotYetImplemented();
 }
 
 
 void KHTMLPartBrowserExtension::editableWidgetBlurred( QWidget *widget )
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/src/kwq/KWQKHTMLSettings.mm b/WebCore/src/kwq/KWQKHTMLSettings.mm
index 433f449..bb78bb4 100644
--- a/WebCore/src/kwq/KWQKHTMLSettings.mm
+++ b/WebCore/src/kwq/KWQKHTMLSettings.mm
@@ -25,6 +25,9 @@
 #include <kwqdebug.h>
 #include <khtml_settings.h>
 
+// FIXME: remove this hack
+static const QString DEFAULT_ENCODING = NSSTRING_TO_QSTRING(@"NSISOLatin1StringEncoding");
+
 KHTMLSettings::KHTMLSettings()
 {    
     // set available font families...ask the system
@@ -41,6 +44,8 @@ KHTMLSettings::KHTMLSettings()
     for(i=0; i<[fontSizeArray count]; i++){
         m_fontSizes << [[fontSizeArray objectAtIndex:i] intValue];
     }
+    
+    m_charSet = QFont::Latin1;
 }
 
 QString KHTMLSettings::stdFontName() const
@@ -87,19 +92,21 @@ QString KHTMLSettings::settingsToCSS() const
 
 QFont::CharSet KHTMLSettings::charset() const
 {
-    _logNotYetImplemented();
+    return m_charSet;
 }
 
 
 void KHTMLSettings::setCharset( QFont::CharSet c )
 {
-    _logNotYetImplemented();
+    m_charSet = c;
 }
 
 
 const QString &KHTMLSettings::encoding() const
 {
     _logNotYetImplemented();
+    // FIXME: remove this hack
+    return DEFAULT_ENCODING;
 }
 
 
@@ -117,13 +124,13 @@ QString KHTMLSettings::availableFamilies() const
 
 QFont::CharSet KHTMLSettings::script() const
 {
-    _logNotYetImplemented();
+    return m_charSet;
 }
 
 
-void KHTMLSettings::setScript( QFont::CharSet c )
+void KHTMLSettings::setScript(QFont::CharSet c)
 {
-    _logNotYetImplemented();
+    m_charSet = c;
 }
 
 
@@ -137,18 +144,21 @@ const QValueList<int> &KHTMLSettings::fontSizes() const
 bool KHTMLSettings::changeCursor()
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
 bool KHTMLSettings::isFormCompletionEnabled() const
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
 int KHTMLSettings::maxFormCompletionItems() const
 {
     _logNotYetImplemented();
+    return 0;
 }
 
 
diff --git a/WebCore/src/kwq/KWQKIconLoader.mm b/WebCore/src/kwq/KWQKIconLoader.mm
index 2f9df8e..58497e6 100644
--- a/WebCore/src/kwq/KWQKIconLoader.mm
+++ b/WebCore/src/kwq/KWQKIconLoader.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kiconloader.h>
 
 
@@ -30,17 +31,20 @@
 
 KIcon::KIcon()
 {
+    _logNotYetImplemented();
 }
 
 // class KIconLoader ===========================================================
     
 KIconLoader::KIconLoader()
 {
+    _logNotYetImplemented();
 }
 
 
 KIconLoader::~KIconLoader()
 {
+    _logNotYetImplemented();
 }
 
         
@@ -48,4 +52,6 @@ QPixmap KIconLoader::loadIcon(const QString &name, int group, int size=0,
     int state=KIcon::DefaultState, QString *path_store=0L, 
     bool canReturnNull=false) const
 {
+    _logNotYetImplemented();
+    return QPixmap();
 }
diff --git a/WebCore/src/kwq/KWQKImageIO.mm b/WebCore/src/kwq/KWQKImageIO.mm
index dc4e076..7ecae1c 100644
--- a/WebCore/src/kwq/KWQKImageIO.mm
+++ b/WebCore/src/kwq/KWQKImageIO.mm
@@ -22,14 +22,14 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
-
-
+#include <kwqdebug.h>
 #include <kimageio.h>
 
 // class KImageIO ==============================================================
 
 void KImageIO::registerFormats()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -38,5 +38,6 @@ QStringList KImageIO::mimeTypes(Mode mode=Writing)
     // FIXME: need real implementation
     QStringList mimeList;
     mimeList.append ( "image/gif" );
+    mimeList.append ( "image/jpeg" );
     return mimeList;
 }
diff --git a/WebCore/src/kwq/KWQKInstance.mm b/WebCore/src/kwq/KWQKInstance.mm
index a5d2776..d19e72b 100644
--- a/WebCore/src/kwq/KWQKInstance.mm
+++ b/WebCore/src/kwq/KWQKInstance.mm
@@ -23,20 +23,25 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kinstance.h>
 
 KInstance::KInstance(const QCString &)
 {
+    _logNotYetImplemented();
 }
 
 
 KInstance::~KInstance()
 {
+    _logNotYetImplemented();
 }
 
 
 KIconLoader *KInstance::iconLoader() const
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 
diff --git a/WebCore/src/kwq/KWQKJavaEmbed.mm b/WebCore/src/kwq/KWQKJavaEmbed.mm
index 0f09898..a944955 100644
--- a/WebCore/src/kwq/KWQKJavaEmbed.mm
+++ b/WebCore/src/kwq/KWQKJavaEmbed.mm
@@ -24,34 +24,43 @@ to work better with java applets.
 *****************************************************************************/
 
 
+#include <kwqdebug.h>
 #include <javaembed.h>
 
 KJavaEmbed::KJavaEmbed( QWidget *parent=0, const char *name=0, WFlags f = 0 )
 {
+    _logNotYetImplemented();
 }
 
 
 KJavaEmbed::~KJavaEmbed()
 {
+    _logNotYetImplemented();
 }
 
 
 void KJavaEmbed::embed( WId w )
 {
+    _logNotYetImplemented();
 }
 
 
 QSize KJavaEmbed::sizeHint() const
 {
+    _logNotYetImplemented();
+    return QSize();
 }
 
 
 QSize KJavaEmbed::minimumSizeHint() const
 {
+    _logNotYetImplemented();
+    return QSize();
 }
 
 
 void KJavaEmbed::focusOutEvent( QFocusEvent * )
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQKJob.mm b/WebCore/src/kwq/KWQKJob.mm
index 229ceec..d19966e 100644
--- a/WebCore/src/kwq/KWQKJob.mm
+++ b/WebCore/src/kwq/KWQKJob.mm
@@ -23,12 +23,15 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <job.h>
 
 namespace KIO {
 
 SimpleJob *http_update_cache(const KURL &, bool, time_t)
 {
+    _logNotYetImplemented();
+    return 0L;
 }
 
 TransferJob *get(const KURL &url, bool reload=false, bool showProgressInfo=true)
diff --git a/WebCore/src/kwq/KWQKLineEdit.mm b/WebCore/src/kwq/KWQKLineEdit.mm
index 2060317..22039d7 100644
--- a/WebCore/src/kwq/KWQKLineEdit.mm
+++ b/WebCore/src/kwq/KWQKLineEdit.mm
@@ -54,5 +54,6 @@ void KLineEdit::setContextMenuEnabled(bool showMenu)
 KCompletionBox *KLineEdit::completionBox(bool create)
 {
     _logNotYetImplemented();
+    return 0L;
 }
 
diff --git a/WebCore/src/kwq/KWQKMimeType.mm b/WebCore/src/kwq/KWQKMimeType.mm
index 0c09774..4410afc 100644
--- a/WebCore/src/kwq/KWQKMimeType.mm
+++ b/WebCore/src/kwq/KWQKMimeType.mm
@@ -23,18 +23,23 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kmimetype.h>
 
 KMimeType::Ptr KMimeType::findByURL(const KURL &, mode_t=0, bool=false, bool)
 {
+    _logNotYetImplemented();
 }
 
 
 KMimeType::~KMimeType()
 {
+    _logNotYetImplemented();
 }
 
 
 QString KMimeType::name() const
 {
+    _logNotYetImplemented();
+    return QString();
 }
diff --git a/WebCore/src/kwq/KWQKPartsEvent.mm b/WebCore/src/kwq/KWQKPartsEvent.mm
index 295d671..9800a6a 100644
--- a/WebCore/src/kwq/KWQKPartsEvent.mm
+++ b/WebCore/src/kwq/KWQKPartsEvent.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <event.h>
 
 class QPainter;
@@ -31,15 +32,20 @@ namespace KParts {
 
 bool Event::test(const QEvent *)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 bool Event::test(const QEvent *, const char *)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 Event::Event(const char *)
 {
+    _logNotYetImplemented();
 }
 
 } // namespace KParts
diff --git a/WebCore/src/kwq/KWQKPrinter.mm b/WebCore/src/kwq/KWQKPrinter.mm
index 003f79f..b3ec1a6 100644
--- a/WebCore/src/kwq/KWQKPrinter.mm
+++ b/WebCore/src/kwq/KWQKPrinter.mm
@@ -23,35 +23,45 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kprinter.h>
 
 bool KPrinter::setup(QWidget *parent=0)
 {
+    _logNeverImplemented();
+    return FALSE;
 }
 
 
 bool KPrinter::newPage()
 {
+    _logNeverImplemented();
+    return FALSE;
 }
 
 
 void KPrinter::setDocName(const QString &)
 {
+    _logNeverImplemented();
 }
 
 
 void KPrinter::setCreator(const QString &)
 {
+    _logNeverImplemented();
 }
 
 
 void KPrinter::setFullPage(bool)
 {
+    _logNeverImplemented();
 }
 
 
 QSize KPrinter::margins() const
 {
+    _logNeverImplemented();
+    return QSize();
 }
 
 
diff --git a/WebCore/src/kwq/KWQKProcess.mm b/WebCore/src/kwq/KWQKProcess.mm
index 1d4d7d3..b1a5c5c 100644
--- a/WebCore/src/kwq/KWQKProcess.mm
+++ b/WebCore/src/kwq/KWQKProcess.mm
@@ -23,51 +23,64 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kprocess.h>
 
 KProcess::KProcess()
 {
+    _logNotYetImplemented();
 }
 
 
 KProcess::~KProcess()
 {
+    _logNotYetImplemented();
 }
 
 
 QStrList *KProcess::args()
 {
+    _logNotYetImplemented();
+    return new QStrList();
 }
 
 
 bool KProcess::isRunning() const
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 bool KProcess::writeStdin(const char *buffer, int buflen)
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 bool KProcess::start(RunMode runmode, Communication comm)
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 bool KProcess::kill(int signo=SIGTERM)
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 void KProcess::resume()
 {
+    _logNotYetImplemented();
 }
 
 
 KProcess &KProcess::operator<<(const QString& arg)
 {
+    _logNotYetImplemented();
+    return *this;
 }
-
-
-
diff --git a/WebCore/src/kwq/KWQKScheduler.mm b/WebCore/src/kwq/KWQKScheduler.mm
index fe42291..e6d7042 100644
--- a/WebCore/src/kwq/KWQKScheduler.mm
+++ b/WebCore/src/kwq/KWQKScheduler.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <scheduler.h>
 
 namespace KIO {
@@ -30,11 +31,13 @@ namespace KIO {
 
 void Scheduler::scheduleJob(SimpleJob *job)
 {
+    _logNeverImplemented();
 }
 
 
 Scheduler::~Scheduler()
 {
+    _logNeverImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQKSimpleConfig.mm b/WebCore/src/kwq/KWQKSimpleConfig.mm
index e001a12..defe3a6 100644
--- a/WebCore/src/kwq/KWQKSimpleConfig.mm
+++ b/WebCore/src/kwq/KWQKSimpleConfig.mm
@@ -23,11 +23,12 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <ksimpleconfig.h>
 
 
 KSimpleConfig::KSimpleConfig(const QString &s, bool bReadOnly) : KConfig (s, bReadOnly)
 {
-    NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQKWinModule.mm b/WebCore/src/kwq/KWQKWinModule.mm
index c735df8..e1af293 100644
--- a/WebCore/src/kwq/KWQKWinModule.mm
+++ b/WebCore/src/kwq/KWQKWinModule.mm
@@ -23,26 +23,32 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <kwinmodule.h>
 
 
 KWinModule::KWinModule(QObject* parent=0)
 {
+    _logNotYetImplemented();
 }
 
 
 KWinModule::~KWinModule()
 {
+    _logNotYetImplemented();
 }
 
 
 QRect KWinModule::workArea(int desktop=-1) const
 {
+    _logNotYetImplemented();
+    return QRect();
 }
 
 
 void KWinModule::doNotManage(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQKjobclasses.mm b/WebCore/src/kwq/KWQKjobclasses.mm
index a2d36bb..6a897d1 100644
--- a/WebCore/src/kwq/KWQKjobclasses.mm
+++ b/WebCore/src/kwq/KWQKjobclasses.mm
@@ -31,6 +31,8 @@
 #include <Foundation/Foundation.h>
 #include <WCURICache.h>
 
+static const QString DEFAULT_ERROR_TEXT = "DEFAULT_ERROR_TEXT";
+
 namespace KIO {
 
 // class Job ===================================================================
@@ -42,23 +44,28 @@ Job::~Job()
 
 int Job::error()
 {
-    _logNotYetImplemented();
+    _logNeverImplemented();
     return 0;
 }
 
 
-const QString & Job::errorText()
+const QString &Job::errorText()
 {
+    _logNotYetImplemented();
+    return DEFAULT_ERROR_TEXT;
 }
 
 
 QString Job::errorString()
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 void Job::kill(bool quietly=TRUE)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -66,6 +73,7 @@ void Job::kill(bool quietly=TRUE)
 
 SimpleJob::~SimpleJob()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -121,6 +129,11 @@ bool TransferJob::isErrorPage() const
     return (_status != 0);
 }
 
+int TransferJob::error()
+{
+    return _status;
+}
+
 QString TransferJob::queryMetaData(const QString &key)
 {
     NSString *_key;
@@ -145,20 +158,14 @@ void TransferJob::addMetaData(const QString &key, const QString &value)
 
 void TransferJob::kill(bool quietly=TRUE)
 {
-    id <WCURICache> uriCache;
-
-    uriCache = WCGetDefaultURICache();
-    [uriCache cancelRequestWithURL:d->url requestor:d->requestor];
+    [WCGetDefaultURICache() cancelRequestWithURL:d->url requestor:d->requestor];
 }
 
 void TransferJob::begin(id requestor, void *userData)
 {
-    id <WCURICache> uriCache;
-
-    uriCache = WCGetDefaultURICache();
     //FIXME: load uri
     d->requestor = requestor;
-    [uriCache requestWithURL:d->url requestor:requestor userData:userData];
+    [WCGetDefaultURICache() requestWithURL:d->url requestor:requestor userData:userData];
 }
 
 } // namespace KIO
diff --git a/WebCore/src/kwq/KWQKnetaccess.mm b/WebCore/src/kwq/KWQKnetaccess.mm
index 8e83069..d37bebb 100644
--- a/WebCore/src/kwq/KWQKnetaccess.mm
+++ b/WebCore/src/kwq/KWQKnetaccess.mm
@@ -23,27 +23,35 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <netaccess.h>
 
 namespace KIO {
 
 bool NetAccess::stat(const KURL &, KIO::UDSEntry &)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 QString NetAccess::lastErrorString()
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 bool NetAccess::download(const KURL &, QString &)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 void NetAccess::removeTempFile(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 } // namespace KIO
diff --git a/WebCore/src/kwq/KWQLineEdit.mm b/WebCore/src/kwq/KWQLineEdit.mm
index c65a0ba..d77966a 100644
--- a/WebCore/src/kwq/KWQLineEdit.mm
+++ b/WebCore/src/kwq/KWQLineEdit.mm
@@ -95,12 +95,14 @@ void QLineEdit::setReadOnly(bool flag)
 bool QLineEdit::event(QEvent *)
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
 bool QLineEdit::frame() const
 {
     _logNotYetImplemented();
+    return FALSE;
 }
 
 
@@ -128,6 +130,7 @@ QLineEdit::QLineEdit(const QLineEdit &)
 QLineEdit &QLineEdit::operator=(const QLineEdit &)
 {
     _logNeverImplemented();
+    return *this;
 }
 
 
diff --git a/WebCore/src/kwq/KWQMovie.mm b/WebCore/src/kwq/KWQMovie.mm
index bbad2a7..81a98ea 100644
--- a/WebCore/src/kwq/KWQMovie.mm
+++ b/WebCore/src/kwq/KWQMovie.mm
@@ -23,106 +23,152 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qmovie.h>
 
+class QMoviePrivate {
+friend class QMovie;
+public:
+    QMoviePrivate() {
+    }
+    
+    ~QMoviePrivate() {
+    }
+    
+private:
+    QRect rect;    
+    QPixmap pixmap;
+    QImage image;    
+};
+
 QMovie::QMovie()
 {
+    _logNotYetImplemented();
+    d = new QMoviePrivate();
 }
 
 
 QMovie::QMovie(QDataSource*, int bufsize)
 {
+    _logPartiallyImplemented();
+    d = new QMoviePrivate();
 }
 
 
-QMovie::QMovie(const QMovie &)
+QMovie::QMovie(const QMovie &other)
 {
+    _logPartiallyImplemented();
+    d->rect = other.d->rect;
+    d->pixmap = other.d->pixmap;
+    d->image = other.d->image;
 }
 
 
 QMovie::~QMovie()
 {
+    _logPartiallyImplemented();
+    delete d;
 }
 
 
 void QMovie::unpause()
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::pause()
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::restart()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QMovie::finished()
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 bool QMovie::running()
 {
+    _logNotYetImplemented();
+    return FALSE;    
 }
 
 
 int QMovie::frameNumber() const
 {
+    _logNotYetImplemented();
+    return 0;    
 }
 
 
-const QRect& QMovie::getValidRect() const
+const QRect &QMovie::getValidRect() const
 {
+    _logPartiallyImplemented();
+    return d->rect;
 }
 
 
-const QPixmap& QMovie::framePixmap() const
+const QPixmap &QMovie::framePixmap() const
 {
+    _logPartiallyImplemented();
+    return d->pixmap;
 }
 
 
-const QImage& QMovie::frameImage() const
+const QImage &QMovie::frameImage() const
 {
+    _logPartiallyImplemented();
+    return d->image;
 }
 
 
 void QMovie::connectResize(QObject* receiver, const char *member)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::connectUpdate(QObject* receiver, const char *member)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::connectStatus(QObject* receiver, const char *member)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::disconnectResize(QObject* receiver, const char *member=0)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::disconnectUpdate(QObject* receiver, const char *member=0)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMovie::disconnectStatus(QObject* receiver, const char *member=0)
 {
+    _logNotYetImplemented();
 }
 
 
 QMovie &QMovie::operator=(const QMovie &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
-
-
-
diff --git a/WebCore/src/kwq/KWQObject.mm b/WebCore/src/kwq/KWQObject.mm
index 82b40e1..0e13998 100644
--- a/WebCore/src/kwq/KWQObject.mm
+++ b/WebCore/src/kwq/KWQObject.mm
@@ -33,7 +33,6 @@ bool QObject::connect(const QObject *src, const char *signal, const QObject *des
 {
     NSLog (@"QObject::connect() signal %s, slot %s\n", signal, slot);
     return FALSE;
-//    _logNeverImplemented();
 }
 
 
@@ -74,23 +73,27 @@ void QObject::setName(const char *)
 QVariant QObject::property(const char *name) const
 {
     _logNeverImplemented();
+    return QVariant();
 }
 
 bool QObject::inherits(const char *) const
 {
     _logNeverImplemented();
+    return FALSE;
 }
 
 
 bool QObject::connect(const QObject *, const char *, const char *) const
 {
     _logNeverImplemented();
+    return FALSE;    
 }
 
 
 int QObject:: startTimer(int)
 {
     _logNeverImplemented();
+    return 0;    
 }
 
 
diff --git a/WebCore/src/kwq/KWQPainter.mm b/WebCore/src/kwq/KWQPainter.mm
index 7761de9..fb6fd53 100644
--- a/WebCore/src/kwq/KWQPainter.mm
+++ b/WebCore/src/kwq/KWQPainter.mm
@@ -145,13 +145,16 @@ void QPainter::setBrush(const QBrush &brush)
     data->qbrush = brush;
 }
 
-
 void QPainter::setBrush(BrushStyle style)
 {
     // Either NoBrush or SolidPattern.
-    data->qbrush.qbrushstyle = style;
+    data->qbrush.setStyle(style);
 }
 
+const QBrush &QPainter::brush() const
+{
+    return data->qbrush;
+}
 
 QRect QPainter::xForm(const QRect &) const
 {
@@ -202,7 +205,7 @@ void QPainter::restore()
 void QPainter::drawRect(int x, int y, int w, int h)
 {
     _lockFocus();
-    if (data->qbrush.qbrushstyle == SolidPattern){
+    if (data->qbrush.style() == SolidPattern){
         //_setColorFromBrush();
         //[NSBezierPath fillRect:NSMakeRect(x, y, w, h)];
     }
@@ -214,7 +217,7 @@ void QPainter::drawRect(int x, int y, int w, int h)
 
 void QPainter::_setColorFromBrush()
 {
-    [data->qbrush.qcolor.color set];
+    [data->qbrush.color().color set];
 }
 
 
@@ -226,9 +229,18 @@ void QPainter::_setColorFromPen()
 
 void QPainter::drawLine(int x1, int y1, int x2, int y2)
 {
+    NSBezierPath *path;
+
+    [NSBezierPath setDefaultLineWidth:0];
+
     _lockFocus();
     _setColorFromPen();
-    [NSBezierPath strokeLineFromPoint:NSMakePoint(x1, y1) toPoint:NSMakePoint(x2, y2)];
+    path = [NSBezierPath bezierPath];
+    [path setLineWidth:0];
+    [path moveToPoint:NSMakePoint(x1, y1)];
+    [path lineToPoint:NSMakePoint(x2, y2)];
+    [path closePath];
+    [path stroke];
     _unlockFocus();
 }
 
@@ -240,7 +252,7 @@ void QPainter::drawEllipse(int x, int y, int w, int h)
     path = [NSBezierPath bezierPathWithOvalInRect: NSMakeRect (x, y, w, h)];
     
     _lockFocus();
-    if (data->qbrush.qbrushstyle == SolidPattern){
+    if (data->qbrush.style() == SolidPattern){
         _setColorFromBrush();
         [path fill];
     }
@@ -277,6 +289,10 @@ void QPainter::drawArc (int x, int y, int w, int h, int a, int alen)
     _unlockFocus();
 }
 
+void QPainter::drawLineSegments(const QPointArray &points, int index, int nlines)
+{
+    _drawPoints (points, 0, index, nlines, FALSE);
+}
 
 void QPainter::drawPolyline(const QPointArray &points, int index, int npoints)
 {
@@ -314,7 +330,7 @@ void QPainter::_drawPoints (const QPointArray &_points, bool winding, int index,
         
         _lockFocus();
 
-        if (fill == TRUE && data->qbrush.qbrushstyle == SolidPattern){
+        if (fill == TRUE && data->qbrush.style() == SolidPattern){
             if (winding == TRUE)
                 [path setWindingRule: NSNonZeroWindingRule];
             else
@@ -488,8 +504,8 @@ void QPainter::drawText(int x, int y, int w, int h, int flags, const QString&qst
 void QPainter::fillRect(int x, int y, int w, int h, const QBrush &brush)
 {
     _lockFocus();
-    if (brush.qbrushstyle == SolidPattern){
-        [brush.qcolor.color set];
+    if (brush.style() == SolidPattern){
+        [brush.color().color set];
         [NSBezierPath fillRect:NSMakeRect(x, y, w, h)];
     }
     _unlockFocus();
diff --git a/WebCore/src/kwq/KWQPart.mm b/WebCore/src/kwq/KWQPart.mm
index df22f89..4d78676 100644
--- a/WebCore/src/kwq/KWQPart.mm
+++ b/WebCore/src/kwq/KWQPart.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <part.h>
 
 
@@ -30,21 +31,25 @@
 
 KParts::Part::Part()
 {
+    _logNotYetImplemented();
 }
 
 
 KParts::Part::~Part()
 {
+    _logNotYetImplemented();
 }
 
 
 QWidget *KParts::Part::widget()
 {
+    _logNotYetImplemented();
 }
 
 
 void KParts::Part::setWindowCaption(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -52,16 +57,18 @@ void KParts::Part::setWindowCaption(const QString &)
 
 KParts::ReadOnlyPart::ReadOnlyPart()
 {
+    _logNotYetImplemented();
 }
 
 
 KParts::ReadOnlyPart::~ReadOnlyPart()
 {
+    _logNotYetImplemented();
 }
 
 
 const KURL &KParts::ReadOnlyPart::url() const
 {
+    // must override
+    _logNeverImplemented();
 }
-
-
diff --git a/WebCore/src/kwq/KWQPen.mm b/WebCore/src/kwq/KWQPen.mm
index fc3d666..b972cdc 100644
--- a/WebCore/src/kwq/KWQPen.mm
+++ b/WebCore/src/kwq/KWQPen.mm
@@ -25,92 +25,109 @@
 
 #include <qpen.h>
 
-class QPenPrivate
+void QPen::init(const QColor &color, uint width, uint linestyle)
 {
-friend class QPen;
-public:
-
-    QPenPrivate(const QColor &c, uint w, QPen::PenStyle ps) : 
-        qcolor(c), width(w), penStyle(ps)
-    {
-    }
-
-    ~QPenPrivate() {}
-
-private:    
-    QColor qcolor;
-    uint width;
-    QPen::PenStyle penStyle;
-};
-
+    data = new QPenData();
+    data->style = (PenStyle)(linestyle & MPenStyle);
+    data->width = width;
+    data->color = color;
+    data->linest = linestyle;
+}
 
 QPen::QPen()
 {
-    d = new QPenPrivate(Qt::black, 3, SolidLine);
+    init(Qt::black, 1, SolidLine);
 }
 
 
-QPen::QPen(const QColor &c, uint w, PenStyle ps)
+QPen::QPen(const QColor &color, uint width, PenStyle style)
 {
-    d = new QPenPrivate(c, w, ps);
+    init(color, width, style);
 }
 
 
 QPen::QPen(const QPen &copyFrom)
 {
-    d->qcolor = copyFrom.d->qcolor;
+    data = copyFrom.data;
+    data->ref();
 }
 
 
 QPen::~QPen()
 {
-    delete d;
+    if (data->deref()) {
+        delete data;
+    }
+}
+
+QPen QPen::copy() const
+{
+    QPen p(data->color, data->width, data->style);
+    return p;
 }
 
+void QPen::detach()
+{
+    if (data->count != 1) {
+        *this = copy();
+    }
+}
 
 const QColor &QPen::color() const
 {
-    return d->qcolor;
+    return data->color;
 }
 
 uint QPen::width() const
 {
-    return d->width;
+    return data->width;
 }
 
 QPen::PenStyle QPen::style() const
 {
-    return d->penStyle;
+    return data->style;
 }
 
-void QPen::setColor(const QColor &c)
+void QPen::setColor(const QColor &color)
 {
-    d->qcolor = c;
+    detach();
+    data->color = color;
 }
 
-void QPen::setWidth(uint w)
+void QPen::setWidth(uint width)
 {
-    d->width = w;
+    if (data->width == width) {
+        return;
+    }
+    detach();
+    data->width = width;
 }
 
-void QPen::setStyle(PenStyle ps)
+void QPen::setStyle(PenStyle style)
 {
-    d->penStyle = ps;
+    if (data->style == style) {
+        return;
+    }
+    detach();
+    data->style = style;
+    data->linest = (data->linest & ~MPenStyle) | style;
 }
 
 QPen &QPen::operator=(const QPen &assignFrom)
 {
-    d->qcolor = assignFrom.d->qcolor;
-    d->width = assignFrom.d->width;
-    d->penStyle = assignFrom.d->penStyle;
+    assignFrom.data->ref();
+    if (data->deref()) {
+        delete data;
+    }
+    data = assignFrom.data;
     return *this;
 }
 
 bool QPen::operator==(const QPen &compareTo) const
 {
-    return (d->width == compareTo.d->width) &&
-        (d->penStyle == compareTo.d->penStyle) &&
-        (d->qcolor == compareTo.d->qcolor);
+    return (data->width == compareTo.data->width) &&
+        (data->style == compareTo.data->style) &&
+        (data->color == compareTo.data->color);
 }
 
 
diff --git a/WebCore/src/kwq/KWQPixmap.mm b/WebCore/src/kwq/KWQPixmap.mm
index f0e3853..65e0f82 100644
--- a/WebCore/src/kwq/KWQPixmap.mm
+++ b/WebCore/src/kwq/KWQPixmap.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qpixmap.h>
 
 /*
@@ -96,13 +97,13 @@ QPixmap::~QPixmap()
 
 void QPixmap::setMask(const QBitmap &)
 {
-    NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
 const QBitmap *QPixmap::mask() const
 {
-    NSLog (@"ERROR %s:%s:%d (NOT IMPLEMENTED)\n", __FILE__, __FUNCTION__, __LINE__);
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQScrollView.mm b/WebCore/src/kwq/KWQScrollView.mm
index 9bb629e..5653d13 100644
--- a/WebCore/src/kwq/KWQScrollView.mm
+++ b/WebCore/src/kwq/KWQScrollView.mm
@@ -113,12 +113,14 @@ void QScrollView::setContentsPos(int x, int y)
 QScrollBar *QScrollView::horizontalScrollBar() const
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
 QScrollBar *QScrollView::verticalScrollBar() const
 {
     _logNeverImplemented();
+    return 0L;
 }
 
 
@@ -178,6 +180,7 @@ void QScrollView::repaintContents(int x, int y, int w, int h, bool erase=TRUE)
 QPoint QScrollView::contentsToViewport(const QPoint &)
 {
     _logNeverImplemented();
+    return QPoint();
 }
 
 
@@ -196,6 +199,7 @@ void QScrollView::viewportWheelEvent(QWheelEvent *)
 QWidget *QScrollView::clipper() const
 {
     _logNeverImplemented();
+    return (QWidget *)this;
 }
 
 
diff --git a/WebCore/src/kwq/KWQString.mm b/WebCore/src/kwq/KWQString.mm
index e1e4b91..c7e8fb6 100644
--- a/WebCore/src/kwq/KWQString.mm
+++ b/WebCore/src/kwq/KWQString.mm
@@ -26,6 +26,7 @@
 // FIXME: obviously many functions here can be made inline
 
 #include <Foundation/Foundation.h>
+#include <kwqdebug.h>
 #include <qstring.h>
 #include <qregexp.h>
 #include <stdio.h>
@@ -1143,15 +1144,13 @@ void QString::fill(QChar qc, int len)
 void QString::compose()
 {
     // FIXME: unimplemented because we don't do ligatures yet
-    NSLog(@"WARNING %s:%s:%d (NOT YET IMPLEMENTED)\n", __FILE__, __FUNCTION__,
-            __LINE__);
+    _logNotYetImplemented();
 }
 
 QString QString::visual()
 {
     // FIXME: unimplemented because we don't do BIDI yet
-    NSLog(@"WARNING %s:%s:%d (NOT YET IMPLEMENTED)\n", __FILE__, __FUNCTION__,
-            __LINE__);
+    _logNotYetImplemented();
     return QString(*this);
 }
 
diff --git a/WebCore/src/kwq/KWQStyle.mm b/WebCore/src/kwq/KWQStyle.mm
index e73fa69..62aec75 100644
--- a/WebCore/src/kwq/KWQStyle.mm
+++ b/WebCore/src/kwq/KWQStyle.mm
@@ -23,19 +23,23 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <KWQStyle.h>
 
 QStyle::QStyle()
 {
+    _logNotYetImplemented();
 }
 
 
 QStyle::~QStyle()
 {
+    _logNotYetImplemented();
 }
 
 
 Qt::GUIStyle QStyle::guiStyle() const
 {
+    return MacStyle;
 }
 
diff --git a/WebCore/src/kwq/KWQTimer.mm b/WebCore/src/kwq/KWQTimer.mm
index 52e507f..28b7d17 100644
--- a/WebCore/src/kwq/KWQTimer.mm
+++ b/WebCore/src/kwq/KWQTimer.mm
@@ -23,10 +23,13 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
+
 #include <qtimer.h>
 
 void QTimer::singleShot(int, QObject *, const char *)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQToolTip.mm b/WebCore/src/kwq/KWQToolTip.mm
index 9eb29fb..17b06c9 100644
--- a/WebCore/src/kwq/KWQToolTip.mm
+++ b/WebCore/src/kwq/KWQToolTip.mm
@@ -22,6 +22,8 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+
+#include <kwqdebug.h>
 #include <qtooltip.h>
 
 // FIXME: 
@@ -29,17 +31,20 @@ static QPalette DEFAULT_PALETTE = QPalette();
 
 QPalette QToolTip::palette()
 {
+    _logNotYetImplemented();
     return DEFAULT_PALETTE;
 }
 
 
 QToolTip::QToolTip(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 void QToolTip::tip(const QRect &, const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQVariant.mm b/WebCore/src/kwq/KWQVariant.mm
index 6e81d8b..923b557 100644
--- a/WebCore/src/kwq/KWQVariant.mm
+++ b/WebCore/src/kwq/KWQVariant.mm
@@ -22,71 +22,160 @@
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
+#include <kwqdebug.h>
 
 #include <qvariant.h>
-
-#include <kwqdebug.h>
+#include <qstring.h>
+#include <_qshared.h>
+
+class QVariantPrivate : public QShared {
+friend class QVariant;
+public:
+    QVariantPrivate() {
+        t = QVariant::Invalid;
+    }
+    
+    QVariantPrivate(QVariantPrivate *other) {
+        switch (other->t) {
+            case QVariant::Invalid:
+                break;
+            case QVariant::String:
+                value.p = new QString(*((QString*)other->value.p));
+                break;
+            case QVariant::UInt:
+                value.u = other->value.u;
+                break;
+            case QVariant::Double:
+                value.d = other->value.d;
+                break;
+            case QVariant::Bool:
+                value.b = other->value.b;
+                break;
+        }
+    }
+    
+    ~QVariantPrivate() {
+         clear();
+    }
+    
+    void clear()
+    {
+        switch (t) {
+            case QVariant::Invalid:
+            case QVariant::UInt:
+            case QVariant::Double:
+            case QVariant::Bool:
+                break;
+            case QVariant::String:
+                delete (QString*)value.p;
+                break;
+        }
+        t = QVariant::Invalid;
+    }
+    
+    QVariant::Type t;
+
+    union {
+        bool b;
+        uint u;
+        double d;
+        void *p;
+    } value;
+};
 
 QVariant::QVariant()
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
 }
 
 
-QVariant::QVariant(bool b, int i)
+QVariant::QVariant(bool val, int i)
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
+    d->t = Bool;
+    d->value.d = val;
 }
 
 
-QVariant::QVariant(double d)
+QVariant::QVariant(double val)
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
+    d->t = Double;
+    d->value.d = val;
 }
 
 
 QVariant::QVariant(const QString &s)
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
+    d->t = String;
+    d->value.p = new QString(s);
 }
 
 
 QVariant::QVariant(const QVariant &other)
 {
-    _logNotYetImplemented();
+    d = new QVariantPrivate();
+    *this = other;
 }
 
 
 QVariant::~QVariant()
 {
-    _logNotYetImplemented();
+    if (d->deref()) {
+        delete d;
+    }
 }
 
 
 QVariant::Type QVariant::type() const
 {
-    _logNotYetImplemented();
-    return UInt;
+    return d->t;
 }
 
 
 bool QVariant::toBool() const
 {
-    _logNotYetImplemented();
-    return 0;
+    if (d->t == Bool) {
+        return d->value.b;
+    }
+    if (d->t == Double) {
+        return d->value.d != 0.0;
+    }
+    if (d->t == UInt) {
+        return d->value.u != 0;
+    }
+
+    return FALSE;
 }
 
 
 uint QVariant::toUInt() const
 {
-    _logNotYetImplemented();
+    if (d->t == UInt) {
+        return (int)d->value.u;
+    }
+    if (d->t == Double) {
+        return (int)d->value.d;
+    }
+    if (d->t == Bool) {
+        return (int)d->value.b;
+    }
+    
     return 0;
 }
 
 
 QVariant &QVariant::operator=(const QVariant &other)
 {
-    _logNotYetImplemented();
+    QVariant &variant = (QVariant &)other;
+    
+    variant.d->ref();
+    if (d->deref()) {
+        delete d;
+    }
+    d = variant.d;
+    
     return *this;
 }
 
diff --git a/WebCore/src/kwq/KWQasyncimageio.mm b/WebCore/src/kwq/KWQasyncimageio.mm
index 97363c9..bd94f69 100644
--- a/WebCore/src/kwq/KWQasyncimageio.mm
+++ b/WebCore/src/kwq/KWQasyncimageio.mm
@@ -23,29 +23,36 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h> 
 #include <qasyncimageio.h> 
 
 // class QImageConsumer ========================================================
 
-const char* QImageConsumer::formatName(const uchar* buffer, int length)
+const char *QImageConsumer::formatName(const uchar* buffer, int length)
 {
+    _logNotYetImplemented();
+    return "";
 }
 
 
 // class QImageDecoder =========================================================
 
-const char* QImageDecoder::formatName(const uchar* buffer, int length)
+const char *QImageDecoder::formatName(const uchar* buffer, int length)
 {
+    _logNotYetImplemented();
+    return "";
 }
 
 
 QImageDecoder::QImageDecoder(QImageConsumer *)
 {
+    _logNotYetImplemented();
 }
 
 
 QImageDecoder::~QImageDecoder()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -53,6 +60,7 @@ QImageDecoder::~QImageDecoder()
 
 QImageFormat::~QImageFormat()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -60,5 +68,6 @@ QImageFormat::~QImageFormat()
 
 QImageFormatType::~QImageFormatType()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQasyncio.mm b/WebCore/src/kwq/KWQasyncio.mm
index 3e0a6ec..adbb721 100644
--- a/WebCore/src/kwq/KWQasyncio.mm
+++ b/WebCore/src/kwq/KWQasyncio.mm
@@ -23,21 +23,25 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
 #include <qasyncio.h>
 
 // class QAsyncIO ==============================================================
 
 QAsyncIO::QAsyncIO()
 {
+    _logNotYetImplemented();
 }
 
 
 QAsyncIO::~QAsyncIO()
 {
+    _logNotYetImplemented();
 }
 
 void QAsyncIO::ready()
 {
+    _logNotYetImplemented();
 }
 
 // class QDataSource ===========================================================
@@ -45,10 +49,12 @@ void QAsyncIO::ready()
 
 void QDataSource::rewind()
 {
+    _logNotYetImplemented();
 }
 
 
 void QDataSource::maybeReady()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQsignals.mm b/WebCore/src/kwq/KWQsignals.mm
index 4eedd55..f91062d 100644
--- a/WebCore/src/kwq/KWQsignals.mm
+++ b/WebCore/src/kwq/KWQsignals.mm
@@ -23,6 +23,7 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
  
+#include <kwqdebug.h>
 #include <khtmlview.h>
 #include <misc/loader.h>
 #include <java/kjavaappletcontext.h>
@@ -30,29 +31,35 @@
 
 void KHTMLView::cleared()
 {
+    _logNotYetImplemented();
 }
 
 void KJavaAppletContext::showStatus  ( const QString& txt )
 {
+    _logNotYetImplemented();
 }
 
 
 void KJavaAppletContext::showDocument( const QString& url, const QString& target )
 {
+    _logNotYetImplemented();
 }
 
 
 void KJavaProcess::received( const QByteArray& )
 {
+    _logNotYetImplemented();
 }
 
 
 void khtml::Loader::requestDone( const DOM::DOMString &baseURL, khtml::CachedObject *obj )
 {
+    _logNotYetImplemented();
 }
 
 
 void khtml::Loader::requestFailed( const DOM::DOMString &baseURL, khtml::CachedObject *obj )
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQxml.mm b/WebCore/src/kwq/KWQxml.mm
index 7ce69f5..c409d65 100644
--- a/WebCore/src/kwq/KWQxml.mm
+++ b/WebCore/src/kwq/KWQxml.mm
@@ -23,6 +23,8 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
+#include <kwqdebug.h>
+
 #include <qstring.h>
 
 #include <qxml.h>
@@ -31,41 +33,54 @@
     
 QXmlAttributes::QXmlAttributes()
 {
+    _logNotYetImplemented();
 }
 
 
 QXmlAttributes::QXmlAttributes(const QXmlAttributes &)
 {
+    _logNotYetImplemented();
 }
 
 
 QXmlAttributes::~QXmlAttributes()
 {
+    _logNotYetImplemented();
 }
 
 
 QString QXmlAttributes::value(const QString &) const
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 int QXmlAttributes::length() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 QString QXmlAttributes::localName(int index) const
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 QString QXmlAttributes::value(int index) const
 {
+    _logNotYetImplemented();
+    return QString();
 }
 
 
 QXmlAttributes &QXmlAttributes::operator=(const QXmlAttributes &)
 {
+    _logNotYetImplemented();
+    return *this;
 }
 
 
@@ -76,16 +91,19 @@ QXmlAttributes &QXmlAttributes::operator=(const QXmlAttributes &)
 
 QXmlInputSource::QXmlInputSource()
 {
+    _logNotYetImplemented();
 }
 
 
 QXmlInputSource::~QXmlInputSource()
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlInputSource::setData(const QString& data)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -111,6 +129,7 @@ void QXmlInputSource::setData(const QString& data)
 
 QXmlDefaultHandler::~QXmlDefaultHandler()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -118,41 +137,50 @@ QXmlDefaultHandler::~QXmlDefaultHandler()
 
 QXmlSimpleReader::QXmlSimpleReader()
 {
+    _logNotYetImplemented();
 }
 
 
 QXmlSimpleReader::~QXmlSimpleReader()
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlSimpleReader::setContentHandler(QXmlContentHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QXmlSimpleReader::parse(const QXmlInputSource &input)
 {
+    _logNotYetImplemented();
+    return FALSE;
 }
 
 
 void QXmlSimpleReader::setLexicalHandler(QXmlLexicalHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlSimpleReader::setDTDHandler(QXmlDTDHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlSimpleReader::setDeclHandler(QXmlDeclHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
 void QXmlSimpleReader::setErrorHandler(QXmlErrorHandler *handler)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -160,21 +188,27 @@ void QXmlSimpleReader::setErrorHandler(QXmlErrorHandler *handler)
 
 QXmlParseException::QXmlParseException()
 {
+    _logNotYetImplemented();
 }
 
 
 QString QXmlParseException::message() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QXmlParseException::columnNumber() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
 int QXmlParseException::lineNumber() const
 {
+    _logNotYetImplemented();
+    return 0;
 }
 
 
diff --git a/WebCore/src/kwq/kdecore/kglobal.h b/WebCore/src/kwq/kdecore/kglobal.h
index 4295c2f..0c3bcca 100644
--- a/WebCore/src/kwq/kdecore/kglobal.h
+++ b/WebCore/src/kwq/kdecore/kglobal.h
@@ -83,6 +83,10 @@ public:
 // private ---------------------------------------------------------------------
 
 private:
+    static KWQStaticStringDict *_stringDict;
+    static KInstance *_instance;
+    static KLocale *_locale;
+    static KCharsets *_charsets;
 
 // add copy constructor
 // this private declaration prevents copying
diff --git a/WebCore/src/kwq/khtml/khtml_settings.h b/WebCore/src/kwq/khtml/khtml_settings.h
index a5b26da..fb7e8a5 100644
--- a/WebCore/src/kwq/khtml/khtml_settings.h
+++ b/WebCore/src/kwq/khtml/khtml_settings.h
@@ -72,8 +72,9 @@ public:
     int maxFormCompletionItems() const;
 
 private:
-    QValueList<int>     m_fontSizes;
+    QValueList<int> m_fontSizes;
     QString m_fontFamilies;
+    QFont::CharSet m_charSet;
 };
 
 #endif
diff --git a/WebCore/src/kwq/kio/jobclasses.h b/WebCore/src/kwq/kio/jobclasses.h
index 5f51556..6a56efc 100644
--- a/WebCore/src/kwq/kio/jobclasses.h
+++ b/WebCore/src/kwq/kio/jobclasses.h
@@ -59,7 +59,7 @@ public:
 
     // member functions --------------------------------------------------------
 
-    int error();
+    virtual int error();
     const QString & errorText();
     QString errorString();
     virtual void kill(bool quietly=TRUE);
@@ -153,6 +153,7 @@ public:
 
     // member functions --------------------------------------------------------
 
+    int error();
     bool isErrorPage() const;
     QString queryMetaData(const QString &key);
     void addMetaData(const QString &key, const QString &value);
diff --git a/WebCore/src/kwq/kwqdebug.h b/WebCore/src/kwq/kwqdebug.h
index b833bf0..301c20b 100644
--- a/WebCore/src/kwq/kwqdebug.h
+++ b/WebCore/src/kwq/kwqdebug.h
@@ -34,14 +34,32 @@
 #undef Rect
 #undef Boolean
 
+extern int KWQ_LOG_LEVEL;
+extern int KWQ_LOG_NEVER_IMPLEMENTED;
+extern int KWQ_LOG_PARTIALLY_IMPLEMENTED;
+extern int KWQ_LOG_NOT_YET_IMPLEMENTED;
+
 #define _logNeverImplemented() \
-        NSLog(@"ERROR %s:%d  %s (NOT IMPLEMENTED)\n", __FILE__, __LINE__, \
-                __FUNCTION__)
+    do { \
+        if (KWQ_LOG_LEVEL & KWQ_LOG_NEVER_IMPLEMENTED) { \
+            NSLog(@"ERROR %s:%d  %s (NOT IMPLEMENTED)\n", __FILE__, __LINE__, __FUNCTION__); \
+        } \
+    } while (0)
+
 #define _logPartiallyImplemented() \
-        NSLog(@"ERROR %s:%d  %s (PARTIALLY IMPLEMENTED)\n", __FILE__, \
-                __LINE__, __FUNCTION__)
+    do { \
+        if (KWQ_LOG_LEVEL & KWQ_LOG_PARTIALLY_IMPLEMENTED) { \
+            NSLog(@"WARNING %s:%d  %s (PARTIALLY IMPLEMENTED)\n", __FILE__, __LINE__, __FUNCTION__); \
+        } \
+    } while (0)
+
 #define _logNotYetImplemented() \
-        NSLog (@"WARNING %s:%d  %s (NOT YET IMPLEMENTED)\n", __FILE__, \
-                __LINE__, __FUNCTION__)
+    do { \
+        if (KWQ_LOG_LEVEL & KWQ_LOG_NOT_YET_IMPLEMENTED) { \
+            NSLog (@"WARNING %s:%d  %s (NOT YET IMPLEMENTED)\n", __FILE__, __LINE__, __FUNCTION__); \
+        } \
+    } while (0)
 
 #endif
+
+void KWQSetLogLevel(int mask);
diff --git a/WebCore/src/kwq/kwqdebug.mm b/WebCore/src/kwq/kwqdebug.mm
index 04cf569..3faa0a9 100644
--- a/WebCore/src/kwq/kwqdebug.mm
+++ b/WebCore/src/kwq/kwqdebug.mm
@@ -24,3 +24,17 @@
  */
 
 #include <kwqdebug.h>
+
+int KWQ_LOG_NONE = 0;
+int KWQ_LOG_ALL = 0x7f;
+
+int KWQ_LOG_NEVER_IMPLEMENTED = 0x1;
+int KWQ_LOG_PARTIALLY_IMPLEMENTED = 0x2;
+int KWQ_LOG_NOT_YET_IMPLEMENTED = 0x4;
+
+int KWQ_LOG_LEVEL = KWQ_LOG_ALL;
+
+
+void KWQSetLogLevel(int mask) {
+    KWQ_LOG_LEVEL = mask;    
+}
\ No newline at end of file
diff --git a/WebCore/src/kwq/qt/qbrush.h b/WebCore/src/kwq/qt/qbrush.h
index c8222ee..f859435 100644
--- a/WebCore/src/kwq/qt/qbrush.h
+++ b/WebCore/src/kwq/qt/qbrush.h
@@ -33,6 +33,8 @@
 #include "qcolor.h"
 #include "qnamespace.h"
 
+class QBrushPrivate;
+
 // class QBrush ================================================================
 
 class QBrush : public Qt {
@@ -48,6 +50,7 @@ public:
 
     QBrush();
     QBrush(const QColor &);
+    QBrush::QBrush(const QColor &c, BrushStyle style);
     QBrush(const QBrush &);
     QBrush &operator=(const QBrush &);
     ~QBrush();
@@ -56,6 +59,8 @@ public:
     
     const QColor &color() const;
     void setColor(const QColor &);
+    BrushStyle style() const;
+    void setStyle(BrushStyle);
     
     // operators ---------------------------------------------------------------
     
@@ -64,8 +69,14 @@ public:
 
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
-    QColor qcolor;
-    BrushStyle qbrushstyle;
+private:
+    void init(const QColor &, BrushStyle);
+    QBrush copy() const;
+    void detach();
+    struct QBrushData : public QShared { 
+        BrushStyle brushStyle;
+        QColor color;
+    } *data;
 
 }; // class QBrush =============================================================
 
diff --git a/WebCore/src/kwq/qt/qmovie.h b/WebCore/src/kwq/qt/qmovie.h
index 81e3b7c..c0f53e8 100644
--- a/WebCore/src/kwq/qt/qmovie.h
+++ b/WebCore/src/kwq/qt/qmovie.h
@@ -36,6 +36,10 @@
 #include "qimage.h"
 #include "qrect.h"
 
+#ifdef _KWQ_
+class QMoviePrivate;
+#endif
+
 // class QMovie ================================================================
 
 class QMovie {
@@ -84,6 +88,10 @@ public:
 
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
+private:
+#ifdef _KWQ_
+    QMoviePrivate *d;
+#endif
 
 }; // class QMovie =============================================================
 
diff --git a/WebCore/src/kwq/qt/qnamespace.h b/WebCore/src/kwq/qt/qnamespace.h
index 37a6db1..f5c7d6f 100644
--- a/WebCore/src/kwq/qt/qnamespace.h
+++ b/WebCore/src/kwq/qt/qnamespace.h
@@ -81,6 +81,9 @@ public:
         SolidLine,
         DotLine,
         DashLine,
+        DashDotLine,
+        DashDotDotLine,
+        MPenStyle = 0x0f
     };
 
     enum BrushStyle {
diff --git a/WebCore/src/kwq/qt/qpainter.h b/WebCore/src/kwq/qt/qpainter.h
index 6c308aa..a1d54b0 100644
--- a/WebCore/src/kwq/qt/qpainter.h
+++ b/WebCore/src/kwq/qt/qpainter.h
@@ -123,6 +123,7 @@ public:
     const QPen &pen() const;
     void setPen(const QPen &);
     void setPen(PenStyle);
+    const QBrush &QPainter::brush() const;
     void setBrush(const QBrush &);
     void setBrush(BrushStyle);
 
@@ -133,6 +134,7 @@ public:
     
     void drawRect(int, int, int, int);
     void drawLine(int, int, int, int);
+    void drawLineSegments(const QPointArray &, int index=0, int nlines=-1);
     void drawEllipse(int, int, int, int);
     void drawArc(int, int, int, int, int, int);
     void drawPolyline(const QPointArray &, int index=0, int npoints=-1);
diff --git a/WebCore/src/kwq/qt/qpen.h b/WebCore/src/kwq/qt/qpen.h
index 4942dad..96eecca 100644
--- a/WebCore/src/kwq/qt/qpen.h
+++ b/WebCore/src/kwq/qt/qpen.h
@@ -72,8 +72,17 @@ public:
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
 private:
-    QPenPrivate *d;
-
+    QPen copy()  const;
+    void detach();
+    void init(const QColor &, uint, uint);
+    
+    struct QPenData : public QShared {
+        PenStyle  style;
+        uint      width;
+        QColor    color;
+        Q_UINT16  linest;
+    } *data;
+ 
 }; // class QPen ===============================================================
 
 #endif
diff --git a/WebCore/src/kwq/qt/qvariant.h b/WebCore/src/kwq/qt/qvariant.h
index 54b0cbc..41290ff 100644
--- a/WebCore/src/kwq/qt/qvariant.h
+++ b/WebCore/src/kwq/qt/qvariant.h
@@ -33,6 +33,7 @@
 typedef unsigned int uint;
 
 class QString;
+class QVariantPrivate;
 
 // class QVariant ==============================================================
 
@@ -42,7 +43,10 @@ public:
     // typedefs ----------------------------------------------------------------
 
     enum Type {
+        Invalid,
+        String,
         UInt,
+        Double,
         Bool
     };
 
@@ -71,6 +75,9 @@ public:
 
 // protected -------------------------------------------------------------------
 // private ---------------------------------------------------------------------
+private:
+    
+    QVariantPrivate *d;
 
 }; // class QVariant ===========================================================
 
diff --git a/WebKit/WebKit.pbproj/kocienda.pbxuser b/WebKit/WebKit.pbproj/kocienda.pbxuser
index 707bb01..a236a49 100644
--- a/WebKit/WebKit.pbproj/kocienda.pbxuser
+++ b/WebKit/WebKit.pbproj/kocienda.pbxuser
@@ -10,14 +10,14 @@
 		);
 		perUserDictionary = {
 			PBXWorkspaceConfiguration = {
-				ContentSize = "{1148, 1096}";
+				ContentSize = "{1207, 1028}";
 				LeftSlideOut = {
 					ActiveTab = 0;
-					Frame = "{{0, 23}, {1148, 1073}}";
+					Frame = "{{0, 23}, {1207, 1005}}";
 					Split0 = {
-						Frame = "{{257, 0}, {891, 1073}}";
+						Frame = "{{313, 0}, {894, 1005}}";
 						Split0 = {
-							Frame = "{{0, 25}, {891, 1048}}";
+							Frame = "{{0, 25}, {894, 980}}";
 						};
 						SplitCount = 1;
 						Tab0 = {
@@ -53,9 +53,9 @@
 							};
 						};
 						Tab2 = {
-							BuildMessageFrame = "{{0, 0}, {893, 213}}";
-							BuildTranscriptFrame = "{{0, 222}, {893, 418}}";
-							Frame = "{{0, 0}, {891, 638}}";
+							BuildMessageFrame = "{{0, 0}, {896, 213}}";
+							BuildTranscriptFrame = "{{0, 222}, {896, 418}}";
+							Frame = "{{0, 0}, {894, 638}}";
 						};
 						Tab3 = {
 							Frame = "{{0, 0}, {891, 295}}";
@@ -64,7 +64,7 @@
 					};
 					SplitCount = 1;
 					Tab0 = {
-						Frame = "{{0, 0}, {232, 1073}}";
+						Frame = "{{0, 0}, {288, 1005}}";
 					};
 					Tab1 = {
 						ClassesFrame = "{{0, 0}, {202, 660}}";

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list