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

rjw rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 05:50:01 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 05219f7693c236ef573588a4004513a05fe7256d
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Oct 10 01:56:42 2001 +0000

    Added debugging to more stubs.  Added implementation of write() to KHTMLPart.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@304 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/khtml/html/htmltokenizer.cpp b/WebCore/khtml/html/htmltokenizer.cpp
index cb93849..694c83c 100644
--- a/WebCore/khtml/html/htmltokenizer.cpp
+++ b/WebCore/khtml/html/htmltokenizer.cpp
@@ -296,9 +296,9 @@ void HTMLTokenizer::parseSpecial(DOMStringIt &src, bool begin)
                 scriptHandler();
             else {
                 processListing(DOMStringIt(scriptCode, scriptCodeSize));
-                if ( style )         { currToken.id = ID_STYLE + ID_CLOSE_TAG; }
-                else if ( textarea ) { currToken.id = ID_TEXTAREA + ID_CLOSE_TAG; }
-                else if ( listing )  { currToken.id = ID_LISTING + ID_CLOSE_TAG; }
+                if ( style )         { currToken._id = ID_STYLE + ID_CLOSE_TAG; }
+                else if ( textarea ) { currToken._id = ID_TEXTAREA + ID_CLOSE_TAG; }
+                else if ( listing )  { currToken._id = ID_LISTING + ID_CLOSE_TAG; }
                 processToken();
                 style = script = style = textarea = listing = false;
                 scriptCodeSize = scriptCodeResync = 0;
@@ -354,7 +354,7 @@ void HTMLTokenizer::scriptHandler()
         doScriptExec = true;
     }
     processListing(DOMStringIt(scriptCode, scriptCodeSize));
-    currToken.id = ID_SCRIPT + ID_CLOSE_TAG;
+    currToken._id = ID_SCRIPT + ID_CLOSE_TAG;
     processToken();
 
     QString prependingSrc;
@@ -416,10 +416,10 @@ void HTMLTokenizer::parseComment(DOMStringIt &src)
                 checkScriptBuffer();
                 scriptCode[ scriptCodeSize ] = 0;
                 scriptCode[ scriptCodeSize + 1 ] = 0;
-                currToken.id = ID_COMMENT;
+                currToken._id = ID_COMMENT;
                 processListing(DOMStringIt(scriptCode, scriptCodeSize - 2));
                 processToken();
-                currToken.id = ID_COMMENT + ID_CLOSE_TAG;
+                currToken._id = ID_COMMENT + ID_CLOSE_TAG;
                 processToken();
 #endif
                 scriptCodeSize = 0;
@@ -743,7 +743,7 @@ void HTMLTokenizer::parseTag(DOMStringIt &src)
                     QCString tmp(ptr, len+1);
                     kdDebug( 6036 ) << "found tag id=" << tagID << ": " << tmp.data() << endl;
 #endif
-                    currToken.id = beginTag ? tagID : tagID + ID_CLOSE_TAG;
+                    currToken._id = beginTag ? tagID : tagID + ID_CLOSE_TAG;
                     dest = buffer;
                 }
                 tag = SearchAttribute;
@@ -1000,10 +1000,10 @@ void HTMLTokenizer::parseTag(DOMStringIt &src)
             tquote = NoQuote;
             ++src;
 
-            if ( !currToken.id ) //stop if tag is unknown
+            if ( !currToken._id ) //stop if tag is unknown
                 return;
 
-            uint tagID = currToken.id;
+            uint tagID = currToken._id;
 #if defined(TOKEN_DEBUG) && TOKEN_DEBUG > 0
             kdDebug( 6036 ) << "appending Tag: " << tagID << endl;
 #endif
@@ -1444,8 +1444,8 @@ void HTMLTokenizer::processToken()
     if ( dest > buffer )
     {
 #ifdef TOKEN_DEBUG
-        if(currToken.id && currToken.id != ID_COMMENT) {
-            qDebug( "unexpected token id: %d, str: *%s*", currToken.id,QConstString( buffer,dest-buffer ).string().latin1() );
+        if(currToken._id && currToken._id != ID_COMMENT) {
+            qDebug( "unexpected token id: %d, str: *%s*", currToken._id,QConstString( buffer,dest-buffer ).string().latin1() );
             assert(0);
         }
 
@@ -1461,10 +1461,10 @@ void HTMLTokenizer::processToken()
             currToken.text = new DOMStringImpl( buffer, dest - buffer );
             currToken.text->ref();
         }
-        if (currToken.id != ID_COMMENT)
-            currToken.id = ID_TEXT;
+        if (currToken._id != ID_COMMENT)
+            currToken._id = ID_TEXT;
     }
