? l
? html/htmltokenizer.loT
Index: khtml_part.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/khtml_part.cpp,v
retrieving revision 1.525
diff -u -3 -d -p -r1.525 khtml_part.cpp
--- khtml_part.cpp 2001/07/24 18:10:50 1.525
+++ khtml_part.cpp 2001/07/26 16:55:08
@@ -157,8 +157,9 @@ public:
m_startOffset = m_endOffset = 0;
m_startBeforeEnd = true;
m_linkCursor = KCursor::handCursor();
- m_loadedImages = 0;
- m_totalImageCount = 0;
+ m_loadedObjects = 0;
+ m_totalObjectCount = 0;
+ m_jobPercent = 0;
m_haveEncoding = false;
m_activeFrame = 0L;
m_findDialog = 0;
@@ -354,8 +355,9 @@ public:
QCursor m_linkCursor;
QTimer m_scrollTimer;
- unsigned long m_loadedImages;
- unsigned long m_totalImageCount;
+ unsigned long m_loadedObjects;
+ unsigned long m_totalObjectCount;
+ unsigned int m_jobPercent;
KHTMLFind *m_findDialog;
@@ -384,8 +386,7 @@ namespace khtml {
{
m_part = part;
m_priv = priv;
- // the "foo" is needed, so that the docloader for the empty document doesn't cancel this request.
- m_cachedSheet = Cache::requestStyleSheet(0, url, DOMString("foo") );
+ m_cachedSheet = Cache::requestStyleSheet(0, url );
if (m_cachedSheet)
m_cachedSheet->ref( this );
}
@@ -524,10 +525,12 @@ void KHTMLPart::init( KHTMLView *view, G
d->m_popupMenuXML = KXMLGUIFactory::readConfigFile( locate( "data", "khtml/khtml_popupmenu.rc", KHTMLFactory::instance() ) );
- connect( khtml::Cache::loader(), SIGNAL( requestDone( const DOM::DOMString &, khtml::CachedObject *) ),
- this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, khtml::CachedObject *) ) );
- connect( khtml::Cache::loader(), SIGNAL( requestFailed( const DOM::DOMString &, khtml::CachedObject *) ),
- this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, khtml::CachedObject *) ) );
+ connect( khtml::Cache::loader(), SIGNAL( requestStarted( khtml::DocLoader*, khtml::CachedObject* ) ),
+ this, SLOT( slotLoaderRequestStarted( khtml::DocLoader*, khtml::CachedObject* ) ) );
+ connect( khtml::Cache::loader(), SIGNAL( requestDone( khtml::DocLoader*, khtml::CachedObject *) ),
+ this, SLOT( slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *) ) );
+ connect( khtml::Cache::loader(), SIGNAL( requestFailed( khtml::DocLoader*, khtml::CachedObject *) ),
+ this, SLOT( slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *) ) );
findTextBegin(); //reset find variables
@@ -557,12 +560,15 @@ KHTMLPart::~KHTMLPart()
if ( d->m_job )
d->m_job->kill();
- khtml::Cache::loader()->cancelRequests( m_url.url() );
+ if ( d->m_doc && d->m_doc->docLoader() )
+ khtml::Cache::loader()->cancelRequests( d->m_doc->docLoader() );
- disconnect( khtml::Cache::loader(), SIGNAL( requestDone( const DOM::DOMString &, khtml::CachedObject * ) ),
- this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, khtml::CachedObject * ) ) );
- disconnect( khtml::Cache::loader(), SIGNAL( requestFailed( const DOM::DOMString &, khtml::CachedObject * ) ),
- this, SLOT( slotLoaderRequestDone( const DOM::DOMString &, khtml::CachedObject * ) ) );
+ disconnect( khtml::Cache::loader(), SIGNAL( requestStarted( khtml::DocLoader*, khtml::CachedObject* ) ),
+ this, SLOT( slotLoaderRequestStarted( khtml::DocLoader*, khtml::CachedObject* ) ) );
+ disconnect( khtml::Cache::loader(), SIGNAL( requestDone( khtml::DocLoader*, khtml::CachedObject *) ),
+ this, SLOT( slotLoaderRequestDone( khtml::DocLoader, khtml::CachedObject *) ) );
+ disconnect( khtml::Cache::loader(), SIGNAL( requestFailed( khtml::DocLoader*, khtml::CachedObject *) ),
+ this, SLOT( slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *) ) );
clear();
@@ -704,8 +710,15 @@ bool KHTMLPart::openURL( const KURL &url
kdDebug( 6050 ) << "KHTMLPart::openURL now (before started) m_url = " << m_url.url() << endl;
- emit started( d->m_job );
+#warning FIXME
+// connect( d->m_job, SIGNAL( speed( KIO::Job*, unsigned long ) ),
+// d->m_extension, SLOT( speedProgress( int ) ) );
+ connect( d->m_job, SIGNAL( percent( KIO::Job*, unsigned long ) ),
+ this, SLOT( slotJobPercent( KIO::Job*, unsigned long ) ) );
+
+ emit started( 0L );
+
return true;
}
@@ -739,7 +752,8 @@ bool KHTMLPart::closeURL()
d->m_workingURL = KURL();
- khtml::Cache::loader()->cancelRequests( m_url.url() );
+ if ( d->m_doc && d->m_doc->docLoader() )
+ khtml::Cache::loader()->cancelRequests( d->m_doc->docLoader() );
// Stop any started redirections as well!! (DA)
if ( d && d->m_redirectionTimer.isActive() )
@@ -1136,8 +1150,9 @@ void KHTMLPart::clear()
d->m_startOffset = 0;
d->m_endOffset = 0;
- d->m_totalImageCount = 0;
- d->m_loadedImages = 0;
+ d->m_totalObjectCount = 0;
+ d->m_loadedObjects = 0;
+ d->m_jobPercent = 0;
if ( !d->m_haveEncoding )
d->m_encoding = QString::null;
@@ -1493,55 +1508,58 @@ void KHTMLPart::slotFinishedParsing()
if ( !m_url.encodedHtmlRef().isEmpty() )
gotoAnchor( m_url.encodedHtmlRef() );
-#if 0
- HTMLCollectionImpl imgColl( d->m_doc, HTMLCollectionImpl::DOC_IMAGES );
+ checkCompleted();
+}
- d->m_totalImageCount = 0;
- KURL::List imageURLs;
- unsigned long i = 0;
- unsigned long len = imgColl.length();
- for (; i < len; i++ )
+void KHTMLPart::slotLoaderRequestStarted( khtml::DocLoader* dl, khtml::CachedObject *obj )
+{
+ if ( obj && obj->type() == khtml::CachedObject::Image )
{
- NodeImpl *node = imgColl.item( i );
- if ( node->id() != ID_IMG )
- continue;
-
- QString imgURL = static_cast( node )->getAttribute( ATTR_SRC ).string();
- KURL url;
-
- if ( KURL::isRelativeURL( imgURL ) )
- url = completeURL( imgURL );
- else
- url = KURL( imgURL );
-
- if ( !imageURLs.contains( url ) )
- {
- d->m_totalImageCount++;
- imageURLs.append( url );
+ d->m_totalObjectCount++;
+ if ( d->m_loadedObjects <= d->m_totalObjectCount ) {
+ emit d->m_extension->infoMessage( i18n( "%1 of 1 Image loaded", "%1 of %n Images loaded", d->m_totalObjectCount ).arg( d->m_loadedObjects ) );
+ QTimer::singleShot( 0, this, SLOT( slotProgressUpdate() ) );
}
}
-#endif
-
- checkCompleted();
}
-void KHTMLPart::slotLoaderRequestDone( const DOM::DOMString &/*baseURL*/, khtml::CachedObject *obj )
+void KHTMLPart::slotLoaderRequestDone( khtml::DocLoader* dl, khtml::CachedObject *obj )
{
-
if ( obj && obj->type() == khtml::CachedObject::Image )
{
- d->m_loadedImages++;
+ d->m_loadedObjects++;
// in case we have more images than we originally found, then they are most likely loaded by some
// javascript code. as we can't find out the exact number anyway we skip displaying any further image
// loading info message :P
- if ( d->m_loadedImages <= d->m_totalImageCount && autoloadImages())
- emit d->m_extension->infoMessage( i18n( "%1 of 1 Image loaded", "%1 of %n Images loaded", d->m_totalImageCount ).arg( d->m_loadedImages ) );
+ if ( d->m_loadedObjects <= d->m_totalObjectCount ) {
+ emit d->m_extension->infoMessage( i18n( "%1 of 1 Image loaded", "%1 of %n Images loaded", d->m_totalObjectCount ).arg( d->m_loadedObjects ) );
+ QTimer::singleShot( 0, this, SLOT( slotProgressUpdate() ) );
+ }
}
+
checkCompleted();
}
+void KHTMLPart::slotProgressUpdate()
+{
+ int percent;
+ if ( d->m_loadedObjects < d->m_totalObjectCount )
+ percent = d->m_jobPercent / 4 + ( d->m_loadedObjects*300 ) / ( 4*d->m_totalObjectCount );
+ else
+ percent = d->m_jobPercent;
+
+ emit d->m_extension->loadingProgress( percent );
+}
+
+void KHTMLPart::slotJobPercent( KIO::Job* job, unsigned long percent )
+{
+ d->m_jobPercent = percent;
+
+ QTimer::singleShot( 0, this, SLOT( slotProgressUpdate() ) );
+}
+
void KHTMLPart::checkCompleted()
{
//kdDebug( 6050 ) << "KHTMLPart::checkCompleted() parsing: " << d->m_bParsing << endl;
@@ -1569,7 +1587,6 @@ void KHTMLPart::checkCompleted()
d->m_focusNodeRestored = true;
}
- int requests = 0;
// Any frame that hasn't completed yet ?
ConstFrameIt it = d->m_frames.begin();
@@ -1583,8 +1600,11 @@ void KHTMLPart::checkCompleted()
return;
// Still waiting for images/scripts from the loader ?
- requests = khtml::Cache::loader()->numRequests( m_url.url() );
- //kdDebug( 6060 ) << "number of loader requests: " << requests << endl;
+ int requests = 0;
+ if ( d->m_doc->docLoader() )
+ requests = khtml::Cache::loader()->numRequests( d->m_doc->docLoader() );
+
+ kdDebug( 6060 ) << "number of loader requests: " << requests << endl;
if ( requests > 0 )
return;
@@ -3846,7 +3866,6 @@ void KHTMLPart::khtmlMouseMoveEvent( kht
void KHTMLPart::khtmlMouseReleaseEvent( khtml::MouseReleaseEvent *event )
{
- QMouseEvent *_mouse = event->qmouseEvent();
DOM::Node innerNode = event->innerNode();
d->m_mousePressNode = DOM::Node();
@@ -3858,6 +3877,7 @@ void KHTMLPart::khtmlMouseReleaseEvent(
d->m_bMousePressed = false;
#ifndef QT_NO_CLIPBOARD
+ QMouseEvent *_mouse = event->qmouseEvent();
if ((_mouse->button() == MidButton) && (event->url() == 0))
{
QClipboard *cb = QApplication::clipboard();
Index: khtml_part.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/khtml_part.h,v
retrieving revision 1.146
diff -u -3 -d -p -r1.146 khtml_part.h
--- khtml_part.h 2001/07/22 18:57:35 1.146
+++ khtml_part.h 2001/07/26 16:55:08
@@ -58,6 +58,7 @@ namespace DOM
namespace khtml
{
+ class DocLoader;
class RenderPart;
class RenderPartObject;
struct ChildFrame;
@@ -933,9 +934,7 @@ private slots:
void slotLoadImages();
/**
- * We try to submit the form again
- * if someone tries to submit a form
- * while parsing
+ * @internal
*/
void submitFormAgain();
@@ -964,7 +963,8 @@ private slots:
*/
void slotChildURLRequest( const KURL &url, const KParts::URLArgs &args );
- void slotLoaderRequestDone( const DOM::DOMString &baseURL, khtml::CachedObject *obj );
+ void slotLoaderRequestStarted( khtml::DocLoader*, khtml::CachedObject* obj);
+ void slotLoaderRequestDone( khtml::DocLoader*, khtml::CachedObject *obj );
void checkCompleted();
/**
@@ -981,9 +981,21 @@ private slots:
void slotSelectAll();
+ /**
+ * @internal
+ */
+ void slotProgressUpdate();
+
+ /**
+ * @internal
+ */
+ void slotJobPercent(KIO::Job*, unsigned long);
+
protected:
- // @internal
- void emitSelectionChanged(); // ### KDE 3.0: make private
+ /**
+ * @internal
+ */
+ void emitSelectionChanged(); // ### KDE 3.0: make private
private:
void urlSelected( const QString &url, int button, int state,
Index: khtmlview.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/khtmlview.cpp,v
retrieving revision 1.395
diff -u -3 -d -p -r1.395 khtmlview.cpp
--- khtmlview.cpp 2001/07/21 22:43:06 1.395
+++ khtmlview.cpp 2001/07/26 16:55:09
@@ -941,6 +941,7 @@ void KHTMLView::print()
m_part->xmlDocImpl()->applyChanges();
QApplication::restoreOverrideCursor();
}
+
delete printer;
}
Index: css/css_ruleimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/css_ruleimpl.cpp,v
retrieving revision 1.15
diff -u -3 -d -p -r1.15 css_ruleimpl.cpp
--- css/css_ruleimpl.cpp 2001/06/05 11:54:51 1.15
+++ css/css_ruleimpl.cpp 2001/07/26 16:55:09
@@ -117,7 +117,7 @@ CSSImportRuleImpl::CSSImportRuleImpl(Sty
m_lstMedia = media;
m_strHref = href;
m_styleSheet = 0;
- kdDebug( 6080 ) << "CSSImportRule: requesting sheet " << href.string() << " " << baseUrl().string() << endl;
+ kdDebug( 6080 ) << "CSSImportRule: requesting sheet " << href.string() << endl;
khtml::DocLoader *docLoader = 0;
StyleBaseImpl *root = this;
@@ -128,7 +128,7 @@ CSSImportRuleImpl::CSSImportRuleImpl(Sty
// we must have a docLoader !
// ### pass correct charset here!!
- m_cachedSheet = docLoader->requestStyleSheet(href, baseUrl(), QString::null);
+ m_cachedSheet = docLoader->requestStyleSheet(href, QString::null);
m_cachedSheet->ref(this);
m_loading = true;
Index: css/css_valueimpl.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/css_valueimpl.cpp,v
retrieving revision 1.48
diff -u -3 -d -p -r1.48 css_valueimpl.cpp
--- css/css_valueimpl.cpp 2001/07/19 21:37:56 1.48
+++ css/css_valueimpl.cpp 2001/07/26 16:55:09
@@ -112,9 +112,9 @@ bool CSSStyleDeclarationImpl::removeProp
m_node->setChanged(true);
}
return true;
-}
-
+}
+
DOMString CSSStyleDeclarationImpl::removeProperty( const DOMString &propertyName )
{
int id = getPropertyID(propertyName.string().lower().ascii(), propertyName.length());
@@ -679,7 +679,7 @@ RectImpl::~RectImpl()
// -----------------------------------------------------------------
-CSSImageValueImpl::CSSImageValueImpl(const DOMString &url, const DOMString &baseurl, StyleBaseImpl *style)
+CSSImageValueImpl::CSSImageValueImpl(const DOMString &url, StyleBaseImpl *style)
: CSSPrimitiveValueImpl(url, CSSPrimitiveValue::CSS_URI)
{
khtml::DocLoader *docLoader = 0;
@@ -690,9 +690,9 @@ CSSImageValueImpl::CSSImageValueImpl(con
docLoader = static_cast(root)->docLoader();
if (docLoader)
- m_image = docLoader->requestImage(url, baseurl);
+ m_image = docLoader->requestImage(url);
else
- m_image = khtml::Cache::requestImage(0, url, baseurl);
+ m_image = khtml::Cache::requestImage(0, url);
if(m_image) m_image->ref(this);
}
Index: css/css_valueimpl.h
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/css_valueimpl.h,v
retrieving revision 1.23
diff -u -3 -d -p -r1.23 css_valueimpl.h
--- css/css_valueimpl.h 2001/07/19 20:25:43 1.23
+++ css/css_valueimpl.h 2001/07/26 16:55:09
@@ -222,7 +222,7 @@ protected:
class CSSImageValueImpl : public CSSPrimitiveValueImpl, public khtml::CachedObjectClient
{
public:
- CSSImageValueImpl(const DOMString &url, const DOMString &baseurl, StyleBaseImpl *style);
+ CSSImageValueImpl(const DOMString &url, StyleBaseImpl *style);
CSSImageValueImpl();
virtual ~CSSImageValueImpl();
Index: css/cssparser.cpp
===================================================================
RCS file: /home/kde/kdelibs/khtml/css/cssparser.cpp,v
retrieving revision 1.152
diff -u -3 -d -p -r1.152 cssparser.cpp
--- css/cssparser.cpp 2001/07/21 10:53:29 1.152
+++ css/cssparser.cpp 2001/07/26 16:55:10
@@ -39,6 +39,9 @@
#include "xml/dom_nodeimpl.h"
#include "html/html_documentimpl.h"
#include "dom_exception.h"
+#include "khtml_part.h"
+#include "khtmlview.h"
+
using namespace DOM;
#include
@@ -80,7 +83,7 @@ void StyleBaseImpl::checkLoaded()
if(m_parent) m_parent->checkLoaded();
}
-DOMString StyleBaseImpl::baseUrl()
+DOMString StyleBaseImpl::baseURL()
{
// try to find the style sheet. If found look for it's url.
// If it has none, look for the parentsheet, or the parentNode and
@@ -96,13 +99,13 @@ DOMString StyleBaseImpl::baseUrl()
return sheet->href();
// find parent
- if(sheet->parent()) return sheet->parent()->baseUrl();
+ if(sheet->parent()) return sheet->parent()->baseURL();
if(!sheet->ownerNode()) return DOMString();
DocumentImpl *doc = static_cast(sheet->ownerNode()->nodeType() == Node::DOCUMENT_NODE ? sheet->ownerNode() : sheet->ownerNode()->ownerDocument());
- return doc->baseURL();
+ return doc->view()->part()->baseURL().url();
}
/*
@@ -1499,18 +1502,14 @@ bool StyleBaseImpl::parseValue( const QC
kdDebug( 6080 ) << "empty image " << endl;
#endif
} else {
- const QString str(value.stripWhiteSpace()); // ### Optimize
- if (str.left(4).lower() == "url(") {
- DOMString value(curP, endP - curP);
- value = khtml::parseURL(value);
- parsedValue = new CSSImageValueImpl(value, baseUrl(), this);
+ value = khtml::parseURL(value).string();
+ parsedValue = new CSSImageValueImpl(KURL( baseURL().string(), value ).url(), this);
#ifdef CSS_DEBUG
- kdDebug( 6080 ) << "image, url=" << value.string() << " base=" << baseUrl().string() << endl;
+ kdDebug( 6080 ) << "image, url=" << value.string() << endl;
#endif
- }
}
- break;
}
+ break;
case CSS_PROP_OUTLINE_WIDTH: // | inherit
case CSS_PROP_BORDER_TOP_WIDTH: //// | inherit
case CSS_PROP_BORDER_RIGHT_WIDTH: // Which is defined as
@@ -2480,9 +2479,7 @@ StyleBaseImpl::parseStyleRule(const QCha
CSSRuleImpl *
StyleBaseImpl::parseRule(const QChar *&curP, const QChar *endP)
{
- const char *comment = "'
}
}
-
+
while(ch < last) {
if( !comment && !sq && *ch == '"' ) {
dq = !dq;
@@ -2626,7 +2623,7 @@ const QString StyleBaseImpl::preprocess(
}
firstChar = false;
} else if ( *ch == '/' ) {
- firstChar = true; // Slash added only if next is not '*'
+ firstChar = true; // Slash added only if next is not '*'
} else if ((*ch == '<') && ((ch+3) < last) /* SGML Comment */
&& (*(ch+1) == '!') && (*(ch+2) == '-') && (*(ch+3) == '-')) {
ch = ch+3; // skip '