[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:52:18 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 05b3c6a9282965a37fc74769b4d1ad177d62dba4
Author: kocienda <kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 13 23:50:08 2001 +0000

    Worked on rendering "background" images:
    
            - Images set as the page bg in body tgas now works
            - Images set as table backgrounds now works
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@449 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/khtml/html/html_tableimpl.cpp b/WebCore/khtml/html/html_tableimpl.cpp
index abf3440..1873ef2 100644
--- a/WebCore/khtml/html/html_tableimpl.cpp
+++ b/WebCore/khtml/html/html_tableimpl.cpp
@@ -313,9 +313,18 @@ void HTMLTableElementImpl::parseAttribute(AttrImpl *attr)
     {
         if (!attr->value().isEmpty()) {
             HTMLDocumentImpl *doc = static_cast<HTMLDocumentImpl *>(ownerDocument());
+                        
+#ifdef _KWQ_            
+            // our c++ implementation likes this better
+            DOMString d(khtml::parseURL(attr->value()));
+            QString url = d.string();
+#else            
             QString url = khtml::parseURL( attr->value() ).string();
+#endif
+            
             if ( doc->view() )
                 url = doc->view()->part()->completeURL( url ).url();
+                
             addCSSProperty(CSS_PROP_BACKGROUND_IMAGE, "url('"+url+"')" );
         }
         else
@@ -428,9 +437,17 @@ void HTMLTablePartElementImpl::parseAttribute(AttrImpl *attr)
     {
         if (attr->val()) {
             HTMLDocumentImpl *doc = static_cast<HTMLDocumentImpl *>(ownerDocument());
+
+#ifdef _KWQ_            
+            // our c++ implementation likes this better
+            DOMString d(khtml::parseURL(attr->value()));
+            QString url = d.string();
+#else            
             QString url = khtml::parseURL( attr->value() ).string();
+#endif
             if ( doc->view() )
                 url = doc->view()->part()->completeURL( url ).url();
+                
             addCSSProperty(CSS_PROP_BACKGROUND_IMAGE, "url('"+url+"')" );
         }
         else
diff --git a/WebCore/khtml/rendering/render_box.cpp b/WebCore/khtml/rendering/render_box.cpp
index 373b807..1d6605f 100644
--- a/WebCore/khtml/rendering/render_box.cpp
+++ b/WebCore/khtml/rendering/render_box.cpp
@@ -207,6 +207,7 @@ void RenderBox::printBackground(QPainter *p, const QColor &c, CachedImage *bg, i
     if(c.isValid())
         p->fillRect(_tx, clipy, w, cliph, c);
     // no progressive loading of the background image
+    
     if(bg && bg->pixmap_size() == bg->valid_rect().size() && !bg->isTransparent() && !bg->isErrorImage()) {
         //kdDebug( 6040 ) << "printing bgimage at " << _tx << "/" << _ty << endl;
         // ### might need to add some correct offsets
@@ -295,8 +296,15 @@ void RenderBox::printBackground(QPainter *p, const QColor &c, CachedImage *bg, i
 
 //        kdDebug() << "cx="<<cx << " cy="<<cy<< " cw="<<cw << " ch="<<ch << " sx="<<sx << " sy="<<sy << endl;
         
-        if (cw>0 && ch>0)
+        if (cw>0 && ch>0) {
+#ifdef _KWQ_
+            // This is a change in behavior. The difference is that we 
+            // do not do a fill of the passed in color before tiling.
+            p->drawTiledPixmap(cx, cy, cw, ch, bg->pixmap(), sx, sy);
+#else
             p->drawTiledPixmap(cx, cy, cw, ch, bg->tiled_pixmap(c), sx, sy);
+#endif
+        }
     }
 }
 
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index 126f88f..bba15c6 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -104,6 +104,7 @@ public:
     KHTMLSettings *m_settings;
     
     KURL m_workingURL;
+    KURL m_baseURL;
     
     KHTMLPart *m_part;
     KHTMLPartNotificationReceiver *m_recv;
@@ -383,6 +384,22 @@ void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset)
     
     d->m_doc = new HTMLDocumentImpl(d->m_view);
     d->m_doc->ref();
+
+    d->m_baseURL = KURL();
+    d->m_workingURL = url;
+
+    if (!d->m_workingURL.isEmpty())
+    {
+        KURL::List lst = KURL::split( d->m_workingURL );
+        KURL baseurl;
+        if ( !lst.isEmpty() )
+            baseurl = *lst.begin();
+        // Use this for relative links.
+        // We prefer m_baseURL over m_url because m_url changes when we are
+        // about to load a new page.
+        setBaseURL(baseurl);
+    }
+
     //FIXME: do we need this? 
     d->m_doc->attach( d->m_view );
     d->m_doc->setURL( url.url() );
@@ -487,18 +504,21 @@ void KHTMLPart::end()
 }
 
 
-void KHTMLPart::setBaseURL( const KURL &url )
+void KHTMLPart::setBaseURL(const KURL &url)
 {
-    _logNeverImplemented();
+    d->m_baseURL = url;
+    if (d->m_baseURL.protocol().startsWith( "http" ) && !d->m_baseURL.host().isEmpty() && d->m_baseURL.path().isEmpty()) {
+        d->m_baseURL.setPath( "/" );
+    }
 }
 
 
 KURL KHTMLPart::baseURL() const
 {
-    if (d->m_workingURL.isEmpty()) {
-        return KURL();
+    if (d->m_baseURL.isEmpty()) {
+        return d->m_workingURL;
     }
-    return d->m_workingURL;
+    return d->m_baseURL;
 }
 
 
@@ -718,7 +738,12 @@ KJSProxy *KHTMLPart::jScript()
 
 KURL KHTMLPart::completeURL(const QString &url, const QString &target = QString::null)
 {
-    return KURL(d->m_workingURL);
+    if (d->m_baseURL.isEmpty()) {
+        return KURL(d->m_workingURL);
+    }
+    else {
+        return KURL(d->m_baseURL, url);
+    }
 }
 
 
diff --git a/WebCore/kwq/KWQKHTMLPartImpl.mm b/WebCore/kwq/KWQKHTMLPartImpl.mm
index 126f88f..bba15c6 100644
--- a/WebCore/kwq/KWQKHTMLPartImpl.mm
+++ b/WebCore/kwq/KWQKHTMLPartImpl.mm
@@ -104,6 +104,7 @@ public:
     KHTMLSettings *m_settings;
     
     KURL m_workingURL;
+    KURL m_baseURL;
     
     KHTMLPart *m_part;
     KHTMLPartNotificationReceiver *m_recv;
@@ -383,6 +384,22 @@ void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset)
     
     d->m_doc = new HTMLDocumentImpl(d->m_view);
     d->m_doc->ref();
+
+    d->m_baseURL = KURL();
+    d->m_workingURL = url;
+
+    if (!d->m_workingURL.isEmpty())
+    {
+        KURL::List lst = KURL::split( d->m_workingURL );
+        KURL baseurl;
+        if ( !lst.isEmpty() )
+            baseurl = *lst.begin();
+        // Use this for relative links.
+        // We prefer m_baseURL over m_url because m_url changes when we are
+        // about to load a new page.
+        setBaseURL(baseurl);
+    }
+
     //FIXME: do we need this? 
     d->m_doc->attach( d->m_view );
     d->m_doc->setURL( url.url() );
@@ -487,18 +504,21 @@ void KHTMLPart::end()
 }
 
 
-void KHTMLPart::setBaseURL( const KURL &url )
+void KHTMLPart::setBaseURL(const KURL &url)
 {
-    _logNeverImplemented();
+    d->m_baseURL = url;
+    if (d->m_baseURL.protocol().startsWith( "http" ) && !d->m_baseURL.host().isEmpty() && d->m_baseURL.path().isEmpty()) {
+        d->m_baseURL.setPath( "/" );
+    }
 }
 
 
 KURL KHTMLPart::baseURL() const
 {
-    if (d->m_workingURL.isEmpty()) {
-        return KURL();
+    if (d->m_baseURL.isEmpty()) {
+        return d->m_workingURL;
     }
-    return d->m_workingURL;
+    return d->m_baseURL;
 }
 
 
@@ -718,7 +738,12 @@ KJSProxy *KHTMLPart::jScript()
 
 KURL KHTMLPart::completeURL(const QString &url, const QString &target = QString::null)
 {
-    return KURL(d->m_workingURL);
+    if (d->m_baseURL.isEmpty()) {
+        return KURL(d->m_workingURL);
+    }
+    else {
+        return KURL(d->m_baseURL, url);
+    }
 }
 
 
diff --git a/WebCore/src/kdelibs/khtml/html/html_tableimpl.cpp b/WebCore/src/kdelibs/khtml/html/html_tableimpl.cpp
index abf3440..1873ef2 100644
--- a/WebCore/src/kdelibs/khtml/html/html_tableimpl.cpp
+++ b/WebCore/src/kdelibs/khtml/html/html_tableimpl.cpp
@@ -313,9 +313,18 @@ void HTMLTableElementImpl::parseAttribute(AttrImpl *attr)
     {
         if (!attr->value().isEmpty()) {
             HTMLDocumentImpl *doc = static_cast<HTMLDocumentImpl *>(ownerDocument());
+                        
+#ifdef _KWQ_            
+            // our c++ implementation likes this better
+            DOMString d(khtml::parseURL(attr->value()));
+            QString url = d.string();
+#else            
             QString url = khtml::parseURL( attr->value() ).string();
+#endif
+            
             if ( doc->view() )
                 url = doc->view()->part()->completeURL( url ).url();
+                
             addCSSProperty(CSS_PROP_BACKGROUND_IMAGE, "url('"+url+"')" );
         }
         else
@@ -428,9 +437,17 @@ void HTMLTablePartElementImpl::parseAttribute(AttrImpl *attr)
     {
         if (attr->val()) {
             HTMLDocumentImpl *doc = static_cast<HTMLDocumentImpl *>(ownerDocument());
+
+#ifdef _KWQ_            
+            // our c++ implementation likes this better
+            DOMString d(khtml::parseURL(attr->value()));
+            QString url = d.string();
+#else            
             QString url = khtml::parseURL( attr->value() ).string();
+#endif
             if ( doc->view() )
                 url = doc->view()->part()->completeURL( url ).url();
+                
             addCSSProperty(CSS_PROP_BACKGROUND_IMAGE, "url('"+url+"')" );
         }
         else
diff --git a/WebCore/src/kdelibs/khtml/rendering/render_box.cpp b/WebCore/src/kdelibs/khtml/rendering/render_box.cpp
index 373b807..1d6605f 100644
--- a/WebCore/src/kdelibs/khtml/rendering/render_box.cpp
+++ b/WebCore/src/kdelibs/khtml/rendering/render_box.cpp
@@ -207,6 +207,7 @@ void RenderBox::printBackground(QPainter *p, const QColor &c, CachedImage *bg, i
     if(c.isValid())
         p->fillRect(_tx, clipy, w, cliph, c);
     // no progressive loading of the background image
+    
     if(bg && bg->pixmap_size() == bg->valid_rect().size() && !bg->isTransparent() && !bg->isErrorImage()) {
         //kdDebug( 6040 ) << "printing bgimage at " << _tx << "/" << _ty << endl;
         // ### might need to add some correct offsets
@@ -295,8 +296,15 @@ void RenderBox::printBackground(QPainter *p, const QColor &c, CachedImage *bg, i
 
 //        kdDebug() << "cx="<<cx << " cy="<<cy<< " cw="<<cw << " ch="<<ch << " sx="<<sx << " sy="<<sy << endl;
         
-        if (cw>0 && ch>0)
+        if (cw>0 && ch>0) {
+#ifdef _KWQ_
+            // This is a change in behavior. The difference is that we 
+            // do not do a fill of the passed in color before tiling.
+            p->drawTiledPixmap(cx, cy, cw, ch, bg->pixmap(), sx, sy);
+#else
             p->drawTiledPixmap(cx, cy, cw, ch, bg->tiled_pixmap(c), sx, sy);
+#endif
+        }
     }
 }
 
diff --git a/WebCore/src/kwq/KWQKHTMLPart.mm b/WebCore/src/kwq/KWQKHTMLPart.mm
index 126f88f..bba15c6 100644
--- a/WebCore/src/kwq/KWQKHTMLPart.mm
+++ b/WebCore/src/kwq/KWQKHTMLPart.mm
@@ -104,6 +104,7 @@ public:
     KHTMLSettings *m_settings;
     
     KURL m_workingURL;
+    KURL m_baseURL;
     
     KHTMLPart *m_part;
     KHTMLPartNotificationReceiver *m_recv;
@@ -383,6 +384,22 @@ void KHTMLPart::begin( const KURL &url, int xOffset, int yOffset)
     
     d->m_doc = new HTMLDocumentImpl(d->m_view);
     d->m_doc->ref();
+
+    d->m_baseURL = KURL();
+    d->m_workingURL = url;
+
+    if (!d->m_workingURL.isEmpty())
+    {
+        KURL::List lst = KURL::split( d->m_workingURL );
+        KURL baseurl;
+        if ( !lst.isEmpty() )
+            baseurl = *lst.begin();
+        // Use this for relative links.
+        // We prefer m_baseURL over m_url because m_url changes when we are
+        // about to load a new page.
+        setBaseURL(baseurl);
+    }
+
     //FIXME: do we need this? 
     d->m_doc->attach( d->m_view );
     d->m_doc->setURL( url.url() );
@@ -487,18 +504,21 @@ void KHTMLPart::end()
 }
 
 
-void KHTMLPart::setBaseURL( const KURL &url )
+void KHTMLPart::setBaseURL(const KURL &url)
 {
-    _logNeverImplemented();
+    d->m_baseURL = url;
+    if (d->m_baseURL.protocol().startsWith( "http" ) && !d->m_baseURL.host().isEmpty() && d->m_baseURL.path().isEmpty()) {
+        d->m_baseURL.setPath( "/" );
+    }
 }
 
 
 KURL KHTMLPart::baseURL() const
 {
-    if (d->m_workingURL.isEmpty()) {
-        return KURL();
+    if (d->m_baseURL.isEmpty()) {
+        return d->m_workingURL;
     }
-    return d->m_workingURL;
+    return d->m_baseURL;
 }
 
 
@@ -718,7 +738,12 @@ KJSProxy *KHTMLPart::jScript()
 
 KURL KHTMLPart::completeURL(const QString &url, const QString &target = QString::null)
 {
-    return KURL(d->m_workingURL);
+    if (d->m_baseURL.isEmpty()) {
+        return KURL(d->m_workingURL);
+    }
+    else {
+        return KURL(d->m_baseURL, url);
+    }
 }
 
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list