-    else if(!currToken.id) {
+    else if(!currToken._id) {
         currToken.reset();
         return;
     }
@@ -1472,12 +1472,12 @@ void HTMLTokenizer::processToken()
     dest = buffer;
 
 #ifdef TOKEN_DEBUG
-    QString name = getTagName(currToken.id).string();
+    QString name = getTagName(currToken._id).string();
     QString text;
     if(currToken.text)
         text = QConstString(currToken.text->s, currToken.text->l).string();
 
-    kdDebug( 6036 ) << "Token --> " << name << "   id = " << currToken.id << endl;
+    kdDebug( 6036 ) << "Token --> " << name << "   id = " << currToken._id << endl;
     if(!text.isNull())
         kdDebug( 6036 ) << "text: \"" << text << "\"" << endl;
     int l = currToken.attrs ? currToken.attrs->length() : 0;
diff --git a/WebCore/khtml/html/htmltokenizer.h b/WebCore/khtml/html/htmltokenizer.h
index 274b1c8..9fdfe40 100644
--- a/WebCore/khtml/html/htmltokenizer.h
+++ b/WebCore/khtml/html/htmltokenizer.h
@@ -76,7 +76,7 @@ namespace khtml {
     {
     public:
         Token() {
-            id = 0;
+            _id = 0;
             complexText = false;
             attrs = 0;
             text = 0;
@@ -100,7 +100,7 @@ namespace khtml {
                 attrs->deref();
                 attrs = 0;
             }
-            id = 0;
+            _id = 0;
             complexText = false;
             if(text) {
                 text->deref();
@@ -108,7 +108,7 @@ namespace khtml {
             }
         }
         DOM::NamedAttrMapImpl* attrs;
-        ushort id;
+        ushort _id;
         DOMStringImpl* text;
         bool complexText;
     };
diff --git a/WebCore/kwq/KWQButton.mm b/WebCore/kwq/KWQButton.mm
index da127a9..0b7aad7 100644
--- a/WebCore/kwq/KWQButton.mm
+++ b/WebCore/kwq/KWQButton.mm
@@ -25,23 +25,28 @@
 
 #include <qbutton.h>
 
+#include <kwqdebug.h>
 
 QButton::QButton(QWidget *parent)
 {
+    _logNotYetImplemented();
 }
 
 
 QButton::~QButton()
 {
+    _logNotYetImplemented();
 }
 
 
 void QButton::setText(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
 QString QButton::text() const
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQCheckBox.mm b/WebCore/kwq/KWQCheckBox.mm
index 4f08888..1069919 100644
--- a/WebCore/kwq/KWQCheckBox.mm
+++ b/WebCore/kwq/KWQCheckBox.mm
@@ -25,11 +25,15 @@
 
 #include <qcheckbox.h>
 
+#include <kwqdebug.h>
+
 QCheckBox::QCheckBox(QWidget *w) : QButton (w)
 {
+    _logNotYetImplemented();
 }
 
 
 void QCheckBox::setChecked(bool)
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/kwq/KWQComboBox.mm b/WebCore/kwq/KWQComboBox.mm
index 209ae59..655206f 100644
--- a/WebCore/kwq/KWQComboBox.mm
+++ b/WebCore/kwq/KWQComboBox.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 <qcombobox.h>
@@ -29,49 +30,59 @@
 
 QComboBox::QComboBox(QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 
 QComboBox::QComboBox(bool rw, QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 QComboBox::~QComboBox()
 {
+    _logNotYetImplemented();
 }
 
 
 int QComboBox::count() const
 {
+    _logNotYetImplemented();
 }
 
 
 QListBox *QComboBox::listBox() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QComboBox::popup()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QComboBox::eventFilter(QObject *object, QEvent *event)
 {
+    _logNotYetImplemented();
 }
 
 
 void QComboBox::insertItem(const QString &text, int index=-1)
 {
+    _logNotYetImplemented();
 }
 
 
 void QComboBox::clear()
 {
+    _logNotYetImplemented();
 }
 
 void QComboBox::setCurrentItem(int)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQHBox.mm b/WebCore/kwq/KWQHBox.mm
index 6f3aa24..81ae609 100644
--- a/WebCore/kwq/KWQHBox.mm
+++ b/WebCore/kwq/KWQHBox.mm
@@ -22,25 +22,30 @@
 * (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 <qhbox.h>
 
 QHBox::QHBox()
 {
+    _logNotYetImplemented();
 }
 
 
 QHBox::QHBox(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 QHBox::~QHBox()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QHBox::setStretchFactor(QWidget*, int stretch)
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQKCharsets.h b/WebCore/kwq/KWQKCharsets.h
index d7e6770..30e03ae 100644
--- a/WebCore/kwq/KWQKCharsets.h
+++ b/WebCore/kwq/KWQKCharsets.h
@@ -61,6 +61,20 @@ public:
     QString xCharsetName(QFont::CharSet) const;
     bool supportsScript(const QFont &, QFont::CharSet);
 
+    /**
+     * @returns the charset that fits a given encoding best (that can display a
+     * file in the given encoding)
+     */
+    QFont::CharSet charsetForEncoding(const QString &encoding) const;
+
+    // ### BCI merge with above in 3.0
+    /**
+     * overloaded member function. Usually you don't mind getting unicode charsets, so
+     * this method should rarely be needed.
+     */
+    QFont::CharSet charsetForEncoding(const QString &e, bool noUnicode) const;
+
+
     // operators ---------------------------------------------------------------
 
 // protected -------------------------------------------------------------------
diff --git a/WebCore/kwq/KWQKCharsets.mm b/WebCore/kwq/KWQKCharsets.mm
index 15c57c7..dc31b8a 100644
--- a/WebCore/kwq/KWQKCharsets.mm
+++ b/WebCore/kwq/KWQKCharsets.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 <qstring.h>
 
@@ -29,48 +30,68 @@
 
 KCharsets::KCharsets()
 {
+    _logNotYetImplemented();
 }
 
 
 KCharsets::~KCharsets()
 {
+    _logNotYetImplemented();
 }
 
 
 QTextCodec *KCharsets::codecForName(const QString &) const
 {
+    _logNotYetImplemented();
 }
 
 
 QTextCodec *KCharsets::codecForName(const QString &, bool &) const
 {
+    _logNotYetImplemented();
 }
 
 
 void KCharsets::setQFont(QFont &, QFont::CharSet charset=QFont::Unicode) const
 {
+    _logNotYetImplemented();
 }
 
 
 void KCharsets::setQFont(QFont &, QString) const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KCharsets::name(QFont::CharSet)
 {
+    _logNotYetImplemented();
 }
 
 
 QString KCharsets::xCharsetName(QFont::CharSet) const
 {
+    _logNotYetImplemented();
 }
 
 
 bool KCharsets::supportsScript(const QFont &, QFont::CharSet)
 {
+    _logNotYetImplemented();
 }
 
 
+QFont::CharSet KCharsets::charsetForEncoding(const QString &encoding) const
+{
+    _logNotYetImplemented();
+}
+
+
+QFont::CharSet KCharsets::charsetForEncoding(const QString &e, bool noUnicode) const
+{
+    _logNotYetImplemented();
+}
+
 
 
diff --git a/WebCore/kwq/KWQKGlobal.mm b/WebCore/kwq/KWQKGlobal.mm
index 1672b0f..117f9b4 100644
--- a/WebCore/kwq/KWQKGlobal.mm
+++ b/WebCore/kwq/KWQKGlobal.mm
@@ -22,39 +22,46 @@
 * (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 <kglobal.h>
 
-
+#include <Cocoa/Cocoa.h>
 
 KInstance *KGlobal::instance()
 {
+    _logNotYetImplemented();
 }
 
 
 KCharsets *KGlobal::charsets()
 {
+    _logNotYetImplemented();
 }
 
 
 KLocale *KGlobal::locale()
 {
+    _logNotYetImplemented();
 }
 
 
 KStandardDirs *KGlobal::dirs()
 {
+    _logNotYetImplemented();
 }
 
 
 KConfig *KGlobal::config()
 {
+    _logNotYetImplemented();
 }
 
 
 
 const QString &KGlobal::staticQString(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQKHTMLFactory.h b/WebCore/kwq/KWQKHTMLFactory.h
index a5846cc..31d8470 100644
--- a/WebCore/kwq/KWQKHTMLFactory.h
+++ b/WebCore/kwq/KWQKHTMLFactory.h
@@ -38,6 +38,8 @@ public:
 
   static KInstance *instance();
 
+  static KHTMLSettings *defaultHTMLSettings();
+
   // list of visited URLs
   static KParts::HistoryProvider *vLinks() { 
     return KParts::HistoryProvider::self();
diff --git a/WebCore/kwq/KWQKHTMLFactory.mm b/WebCore/kwq/KWQKHTMLFactory.mm
index 9a8a512..50a91cd 100644
--- a/WebCore/kwq/KWQKHTMLFactory.mm
+++ b/WebCore/kwq/KWQKHTMLFactory.mm
@@ -40,3 +40,8 @@ KInstance *KHTMLFactory::instance()
 {
 }
 
+
+KHTMLSettings *KHTMLFactory::defaultHTMLSettings()
+{
+}
+
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index c72560b..843ee4e 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -23,19 +23,62 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 #include <kwqdebug.h>
- 
+
+#include <decoder.h>
+#include <qfont.h>
+#include <qtextcodec.h>
+
+#include <khtml_settings.h>
+#include <khtml_factory.h>
+#include <kcharsets.h>
+#include <kglobal.h>
+#include <html/htmltokenizer.h>
+#include <xml/dom_docimpl.h>
+
 #include <KWQKHTMLPart.h>
 
+// Class KHTMLPartPrivate ================================================================================
+
+class KHTMLPartPrivate
+{
+public:
+    DOM::DocumentImpl *m_doc;
+    khtml::Decoder *m_decoder;
+    QString m_encoding;
+    QFont::CharSet m_charset;
+    KHTMLSettings *m_settings;
+
+    bool m_bFirstData:1;
+    bool m_haveEncoding:1;
+    bool m_haveCharset:1;
+    
+    KHTMLPartPrivate()
+    {
+        m_doc = 0L;
+        m_decoder = 0L;
+        m_bFirstData = true;
+        m_settings = new KHTMLSettings(*KHTMLFactory::defaultHTMLSettings());
+        m_haveEncoding = false;
+    }
+};
+
+
+// Class KHTMLPart ======================================================================================
 
 KHTMLPart::KHTMLPart()
 {
-    _logNotYetImplemented();
+    init();
 }
 
 
 KHTMLPart::KHTMLPart(const KURL &url )
 {
-    _logNotYetImplemented();
+    init();
+}
+
+void KHTMLPart::init()
+{
+    d = new KHTMLPartPrivate();
 }
 
 
@@ -170,25 +213,79 @@ bool KHTMLPart::onlyLocalReferences() const
 
 void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset)
 {
-    _logNeverImplemented();
+    _logNotYetImplemented();
 }
 
 
 void KHTMLPart::write( const char *str, int len)
 {
-    _logNeverImplemented();
+    if ( !d->m_decoder ) {
+        d->m_decoder = new khtml::Decoder();
+        if(d->m_encoding != QString::null)
+            d->m_decoder->setEncoding(d->m_encoding.latin1(), d->m_haveEncoding);
+        else
+            d->m_decoder->setEncoding(settings()->encoding().latin1(), d->m_haveEncoding);
+    }
+    if ( len == 0 )
+        return;
+    
+    if ( len == -1 )
+        len = strlen( str );
+    
+    QString decoded = d->m_decoder->decode( str, len );
+    
+    if(decoded.isEmpty())
+        return;
+    
+    if(d->m_bFirstData) {
+        // determine the parse mode
+        d->m_doc->determineParseMode( decoded );
+        d->m_bFirstData = false;
+    
+    //kdDebug(6050) << "KHTMLPart::write haveEnc = " << d->m_haveEncoding << endl;
+        // ### this is still quite hacky, but should work a lot better than the old solution
+        if(d->m_decoder->visuallyOrdered())
+            d->m_doc->setVisuallyOrdered();
+        if (!d->m_haveCharset)
+        {
+            const QTextCodec *c = d->m_decoder->codec();
+            //kdDebug(6005) << "setting up charset to " << (int) KGlobal::charsets()->charsetForEncoding(c->name()) << endl;
+            d->m_charset = KGlobal::charsets()->charsetForEncoding(c->name());
+            d->m_settings->setCharset( d->m_charset );
+            d->m_settings->setScript( KGlobal::charsets()->charsetForEncoding(c->name(), true ));
+            //kdDebug(6005) << "charset is " << (int)d->m_settings->charset() << endl;
+        }
+        d->m_doc->applyChanges(true, true);
+    }
+    
+    Tokenizer* t = d->m_doc->tokenizer();
+    if(t)
+        t->write( decoded, true );
 }
 
 
 void KHTMLPart::write( const QString &str )
 {
-    _logNeverImplemented();
+    if ( str.isNull() )
+        return;
+    
+    if(d->m_bFirstData) {
+        // determine the parse mode
+        d->m_doc->setParseMode( DocumentImpl::Strict );
+        d->m_bFirstData = false;
+    }
+    Tokenizer* t = d->m_doc->tokenizer();
+    if(t)
+        t->write( str, true );
 }
 
 
 void KHTMLPart::end()
 {
-    _logNeverImplemented();
+    // make sure nothing's left in there...
+    if(d->m_decoder)
+        write(d->m_decoder->flush());
+    d->m_doc->finishParsing();
 }
 
 
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.mm b/WebCore/kwq/KWQKHTMLPartImpl.mm
index c72560b..843ee4e 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.mm
+++ b/WebCore/kwq/KWQKHTMLPartImpl.mm
@@ -23,19 +23,62 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 #include <kwqdebug.h>
- 
+
+#include <decoder.h>
+#include <qfont.h>
+#include <qtextcodec.h>
+
+#include <khtml_settings.h>
+#include <khtml_factory.h>
+#include <kcharsets.h>
+#include <kglobal.h>
+#include <html/htmltokenizer.h>
+#include <xml/dom_docimpl.h>
+
 #include <KWQKHTMLPart.h>
 
+// Class KHTMLPartPrivate ================================================================================
+
+class KHTMLPartPrivate
+{
+public:
+    DOM::DocumentImpl *m_doc;
+    khtml::Decoder *m_decoder;
+    QString m_encoding;
+    QFont::CharSet m_charset;
+    KHTMLSettings *m_settings;
+
+    bool m_bFirstData:1;
+    bool m_haveEncoding:1;
+    bool m_haveCharset:1;
+    
+    KHTMLPartPrivate()
+    {
+        m_doc = 0L;
+        m_decoder = 0L;
+        m_bFirstData = true;
+        m_settings = new KHTMLSettings(*KHTMLFactory::defaultHTMLSettings());
+        m_haveEncoding = false;
+    }
+};
+
+
+// Class KHTMLPart ======================================================================================
 
 KHTMLPart::KHTMLPart()
 {
-    _logNotYetImplemented();
+    init();
 }
 
 
 KHTMLPart::KHTMLPart(const KURL &url )
 {
-    _logNotYetImplemented();
+    init();
+}
+
+void KHTMLPart::init()
+{
+    d = new KHTMLPartPrivate();
 }
 
 
@@ -170,25 +213,79 @@ bool KHTMLPart::onlyLocalReferences() const
 
 void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset)
 {
-    _logNeverImplemented();
+    _logNotYetImplemented();
 }
 
 
 void KHTMLPart::write( const char *str, int len)
 {
-    _logNeverImplemented();
+    if ( !d->m_decoder ) {
+        d->m_decoder = new khtml::Decoder();
+        if(d->m_encoding != QString::null)
+            d->m_decoder->setEncoding(d->m_encoding.latin1(), d->m_haveEncoding);
+        else
+            d->m_decoder->setEncoding(settings()->encoding().latin1(), d->m_haveEncoding);
+    }
+    if ( len == 0 )
+        return;
+    
+    if ( len == -1 )
+        len = strlen( str );
+    
+    QString decoded = d->m_decoder->decode( str, len );
+    
+    if(decoded.isEmpty())
+        return;
+    
+    if(d->m_bFirstData) {
+        // determine the parse mode
+        d->m_doc->determineParseMode( decoded );
+        d->m_bFirstData = false;
+    
+    //kdDebug(6050) << "KHTMLPart::write haveEnc = " << d->m_haveEncoding << endl;
+        // ### this is still quite hacky, but should work a lot better than the old solution
+        if(d->m_decoder->visuallyOrdered())
+            d->m_doc->setVisuallyOrdered();
+        if (!d->m_haveCharset)
+        {
+            const QTextCodec *c = d->m_decoder->codec();
+            //kdDebug(6005) << "setting up charset to " << (int) KGlobal::charsets()->charsetForEncoding(c->name()) << endl;
+            d->m_charset = KGlobal::charsets()->charsetForEncoding(c->name());
+            d->m_settings->setCharset( d->m_charset );
+            d->m_settings->setScript( KGlobal::charsets()->charsetForEncoding(c->name(), true ));
+            //kdDebug(6005) << "charset is " << (int)d->m_settings->charset() << endl;
+        }
+        d->m_doc->applyChanges(true, true);
+    }
+    
+    Tokenizer* t = d->m_doc->tokenizer();
+    if(t)
+        t->write( decoded, true );
 }
 
 
 void KHTMLPart::write( const QString &str )
 {
-    _logNeverImplemented();
+    if ( str.isNull() )
+        return;
+    
+    if(d->m_bFirstData) {
+        // determine the parse mode
+        d->m_doc->setParseMode( DocumentImpl::Strict );
+        d->m_bFirstData = false;
+    }
+    Tokenizer* t = d->m_doc->tokenizer();
+    if(t)
+        t->write( str, true );
 }
 
 
 void KHTMLPart::end()
 {
-    _logNeverImplemented();
+    // make sure nothing's left in there...
+    if(d->m_decoder)
+        write(d->m_decoder->flush());
+    d->m_doc->finishParsing();
 }
 
 
diff --git a/WebCore/kwq/KWQKHTMLSettings.h b/WebCore/kwq/KWQKHTMLSettings.h
index ef32b3d..a4287ba 100644
--- a/WebCore/kwq/KWQKHTMLSettings.h
+++ b/WebCore/kwq/KWQKHTMLSettings.h
@@ -49,11 +49,15 @@ public:
     QString settingsToCSS() const;
 
     QFont::CharSet charset() const;
+    void setCharset( QFont::CharSet c );
+
+    const QString &encoding() const;
 
     int minFontSize() const;
     QString availableFamilies() const;
 
     QFont::CharSet script() const;
+    void setScript( QFont::CharSet c );
 
     const QValueList<int> &fontSizes() const;
 
diff --git a/WebCore/kwq/KWQKHTMLSettings.mm b/WebCore/kwq/KWQKHTMLSettings.mm
index b4d3163..3bcc562 100644
--- a/WebCore/kwq/KWQKHTMLSettings.mm
+++ b/WebCore/kwq/KWQKHTMLSettings.mm
@@ -22,81 +22,115 @@
 * (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 <khtml_settings.h>
 
 QString KHTMLSettings::stdFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::fixedFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::serifFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::sansSerifFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::cursiveFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::fantasyFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::settingsToCSS() const
 {
+    _logNotYetImplemented();
 }
 
 QFont::CharSet KHTMLSettings::charset() const
 {
+    _logNotYetImplemented();
+}
+
+
+void KHTMLSettings::setCharset( QFont::CharSet c )
+{
+    _logNotYetImplemented();
+}
+
+
+const QString &KHTMLSettings::encoding() const
+{
+    _logNotYetImplemented();
 }
 
 
 int KHTMLSettings::minFontSize() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::availableFamilies() const
 {
+    _logNotYetImplemented();
 }
 
 
 QFont::CharSet KHTMLSettings::script() const
 {
+    _logNotYetImplemented();
+}
+
+
+void KHTMLSettings::setScript( QFont::CharSet c )
+{
+    _logNotYetImplemented();
 }
 
 
 const QValueList<int> &KHTMLSettings::fontSizes() const
 {
+    _logNotYetImplemented();
 }
 
 
 bool KHTMLSettings::changeCursor()
 {
+    _logNotYetImplemented();
 }
 
 
 bool KHTMLSettings::isFormCompletionEnabled() const
 {
+    _logNotYetImplemented();
 }
 
 
 int KHTMLSettings::maxFormCompletionItems() const
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQKLineEdit.mm b/WebCore/kwq/KWQKLineEdit.mm
index 6c4e09d..32a1285 100644
--- a/WebCore/kwq/KWQKLineEdit.mm
+++ b/WebCore/kwq/KWQKLineEdit.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 <klineedit.h>
@@ -29,24 +30,29 @@
 
 KLineEdit::KLineEdit(QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 KLineEdit::~KLineEdit()
 {
+    _logNotYetImplemented();
 }
 
 
 void KLineEdit::setMouseTracking(bool)
 {
+    _logNotYetImplemented();
 }
 
 
 void KLineEdit::setContextMenuEnabled(bool showMenu)
 {
+    _logNotYetImplemented();
 }
 
 
 KCompletionBox *KLineEdit::completionBox(bool create)
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQKListBox.mm b/WebCore/kwq/KWQKListBox.mm
index c6d6467..8fb9018 100644
--- a/WebCore/kwq/KWQKListBox.mm
+++ b/WebCore/kwq/KWQKListBox.mm
@@ -22,15 +22,18 @@
  * (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 <klistbox.h>
 
 KListBox::KListBox()
 {
+    _logNotYetImplemented();
 }
 
 
 KListBox::KListBox(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQKWin.mm b/WebCore/kwq/KWQKWin.mm
index 473ffba..15e3eef 100644
--- a/WebCore/kwq/KWQKWin.mm
+++ b/WebCore/kwq/KWQKWin.mm
@@ -25,7 +25,9 @@
 
 #include <kwin.h>
 
+#include <kwqdebug.h>
 
 KWin::Info KWin::info(int win)
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/kwq/KWQLabel.mm b/WebCore/kwq/KWQLabel.mm
index b23d655..580e22f 100644
--- a/WebCore/kwq/KWQLabel.mm
+++ b/WebCore/kwq/KWQLabel.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 <qlabel.h>
 
@@ -29,26 +30,31 @@
 
 QLabel::QLabel(QWidget *parent)
 {
+    _logNotYetImplemented();
 }
 
 
 QLabel::QLabel(const QString &, QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 QLabel::~QLabel()
 {
+    _logNotYetImplemented();
 }
 
 
 void QLabel::setText(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
 void QLabel::setAlignment(int)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQLineEdit.mm b/WebCore/kwq/KWQLineEdit.mm
index 1e989be..8943345 100644
--- a/WebCore/kwq/KWQLineEdit.mm
+++ b/WebCore/kwq/KWQLineEdit.mm
@@ -22,77 +22,93 @@
  * (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 <qlineedit.h>
 
 QLineEdit::QLineEdit(QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 QLineEdit::~QLineEdit()
 {
+    _logNotYetImplemented();
 }
     
 void QLineEdit::setEchoMode(EchoMode)
 {
+    _logNotYetImplemented();
 }
 
 void QLineEdit::setCursorPosition(int)
 {
+    _logNotYetImplemented();
 }
 
 
 void QLineEdit::setText(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
 void QLineEdit::setMaxLength(int)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QLineEdit::isReadOnly() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QLineEdit::setReadOnly(bool)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QLineEdit::event(QEvent *)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QLineEdit::frame() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QLineEdit::cursorPosition() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QLineEdit::maxLength() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QLineEdit::selectAll()
 {
+    _logNotYetImplemented();
 }
 
 
 QLineEdit::QLineEdit(const QLineEdit &)
 {
+    _logNotYetImplemented();
 }
 
 QLineEdit &QLineEdit::operator=(const QLineEdit &)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQListBox.mm b/WebCore/kwq/KWQListBox.mm
index 235b7e6..2b49f7e 100644
--- a/WebCore/kwq/KWQListBox.mm
+++ b/WebCore/kwq/KWQListBox.mm
@@ -22,62 +22,74 @@
  * (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 <KWQListBox.h>
 
 
 QListBox::QListBox()
 {
+    _logNotYetImplemented();
 }
 
 
 QListBox::~QListBox()
 {
+    _logNotYetImplemented();
 }
 
 
 uint QListBox::count() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::clear()
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::setSelectionMode(SelectionMode)
 {
+    _logNotYetImplemented();
 }
 
 
 QListBoxItem *QListBox::firstItem() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QListBox::currentItem() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::insertItem(const QString &, int index=-1)
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::insertItem(const QListBoxItem *, int index=-1)
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::setSelected(int, bool)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QListBox::isSelected(int)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -85,10 +97,12 @@ bool QListBox::isSelected(int)
 
 QListBoxItem::QListBoxItem()
 {
+    _logNotYetImplemented();
 }
 
 QListBoxItem::~QListBoxItem()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -99,26 +113,31 @@ void QListBoxItem::setSelectable(bool)
 
 QListBox *QListBoxItem::listBox() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QListBoxItem::width(const QListBox *) const
 {
+    _logNotYetImplemented();
 }
 
 
 int QListBoxItem::height(const QListBox *) const
 {
+    _logNotYetImplemented();
 }
 
 
 QListBoxItem *QListBoxItem::next() const
 {
+    _logNotYetImplemented();
 }
 
 
 QListBoxItem *QListBoxItem::prev() const
 {
+    _logNotYetImplemented();
 }
 
 
@@ -127,10 +146,12 @@ QListBoxItem *QListBoxItem::prev() const
 
 QListBoxText::QListBoxText(const QString &text=QString::null)
 {
+    _logNotYetImplemented();
 }
 
 
 QListBoxText::~QListBoxText()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQObject.mm b/WebCore/kwq/KWQObject.mm
index 7f9560b..d24e780 100644
--- a/WebCore/kwq/KWQObject.mm
+++ b/WebCore/kwq/KWQObject.mm
@@ -27,10 +27,11 @@
 
 #include <kwqdebug.h>
 
-bool QObject::connect(const QObject *, const char *, const QObject *, 
-    const char *)
+bool QObject::connect(const QObject *src, const char *signal, const QObject *dest, 
+    const char *slot)
 {
-    _logNeverImplemented();
+    NSLog (@"QObject::connect() signal %s, slot %s\n", signal, slot);
+//    _logNeverImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQPushButton.mm b/WebCore/kwq/KWQPushButton.mm
index 752eb42..9666542 100644
--- a/WebCore/kwq/KWQPushButton.mm
+++ b/WebCore/kwq/KWQPushButton.mm
@@ -22,19 +22,23 @@
  * (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 <qpushbutton.h>
 
 QPushButton::QPushButton(QWidget *w) : QButton (w)
 {
+    _logNotYetImplemented();
 }
 
 
 QPushButton::QPushButton(const QString &text, QWidget *parent, const char* name)
 {
+    _logNotYetImplemented();
 }
 
 
 QPushButton::~QPushButton()
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/kwq/KWQRadioButton.mm b/WebCore/kwq/KWQRadioButton.mm
index d5efe18..0ce1f2b 100644
--- a/WebCore/kwq/KWQRadioButton.mm
+++ b/WebCore/kwq/KWQRadioButton.mm
@@ -22,15 +22,18 @@
  * (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 <qradiobutton.h>
 
 QRadioButton::QRadioButton(QWidget *w) : QButton (w)
 {
+    _logNotYetImplemented();
 }
 
 
 void QRadioButton::setChecked(bool)
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/kwq/KWQScrollView.mm b/WebCore/kwq/KWQScrollView.mm
index fc87e95..08c6ac0 100644
--- a/WebCore/kwq/KWQScrollView.mm
+++ b/WebCore/kwq/KWQScrollView.mm
@@ -119,7 +119,7 @@ void QScrollView::setHScrollBarMode(ScrollBarMode)
 
 void QScrollView::addChild(QWidget* child, int x=0, int y=0)
 {
-    _logNeverImplemented();
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/KWQTextEdit.mm b/WebCore/kwq/KWQTextEdit.mm
index 04a4164..105b9f8 100644
--- a/WebCore/kwq/KWQTextEdit.mm
+++ b/WebCore/kwq/KWQTextEdit.mm
@@ -22,122 +22,146 @@
  * (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 <keditcl.h>
 
 
 QTableView::QTableView()
 {
+    _logNotYetImplemented();
 }
 
 
 QTableView::~QTableView()
 {
+    _logNotYetImplemented();
 }
 
 
 QScrollBar *QTableView::verticalScrollBar() const
 {
+    _logNotYetImplemented();
 }
 
 
 QScrollBar *QTableView::horizontalScrollBar() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QTableView::setTableFlags(uint)
 {
+    _logNotYetImplemented();
 }
 
 
 void QTableView::clearTableFlags(uint f = ~0)
 {
+    _logNotYetImplemented();
 }
 
 
 QMultiLineEdit::QMultiLineEdit()
 {
+    _logNotYetImplemented();
 }
 
 
 QMultiLineEdit::~QMultiLineEdit()
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::setWordWrap(WordWrap)
 {
+    _logNotYetImplemented();
 }
 
 
 QMultiLineEdit::WordWrap QMultiLineEdit::wordWrap() const
 {
+    _logNotYetImplemented();
 }
 
 
 bool QMultiLineEdit::hasMarkedText() const
 {
+    _logNotYetImplemented();
 }
 
 
 bool QMultiLineEdit::isReadOnly() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::setReadOnly(bool)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::setCursorPosition(int line, int col, bool mark = FALSE)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::getCursorPosition(int *line, int *col) const
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::setText(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
 QString QMultiLineEdit::text()
 {
+    _logNotYetImplemented();
 }
 
 
 QString QMultiLineEdit::textLine(int line) const
 {
+    _logNotYetImplemented();
 }
 
 
 int QMultiLineEdit::numLines() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::selectAll()
 {
+    _logNotYetImplemented();
 }
 
 
 KEdit::KEdit()
 {
+    _logNotYetImplemented();
 }
 
 
 KEdit::KEdit(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 KEdit::~KEdit()
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/kwq/kdecore/kcharsets.h b/WebCore/kwq/kdecore/kcharsets.h
index d7e6770..30e03ae 100644
--- a/WebCore/kwq/kdecore/kcharsets.h
+++ b/WebCore/kwq/kdecore/kcharsets.h
@@ -61,6 +61,20 @@ public:
     QString xCharsetName(QFont::CharSet) const;
     bool supportsScript(const QFont &, QFont::CharSet);
 
+    /**
+     * @returns the charset that fits a given encoding best (that can display a
+     * file in the given encoding)
+     */
+    QFont::CharSet charsetForEncoding(const QString &encoding) const;
+
+    // ### BCI merge with above in 3.0
+    /**
+     * overloaded member function. Usually you don't mind getting unicode charsets, so
+     * this method should rarely be needed.
+     */
+    QFont::CharSet charsetForEncoding(const QString &e, bool noUnicode) const;
+
+
     // operators ---------------------------------------------------------------
 
 // protected -------------------------------------------------------------------
diff --git a/WebCore/kwq/khtml/khtml_factory.h b/WebCore/kwq/khtml/khtml_factory.h
index a5846cc..31d8470 100644
--- a/WebCore/kwq/khtml/khtml_factory.h
+++ b/WebCore/kwq/khtml/khtml_factory.h
@@ -38,6 +38,8 @@ public:
 
   static KInstance *instance();
 
+  static KHTMLSettings *defaultHTMLSettings();
+
   // list of visited URLs
   static KParts::HistoryProvider *vLinks() { 
     return KParts::HistoryProvider::self();
diff --git a/WebCore/kwq/khtml/khtml_settings.h b/WebCore/kwq/khtml/khtml_settings.h
index ef32b3d..a4287ba 100644
--- a/WebCore/kwq/khtml/khtml_settings.h
+++ b/WebCore/kwq/khtml/khtml_settings.h
@@ -49,11 +49,15 @@ public:
     QString settingsToCSS() const;
 
     QFont::CharSet charset() const;
+    void setCharset( QFont::CharSet c );
+
+    const QString &encoding() const;
 
     int minFontSize() const;
     QString availableFamilies() const;
 
     QFont::CharSet script() const;
+    void setScript( QFont::CharSet c );
 
     const QValueList<int> &fontSizes() const;
 
diff --git a/WebCore/src/kdelibs/khtml/html/htmltokenizer.cpp b/WebCore/src/kdelibs/khtml/html/htmltokenizer.cpp
index cb93849..694c83c 100644
--- a/WebCore/src/kdelibs/khtml/html/htmltokenizer.cpp
+++ b/WebCore/src/kdelibs/khtml/html/htmltokenizer.cpp
@@ -296,9 +296,9 @@ void HTMLTokenizer::parseSpecial(DOMStringIt &src, bool begin)
                 scriptHandler();
             else {
                 processListing(DOMStringIt(scriptCode, scriptCodeSize));
-                if ( style )         { currToken.id = ID_STYLE + ID_CLOSE_TAG; }
-                else if ( textarea ) { currToken.id = ID_TEXTAREA + ID_CLOSE_TAG; }
-                else if ( listing )  { currToken.id = ID_LISTING + ID_CLOSE_TAG; }
+                if ( style )         { currToken._id = ID_STYLE + ID_CLOSE_TAG; }
+                else if ( textarea ) { currToken._id = ID_TEXTAREA + ID_CLOSE_TAG; }
+                else if ( listing )  { currToken._id = ID_LISTING + ID_CLOSE_TAG; }
                 processToken();
                 style = script = style = textarea = listing = false;
                 scriptCodeSize = scriptCodeResync = 0;
@@ -354,7 +354,7 @@ void HTMLTokenizer::scriptHandler()
         doScriptExec = true;
     }
     processListing(DOMStringIt(scriptCode, scriptCodeSize));
-    currToken.id = ID_SCRIPT + ID_CLOSE_TAG;
+    currToken._id = ID_SCRIPT + ID_CLOSE_TAG;
     processToken();
 
     QString prependingSrc;
@@ -416,10 +416,10 @@ void HTMLTokenizer::parseComment(DOMStringIt &src)
                 checkScriptBuffer();
                 scriptCode[ scriptCodeSize ] = 0;
                 scriptCode[ scriptCodeSize + 1 ] = 0;
-                currToken.id = ID_COMMENT;
+                currToken._id = ID_COMMENT;
                 processListing(DOMStringIt(scriptCode, scriptCodeSize - 2));
                 processToken();
-                currToken.id = ID_COMMENT + ID_CLOSE_TAG;
+                currToken._id = ID_COMMENT + ID_CLOSE_TAG;
                 processToken();
 #endif
                 scriptCodeSize = 0;
@@ -743,7 +743,7 @@ void HTMLTokenizer::parseTag(DOMStringIt &src)
                     QCString tmp(ptr, len+1);
                     kdDebug( 6036 ) << "found tag id=" << tagID << ": " << tmp.data() << endl;
 #endif
-                    currToken.id = beginTag ? tagID : tagID + ID_CLOSE_TAG;
+                    currToken._id = beginTag ? tagID : tagID + ID_CLOSE_TAG;
                     dest = buffer;
                 }
                 tag = SearchAttribute;
@@ -1000,10 +1000,10 @@ void HTMLTokenizer::parseTag(DOMStringIt &src)
             tquote = NoQuote;
             ++src;
 
-            if ( !currToken.id ) //stop if tag is unknown
+            if ( !currToken._id ) //stop if tag is unknown
                 return;
 
-            uint tagID = currToken.id;
+            uint tagID = currToken._id;
 #if defined(TOKEN_DEBUG) && TOKEN_DEBUG > 0
             kdDebug( 6036 ) << "appending Tag: " << tagID << endl;
 #endif
@@ -1444,8 +1444,8 @@ void HTMLTokenizer::processToken()
     if ( dest > buffer )
     {
 #ifdef TOKEN_DEBUG
-        if(currToken.id && currToken.id != ID_COMMENT) {
-            qDebug( "unexpected token id: %d, str: *%s*", currToken.id,QConstString( buffer,dest-buffer ).string().latin1() );
+        if(currToken._id && currToken._id != ID_COMMENT) {
+            qDebug( "unexpected token id: %d, str: *%s*", currToken._id,QConstString( buffer,dest-buffer ).string().latin1() );
             assert(0);
         }
 
@@ -1461,10 +1461,10 @@ void HTMLTokenizer::processToken()
             currToken.text = new DOMStringImpl( buffer, dest - buffer );
             currToken.text->ref();
         }
-        if (currToken.id != ID_COMMENT)
-            currToken.id = ID_TEXT;
+        if (currToken._id != ID_COMMENT)
+            currToken._id = ID_TEXT;
     }
-    else if(!currToken.id) {
+    else if(!currToken._id) {
         currToken.reset();
         return;
     }
@@ -1472,12 +1472,12 @@ void HTMLTokenizer::processToken()
     dest = buffer;
 
 #ifdef TOKEN_DEBUG
-    QString name = getTagName(currToken.id).string();
+    QString name = getTagName(currToken._id).string();
     QString text;
     if(currToken.text)
         text = QConstString(currToken.text->s, currToken.text->l).string();
 
-    kdDebug( 6036 ) << "Token --> " << name << "   id = " << currToken.id << endl;
+    kdDebug( 6036 ) << "Token --> " << name << "   id = " << currToken._id << endl;
     if(!text.isNull())
         kdDebug( 6036 ) << "text: \"" << text << "\"" << endl;
     int l = currToken.attrs ? currToken.attrs->length() : 0;
diff --git a/WebCore/src/kdelibs/khtml/html/htmltokenizer.h b/WebCore/src/kdelibs/khtml/html/htmltokenizer.h
index 274b1c8..9fdfe40 100644
--- a/WebCore/src/kdelibs/khtml/html/htmltokenizer.h
+++ b/WebCore/src/kdelibs/khtml/html/htmltokenizer.h
@@ -76,7 +76,7 @@ namespace khtml {
     {
     public:
         Token() {
-            id = 0;
+            _id = 0;
             complexText = false;
             attrs = 0;
             text = 0;
@@ -100,7 +100,7 @@ namespace khtml {
                 attrs->deref();
                 attrs = 0;
             }
-            id = 0;
+            _id = 0;
             complexText = false;
             if(text) {
                 text->deref();
@@ -108,7 +108,7 @@ namespace khtml {
             }
         }
         DOM::NamedAttrMapImpl* attrs;
-        ushort id;
+        ushort _id;
         DOMStringImpl* text;
         bool complexText;
     };
diff --git a/WebCore/src/kwq/KWQButton.mm b/WebCore/src/kwq/KWQButton.mm
index da127a9..0b7aad7 100644
--- a/WebCore/src/kwq/KWQButton.mm
+++ b/WebCore/src/kwq/KWQButton.mm
@@ -25,23 +25,28 @@
 
 #include <qbutton.h>
 
+#include <kwqdebug.h>
 
 QButton::QButton(QWidget *parent)
 {
+    _logNotYetImplemented();
 }
 
 
 QButton::~QButton()
 {
+    _logNotYetImplemented();
 }
 
 
 void QButton::setText(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
 QString QButton::text() const
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQCheckBox.mm b/WebCore/src/kwq/KWQCheckBox.mm
index 4f08888..1069919 100644
--- a/WebCore/src/kwq/KWQCheckBox.mm
+++ b/WebCore/src/kwq/KWQCheckBox.mm
@@ -25,11 +25,15 @@
 
 #include <qcheckbox.h>
 
+#include <kwqdebug.h>
+
 QCheckBox::QCheckBox(QWidget *w) : QButton (w)
 {
+    _logNotYetImplemented();
 }
 
 
 void QCheckBox::setChecked(bool)
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/src/kwq/KWQComboBox.mm b/WebCore/src/kwq/KWQComboBox.mm
index 209ae59..655206f 100644
--- a/WebCore/src/kwq/KWQComboBox.mm
+++ b/WebCore/src/kwq/KWQComboBox.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 <qcombobox.h>
@@ -29,49 +30,59 @@
 
 QComboBox::QComboBox(QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 
 QComboBox::QComboBox(bool rw, QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 QComboBox::~QComboBox()
 {
+    _logNotYetImplemented();
 }
 
 
 int QComboBox::count() const
 {
+    _logNotYetImplemented();
 }
 
 
 QListBox *QComboBox::listBox() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QComboBox::popup()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QComboBox::eventFilter(QObject *object, QEvent *event)
 {
+    _logNotYetImplemented();
 }
 
 
 void QComboBox::insertItem(const QString &text, int index=-1)
 {
+    _logNotYetImplemented();
 }
 
 
 void QComboBox::clear()
 {
+    _logNotYetImplemented();
 }
 
 void QComboBox::setCurrentItem(int)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQHBox.mm b/WebCore/src/kwq/KWQHBox.mm
index 6f3aa24..81ae609 100644
--- a/WebCore/src/kwq/KWQHBox.mm
+++ b/WebCore/src/kwq/KWQHBox.mm
@@ -22,25 +22,30 @@
 * (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 <qhbox.h>
 
 QHBox::QHBox()
 {
+    _logNotYetImplemented();
 }
 
 
 QHBox::QHBox(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 QHBox::~QHBox()
 {
+    _logNotYetImplemented();
 }
 
 
 bool QHBox::setStretchFactor(QWidget*, int stretch)
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQKCharsets.mm b/WebCore/src/kwq/KWQKCharsets.mm
index 15c57c7..dc31b8a 100644
--- a/WebCore/src/kwq/KWQKCharsets.mm
+++ b/WebCore/src/kwq/KWQKCharsets.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 <qstring.h>
 
@@ -29,48 +30,68 @@
 
 KCharsets::KCharsets()
 {
+    _logNotYetImplemented();
 }
 
 
 KCharsets::~KCharsets()
 {
+    _logNotYetImplemented();
 }
 
 
 QTextCodec *KCharsets::codecForName(const QString &) const
 {
+    _logNotYetImplemented();
 }
 
 
 QTextCodec *KCharsets::codecForName(const QString &, bool &) const
 {
+    _logNotYetImplemented();
 }
 
 
 void KCharsets::setQFont(QFont &, QFont::CharSet charset=QFont::Unicode) const
 {
+    _logNotYetImplemented();
 }
 
 
 void KCharsets::setQFont(QFont &, QString) const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KCharsets::name(QFont::CharSet)
 {
+    _logNotYetImplemented();
 }
 
 
 QString KCharsets::xCharsetName(QFont::CharSet) const
 {
+    _logNotYetImplemented();
 }
 
 
 bool KCharsets::supportsScript(const QFont &, QFont::CharSet)
 {
+    _logNotYetImplemented();
 }
 
 
+QFont::CharSet KCharsets::charsetForEncoding(const QString &encoding) const
+{
+    _logNotYetImplemented();
+}
+
+
+QFont::CharSet KCharsets::charsetForEncoding(const QString &e, bool noUnicode) const
+{
+    _logNotYetImplemented();
+}
+
 
 
diff --git a/WebCore/src/kwq/KWQKGlobal.mm b/WebCore/src/kwq/KWQKGlobal.mm
index 1672b0f..117f9b4 100644
--- a/WebCore/src/kwq/KWQKGlobal.mm
+++ b/WebCore/src/kwq/KWQKGlobal.mm
@@ -22,39 +22,46 @@
 * (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 <kglobal.h>
 
-
+#include <Cocoa/Cocoa.h>
 
 KInstance *KGlobal::instance()
 {
+    _logNotYetImplemented();
 }
 
 
 KCharsets *KGlobal::charsets()
 {
+    _logNotYetImplemented();
 }
 
 
 KLocale *KGlobal::locale()
 {
+    _logNotYetImplemented();
 }
 
 
 KStandardDirs *KGlobal::dirs()
 {
+    _logNotYetImplemented();
 }
 
 
 KConfig *KGlobal::config()
 {
+    _logNotYetImplemented();
 }
 
 
 
 const QString &KGlobal::staticQString(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQKHTMLFactory.mm b/WebCore/src/kwq/KWQKHTMLFactory.mm
index 9a8a512..50a91cd 100644
--- a/WebCore/src/kwq/KWQKHTMLFactory.mm
+++ b/WebCore/src/kwq/KWQKHTMLFactory.mm
@@ -40,3 +40,8 @@ KInstance *KHTMLFactory::instance()
 {
 }
 
+
+KHTMLSettings *KHTMLFactory::defaultHTMLSettings()
+{
+}
+
diff --git a/WebCore/src/kwq/KWQKHTMLPart.h b/WebCore/src/kwq/KWQKHTMLPart.h
index 6b7efb4..b1b49da 100644
--- a/WebCore/src/kwq/KWQKHTMLPart.h
+++ b/WebCore/src/kwq/KWQKHTMLPart.h
@@ -36,6 +36,7 @@
 class KHTMLSettings;
 class KJavaAppletContext;
 class KJSProxy;
+class KHTMLPartPrivate;
 
 namespace DOM
 {
@@ -552,10 +553,12 @@ public:
     void stopAutoScroll();
     virtual void overURL( const QString &url, const QString &target ); // ### KDE 3.0: make private (merge)
 
+#ifdef _KWQ_
+    void init();
+#endif
+
 private:
-    
-    
-    
+    KHTMLPartPrivate *d;
     
     // DUBIOUS, why are impls being referenced?
     DOM::HTMLDocumentImpl *docImpl() const;
diff --git a/WebCore/src/kwq/KWQKHTMLPart.mm b/WebCore/src/kwq/KWQKHTMLPart.mm
index c72560b..843ee4e 100644
--- a/WebCore/src/kwq/KWQKHTMLPart.mm
+++ b/WebCore/src/kwq/KWQKHTMLPart.mm
@@ -23,19 +23,62 @@
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 #include <kwqdebug.h>
- 
+
+#include <decoder.h>
+#include <qfont.h>
+#include <qtextcodec.h>
+
+#include <khtml_settings.h>
+#include <khtml_factory.h>
+#include <kcharsets.h>
+#include <kglobal.h>
+#include <html/htmltokenizer.h>
+#include <xml/dom_docimpl.h>
+
 #include <KWQKHTMLPart.h>
 
+// Class KHTMLPartPrivate ================================================================================
+
+class KHTMLPartPrivate
+{
+public:
+    DOM::DocumentImpl *m_doc;
+    khtml::Decoder *m_decoder;
+    QString m_encoding;
+    QFont::CharSet m_charset;
+    KHTMLSettings *m_settings;
+
+    bool m_bFirstData:1;
+    bool m_haveEncoding:1;
+    bool m_haveCharset:1;
+    
+    KHTMLPartPrivate()
+    {
+        m_doc = 0L;
+        m_decoder = 0L;
+        m_bFirstData = true;
+        m_settings = new KHTMLSettings(*KHTMLFactory::defaultHTMLSettings());
+        m_haveEncoding = false;
+    }
+};
+
+
+// Class KHTMLPart ======================================================================================
 
 KHTMLPart::KHTMLPart()
 {
-    _logNotYetImplemented();
+    init();
 }
 
 
 KHTMLPart::KHTMLPart(const KURL &url )
 {
-    _logNotYetImplemented();
+    init();
+}
+
+void KHTMLPart::init()
+{
+    d = new KHTMLPartPrivate();
 }
 
 
@@ -170,25 +213,79 @@ bool KHTMLPart::onlyLocalReferences() const
 
 void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset)
 {
-    _logNeverImplemented();
+    _logNotYetImplemented();
 }
 
 
 void KHTMLPart::write( const char *str, int len)
 {
-    _logNeverImplemented();
+    if ( !d->m_decoder ) {
+        d->m_decoder = new khtml::Decoder();
+        if(d->m_encoding != QString::null)
+            d->m_decoder->setEncoding(d->m_encoding.latin1(), d->m_haveEncoding);
+        else
+            d->m_decoder->setEncoding(settings()->encoding().latin1(), d->m_haveEncoding);
+    }
+    if ( len == 0 )
+        return;
+    
+    if ( len == -1 )
+        len = strlen( str );
+    
+    QString decoded = d->m_decoder->decode( str, len );
+    
+    if(decoded.isEmpty())
+        return;
+    
+    if(d->m_bFirstData) {
+        // determine the parse mode
+        d->m_doc->determineParseMode( decoded );
+        d->m_bFirstData = false;
+    
+    //kdDebug(6050) << "KHTMLPart::write haveEnc = " << d->m_haveEncoding << endl;
+        // ### this is still quite hacky, but should work a lot better than the old solution
+        if(d->m_decoder->visuallyOrdered())
+            d->m_doc->setVisuallyOrdered();
+        if (!d->m_haveCharset)
+        {
+            const QTextCodec *c = d->m_decoder->codec();
+            //kdDebug(6005) << "setting up charset to " << (int) KGlobal::charsets()->charsetForEncoding(c->name()) << endl;
+            d->m_charset = KGlobal::charsets()->charsetForEncoding(c->name());
+            d->m_settings->setCharset( d->m_charset );
+            d->m_settings->setScript( KGlobal::charsets()->charsetForEncoding(c->name(), true ));
+            //kdDebug(6005) << "charset is " << (int)d->m_settings->charset() << endl;
+        }
+        d->m_doc->applyChanges(true, true);
+    }
+    
+    Tokenizer* t = d->m_doc->tokenizer();
+    if(t)
+        t->write( decoded, true );
 }
 
 
 void KHTMLPart::write( const QString &str )
 {
-    _logNeverImplemented();
+    if ( str.isNull() )
+        return;
+    
+    if(d->m_bFirstData) {
+        // determine the parse mode
+        d->m_doc->setParseMode( DocumentImpl::Strict );
+        d->m_bFirstData = false;
+    }
+    Tokenizer* t = d->m_doc->tokenizer();
+    if(t)
+        t->write( str, true );
 }
 
 
 void KHTMLPart::end()
 {
-    _logNeverImplemented();
+    // make sure nothing's left in there...
+    if(d->m_decoder)
+        write(d->m_decoder->flush());
+    d->m_doc->finishParsing();
 }
 
 
diff --git a/WebCore/src/kwq/KWQKHTMLSettings.mm b/WebCore/src/kwq/KWQKHTMLSettings.mm
index b4d3163..3bcc562 100644
--- a/WebCore/src/kwq/KWQKHTMLSettings.mm
+++ b/WebCore/src/kwq/KWQKHTMLSettings.mm
@@ -22,81 +22,115 @@
 * (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 <khtml_settings.h>
 
 QString KHTMLSettings::stdFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::fixedFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::serifFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::sansSerifFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::cursiveFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::fantasyFontName() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::settingsToCSS() const
 {
+    _logNotYetImplemented();
 }
 
 QFont::CharSet KHTMLSettings::charset() const
 {
+    _logNotYetImplemented();
+}
+
+
+void KHTMLSettings::setCharset( QFont::CharSet c )
+{
+    _logNotYetImplemented();
+}
+
+
+const QString &KHTMLSettings::encoding() const
+{
+    _logNotYetImplemented();
 }
 
 
 int KHTMLSettings::minFontSize() const
 {
+    _logNotYetImplemented();
 }
 
 
 QString KHTMLSettings::availableFamilies() const
 {
+    _logNotYetImplemented();
 }
 
 
 QFont::CharSet KHTMLSettings::script() const
 {
+    _logNotYetImplemented();
+}
+
+
+void KHTMLSettings::setScript( QFont::CharSet c )
+{
+    _logNotYetImplemented();
 }
 
 
 const QValueList<int> &KHTMLSettings::fontSizes() const
 {
+    _logNotYetImplemented();
 }
 
 
 bool KHTMLSettings::changeCursor()
 {
+    _logNotYetImplemented();
 }
 
 
 bool KHTMLSettings::isFormCompletionEnabled() const
 {
+    _logNotYetImplemented();
 }
 
 
 int KHTMLSettings::maxFormCompletionItems() const
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQKLineEdit.mm b/WebCore/src/kwq/KWQKLineEdit.mm
index 6c4e09d..32a1285 100644
--- a/WebCore/src/kwq/KWQKLineEdit.mm
+++ b/WebCore/src/kwq/KWQKLineEdit.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 <klineedit.h>
@@ -29,24 +30,29 @@
 
 KLineEdit::KLineEdit(QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 KLineEdit::~KLineEdit()
 {
+    _logNotYetImplemented();
 }
 
 
 void KLineEdit::setMouseTracking(bool)
 {
+    _logNotYetImplemented();
 }
 
 
 void KLineEdit::setContextMenuEnabled(bool showMenu)
 {
+    _logNotYetImplemented();
 }
 
 
 KCompletionBox *KLineEdit::completionBox(bool create)
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQKListBox.mm b/WebCore/src/kwq/KWQKListBox.mm
index c6d6467..8fb9018 100644
--- a/WebCore/src/kwq/KWQKListBox.mm
+++ b/WebCore/src/kwq/KWQKListBox.mm
@@ -22,15 +22,18 @@
  * (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 <klistbox.h>
 
 KListBox::KListBox()
 {
+    _logNotYetImplemented();
 }
 
 
 KListBox::KListBox(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQKWin.mm b/WebCore/src/kwq/KWQKWin.mm
index 473ffba..15e3eef 100644
--- a/WebCore/src/kwq/KWQKWin.mm
+++ b/WebCore/src/kwq/KWQKWin.mm
@@ -25,7 +25,9 @@
 
 #include <kwin.h>
 
+#include <kwqdebug.h>
 
 KWin::Info KWin::info(int win)
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/src/kwq/KWQLabel.mm b/WebCore/src/kwq/KWQLabel.mm
index b23d655..580e22f 100644
--- a/WebCore/src/kwq/KWQLabel.mm
+++ b/WebCore/src/kwq/KWQLabel.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 <qlabel.h>
 
@@ -29,26 +30,31 @@
 
 QLabel::QLabel(QWidget *parent)
 {
+    _logNotYetImplemented();
 }
 
 
 QLabel::QLabel(const QString &, QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 QLabel::~QLabel()
 {
+    _logNotYetImplemented();
 }
 
 
 void QLabel::setText(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
 void QLabel::setAlignment(int)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQLineEdit.mm b/WebCore/src/kwq/KWQLineEdit.mm
index 1e989be..8943345 100644
--- a/WebCore/src/kwq/KWQLineEdit.mm
+++ b/WebCore/src/kwq/KWQLineEdit.mm
@@ -22,77 +22,93 @@
  * (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 <qlineedit.h>
 
 QLineEdit::QLineEdit(QWidget *parent=0, const char *name=0)
 {
+    _logNotYetImplemented();
 }
 
 QLineEdit::~QLineEdit()
 {
+    _logNotYetImplemented();
 }
     
 void QLineEdit::setEchoMode(EchoMode)
 {
+    _logNotYetImplemented();
 }
 
 void QLineEdit::setCursorPosition(int)
 {
+    _logNotYetImplemented();
 }
 
 
 void QLineEdit::setText(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
 void QLineEdit::setMaxLength(int)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QLineEdit::isReadOnly() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QLineEdit::setReadOnly(bool)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QLineEdit::event(QEvent *)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QLineEdit::frame() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QLineEdit::cursorPosition() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QLineEdit::maxLength() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QLineEdit::selectAll()
 {
+    _logNotYetImplemented();
 }
 
 
 QLineEdit::QLineEdit(const QLineEdit &)
 {
+    _logNotYetImplemented();
 }
 
 QLineEdit &QLineEdit::operator=(const QLineEdit &)
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQListBox.mm b/WebCore/src/kwq/KWQListBox.mm
index 235b7e6..2b49f7e 100644
--- a/WebCore/src/kwq/KWQListBox.mm
+++ b/WebCore/src/kwq/KWQListBox.mm
@@ -22,62 +22,74 @@
  * (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 <KWQListBox.h>
 
 
 QListBox::QListBox()
 {
+    _logNotYetImplemented();
 }
 
 
 QListBox::~QListBox()
 {
+    _logNotYetImplemented();
 }
 
 
 uint QListBox::count() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::clear()
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::setSelectionMode(SelectionMode)
 {
+    _logNotYetImplemented();
 }
 
 
 QListBoxItem *QListBox::firstItem() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QListBox::currentItem() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::insertItem(const QString &, int index=-1)
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::insertItem(const QListBoxItem *, int index=-1)
 {
+    _logNotYetImplemented();
 }
 
 
 void QListBox::setSelected(int, bool)
 {
+    _logNotYetImplemented();
 }
 
 
 bool QListBox::isSelected(int)
 {
+    _logNotYetImplemented();
 }
 
 
@@ -85,10 +97,12 @@ bool QListBox::isSelected(int)
 
 QListBoxItem::QListBoxItem()
 {
+    _logNotYetImplemented();
 }
 
 QListBoxItem::~QListBoxItem()
 {
+    _logNotYetImplemented();
 }
 
 
@@ -99,26 +113,31 @@ void QListBoxItem::setSelectable(bool)
 
 QListBox *QListBoxItem::listBox() const
 {
+    _logNotYetImplemented();
 }
 
 
 int QListBoxItem::width(const QListBox *) const
 {
+    _logNotYetImplemented();
 }
 
 
 int QListBoxItem::height(const QListBox *) const
 {
+    _logNotYetImplemented();
 }
 
 
 QListBoxItem *QListBoxItem::next() const
 {
+    _logNotYetImplemented();
 }
 
 
 QListBoxItem *QListBoxItem::prev() const
 {
+    _logNotYetImplemented();
 }
 
 
@@ -127,10 +146,12 @@ QListBoxItem *QListBoxItem::prev() const
 
 QListBoxText::QListBoxText(const QString &text=QString::null)
 {
+    _logNotYetImplemented();
 }
 
 
 QListBoxText::~QListBoxText()
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQObject.mm b/WebCore/src/kwq/KWQObject.mm
index 7f9560b..d24e780 100644
--- a/WebCore/src/kwq/KWQObject.mm
+++ b/WebCore/src/kwq/KWQObject.mm
@@ -27,10 +27,11 @@
 
 #include <kwqdebug.h>
 
-bool QObject::connect(const QObject *, const char *, const QObject *, 
-    const char *)
+bool QObject::connect(const QObject *src, const char *signal, const QObject *dest, 
+    const char *slot)
 {
-    _logNeverImplemented();
+    NSLog (@"QObject::connect() signal %s, slot %s\n", signal, slot);
+//    _logNeverImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQPushButton.mm b/WebCore/src/kwq/KWQPushButton.mm
index 752eb42..9666542 100644
--- a/WebCore/src/kwq/KWQPushButton.mm
+++ b/WebCore/src/kwq/KWQPushButton.mm
@@ -22,19 +22,23 @@
  * (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 <qpushbutton.h>
 
 QPushButton::QPushButton(QWidget *w) : QButton (w)
 {
+    _logNotYetImplemented();
 }
 
 
 QPushButton::QPushButton(const QString &text, QWidget *parent, const char* name)
 {
+    _logNotYetImplemented();
 }
 
 
 QPushButton::~QPushButton()
 {
+    _logNotYetImplemented();
 }
diff --git a/WebCore/src/kwq/KWQRadioButton.mm b/WebCore/src/kwq/KWQRadioButton.mm
index d5efe18..0ce1f2b 100644
--- a/WebCore/src/kwq/KWQRadioButton.mm
+++ b/WebCore/src/kwq/KWQRadioButton.mm
@@ -22,15 +22,18 @@
  * (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 <qradiobutton.h>
 
 QRadioButton::QRadioButton(QWidget *w) : QButton (w)
 {
+    _logNotYetImplemented();
 }
 
 
 void QRadioButton::setChecked(bool)
 {
+    _logNotYetImplemented();
 }
 
diff --git a/WebCore/src/kwq/KWQScrollView.mm b/WebCore/src/kwq/KWQScrollView.mm
index fc87e95..08c6ac0 100644
--- a/WebCore/src/kwq/KWQScrollView.mm
+++ b/WebCore/src/kwq/KWQScrollView.mm
@@ -119,7 +119,7 @@ void QScrollView::setHScrollBarMode(ScrollBarMode)
 
 void QScrollView::addChild(QWidget* child, int x=0, int y=0)
 {
-    _logNeverImplemented();
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/KWQTextEdit.mm b/WebCore/src/kwq/KWQTextEdit.mm
index 04a4164..105b9f8 100644
--- a/WebCore/src/kwq/KWQTextEdit.mm
+++ b/WebCore/src/kwq/KWQTextEdit.mm
@@ -22,122 +22,146 @@
  * (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 <keditcl.h>
 
 
 QTableView::QTableView()
 {
+    _logNotYetImplemented();
 }
 
 
 QTableView::~QTableView()
 {
+    _logNotYetImplemented();
 }
 
 
 QScrollBar *QTableView::verticalScrollBar() const
 {
+    _logNotYetImplemented();
 }
 
 
 QScrollBar *QTableView::horizontalScrollBar() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QTableView::setTableFlags(uint)
 {
+    _logNotYetImplemented();
 }
 
 
 void QTableView::clearTableFlags(uint f = ~0)
 {
+    _logNotYetImplemented();
 }
 
 
 QMultiLineEdit::QMultiLineEdit()
 {
+    _logNotYetImplemented();
 }
 
 
 QMultiLineEdit::~QMultiLineEdit()
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::setWordWrap(WordWrap)
 {
+    _logNotYetImplemented();
 }
 
 
 QMultiLineEdit::WordWrap QMultiLineEdit::wordWrap() const
 {
+    _logNotYetImplemented();
 }
 
 
 bool QMultiLineEdit::hasMarkedText() const
 {
+    _logNotYetImplemented();
 }
 
 
 bool QMultiLineEdit::isReadOnly() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::setReadOnly(bool)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::setCursorPosition(int line, int col, bool mark = FALSE)
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::getCursorPosition(int *line, int *col) const
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::setText(const QString &)
 {
+    _logNotYetImplemented();
 }
 
 
 QString QMultiLineEdit::text()
 {
+    _logNotYetImplemented();
 }
 
 
 QString QMultiLineEdit::textLine(int line) const
 {
+    _logNotYetImplemented();
 }
 
 
 int QMultiLineEdit::numLines() const
 {
+    _logNotYetImplemented();
 }
 
 
 void QMultiLineEdit::selectAll()
 {
+    _logNotYetImplemented();
 }
 
 
 KEdit::KEdit()
 {
+    _logNotYetImplemented();
 }
 
 
 KEdit::KEdit(QWidget *)
 {
+    _logNotYetImplemented();
 }
 
 
 KEdit::~KEdit()
 {
+    _logNotYetImplemented();
 }
 
 
diff --git a/WebCore/src/kwq/kdecore/kcharsets.h b/WebCore/src/kwq/kdecore/kcharsets.h
index d7e6770..30e03ae 100644
--- a/WebCore/src/kwq/kdecore/kcharsets.h
+++ b/WebCore/src/kwq/kdecore/kcharsets.h
@@ -61,6 +61,20 @@ public:
     QString xCharsetName(QFont::CharSet) const;
     bool supportsScript(const QFont &, QFont::CharSet);
 
+    /**
+     * @returns the charset that fits a given encoding best (that can display a
+     * file in the given encoding)
+     */
+    QFont::CharSet charsetForEncoding(const QString &encoding) const;
+
+    // ### BCI merge with above in 3.0
+    /**
+     * overloaded member function. Usually you don't mind getting unicode charsets, so
+     * this method should rarely be needed.
+     */
+    QFont::CharSet charsetForEncoding(const QString &e, bool noUnicode) const;
+
+
     // operators ---------------------------------------------------------------
 
 // protected -------------------------------------------------------------------
diff --git a/WebCore/src/kwq/khtml/khtml_factory.h b/WebCore/src/kwq/khtml/khtml_factory.h
index a5846cc..31d8470 100644
--- a/WebCore/src/kwq/khtml/khtml_factory.h
+++ b/WebCore/src/kwq/khtml/khtml_factory.h
@@ -38,6 +38,8 @@ public:
 
   static KInstance *instance();
 
+  static KHTMLSettings *defaultHTMLSettings();
+
   // list of visited URLs
   static KParts::HistoryProvider *vLinks() { 
     return KParts::HistoryProvider::self();
diff --git a/WebCore/src/kwq/khtml/khtml_settings.h b/WebCore/src/kwq/khtml/khtml_settings.h
index ef32b3d..a4287ba 100644
--- a/WebCore/src/kwq/khtml/khtml_settings.h
+++ b/WebCore/src/kwq/khtml/khtml_settings.h
@@ -49,11 +49,15 @@ public:
     QString settingsToCSS() const;
 
     QFont::CharSet charset() const;
+    void setCharset( QFont::CharSet c );
+
+    const QString &encoding() const;
 
     int minFontSize() const;
     QString availableFamilies() const;
 
     QFont::CharSet script() const;
+    void setScript( QFont::CharSet c );
 
     const QValueList<int> &fontSizes() const;
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list