[webkit-changes] cvs commit: WebKit/WebCoreSupport.subproj WebImageRenderer.h WebImageRenderer.m

Darin darin at opensource.apple.com
Thu Dec 8 00:40:34 PST 2005


darin       05/12/08 00:40:33

  Modified:    .        ChangeLog
               khtml    khtmlview.cpp
               khtml/css css_computedstyle.cpp cssparser.cpp
                        cssstyleselector.cpp
               khtml/html html_inlineimpl.cpp
               kwq      KWQClipboard.mm KWQCursor.mm KWQKHTMLPart.mm
                        KWQPainter.mm KWQPixmap.h KWQPixmap.mm KWQWidget.mm
                        WebCoreBridge.mm WebCoreImageRenderer.h
               .        ChangeLog
               Misc.subproj WebNSPasteboardExtras.m WebNSViewExtras.m
               WebCoreSupport.subproj WebImageRenderer.h WebImageRenderer.m
  Log:
  WebCore:
  
          Reviewed by Eric.
  
          - fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=5689
            add support for CSS "custom cursors" (cursor images)
  
          * khtml/css/css_computedstyle.cpp:
          (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Added code to the
          CSS_PROP_CURSOR case to handle cursor images.
          * khtml/css/cssparser.cpp: (CSSParser::parseValue): Allow and parse a URL for the
          cursor for the image case.
          * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::applyProperty): Do
          the appropriate inherit and initial for CSS_PROP_CURSOR, and allow either an
          identifier or a URL for the value.
          * khtml/html/html_inlineimpl.cpp: (DOM::HTMLAnchorElementImpl::defaultEventHandler):
          Removed inappropriate call to resetCursor. We don't change the cursor shape just
          because we're following a link.
          * khtml/khtmlview.cpp:
          (selectCursor): Added. New function that chooses the appropriate cursor.
          Includes new logic to handle image cursors.
          (KHTMLView::viewportMouseMoveEvent): Refactored to use selectCursor to choose
          the appropriate cursor.
          * kwq/KWQClipboard.mm: (KWQClipboard::dragNSImage): Call the function to get an
          image renderer by its new name, imageRenderer().
          * kwq/KWQCursor.mm:
          (createCustomCursor): Added.
          (QCursor::QCursor): Changed constructor that takes a QPixmap to call createCustomCursor.
          * kwq/KWQKHTMLPart.mm:
          (KWQKHTMLPart::khtmlMouseMoveEvent): Replaced a call to resetCursor with a call to
          setCursor(QCursor()).
          (KWQKHTMLPart::fileWrapperForElement): Fixed code that assumed the render object is always
          a RenderImage. Call TIFFRepresentation on the image renderer instead of incorrectly assuming
          it's always an NSImage.
          * kwq/KWQPainter.mm:
          (QPainter::drawFloatPixmap): Call imageRenderer function instead of getting right at the
          data member.
          (QPainter::drawTiledPixmap): Ditto.
          (QPainter::drawScaledAndTiledPixmap): Ditto.
          * kwq/KWQPixmap.h: Removed convertToImage(), renamed image() to imageRenderer().
          * kwq/KWQPixmap.mm: Similar name changes.
          * kwq/KWQWidget.mm: (QWidget::setCursor): To workaround extra work done by AppKit when you set
          the cursor to the same one, check if the cursor is already set before calling setDocumentCursor.
          * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): Call the image method on the image
          renderer instead of incorrectly assuming the renderer itself is an image.
  
          * kwq/WebCoreImageRenderer.h: Added a TIFFRepresentation method to this protocol.
  
  WebKit:
  
          Reviewed by Eric.
  
          - fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=5689
            add support for CSS "custom cursors" (cursor images)
  
          * WebCoreSupport.subproj/WebImageRenderer.h: Remove declaration of TIFFRepresentation and
          image methods since both are required by the WebCoreImageRenderer protocol now and we don't
          have to re-declare them.
  
          * Misc.subproj/WebNSPasteboardExtras.m: Add an import of the WebCoreImageRenderer.h file
          since we need to use methods inherited from that protocol.
          * Misc.subproj/WebNSViewExtras.m: Ditto.
          * WebCoreSupport.subproj/WebImageRenderer.m: Ditto. (Use and implement.)
  
  Revision  Changes    Path
  1.489     +48 -0     WebCore/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebCore/ChangeLog,v
  retrieving revision 1.488
  retrieving revision 1.489
  diff -u -r1.488 -r1.489
  --- ChangeLog	7 Dec 2005 23:19:13 -0000	1.488
  +++ ChangeLog	8 Dec 2005 08:40:22 -0000	1.489
  @@ -1,3 +1,51 @@
  +2005-12-08  Darin Adler  <darin at apple.com>
  +
  +        Reviewed by Eric.
  +
  +        - fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=5689
  +          add support for CSS "custom cursors" (cursor images)
  +
  +        * khtml/css/css_computedstyle.cpp:
  +        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Added code to the
  +        CSS_PROP_CURSOR case to handle cursor images.
  +        * khtml/css/cssparser.cpp: (CSSParser::parseValue): Allow and parse a URL for the
  +        cursor for the image case.
  +        * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::applyProperty): Do
  +        the appropriate inherit and initial for CSS_PROP_CURSOR, and allow either an
  +        identifier or a URL for the value.
  +        * khtml/html/html_inlineimpl.cpp: (DOM::HTMLAnchorElementImpl::defaultEventHandler):
  +        Removed inappropriate call to resetCursor. We don't change the cursor shape just
  +        because we're following a link.
  +        * khtml/khtmlview.cpp:
  +        (selectCursor): Added. New function that chooses the appropriate cursor.
  +        Includes new logic to handle image cursors.
  +        (KHTMLView::viewportMouseMoveEvent): Refactored to use selectCursor to choose
  +        the appropriate cursor.
  +        * kwq/KWQClipboard.mm: (KWQClipboard::dragNSImage): Call the function to get an
  +        image renderer by its new name, imageRenderer().
  +        * kwq/KWQCursor.mm:
  +        (createCustomCursor): Added.
  +        (QCursor::QCursor): Changed constructor that takes a QPixmap to call createCustomCursor.
  +        * kwq/KWQKHTMLPart.mm:
  +        (KWQKHTMLPart::khtmlMouseMoveEvent): Replaced a call to resetCursor with a call to
  +        setCursor(QCursor()).
  +        (KWQKHTMLPart::fileWrapperForElement): Fixed code that assumed the render object is always
  +        a RenderImage. Call TIFFRepresentation on the image renderer instead of incorrectly assuming
  +        it's always an NSImage.
  +        * kwq/KWQPainter.mm:
  +        (QPainter::drawFloatPixmap): Call imageRenderer function instead of getting right at the
  +        data member.
  +        (QPainter::drawTiledPixmap): Ditto.
  +        (QPainter::drawScaledAndTiledPixmap): Ditto.
  +        * kwq/KWQPixmap.h: Removed convertToImage(), renamed image() to imageRenderer().
  +        * kwq/KWQPixmap.mm: Similar name changes.
  +        * kwq/KWQWidget.mm: (QWidget::setCursor): To workaround extra work done by AppKit when you set
  +        the cursor to the same one, check if the cursor is already set before calling setDocumentCursor.
  +        * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): Call the image method on the image
  +        renderer instead of incorrectly assuming the renderer itself is an image.
  +
  +        * kwq/WebCoreImageRenderer.h: Added a TIFFRepresentation method to this protocol.
  +
   2005-12-07  David Hyatt  <hyatt at apple.com>
   
   	Fix for Radar bug #4333923, typing tab character into empty
  
  
  
  1.158     +89 -119   WebCore/khtml/khtmlview.cpp
  
  Index: khtmlview.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/khtmlview.cpp,v
  retrieving revision 1.157
  retrieving revision 1.158
  diff -u -r1.157 -r1.158
  --- khtmlview.cpp	6 Dec 2005 01:10:37 -0000	1.157
  +++ khtmlview.cpp	8 Dec 2005 08:40:24 -0000	1.158
  @@ -209,10 +209,10 @@
   
   void KHTMLToolTip::maybeTip(const QPoint& /*p*/)
   {
  -    DOM::NodeImpl *node = m_viewprivate->underMouse;
  +    NodeImpl *node = m_viewprivate->underMouse;
       while ( node ) {
           if ( node->isElementNode() ) {
  -            AtomicString s = static_cast<DOM::ElementImpl*>( node )->getAttribute(ATTR_TITLE);
  +            AtomicString s = static_cast<ElementImpl*>( node )->getAttribute(ATTR_TITLE);
               if (!s.isEmpty()) {
                   QRect r( m_view->contentsToViewport( node->getRect().topLeft() ), node->getRect().size() );
                   tip( r,  s.qstring() );
  @@ -264,7 +264,7 @@
       {
           //WABA: Is this Ok? Do I need to deref it as well?
           //Does this need to be done somewhere else?
  -        DOM::DocumentImpl *doc = m_part->xmlDocImpl();
  +        DocumentImpl *doc = m_part->xmlDocImpl();
           if (doc)
               doc->detach();
   
  @@ -376,9 +376,9 @@
   void KHTMLView::adjustViewSize()
   {
       if( m_part->xmlDocImpl() ) {
  -        DOM::DocumentImpl *document = m_part->xmlDocImpl();
  +        DocumentImpl *document = m_part->xmlDocImpl();
   
  -        khtml::RenderCanvas* root = static_cast<khtml::RenderCanvas *>(document->renderer());
  +        RenderCanvas* root = static_cast<RenderCanvas *>(document->renderer());
           if ( !root )
               return;
           
  @@ -389,7 +389,7 @@
       }
   }
   
  -void KHTMLView::applyOverflowToViewport(khtml::RenderObject* o, ScrollBarMode& hMode, ScrollBarMode& vMode)
  +void KHTMLView::applyOverflowToViewport(RenderObject* o, ScrollBarMode& hMode, ScrollBarMode& vMode)
   {
       // Handle the overflow:hidden/scroll case for the body/html elements.  WinIE treats
       // overflow:hidden and overflow:scroll on <body> as applying to the document's
  @@ -452,7 +452,7 @@
           return;
       }
   
  -    DOM::DocumentImpl* document = m_part->xmlDocImpl();
  +    DocumentImpl* document = m_part->xmlDocImpl();
       if (!document) {
           // FIXME: Should we set _height here too?
           _width = visibleWidth();
  @@ -466,7 +466,7 @@
       if (document->hasChangedChild())
           document->recalcStyle();
   
  -    khtml::RenderCanvas* root = static_cast<khtml::RenderCanvas*>(document->renderer());
  +    RenderCanvas* root = static_cast<RenderCanvas*>(document->renderer());
       if (!root) {
           // FIXME: Do we need to set _width or _height here?
           d->layoutSchedulingEnabled = true;
  @@ -596,7 +596,7 @@
   
   void KHTMLView::updateDashboardRegions()
   {
  -    DOM::DocumentImpl* document = m_part->xmlDocImpl();
  +    DocumentImpl* document = m_part->xmlDocImpl();
       if (document->hasDashboardRegions()) {
           QValueList<DashboardRegionValue> newRegions = document->renderer()->computeDashboardRegions();
           QValueList<DashboardRegionValue> currentRegions = document->dashboardRegions();
  @@ -623,7 +623,7 @@
   
       d->mousePressed = true;
   
  -    DOM::NodeImpl::MouseEvent mev( _mouse->stateAfter(), DOM::NodeImpl::MousePress );
  +    NodeImpl::MouseEvent mev( _mouse->stateAfter(), NodeImpl::MousePress );
       m_part->xmlDocImpl()->prepareMouseEvent( false, xm, ym, &mev );
   
       if (KWQ(m_part)->passSubframeEventToSubframe(mev)) {
  @@ -639,10 +639,10 @@
           d->clickNode->ref();
   
       bool swallowEvent = dispatchMouseEvent(mousedownEvent,mev.innerNode.get(),true,
  -                                           d->clickCount,_mouse,true,DOM::NodeImpl::MousePress);
  +                                           d->clickCount,_mouse,true,NodeImpl::MousePress);
   
       if (!swallowEvent) {
  -	khtml::MousePressEvent event( _mouse, xm, ym, mev.url, mev.target, mev.innerNode.get() );
  +	MousePressEvent event( _mouse, xm, ym, mev.url, mev.target, mev.innerNode.get() );
   	QApplication::sendEvent( m_part, &event );
           // Many AK widgets run their own event loops and consume events while the mouse is down.
           // When they finish, currentEvent is the mouseUp that they exited on.  We need to update
  @@ -669,7 +669,7 @@
       // We get this instead of a second mouse-up 
       d->mousePressed = false;
   
  -    DOM::NodeImpl::MouseEvent mev( _mouse->stateAfter(), DOM::NodeImpl::MouseDblClick );
  +    NodeImpl::MouseEvent mev( _mouse->stateAfter(), NodeImpl::MouseDblClick );
       m_part->xmlDocImpl()->prepareMouseEvent( false, xm, ym, &mev );
   
       if (KWQ(m_part)->passSubframeEventToSubframe(mev))
  @@ -677,29 +677,83 @@
   
       d->clickCount = _mouse->clickCount();
       bool swallowEvent = dispatchMouseEvent(mouseupEvent,mev.innerNode.get(),true,
  -                                           d->clickCount,_mouse,false,DOM::NodeImpl::MouseRelease);
  +                                           d->clickCount,_mouse,false,NodeImpl::MouseRelease);
   
       if (mev.innerNode == d->clickNode)
           dispatchMouseEvent(clickEvent,mev.innerNode.get(),true,
  -			   d->clickCount,_mouse,true,DOM::NodeImpl::MouseRelease);
  +			   d->clickCount,_mouse,true,NodeImpl::MouseRelease);
   
       // Qt delivers a release event AND a double click event.
       if (!swallowEvent) {
  -	khtml::MouseReleaseEvent event1( _mouse, xm, ym, mev.url, mev.target, mev.innerNode.get() );
  +	MouseReleaseEvent event1( _mouse, xm, ym, mev.url, mev.target, mev.innerNode.get() );
   	QApplication::sendEvent( m_part, &event1 );
   
  -	khtml::MouseDoubleClickEvent event2( _mouse, xm, ym, mev.url, mev.target, mev.innerNode.get() );
  +	MouseDoubleClickEvent event2( _mouse, xm, ym, mev.url, mev.target, mev.innerNode.get() );
   	QApplication::sendEvent( m_part, &event2 );
       }
   
       invalidateClick();
   }
   
  -static bool isSubmitImage(DOM::NodeImpl *node)
  +static bool isSubmitImage(NodeImpl *node)
   {
       return node && node->hasTagName(inputTag) && static_cast<HTMLInputElementImpl*>(node)->inputType() == HTMLInputElementImpl::IMAGE;
   }
   
  +static QCursor selectCursor(const NodeImpl::MouseEvent &event, KHTMLPart *part, bool mousePressed)
  +{
  +    // During selection, use an I-beam no matter what we're over
  +    if (mousePressed && part->hasSelection())
  +        return KCursor::ibeamCursor();
  +
  +    NodeImpl *node = event.innerNode.get();
  +    RenderObject *renderer = node ? node->renderer() : 0;
  +    RenderStyle *style = renderer ? renderer->style() : 0;
  +
  +    if (style && style->cursorImage() && !style->cursorImage()->pixmap().isNull())
  +        return QCursor(style->cursorImage()->pixmap());
  +
  +    switch (style ? style->cursor() : CURSOR_AUTO) {
  +        case CURSOR_AUTO:
  +            if (!event.url.isNull() || isSubmitImage(node))
  +                return part->urlCursor();
  +            if ((node && node->isContentEditable()) || (renderer && renderer->isText() && renderer->canSelect()))
  +                return KCursor::ibeamCursor();
  +            break;
  +        case CURSOR_CROSS:
  +            return KCursor::crossCursor();
  +        case CURSOR_POINTER:
  +            return part->urlCursor();
  +        case CURSOR_MOVE:
  +            return KCursor::sizeAllCursor();
  +        case CURSOR_E_RESIZE:
  +            return KCursor::eastResizeCursor();
  +        case CURSOR_W_RESIZE:
  +            return KCursor::westResizeCursor();
  +        case CURSOR_N_RESIZE:
  +            return KCursor::northResizeCursor();
  +        case CURSOR_S_RESIZE:
  +            return KCursor::southResizeCursor();
  +        case CURSOR_NE_RESIZE:
  +            return KCursor::northEastResizeCursor();
  +        case CURSOR_SW_RESIZE:
  +            return KCursor::southWestResizeCursor();
  +        case CURSOR_NW_RESIZE:
  +            return KCursor::northWestResizeCursor();
  +        case CURSOR_SE_RESIZE:
  +            return KCursor::southEastResizeCursor();
  +        case CURSOR_TEXT:
  +            return KCursor::ibeamCursor();
  +        case CURSOR_WAIT:
  +            return KCursor::waitCursor();
  +        case CURSOR_HELP:
  +            return KCursor::whatsThisCursor();
  +        case CURSOR_DEFAULT:
  +            break;
  +    }
  +    return QCursor();
  +}
  +
   void KHTMLView::viewportMouseMoveEvent( QMouseEvent * _mouse )
   {
       // in Radar 3703768 we saw frequent crashes apparently due to the
  @@ -716,112 +770,29 @@
       // if we are allowed to select.
       // This means that :hover and :active freeze in the state they were in when the mouse
       // was pressed, rather than updating for nodes the mouse moves over as you hold the mouse down.
  -    DOM::NodeImpl::MouseEvent mev( _mouse->stateAfter(), DOM::NodeImpl::MouseMove );
  +    NodeImpl::MouseEvent mev( _mouse->stateAfter(), NodeImpl::MouseMove );
       m_part->xmlDocImpl()->prepareMouseEvent(d->mousePressed && m_part->mouseDownMayStartSelect(), d->mousePressed, xm, ym, &mev );
       if (KWQ(m_part)->passSubframeEventToSubframe(mev))
           return;
   
       bool swallowEvent = dispatchMouseEvent(mousemoveEvent,mev.innerNode.get(),false,
  -                                           0,_mouse,true,DOM::NodeImpl::MouseMove);
  +                                           0,_mouse,true,NodeImpl::MouseMove);
   
   
       // execute the scheduled script. This is to make sure the mouseover events come after the mouseout events
       m_part->executeScheduledScript();
   
  -    NodeImpl *node = mev.innerNode.get();
  -    RenderObject *renderer = node ? node->renderer() : 0;
  -    RenderStyle *style = renderer ? renderer->style() : 0;
  +    viewport()->setCursor(selectCursor(mev, m_part, d->mousePressed));
   
  -    QCursor c;
  -    if (style && style->cursor() == CURSOR_AUTO && style->cursorImage()
  -        && !(style->cursorImage()->pixmap().isNull())) {
  -        /* First of all it works: Check out http://www.iam.unibe.ch/~schlpbch/cursor.html
  -         *
  -         * But, I don't know what exactly we have to do here: rescale to 32*32, change to monochrome..
  -         */
  -        //kdDebug( 6000 ) << "using custom cursor" << endl;
  -        const QPixmap p = style->cursorImage()->pixmap();
  -        // ### fix
  -        c = QCursor(p);
  -    }
  -
  -    switch ( style ? style->cursor() : CURSOR_AUTO ) {
  -    case CURSOR_AUTO:
  -        if ( d->mousePressed && m_part->hasSelection() )
  -	    // during selection, use an IBeam no matter what we're over
  -	    c = KCursor::ibeamCursor();
  -        else if ( (!mev.url.isNull() || isSubmitImage(node)) && m_part->settings()->changeCursor() )
  -            c = m_part->urlCursor();
  -        else if ( (node && node->isContentEditable()) || (renderer && renderer->isText() && renderer->canSelect()) )
  -            c = KCursor::ibeamCursor();
  -        break;
  -    case CURSOR_CROSS:
  -        c = KCursor::crossCursor();
  -        break;
  -    case CURSOR_POINTER:
  -        c = m_part->urlCursor();
  -        break;
  -    case CURSOR_MOVE:
  -        c = KCursor::sizeAllCursor();
  -        break;
  -    case CURSOR_E_RESIZE:
  -        c = KCursor::eastResizeCursor();
  -        break;
  -    case CURSOR_W_RESIZE:
  -        c = KCursor::westResizeCursor();
  -        break;
  -    case CURSOR_N_RESIZE:
  -        c = KCursor::northResizeCursor();
  -        break;
  -    case CURSOR_S_RESIZE:
  -        c = KCursor::southResizeCursor();
  -        break;
  -    case CURSOR_NE_RESIZE:
  -        c = KCursor::northEastResizeCursor();
  -        break;
  -    case CURSOR_SW_RESIZE:
  -        c = KCursor::southWestResizeCursor();
  -        break;
  -    case CURSOR_NW_RESIZE:
  -        c = KCursor::northWestResizeCursor();
  -        break;
  -    case CURSOR_SE_RESIZE:
  -        c = KCursor::southEastResizeCursor();
  -        break;
  -    case CURSOR_TEXT:
  -        c = KCursor::ibeamCursor();
  -        break;
  -    case CURSOR_WAIT:
  -        c = KCursor::waitCursor();
  -        break;
  -    case CURSOR_HELP:
  -        c = KCursor::whatsThisCursor();
  -        break;
  -    case CURSOR_DEFAULT:
  -        break;
  -    }
  -
  -    QWidget *vp = viewport();
  -    if ( vp->cursor().handle() != c.handle() ) {
  -        if( c.handle() == KCursor::arrowCursor().handle())
  -            vp->unsetCursor();
  -        else
  -            vp->setCursor( c );
  -    }
       d->prevMouseX = xm;
       d->prevMouseY = ym;
   
       if (!swallowEvent) {
  -        khtml::MouseMoveEvent event( _mouse, xm, ym, mev.url, mev.target, mev.innerNode.get() );
  -        QApplication::sendEvent( m_part, &event );
  +        MouseMoveEvent event(_mouse, xm, ym, mev.url, mev.target, mev.innerNode.get());
  +        QApplication::sendEvent(m_part, &event);
       }
   }
   
  -void KHTMLView::resetCursor()
  -{
  -    viewport()->unsetCursor();
  -}
  -
   void KHTMLView::invalidateClick()
   {
       d->clickCount = 0;
  @@ -844,22 +815,22 @@
   
       //kdDebug( 6000 ) << "\nmouseReleaseEvent: x=" << xm << ", y=" << ym << endl;
   
  -    DOM::NodeImpl::MouseEvent mev( _mouse->stateAfter(), DOM::NodeImpl::MouseRelease );
  +    NodeImpl::MouseEvent mev( _mouse->stateAfter(), NodeImpl::MouseRelease );
       m_part->xmlDocImpl()->prepareMouseEvent( false, xm, ym, &mev );
   
       if (KWQ(m_part)->passSubframeEventToSubframe(mev))
           return;
   
       bool swallowEvent = dispatchMouseEvent(mouseupEvent,mev.innerNode.get(),true,
  -                                           d->clickCount,_mouse,false,DOM::NodeImpl::MouseRelease);
  +                                           d->clickCount,_mouse,false,NodeImpl::MouseRelease);
   
       if (d->clickCount > 0 && mev.innerNode == d->clickNode
           )
   	dispatchMouseEvent(clickEvent,mev.innerNode.get(),true,
  -			   d->clickCount,_mouse,true,DOM::NodeImpl::MouseRelease);
  +			   d->clickCount,_mouse,true,NodeImpl::MouseRelease);
   
       if (!swallowEvent) {
  -	khtml::MouseReleaseEvent event( _mouse, xm, ym, mev.url, mev.target, mev.innerNode.get() );
  +	MouseReleaseEvent event( _mouse, xm, ym, mev.url, mev.target, mev.innerNode.get() );
   	QApplication::sendEvent( m_part, &event );
       }
   
  @@ -898,7 +869,7 @@
   // ### what kind of c*** is that ?
   }
   
  -bool KHTMLView::dispatchDragEvent(const AtomicString &eventType, DOM::NodeImpl *dragTarget, const QPoint &loc, DOM::ClipboardImpl *clipboard)
  +bool KHTMLView::dispatchDragEvent(const AtomicString &eventType, NodeImpl *dragTarget, const QPoint &loc, ClipboardImpl *clipboard)
   {
       int clientX, clientY;
       viewportToContents(loc.x(), loc.y(), clientX, clientY);
  @@ -923,12 +894,12 @@
       return accept;
   }
   
  -bool KHTMLView::updateDragAndDrop(const QPoint &loc, DOM::ClipboardImpl *clipboard)
  +bool KHTMLView::updateDragAndDrop(const QPoint &loc, ClipboardImpl *clipboard)
   {
       bool accept = false;
       int xm, ym;
       viewportToContents(loc.x(), loc.y(), xm, ym);
  -    DOM::NodeImpl::MouseEvent mev(0, DOM::NodeImpl::MouseMove);
  +    NodeImpl::MouseEvent mev(0, NodeImpl::MouseMove);
       m_part->xmlDocImpl()->prepareMouseEvent(true, xm, ym, &mev);
       NodeImpl *newTarget = mev.innerNode.get();
   
  @@ -953,7 +924,7 @@
       return accept;
   }
   
  -void KHTMLView::cancelDragAndDrop(const QPoint &loc, DOM::ClipboardImpl *clipboard)
  +void KHTMLView::cancelDragAndDrop(const QPoint &loc, ClipboardImpl *clipboard)
   {
       if (d->dragTarget) {
           dispatchDragEvent(dragleaveEvent, d->dragTarget.get(), loc, clipboard);
  @@ -961,7 +932,7 @@
       d->dragTarget = 0;
   }
   
  -bool KHTMLView::performDragAndDrop(const QPoint &loc, DOM::ClipboardImpl *clipboard)
  +bool KHTMLView::performDragAndDrop(const QPoint &loc, ClipboardImpl *clipboard)
   {
       bool accept = false;
       if (d->dragTarget) {
  @@ -972,7 +943,7 @@
   }
   
   
  -DOM::NodeImpl *KHTMLView::nodeUnderMouse() const
  +NodeImpl *KHTMLView::nodeUnderMouse() const
   {
       return d->underMouse;
   }
  @@ -1195,7 +1166,7 @@
   }
   
   
  -bool KHTMLView::dispatchMouseEvent(const AtomicString &eventType, DOM::NodeImpl *targetNode, bool cancelable,
  +bool KHTMLView::dispatchMouseEvent(const AtomicString &eventType, NodeImpl *targetNode, bool cancelable,
   				   int detail,QMouseEvent *_mouse, bool setUnder,
   				   int mouseEventType)
   {
  @@ -1246,7 +1217,7 @@
           // Blur current focus node when a link/button is clicked; this
           // is expected by some sites that rely on onChange handlers running
           // from form fields before the button click is processed.
  -        DOM::NodeImpl* node = targetNode;
  +        NodeImpl* node = targetNode;
           for ( ; node && !node->isFocusable(); node = node->parentNode());
           // If focus shift is blocked, we eat the event.  Note we should never clear swallowEvent
           // if the page already set it (e.g., by canceling default behavior).
  @@ -1392,4 +1363,3 @@
   {
       d->isTransparent = isTransparent;
   }
  -
  
  
  
  1.41      +197 -207  WebCore/khtml/css/css_computedstyle.cpp
  
  Index: css_computedstyle.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/css/css_computedstyle.cpp,v
  retrieving revision 1.40
  retrieving revision 1.41
  diff -u -r1.40 -r1.41
  --- css_computedstyle.cpp	21 Nov 2005 01:19:51 -0000	1.40
  +++ css_computedstyle.cpp	8 Dec 2005 08:40:24 -0000	1.41
  @@ -2,7 +2,7 @@
    * css_computedstyle.cpp
    *
    * Copyright (C)  2004  Zack Rusin <zack at kde.org>
  - * Copyright (C) 2004 Apple Computer, Inc.
  + * Copyright (C) 2004, 2005 Apple Computer, Inc.
    *
    * This library is free software; you can redistribute it and/or
    * modify it under the terms of the GNU Lesser General Public
  @@ -35,20 +35,8 @@
   #include "rendering/render_object.h"
   
   #import <kxmlcore/Assertions.h>
  -#import "KWQFontFamily.h"
  -#import "KWQLogging.h"
   
  -using khtml::EBackgroundBox;
  -using khtml::EBorderStyle;
  -using khtml::ETextAlign;
  -using khtml::Font;
  -using khtml::FontDef;
  -using khtml::Length;
  -using khtml::LengthBox;
  -using khtml::RenderObject;
  -using khtml::RenderStyle;
  -using khtml::ShadowData;
  -using khtml::StyleDashboardRegion;
  +using namespace khtml;
   
   extern DOM::DOMString getPropertyName(unsigned short id);
   
  @@ -164,7 +152,7 @@
   static CSSValueImpl* valueForLength(const Length &length)
   {
       switch (length.type) {
  -        case khtml::Percent:
  +        case Percent:
               return new CSSPrimitiveValueImpl(length.length(), CSSPrimitiveValue::CSS_PERCENTAGE);
           case khtml::Fixed:
               return new CSSPrimitiveValueImpl(length.length(), CSSPrimitiveValue::CSS_PX);
  @@ -176,25 +164,25 @@
   static CSSValueImpl *valueForBorderStyle(EBorderStyle style)
   {
       switch (style) {
  -        case khtml::BNONE:
  +        case BNONE:
               return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
  -        case khtml::BHIDDEN:
  +        case BHIDDEN:
               return new CSSPrimitiveValueImpl(CSS_VAL_HIDDEN);
  -        case khtml::INSET:
  +        case INSET:
               return new CSSPrimitiveValueImpl(CSS_VAL_INSET);
  -        case khtml::GROOVE:
  +        case GROOVE:
               return new CSSPrimitiveValueImpl(CSS_VAL_GROOVE);
  -        case khtml::RIDGE:
  +        case RIDGE:
               return new CSSPrimitiveValueImpl(CSS_VAL_RIDGE);
  -        case khtml::OUTSET:
  +        case OUTSET:
               return new CSSPrimitiveValueImpl(CSS_VAL_OUTSET);
  -        case khtml::DOTTED:
  +        case DOTTED:
               return new CSSPrimitiveValueImpl(CSS_VAL_DOTTED);
  -        case khtml::DASHED:
  +        case DASHED:
               return new CSSPrimitiveValueImpl(CSS_VAL_DASHED);
  -        case khtml::SOLID:
  +        case SOLID:
               return new CSSPrimitiveValueImpl(CSS_VAL_SOLID);
  -        case khtml::DOUBLE:
  +        case DOUBLE:
               return new CSSPrimitiveValueImpl(CSS_VAL_DOUBLE);
       }
       ASSERT_NOT_REACHED();
  @@ -204,21 +192,21 @@
   static CSSValueImpl *valueForTextAlign(ETextAlign align)
   {
       switch (align) {
  -        case khtml::TAAUTO:
  +        case TAAUTO:
               return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
  -        case khtml::LEFT:
  +        case LEFT:
               return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
  -        case khtml::RIGHT:
  +        case RIGHT:
               return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
  -        case khtml::CENTER:
  +        case CENTER:
               return new CSSPrimitiveValueImpl(CSS_VAL_CENTER);
  -        case khtml::JUSTIFY:
  +        case JUSTIFY:
               return new CSSPrimitiveValueImpl(CSS_VAL_JUSTIFY);
  -        case khtml::KHTML_LEFT:
  +        case KHTML_LEFT:
               return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_LEFT);
  -        case khtml::KHTML_RIGHT:
  +        case KHTML_RIGHT:
               return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_RIGHT);
  -        case khtml::KHTML_CENTER:
  +        case KHTML_CENTER:
               return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_CENTER);
       }
       ASSERT_NOT_REACHED();
  @@ -349,13 +337,13 @@
           return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
       case CSS_PROP_BACKGROUND_REPEAT:
           switch (style->backgroundRepeat()) {
  -            case khtml::REPEAT:
  +            case REPEAT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_REPEAT);
  -            case khtml::REPEAT_X:
  +            case REPEAT_X:
                   return new CSSPrimitiveValueImpl(CSS_VAL_REPEAT_X);
  -            case khtml::REPEAT_Y:
  +            case REPEAT_Y:
                   return new CSSPrimitiveValueImpl(CSS_VAL_REPEAT_Y);
  -            case khtml::NO_REPEAT:
  +            case NO_REPEAT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NO_REPEAT);
           }
           ASSERT_NOT_REACHED();
  @@ -367,9 +355,9 @@
       case CSS_PROP_BACKGROUND_CLIP:
       case CSS_PROP_BACKGROUND_ORIGIN: {
           EBackgroundBox box = (propertyID == CSS_PROP_BACKGROUND_CLIP ? style->backgroundClip() : style->backgroundOrigin());
  -        if (box == khtml::BGBORDER)
  +        if (box == BGBORDER)
               return new CSSPrimitiveValueImpl(CSS_VAL_BORDER);
  -        if (box == khtml::BGPADDING)
  +        if (box == BGPADDING)
               return new CSSPrimitiveValueImpl(CSS_VAL_PADDING);
           return new CSSPrimitiveValueImpl(CSS_VAL_CONTENT);
       }
  @@ -443,26 +431,26 @@
           return getPositionOffsetValue(renderer, CSS_PROP_BOTTOM);
       case CSS_PROP__KHTML_BOX_ALIGN:
           switch (style->boxAlign()) {
  -            case khtml::BSTRETCH:
  +            case BSTRETCH:
                   return new CSSPrimitiveValueImpl(CSS_VAL_STRETCH);
  -            case khtml::BSTART:
  +            case BSTART:
                   return new CSSPrimitiveValueImpl(CSS_VAL_START);
  -            case khtml::BCENTER:
  +            case BCENTER:
                   return new CSSPrimitiveValueImpl(CSS_VAL_CENTER);
  -            case khtml::BEND:
  +            case BEND:
                   return new CSSPrimitiveValueImpl(CSS_VAL_END);
  -            case khtml::BBASELINE:
  +            case BBASELINE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_BASELINE);
  -            case khtml::BJUSTIFY:
  +            case BJUSTIFY:
                   break; // not allowed
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP__KHTML_BOX_DIRECTION:
           switch (style->boxDirection()) {
  -            case khtml::BNORMAL:
  +            case BNORMAL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
  -            case khtml::BREVERSE:
  +            case BREVERSE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_REVERSE);
           }
           ASSERT_NOT_REACHED();
  @@ -473,9 +461,9 @@
           return new CSSPrimitiveValueImpl(style->boxFlexGroup(), CSSPrimitiveValue::CSS_NUMBER);
       case CSS_PROP__KHTML_BOX_LINES:
           switch (style->boxLines()) {
  -            case khtml::SINGLE:
  +            case SINGLE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SINGLE);
  -            case khtml::MULTIPLE:
  +            case MULTIPLE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_MULTIPLE);
           }
           ASSERT_NOT_REACHED();
  @@ -484,51 +472,51 @@
           return new CSSPrimitiveValueImpl(style->boxOrdinalGroup(), CSSPrimitiveValue::CSS_NUMBER);
       case CSS_PROP__KHTML_BOX_ORIENT:
           switch (style->boxOrient()) {
  -            case khtml::HORIZONTAL:
  +            case HORIZONTAL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_HORIZONTAL);
  -            case khtml::VERTICAL:
  +            case VERTICAL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_VERTICAL);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP__KHTML_BOX_PACK:
           switch (style->boxPack()) {
  -            case khtml::BSTART:
  +            case BSTART:
                   return new CSSPrimitiveValueImpl(CSS_VAL_START);
  -            case khtml::BEND:
  +            case BEND:
                   return new CSSPrimitiveValueImpl(CSS_VAL_END);
  -            case khtml::BCENTER:
  +            case BCENTER:
                   return new CSSPrimitiveValueImpl(CSS_VAL_CENTER);
  -            case khtml::BJUSTIFY:
  +            case BJUSTIFY:
                   return new CSSPrimitiveValueImpl(CSS_VAL_JUSTIFY);
  -            case khtml::BSTRETCH:
  -            case khtml::BBASELINE:
  +            case BSTRETCH:
  +            case BBASELINE:
                   break; // not allowed
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_CAPTION_SIDE:
           switch (style->captionSide()) {
  -            case khtml::CAPLEFT:
  +            case CAPLEFT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
  -            case khtml::CAPRIGHT:
  +            case CAPRIGHT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
  -            case khtml::CAPTOP:
  +            case CAPTOP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TOP);
  -            case khtml::CAPBOTTOM:
  +            case CAPBOTTOM:
                   return new CSSPrimitiveValueImpl(CSS_VAL_BOTTOM);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_CLEAR:
           switch (style->clear()) {
  -            case khtml::CNONE:
  +            case CNONE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
  -            case khtml::CLEFT:
  +            case CLEFT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
  -            case khtml::CRIGHT:
  +            case CRIGHT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
  -            case khtml::CBOTH:
  +            case CBOTH:
                   return new CSSPrimitiveValueImpl(CSS_VAL_BOTH);
           }
           ASSERT_NOT_REACHED();
  @@ -548,110 +536,112 @@
           // FIXME: unimplemented
           break;
       case CSS_PROP_CURSOR:
  +        if (style->cursorImage())
  +            return new CSSPrimitiveValueImpl(style->cursorImage()->url(), CSSPrimitiveValue::CSS_URI);
           switch (style->cursor()) {
  -            case khtml::CURSOR_AUTO:
  +            case CURSOR_AUTO:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
  -            case khtml::CURSOR_CROSS:
  +            case CURSOR_CROSS:
                   return new CSSPrimitiveValueImpl(CSS_VAL_CROSSHAIR);
  -            case khtml::CURSOR_DEFAULT:
  +            case CURSOR_DEFAULT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_DEFAULT);
  -            case khtml::CURSOR_POINTER:
  +            case CURSOR_POINTER:
                   return new CSSPrimitiveValueImpl(CSS_VAL_POINTER);
  -            case khtml::CURSOR_MOVE:
  +            case CURSOR_MOVE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_MOVE);
  -            case khtml::CURSOR_E_RESIZE:
  +            case CURSOR_E_RESIZE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_E_RESIZE);
  -            case khtml::CURSOR_NE_RESIZE:
  +            case CURSOR_NE_RESIZE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NE_RESIZE);
  -            case khtml::CURSOR_NW_RESIZE:
  +            case CURSOR_NW_RESIZE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NW_RESIZE);
  -            case khtml::CURSOR_N_RESIZE:
  +            case CURSOR_N_RESIZE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_N_RESIZE);
  -            case khtml::CURSOR_SE_RESIZE:
  +            case CURSOR_SE_RESIZE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SE_RESIZE);
  -            case khtml::CURSOR_SW_RESIZE:
  +            case CURSOR_SW_RESIZE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SW_RESIZE);
  -            case khtml::CURSOR_S_RESIZE:
  +            case CURSOR_S_RESIZE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_S_RESIZE);
  -            case khtml::CURSOR_W_RESIZE:
  +            case CURSOR_W_RESIZE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_W_RESIZE);
  -            case khtml::CURSOR_TEXT:
  +            case CURSOR_TEXT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TEXT);
  -            case khtml::CURSOR_WAIT:
  +            case CURSOR_WAIT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_WAIT);
  -            case khtml::CURSOR_HELP:
  +            case CURSOR_HELP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_HELP);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_DIRECTION:
           switch (style->direction()) {
  -            case khtml::LTR:
  +            case LTR:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LTR);
  -            case khtml::RTL:
  +            case RTL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_RTL);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_DISPLAY:
           switch (style->display()) {
  -            case khtml::INLINE:
  +            case INLINE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_INLINE);
  -            case khtml::BLOCK:
  +            case BLOCK:
                   return new CSSPrimitiveValueImpl(CSS_VAL_BLOCK);
  -            case khtml::LIST_ITEM:
  +            case LIST_ITEM:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LIST_ITEM);
  -            case khtml::RUN_IN:
  +            case RUN_IN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_RUN_IN);
  -            case khtml::COMPACT:
  +            case COMPACT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_COMPACT);
  -            case khtml::INLINE_BLOCK:
  +            case INLINE_BLOCK:
                   return new CSSPrimitiveValueImpl(CSS_VAL_INLINE_BLOCK);
  -            case khtml::TABLE:
  +            case TABLE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TABLE);
  -            case khtml::INLINE_TABLE:
  +            case INLINE_TABLE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_INLINE_TABLE);
  -            case khtml::TABLE_ROW_GROUP:
  +            case TABLE_ROW_GROUP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_ROW_GROUP);
  -            case khtml::TABLE_HEADER_GROUP:
  +            case TABLE_HEADER_GROUP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_HEADER_GROUP);
  -            case khtml::TABLE_FOOTER_GROUP:
  +            case TABLE_FOOTER_GROUP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_FOOTER_GROUP);
  -            case khtml::TABLE_ROW:
  +            case TABLE_ROW:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_ROW);
  -            case khtml::TABLE_COLUMN_GROUP:
  +            case TABLE_COLUMN_GROUP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_COLUMN_GROUP);
  -            case khtml::TABLE_COLUMN:
  +            case TABLE_COLUMN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_COLUMN);
  -            case khtml::TABLE_CELL:
  +            case TABLE_CELL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_CELL);
  -            case khtml::TABLE_CAPTION:
  +            case TABLE_CAPTION:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TABLE_CAPTION);
  -            case khtml::BOX:
  +            case BOX:
                   return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_BOX);
  -            case khtml::INLINE_BOX:
  +            case INLINE_BOX:
                   return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_INLINE_BOX);
  -            case khtml::NONE:
  +            case NONE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_EMPTY_CELLS:
           switch (style->emptyCells()) {
  -            case khtml::SHOW:
  +            case SHOW:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SHOW);
  -            case khtml::HIDE:
  +            case HIDE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_HIDE);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_FLOAT:
           switch (style->floating()) {
  -            case khtml::FNONE:
  +            case FNONE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
  -            case khtml::FLEFT:
  +            case FLEFT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
  -            case khtml::FRIGHT:
  +            case FRIGHT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
           }
           ASSERT_NOT_REACHED();
  @@ -728,56 +718,56 @@
           return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
       case CSS_PROP_LIST_STYLE_POSITION:
           switch (style->listStylePosition()) {
  -            case khtml::OUTSIDE:
  +            case OUTSIDE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_OUTSIDE);
  -            case khtml::INSIDE:
  +            case INSIDE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_INSIDE);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_LIST_STYLE_TYPE:
           switch (style->listStyleType()) {
  -            case khtml::LNONE:
  +            case LNONE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
  -            case khtml::DISC:
  +            case DISC:
                   return new CSSPrimitiveValueImpl(CSS_VAL_DISC);
  -            case khtml::CIRCLE:
  +            case CIRCLE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_CIRCLE);
  -            case khtml::SQUARE:
  +            case SQUARE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SQUARE);
  -            case khtml::LDECIMAL:
  +            case LDECIMAL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_DECIMAL);
  -            case khtml::DECIMAL_LEADING_ZERO:
  +            case DECIMAL_LEADING_ZERO:
                   return new CSSPrimitiveValueImpl(CSS_VAL_DECIMAL_LEADING_ZERO);
  -            case khtml::LOWER_ROMAN:
  +            case LOWER_ROMAN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LOWER_ROMAN);
  -            case khtml::UPPER_ROMAN:
  +            case UPPER_ROMAN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_UPPER_ROMAN);
  -            case khtml::LOWER_GREEK:
  +            case LOWER_GREEK:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LOWER_GREEK);
  -            case khtml::LOWER_ALPHA:
  +            case LOWER_ALPHA:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LOWER_ALPHA);
  -            case khtml::LOWER_LATIN:
  +            case LOWER_LATIN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LOWER_LATIN);
  -            case khtml::UPPER_ALPHA:
  +            case UPPER_ALPHA:
                   return new CSSPrimitiveValueImpl(CSS_VAL_UPPER_ALPHA);
  -            case khtml::UPPER_LATIN:
  +            case UPPER_LATIN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_UPPER_LATIN);
  -            case khtml::HEBREW:
  +            case HEBREW:
                   return new CSSPrimitiveValueImpl(CSS_VAL_HEBREW);
  -            case khtml::ARMENIAN:
  +            case ARMENIAN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_ARMENIAN);
  -            case khtml::GEORGIAN:
  +            case GEORGIAN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_GEORGIAN);
  -            case khtml::CJK_IDEOGRAPHIC:
  +            case CJK_IDEOGRAPHIC:
                   return new CSSPrimitiveValueImpl(CSS_VAL_CJK_IDEOGRAPHIC);
  -            case khtml::HIRAGANA:
  +            case HIRAGANA:
                   return new CSSPrimitiveValueImpl(CSS_VAL_HIRAGANA);
  -            case khtml::KATAKANA:
  +            case KATAKANA:
                   return new CSSPrimitiveValueImpl(CSS_VAL_KATAKANA);
  -            case khtml::HIRAGANA_IROHA:
  +            case HIRAGANA_IROHA:
                   return new CSSPrimitiveValueImpl(CSS_VAL_HIRAGANA_IROHA);
  -            case khtml::KATAKANA_IROHA:
  +            case KATAKANA_IROHA:
                   return new CSSPrimitiveValueImpl(CSS_VAL_KATAKANA_IROHA);
           }
           ASSERT_NOT_REACHED();
  @@ -795,19 +785,19 @@
           break;
       case CSS_PROP__KHTML_MARQUEE_DIRECTION:
           switch (style->marqueeDirection()) {
  -            case khtml::MFORWARD:
  +            case MFORWARD:
                   return new CSSPrimitiveValueImpl(CSS_VAL_FORWARDS);
  -            case khtml::MBACKWARD:
  +            case MBACKWARD:
                   return new CSSPrimitiveValueImpl(CSS_VAL_BACKWARDS);
  -            case khtml::MAUTO:
  +            case MAUTO:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
  -            case khtml::MUP:
  +            case MUP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_UP);
  -            case khtml::MDOWN:
  +            case MDOWN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_DOWN);
  -            case khtml::MLEFT:
  +            case MLEFT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LEFT);
  -            case khtml::MRIGHT:
  +            case MRIGHT:
                   return new CSSPrimitiveValueImpl(CSS_VAL_RIGHT);
           }
           ASSERT_NOT_REACHED();
  @@ -823,24 +813,24 @@
           break;
       case CSS_PROP__KHTML_MARQUEE_STYLE:
           switch (style->marqueeBehavior()) {
  -            case khtml::MNONE:
  +            case MNONE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
  -            case khtml::MSCROLL:
  +            case MSCROLL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SCROLL);
  -            case khtml::MSLIDE:
  +            case MSLIDE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SLIDE);
  -            case khtml::MALTERNATE:
  +            case MALTERNATE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_ALTERNATE);
  -            case khtml::MUNFURL:
  +            case MUNFURL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_UNFURL);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP__KHTML_USER_MODIFY:
           switch (style->userModify()) {
  -            case khtml::READ_ONLY:
  +            case READ_ONLY:
                   return new CSSPrimitiveValueImpl(CSS_VAL_READ_ONLY);
  -            case khtml::READ_WRITE:
  +            case READ_WRITE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_READ_WRITE);
           }
           ASSERT_NOT_REACHED();
  @@ -872,17 +862,17 @@
           break;
       case CSS_PROP_OVERFLOW:
           switch (style->overflow()) {
  -            case khtml::OVISIBLE:
  +            case OVISIBLE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_VISIBLE);
  -            case khtml::OHIDDEN:
  +            case OHIDDEN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_HIDDEN);
  -            case khtml::OSCROLL:
  +            case OSCROLL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SCROLL);
  -            case khtml::OAUTO:
  +            case OAUTO:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
  -            case khtml::OMARQUEE:
  +            case OMARQUEE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_MARQUEE);
  -            case khtml::OOVERLAY:
  +            case OOVERLAY:
                   return new CSSPrimitiveValueImpl(CSS_VAL_OVERLAY);
           }
           ASSERT_NOT_REACHED();
  @@ -900,46 +890,46 @@
           break;
       case CSS_PROP_PAGE_BREAK_AFTER:
           switch (style->pageBreakAfter()) {
  -            case khtml::PBAUTO:
  +            case PBAUTO:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
  -            case khtml::PBALWAYS:
  +            case PBALWAYS:
                   return new CSSPrimitiveValueImpl(CSS_VAL_ALWAYS);
  -            case khtml::PBAVOID:
  +            case PBAVOID:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AVOID);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_PAGE_BREAK_BEFORE:
           switch (style->pageBreakBefore()) {
  -            case khtml::PBAUTO:
  +            case PBAUTO:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
  -            case khtml::PBALWAYS:
  +            case PBALWAYS:
                   return new CSSPrimitiveValueImpl(CSS_VAL_ALWAYS);
  -            case khtml::PBAVOID:
  +            case PBAVOID:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AVOID);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_PAGE_BREAK_INSIDE:
           switch (style->pageBreakInside()) {
  -            case khtml::PBAUTO:
  +            case PBAUTO:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
  -            case khtml::PBAVOID:
  +            case PBAVOID:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AVOID);
  -            case khtml::PBALWAYS:
  +            case PBALWAYS:
                   break; // not allowed
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_POSITION:
           switch (style->position()) {
  -            case khtml::STATIC:
  +            case STATIC:
                   return new CSSPrimitiveValueImpl(CSS_VAL_STATIC);
  -            case khtml::RELATIVE:
  +            case RELATIVE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_RELATIVE);
  -            case khtml::ABSOLUTE:
  +            case ABSOLUTE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_ABSOLUTE);
  -            case khtml::FIXED:
  +            case FIXED:
                   return new CSSPrimitiveValueImpl(CSS_VAL_FIXED);
           }
           ASSERT_NOT_REACHED();
  @@ -954,9 +944,9 @@
           break;
       case CSS_PROP_TABLE_LAYOUT:
           switch (style->tableLayout()) {
  -            case khtml::TAUTO:
  +            case TAUTO:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AUTO);
  -            case khtml::TFIXED:
  +            case TFIXED:
                   return new CSSPrimitiveValueImpl(CSS_VAL_FIXED);
           }
           ASSERT_NOT_REACHED();
  @@ -966,19 +956,19 @@
       case CSS_PROP_TEXT_DECORATION:
       {
           QString string;
  -        if (style->textDecoration() & khtml::UNDERLINE)
  +        if (style->textDecoration() & UNDERLINE)
               string += "underline";
  -        if (style->textDecoration() & khtml::OVERLINE) {
  +        if (style->textDecoration() & OVERLINE) {
               if (string.length() > 0)
                   string += " ";
               string += "overline";
           }
  -        if (style->textDecoration() & khtml::LINE_THROUGH) {
  +        if (style->textDecoration() & LINE_THROUGH) {
               if (string.length() > 0)
                   string += " ";
               string += "line-through";
           }
  -        if (style->textDecoration() & khtml::BLINK) {
  +        if (style->textDecoration() & BLINK) {
               if (string.length() > 0)
                   string += " ";
               string += "blink";
  @@ -990,19 +980,19 @@
       case CSS_PROP__KHTML_TEXT_DECORATIONS_IN_EFFECT:
       {
           QString string;
  -        if (style->textDecorationsInEffect() & khtml::UNDERLINE)
  +        if (style->textDecorationsInEffect() & UNDERLINE)
               string += "underline";
  -        if (style->textDecorationsInEffect() & khtml::OVERLINE) {
  +        if (style->textDecorationsInEffect() & OVERLINE) {
               if (string.length() > 0)
                   string += " ";
               string += "overline";
           }
  -        if (style->textDecorationsInEffect() & khtml::LINE_THROUGH) {
  +        if (style->textDecorationsInEffect() & LINE_THROUGH) {
               if (string.length() > 0)
                   string += " ";
               string += "line-through";
           }
  -        if (style->textDecorationsInEffect() & khtml::BLINK) {
  +        if (style->textDecorationsInEffect() & BLINK) {
               if (string.length() > 0)
                   string += " ";
               string += "blink";
  @@ -1022,13 +1012,13 @@
               return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
       case CSS_PROP_TEXT_TRANSFORM:
           switch (style->textTransform()) {
  -            case khtml::CAPITALIZE:
  +            case CAPITALIZE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_CAPITALIZE);
  -            case khtml::UPPERCASE:
  +            case UPPERCASE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_UPPERCASE);
  -            case khtml::LOWERCASE:
  +            case LOWERCASE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_LOWERCASE);
  -            case khtml::TTNONE:
  +            case TTNONE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NONE);
           }
           ASSERT_NOT_REACHED();
  @@ -1037,64 +1027,64 @@
           return getPositionOffsetValue(renderer, CSS_PROP_TOP);
       case CSS_PROP_UNICODE_BIDI:
           switch (style->unicodeBidi()) {
  -            case khtml::UBNormal:
  +            case UBNormal:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
  -            case khtml::Embed:
  +            case Embed:
                   return new CSSPrimitiveValueImpl(CSS_VAL_EMBED);
  -            case khtml::Override:
  +            case Override:
                   return new CSSPrimitiveValueImpl(CSS_VAL_BIDI_OVERRIDE);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_VERTICAL_ALIGN:
           switch (style->verticalAlign()) {
  -            case khtml::BASELINE:
  +            case BASELINE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_BASELINE);
  -            case khtml::MIDDLE:
  +            case MIDDLE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_MIDDLE);
  -            case khtml::SUB:
  +            case SUB:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SUB);
  -            case khtml::SUPER:
  +            case SUPER:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SUPER);
  -            case khtml::TEXT_TOP:
  +            case TEXT_TOP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TEXT_TOP);
  -            case khtml::TEXT_BOTTOM:
  +            case TEXT_BOTTOM:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TEXT_BOTTOM);
  -            case khtml::TOP:
  +            case TOP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_TOP);
  -            case khtml::BOTTOM:
  +            case BOTTOM:
                   return new CSSPrimitiveValueImpl(CSS_VAL_BOTTOM);
  -            case khtml::BASELINE_MIDDLE:
  +            case BASELINE_MIDDLE:
                   return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_BASELINE_MIDDLE);
  -            case khtml::LENGTH:
  +            case LENGTH:
                   return valueForLength(style->verticalAlignLength());
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_VISIBILITY:
           switch (style->visibility()) {
  -            case khtml::VISIBLE:
  +            case VISIBLE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_VISIBLE);
  -            case khtml::HIDDEN:
  +            case HIDDEN:
                   return new CSSPrimitiveValueImpl(CSS_VAL_HIDDEN);
  -            case khtml::COLLAPSE:
  +            case COLLAPSE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_COLLAPSE);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP_WHITE_SPACE:
           switch (style->whiteSpace()) {
  -            case khtml::NORMAL:
  +            case NORMAL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
  -            case khtml::PRE:
  +            case PRE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_PRE);
  -            case khtml::PRE_WRAP:
  +            case PRE_WRAP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_PRE_WRAP);
  -            case khtml::PRE_LINE:
  +            case PRE_LINE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_PRE_LINE);
  -            case khtml::NOWRAP:
  +            case NOWRAP:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NOWRAP);
  -            case khtml::KHTML_NOWRAP:
  +            case KHTML_NOWRAP:
                   return new CSSPrimitiveValueImpl(CSS_VAL__KHTML_NOWRAP);
           }
           ASSERT_NOT_REACHED();
  @@ -1107,36 +1097,36 @@
           return new CSSPrimitiveValueImpl(style->wordSpacing(), CSSPrimitiveValue::CSS_PX);
       case CSS_PROP_WORD_WRAP:
           switch (style->wordWrap()) {
  -            case khtml::WBNORMAL:
  +            case WBNORMAL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
  -            case khtml::BREAK_WORD:
  +            case BREAK_WORD:
                   return new CSSPrimitiveValueImpl(CSS_VAL_BREAK_WORD);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP__KHTML_LINE_BREAK:
           switch (style->khtmlLineBreak()) {
  -            case khtml::LBNORMAL:
  +            case LBNORMAL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
  -            case khtml::AFTER_WHITE_SPACE:
  +            case AFTER_WHITE_SPACE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_AFTER_WHITE_SPACE);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP__KHTML_NBSP_MODE:
           switch (style->nbspMode()) {
  -            case khtml::NBNORMAL:
  +            case NBNORMAL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
  -            case khtml::SPACE:
  +            case SPACE:
                   return new CSSPrimitiveValueImpl(CSS_VAL_SPACE);
           }
           ASSERT_NOT_REACHED();
           return 0;
       case CSS_PROP__KHTML_MATCH_NEAREST_MAIL_BLOCKQUOTE_COLOR:
           switch (style->matchNearestMailBlockquoteColor()) {
  -            case khtml::BCNORMAL:
  +            case BCNORMAL:
                   return new CSSPrimitiveValueImpl(CSS_VAL_NORMAL);
  -            case khtml::MATCH:
  +            case MATCH:
                   return new CSSPrimitiveValueImpl(CSS_VAL_MATCH);
           }
           ASSERT_NOT_REACHED();
  
  
  
  1.115     +26 -21    WebCore/khtml/css/cssparser.cpp
  
  Index: cssparser.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/css/cssparser.cpp,v
  retrieving revision 1.114
  retrieving revision 1.115
  diff -u -r1.114 -r1.115
  --- cssparser.cpp	7 Dec 2005 01:12:36 -0000	1.114
  +++ cssparser.cpp	8 Dec 2005 08:40:25 -0000	1.115
  @@ -45,8 +45,7 @@
   #include "SVGPaintImpl.h"
   #endif
   
  -void qFatal ( const char * msg ) {}
  -
  +using namespace khtml;
   using namespace DOM;
   
   ValueList::ValueList()
  @@ -185,7 +184,7 @@
       rule = 0;
   }
   
  -CSSRuleImpl *CSSParser::parseRule( DOM::CSSStyleSheetImpl *sheet, const DOM::DOMString &string )
  +CSSRuleImpl *CSSParser::parseRule(CSSStyleSheetImpl *sheet, const DOMString &string)
   {
       styleElement = sheet;
       
  @@ -235,14 +234,14 @@
       return ok;
   }
   
  -QRgb CSSParser::parseColor( const DOM::DOMString &string )
  +QRgb CSSParser::parseColor(const DOMString &string)
   {
       QRgb color = 0;
       CSSMutableStyleDeclarationImpl *dummyStyleDeclaration = new CSSMutableStyleDeclarationImpl;
       
       dummyStyleDeclaration->ref();
   
  -    DOM::CSSParser parser(true);
  +    CSSParser parser(true);
   
       // First try creating a color specified by name or the "#" syntax.
       if (!parser.parseColor(string.qstring(), color)) {
  @@ -251,8 +250,8 @@
           bool ok = parser.parseColor(dummyStyleDeclaration, string);
           if ( ok ) {
               CSSValueImpl *value = parser.parsedProperties[0]->value();
  -            if (value->cssValueType() == DOM::CSSValue::CSS_PRIMITIVE_VALUE) {
  -                DOM::CSSPrimitiveValueImpl *primitiveValue = static_cast<DOM::CSSPrimitiveValueImpl *>(value);
  +            if (value->cssValueType() == CSSValue::CSS_PRIMITIVE_VALUE) {
  +                CSSPrimitiveValueImpl *primitiveValue = static_cast<CSSPrimitiveValueImpl *>(value);
                   color = primitiveValue->getRGBColorValue();
               }
           }
  @@ -340,7 +339,7 @@
       numParsedProperties = 0;
   }
   
  -DOM::DocumentImpl *CSSParser::document() const
  +DocumentImpl *CSSParser::document() const
   {
       StyleBaseImpl *root = styleElement;
       DocumentImpl *doc = 0;
  @@ -687,12 +686,18 @@
   	//  [ auto | crosshair | default | pointer | progress | move | e-resize | ne-resize |
   	// nw-resize | n-resize | se-resize | sw-resize | s-resize | w-resize | text |
   	// wait | help ] ] | inherit
  -    // MSIE 5 compatibility :/
  -        if ( !strict && id == CSS_VAL_HAND ) {
  +        if (!strict && id == CSS_VAL_HAND) { // MSIE 5 compatibility :/
               id = CSS_VAL_POINTER;
   	    valid_primitive = true;
  -        } else if ( id >= CSS_VAL_AUTO && id <= CSS_VAL_HELP )
  +        } else if (id >= CSS_VAL_AUTO && id <= CSS_VAL_HELP)
   	    valid_primitive = true;
  +        else if (value->unit == CSSPrimitiveValue::CSS_URI) {
  +            DOMString uri = parseURL(domString(value->string));
  +            if (!uri.isEmpty()) {
  +                parsedValue = new CSSImageValueImpl(DOMString(KURL(styleElement->baseURL().qstring(), uri.qstring()).url()), styleElement);
  +                valueList->next();
  +            }
  +	}
   	break;
   
       case CSS_PROP_BACKGROUND_ATTACHMENT:
  @@ -720,7 +725,7 @@
           }
           else if (value->unit == CSSPrimitiveValue::CSS_URI) {
   	    // ### allow string in non strict mode?
  -	    DOMString uri = khtml::parseURL( domString( value->string ) );
  +	    DOMString uri = parseURL( domString( value->string ) );
   	    if (!uri.isEmpty()) {
   		parsedValue = new CSSImageValueImpl(
   		    DOMString(KURL( styleElement->baseURL().qstring(), uri.qstring()).url()),
  @@ -928,7 +933,7 @@
               CSSValueImpl* parsedValue = 0;
               while ((val = valueList->current())) {
                   if (val->unit == CSSPrimitiveValue::CSS_URI) {
  -                    DOMString value = khtml::parseURL(domString(val->string));
  +                    DOMString value = parseURL(domString(val->string));
                       parsedValue = new CSSPrimitiveValueImpl(
                                       DOMString(KURL(styleElement->baseURL().qstring(), value.qstring()).url()), 
                                       CSSPrimitiveValue::CSS_URI);
  @@ -1508,7 +1513,7 @@
       while ( (val = valueList->current()) ) {
           if ( val->unit == CSSPrimitiveValue::CSS_URI ) {
               // url
  -	    DOMString value = khtml::parseURL(domString(val->string));
  +	    DOMString value = parseURL(domString(val->string));
               parsedValue = new CSSImageValueImpl(
   		DOMString(KURL( styleElement->baseURL().qstring(), value.qstring()).url() ), styleElement );
   #ifdef CSS_DEBUG
  @@ -1564,7 +1569,7 @@
       if (valueList->current()->id == CSS_VAL_NONE)
           return new CSSImageValueImpl();
       if (valueList->current()->unit == CSSPrimitiveValue::CSS_URI) {
  -        DOMString uri = khtml::parseURL(domString(valueList->current()->string));
  +        DOMString uri = parseURL(domString(valueList->current()->string));
           if (!uri.isEmpty())
               return new CSSImageValueImpl(DOMString(KURL(styleElement->baseURL().qstring(), uri.qstring()).url()), 
                                            styleElement);
  @@ -2217,7 +2222,7 @@
   
   CSSPrimitiveValueImpl *CSSParser::parseColorFromValue(Value* value)
   {
  -    QRgb c = khtml::transparentColor;
  +    QRgb c = transparentColor;
       if ( !strict && value->unit == CSSPrimitiveValue::CSS_NUMBER &&
           value->fValue >= 0. && value->fValue < 1000000. ) {
           QString str;
  @@ -2578,7 +2583,7 @@
       if (val->unit != CSSPrimitiveValue::CSS_URI)
           return context.failed();
           
  -    DOMString uri = khtml::parseURL(domString(val->string));
  +    DOMString uri = parseURL(domString(val->string));
       if (uri.isEmpty())
           return context.failed();
       
  @@ -2623,7 +2628,7 @@
   
   #include "parser.h"
   
  -int DOM::CSSParser::lex( void *_yylval ) {
  +int CSSParser::lex( void *_yylval ) {
       YYSTYPE *yylval = (YYSTYPE *)_yylval;
       int token = lex();
       int length;
  @@ -2704,7 +2709,7 @@
       return 0;
   }
   
  -unsigned short *DOM::CSSParser::text(int *length)
  +unsigned short *CSSParser::text(int *length)
   {
       unsigned short *start = yytext;
       int l = yyleng;
  @@ -2846,12 +2851,12 @@
   	*yy_cp = 0; \
   	yy_c_buf_p = yy_cp;
   #define YY_BREAK break;
  -#define ECHO qDebug( "%s", QString( (QChar *)yytext, yyleng ).latin1() )
  +#define ECHO
   #define YY_RULE_SETUP
   #define INITIAL 0
   #define YY_STATE_EOF(state) (YY_END_OF_BUFFER + state + 1)
   #define yyterminate() yyTok = END_TOKEN; return yyTok
  -#define YY_FATAL_ERROR(a) qFatal(a)
  +#define YY_FATAL_ERROR(a)
   
   #include "tokenizer.cpp"
   
  
  
  
  1.227     +38 -26    WebCore/khtml/css/cssstyleselector.cpp
  
  Index: cssstyleselector.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/css/cssstyleselector.cpp,v
  retrieving revision 1.226
  retrieving revision 1.227
  diff -u -r1.226 -r1.227
  --- cssstyleselector.cpp	7 Dec 2005 01:12:36 -0000	1.226
  +++ cssstyleselector.cpp	8 Dec 2005 08:40:25 -0000	1.227
  @@ -75,24 +75,21 @@
   // #define STYLE_SHARING_STATS 1
   
   #define HANDLE_INHERIT(prop, Prop) \
  -if (isInherit) \
  -{\
  -    style->set##Prop(parentStyle->prop());\
  -    return;\
  +if (isInherit) { \
  +    style->set##Prop(parentStyle->prop()); \
  +    return; \
   }
   
   #define HANDLE_INHERIT_AND_INITIAL(prop, Prop) \
   HANDLE_INHERIT(prop, Prop) \
  -else if (isInitial) \
  -{\
  -    style->set##Prop(RenderStyle::initial##Prop());\
  -    return;\
  +if (isInitial) { \
  +    style->set##Prop(RenderStyle::initial##Prop()); \
  +    return; \
   }
   
   #define HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(prop, Prop, Value) \
   HANDLE_INHERIT(prop, Prop) \
  -else if (isInitial) \
  -{\
  +if (isInitial) { \
       style->set##Prop(RenderStyle::initial##Value());\
       return;\
   }
  @@ -160,24 +157,21 @@
   } }
   
   #define HANDLE_INHERIT_COND(propID, prop, Prop) \
  -if (id == propID) \
  -{\
  -    style->set##Prop(parentStyle->prop());\
  -    return;\
  +if (id == propID) { \
  +    style->set##Prop(parentStyle->prop()); \
  +    return; \
   }
   
   #define HANDLE_INITIAL_COND(propID, Prop) \
  -if (id == propID) \
  -{\
  -    style->set##Prop(RenderStyle::initial##Prop());\
  -    return;\
  +if (id == propID) { \
  +    style->set##Prop(RenderStyle::initial##Prop()); \
  +    return; \
   }
   
   #define HANDLE_INITIAL_COND_WITH_VALUE(propID, Prop, Value) \
  -if (id == propID) \
  -{\
  -    style->set##Prop(RenderStyle::initial##Value());\
  -    return;\
  +if (id == propID) { \
  +    style->set##Prop(RenderStyle::initial##Value()); \
  +    return; \
   }
   
   namespace khtml {
  @@ -2398,10 +2392,28 @@
           break;
       }
       case CSS_PROP_CURSOR:
  -        HANDLE_INHERIT_AND_INITIAL(cursor, Cursor)
  -        if (primitiveValue)
  -            style->setCursor( (ECursor) (primitiveValue->getIdent() - CSS_VAL_AUTO) );
  -        break;        
  +        if (isInherit) {
  +            style->setCursor(parentStyle->cursor());
  +            style->setCursorImage(parentStyle->cursorImage());
  +            return;
  +        }
  +        if (isInitial) {
  +            style->setCursor(RenderStyle::initialCursor());
  +            style->setCursorImage(0);
  +            return;
  +        }
  +        if (primitiveValue) {
  +            int type = primitiveValue->primitiveType();
  +            if (type == CSSPrimitiveValue::CSS_IDENT) {
  +                style->setCursor((ECursor)(primitiveValue->getIdent() - CSS_VAL_AUTO));
  +                style->setCursorImage(0);
  +            } else if (type == CSSPrimitiveValue::CSS_URI) {
  +                CSSImageValueImpl *image = static_cast<CSSImageValueImpl *>(primitiveValue);
  +                style->setCursor(CURSOR_AUTO);
  +                style->setCursorImage(image->image(element->getDocument()->docLoader()));
  +            }
  +        }
  +        break;
   // colors || inherit
       case CSS_PROP_BACKGROUND_COLOR:
       case CSS_PROP_BORDER_TOP_COLOR:
  
  
  
  1.55      +0 -1      WebCore/khtml/html/html_inlineimpl.cpp
  
  Index: html_inlineimpl.cpp
  ===================================================================
  RCS file: /cvs/root/WebCore/khtml/html/html_inlineimpl.cpp,v
  retrieving revision 1.54
  retrieving revision 1.55
  diff -u -r1.54 -r1.55
  --- html_inlineimpl.cpp	21 Nov 2005 01:20:13 -0000	1.54
  +++ html_inlineimpl.cpp	8 Dec 2005 08:40:26 -0000	1.55
  @@ -204,7 +204,6 @@
   	    }
   
               if (getDocument() && getDocument()->view() && getDocument()->part()) {
  -                getDocument()->view()->resetCursor();
                   getDocument()->part()->
                       urlSelected( url, button, state, utarget );
               }
  
  
  
  1.22      +2 -2      WebCore/kwq/KWQClipboard.mm
  
  Index: KWQClipboard.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQClipboard.mm,v
  retrieving revision 1.21
  retrieving revision 1.22
  diff -u -r1.21 -r1.22
  --- KWQClipboard.mm	2 Dec 2005 03:48:12 -0000	1.21
  +++ KWQClipboard.mm	8 Dec 2005 08:40:26 -0000	1.22
  @@ -345,9 +345,9 @@
               }
           }
       } else {
  -        result = [m_dragImage.image() image];
  +        result = [m_dragImage.imageRenderer() image];
           if (loc) {
  -            *loc = NSPoint(m_dragLoc);
  +            *loc = m_dragLoc;
               loc->y = [result size].height - loc->y;
           }
       }
  
  
  
  1.24      +14 -9     WebCore/kwq/KWQCursor.mm
  
  Index: KWQCursor.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQCursor.mm,v
  retrieving revision 1.23
  retrieving revision 1.24
  diff -u -r1.23 -r1.24
  --- KWQCursor.mm	3 Oct 2005 21:13:02 -0000	1.23
  +++ KWQCursor.mm	8 Dec 2005 08:40:26 -0000	1.24
  @@ -23,26 +23,31 @@
    * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
    */
   
  -#include "config.h"
  +#import "config.h"
   #import "KWQCursor.h"
  -#import "KWQLogging.h"
  +
   #import "KWQFoundationExtras.h"
  +#import "WebCoreImageRenderer.h"
   
  -// The NSCursor cocoa calls here can't fail, so no need to block Cocoa exceptions
  +static NSCursor *createCustomCursor(const QPixmap& pixmap)
  +{
  +    NSImage *image = [pixmap.imageRenderer() image];
  +    if (!image)
  +        return nil;
  +    return [[NSCursor alloc] initWithImage:image hotSpot:NSZeroPoint];
  +}
   
   QCursor::QCursor()
       : cursor(nil)
   {
   }
   
  -QCursor::QCursor(const QPixmap &pixmap)
  -    : cursor(nil)
  +QCursor::QCursor(const QPixmap& pixmap)
  +    : cursor(createCustomCursor(pixmap))
   {
  -    // Needed for custom cursors.
  -    ERROR("not yet implemented");
   }
   
  -QCursor::QCursor(const QCursor &other)
  +QCursor::QCursor(const QCursor& other)
       : cursor(KWQRetain(other.cursor))
   {
   }
  @@ -59,7 +64,7 @@
       return q;
   }
         
  -QCursor &QCursor::operator=(const QCursor &other)
  +QCursor& QCursor::operator=(const QCursor& other)
   {
       KWQRetain(other.cursor);
       KWQRelease(cursor);
  
  
  
  1.697     +9 -9      WebCore/kwq/KWQKHTMLPart.mm
  
  Index: KWQKHTMLPart.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQKHTMLPart.mm,v
  retrieving revision 1.696
  retrieving revision 1.697
  diff -u -r1.696 -r1.697
  --- KWQKHTMLPart.mm	6 Dec 2005 00:23:46 -0000	1.696
  +++ KWQKHTMLPart.mm	8 Dec 2005 08:40:26 -0000	1.697
  @@ -1,5 +1,5 @@
   /*
  - * Copyright (C) 2004 Apple Computer, Inc.  All rights reserved.
  + * Copyright (C) 2004, 2005 Apple Computer, Inc.  All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -2338,7 +2338,7 @@
   
           if (_mouseDownMayStartDrag) {
               // We are starting a text/image/url drag, so the cursor should be an arrow
  -            d->m_view->resetCursor();
  +            d->m_view->viewport()->setCursor(QCursor());
               
               NSPoint dragLocation = [_currentEvent locationInWindow];
               if (dragHysteresisExceeded(dragLocation.x, dragLocation.y)) {
  @@ -2912,22 +2912,22 @@
       
       NSFileWrapper *wrapper = nil;
   
  -    AtomicString attr = e->getAttribute(srcAttr);
  +    const AtomicString& attr = e->getAttribute(srcAttr);
       if (!attr.isEmpty()) {
           NSURL *URL = completeURL(attr.qstring()).getNSURL();
           wrapper = [_bridge fileWrapperForURL:URL];
       }    
       if (!wrapper) {
           RenderImage *renderer = static_cast<RenderImage *>(e->renderer());
  -        NSImage * image = (NSImage *)(renderer->pixmap().image());
  -        NSData *tiffData = [image TIFFRepresentationUsingCompression:NSTIFFCompressionLZW factor:0.0];
  -        wrapper = [[NSFileWrapper alloc] initRegularFileWithContents:tiffData];
  -        [wrapper setPreferredFilename:@"image.tiff"];
  -        [wrapper autorelease];
  +        if (renderer->isImage()) {
  +            wrapper = [[NSFileWrapper alloc] initRegularFileWithContents:[renderer->pixmap().imageRenderer() TIFFRepresentation]];
  +            [wrapper setPreferredFilename:@"image.tiff"];
  +            [wrapper autorelease];
  +        }
       }
   
       return wrapper;
  -    
  +
       KWQ_UNBLOCK_EXCEPTIONS;
   
       return nil;
  
  
  
  1.149     +5 -5      WebCore/kwq/KWQPainter.mm
  
  Index: KWQPainter.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQPainter.mm,v
  retrieving revision 1.148
  retrieving revision 1.149
  diff -u -r1.148 -r1.149
  --- KWQPainter.mm	27 Nov 2005 11:02:35 -0000	1.148
  +++ KWQPainter.mm	8 Dec 2005 08:40:27 -0000	1.149
  @@ -560,8 +560,8 @@
       NSRect inRect = NSMakeRect(x, y, tw, th);
       NSRect fromRect = NSMakeRect(sx, sy, tsw, tsh);
       
  -    [pixmap.imageRenderer drawImageInRect:inRect
  -                                      fromRect:fromRect compositeOperator:(NSCompositingOperation)compositeOperator context:context];
  +    [pixmap.imageRenderer() drawImageInRect:inRect fromRect:fromRect compositeOperator:(NSCompositingOperation)compositeOperator context:context];
  +
       KWQ_UNBLOCK_EXCEPTIONS;
   }
   
  @@ -574,7 +574,7 @@
       KWQ_BLOCK_EXCEPTIONS;
       NSRect tempRect = { {x, y}, {w, h} }; // workaround for 4213314
       NSPoint tempPoint = { sx, sy };
  -    [pixmap.imageRenderer tileInRect:tempRect fromPoint:tempPoint context:context];
  +    [pixmap.imageRenderer() tileInRect:tempRect fromPoint:tempPoint context:context];
       KWQ_UNBLOCK_EXCEPTIONS;
   }
   
  @@ -589,8 +589,8 @@
           return drawPixmap(x, y, w, h, pixmap, sx, sy, sw, sh, -1, context);
   
       KWQ_BLOCK_EXCEPTIONS;
  -    [pixmap.imageRenderer scaleAndTileInRect:NSMakeRect(x, y, w, h) fromRect:NSMakeRect(sx, sy, sw, sh) 
  -                      withHorizontalTileRule:(WebImageTileRule)hRule withVerticalTileRule:(WebImageTileRule)vRule context:context];
  +    [pixmap.imageRenderer() scaleAndTileInRect:NSMakeRect(x, y, w, h) fromRect:NSMakeRect(sx, sy, sw, sh) 
  +                        withHorizontalTileRule:(WebImageTileRule)hRule withVerticalTileRule:(WebImageTileRule)vRule context:context];
       KWQ_UNBLOCK_EXCEPTIONS;
   }
   
  
  
  
  1.44      +10 -17    WebCore/kwq/KWQPixmap.h
  
  Index: KWQPixmap.h
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQPixmap.h,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- KWQPixmap.h	30 Aug 2005 09:30:24 -0000	1.43
  +++ KWQPixmap.h	8 Dec 2005 08:40:27 -0000	1.44
  @@ -1,5 +1,5 @@
   /*
  - * Copyright (C) 2004 Apple Computer, Inc.  All rights reserved.
  + * Copyright (C) 2004, 2005 Apple Computer, Inc.  All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -26,13 +26,9 @@
   #ifndef QPIXMAP_H_
   #define QPIXMAP_H_
   
  +#include "KWQNamespace.h"
   #include "KWQPaintDevice.h"
  -#include "KWQColor.h"
   #include "KWQString.h"
  -#include "KWQNamespace.h"
  -#include "KWQImage.h"
  -#include "KWQSize.h"
  -#include "KWQRect.h"
   
   #include <ApplicationServices/ApplicationServices.h>
   
  @@ -49,9 +45,10 @@
   class QWMatrix;
   class QPainter;
   class QPixmap;
  +class QRect;
  +class QSize;
   
  -namespace khtml
  -{
  +namespace khtml {
       class CachedImageCallback;
   }
   
  @@ -80,7 +77,6 @@
       void resize(int, int);
   
       QPixmap xForm(const QWMatrix &) const;
  -    QImage convertToImage() const { return QImage(); }
       
       bool mask() const;
   
  @@ -89,14 +85,14 @@
       bool receivedData(const QByteArray &bytes, bool isComplete, khtml::CachedImageCallback *decoderCallback);
       void stopAnimations();
   
  -    WebCoreImageRendererPtr image() { return imageRenderer; };
  +    WebCoreImageRendererPtr imageRenderer() const { return m_imageRenderer; }
   
       void increaseUseCount() const;
       void decreaseUseCount() const;
       
       void flushRasterCache();
       
  -    CGImageRef imageRef();
  +    CGImageRef imageRef() const;
       
       static bool shouldUseThreadedDecoding();
   
  @@ -104,12 +100,9 @@
       void setAnimationRect(const QRect&) const;
   
   private:
  -
  -    WebCoreImageRendererPtr imageRenderer;
  -        
  -    mutable bool needCopyOnWrite;
  -    
  -    NSString *MIMEType;
  +    WebCoreImageRendererPtr m_imageRenderer;
  +    mutable bool m_needCopyOnWrite;
  +    NSString *m_MIMEType;
       
       friend class QPainter;
   
  
  
  
  1.52      +75 -89    WebCore/kwq/KWQPixmap.mm
  
  Index: KWQPixmap.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQPixmap.mm,v
  retrieving revision 1.51
  retrieving revision 1.52
  diff -u -r1.51 -r1.52
  --- KWQPixmap.mm	3 Oct 2005 21:13:07 -0000	1.51
  +++ KWQPixmap.mm	8 Dec 2005 08:40:27 -0000	1.52
  @@ -22,108 +22,109 @@
    * (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 "config.h"
  -#import "loader.h"
   
  +#include "config.h"
   #import "KWQPixmap.h"
  -#import "KWQFoundationExtras.h"
   
  +#import "loader.h"
  +#import "KWQFoundationExtras.h"
   #import "WebCoreImageRenderer.h"
   #import "WebCoreImageRendererFactory.h"
   
  +using namespace khtml;
  +
   QPixmap *KWQLoadPixmap(const char *name)
   {
       QPixmap *p = new QPixmap([[WebCoreImageRendererFactory sharedFactory] imageRendererWithName:[NSString stringWithCString:name]]);
       return p;
   }
   
  -bool canRenderImageType(const QString &type)
  +bool canRenderImageType(const QString& type)
   {
       return [[[WebCoreImageRendererFactory sharedFactory] supportedMIMETypes] containsObject:type.getNSString()];
   }
   
   QPixmap::QPixmap()
   {
  -    imageRenderer = nil;
  -    MIMEType = nil;
  -    needCopyOnWrite = false;
  +    m_imageRenderer = nil;
  +    m_MIMEType = nil;
  +    m_needCopyOnWrite = false;
   }
   
   QPixmap::QPixmap(WebCoreImageRendererPtr r)
   {
  -    imageRenderer = KWQRetain(r);
  -    MIMEType = nil;
  -    needCopyOnWrite = false;
  +    m_imageRenderer = KWQRetain(r);
  +    m_MIMEType = nil;
  +    m_needCopyOnWrite = false;
   }
   
   QPixmap::QPixmap(void *MIME)
   {
  -    imageRenderer = nil;
  -    MIMEType = KWQRetainNSRelease([(NSString *)MIME copy]);
  -    needCopyOnWrite = false;
  +    m_imageRenderer = nil;
  +    m_MIMEType = KWQRetainNSRelease([(NSString *)MIME copy]);
  +    m_needCopyOnWrite = false;
   }
   
  -QPixmap::QPixmap(const QSize &sz)
  +QPixmap::QPixmap(const QSize& sz)
   {
  -    imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithSize:NSMakeSize(sz.width(), sz.height())]);
  -    MIMEType = nil;
  -    needCopyOnWrite = false;
  +    m_imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithSize:sz]);
  +    m_MIMEType = nil;
  +    m_needCopyOnWrite = false;
   }
   
  -QPixmap::QPixmap(const QByteArray &bytes)
  +QPixmap::QPixmap(const QByteArray& bytes)
   {
  -    imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithBytes:bytes.data() length:bytes.size()]);
  -    MIMEType = nil;
  -    needCopyOnWrite = false;
  +    m_imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithBytes:bytes.data() length:bytes.size()]);
  +    m_MIMEType = nil;
  +    m_needCopyOnWrite = false;
   }
   
  -QPixmap::QPixmap(const QByteArray &bytes, NSString *MIME)
  +QPixmap::QPixmap(const QByteArray& bytes, NSString *MIME)
   {
  -    MIMEType = KWQRetainNSRelease([MIME copy]);
  -    imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithBytes:bytes.data() length:bytes.size() MIMEType:MIMEType]);
  -    needCopyOnWrite = false;
  +    m_MIMEType = KWQRetainNSRelease([MIME copy]);
  +    m_imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithBytes:bytes.data() length:bytes.size() MIMEType:m_MIMEType]);
  +    m_needCopyOnWrite = false;
   }
   
   QPixmap::QPixmap(int w, int h)
   {
  -    imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithSize:NSMakeSize(w, h)]);
  -    MIMEType = nil;
  -    needCopyOnWrite = false;
  +    m_imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithSize:NSMakeSize(w, h)]);
  +    m_MIMEType = nil;
  +    m_needCopyOnWrite = false;
   }
   
  -QPixmap::QPixmap(const QPixmap &copyFrom) : QPaintDevice(copyFrom)
  +QPixmap::QPixmap(const QPixmap& copyFrom) : QPaintDevice(copyFrom)
   {
  -    imageRenderer = KWQRetainNSRelease([copyFrom.imageRenderer copyWithZone:NULL]);;
  -    needCopyOnWrite = false;
  -    MIMEType = KWQRetainNSRelease([copyFrom.MIMEType copy]);
  +    m_imageRenderer = KWQRetainNSRelease([copyFrom.m_imageRenderer copyWithZone:NULL]);;
  +    m_needCopyOnWrite = false;
  +    m_MIMEType = KWQRetainNSRelease([copyFrom.m_MIMEType copy]);
   }
   
   QPixmap::~QPixmap()
   {
  -    KWQRelease(MIMEType);
  -    KWQRelease(imageRenderer);
  +    KWQRelease(m_MIMEType);
  +    KWQRelease(m_imageRenderer);
   }
   
  -CGImageRef QPixmap::imageRef()
  +CGImageRef QPixmap::imageRef() const
   {
  -    return [imageRenderer imageRef];
  +    return [m_imageRenderer imageRef];
   }
   
   void QPixmap::resetAnimation()
   {
  -    if (imageRenderer) {
  -        [imageRenderer resetAnimation];
  -    }
  +    if (m_imageRenderer)
  +        [m_imageRenderer resetAnimation];
   }
   
   void QPixmap::setAnimationRect(const QRect& rect) const
   {
  -    [imageRenderer setAnimationRect:NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height())];
  +    [m_imageRenderer setAnimationRect:NSMakeRect(rect.x(), rect.y(), rect.width(), rect.height())];
   }
   
   @interface WebImageCallback : NSObject
   {
  -    khtml::CachedImageCallback *callback;
  +    CachedImageCallback *callback;
       CGImageSourceStatus status;
   }
   - (void)notify;
  @@ -132,7 +133,7 @@
   @end
   
   @implementation WebImageCallback
  -- initWithCallback:(khtml::CachedImageCallback *)c
  +- initWithCallback:(CachedImageCallback *)c
   {
       self = [super init];
       callback = c;
  @@ -161,12 +162,10 @@
   {
       if (status < kCGImageStatusReadingHeader)
           callback->notifyDecodingError();
  -    else if (status == kCGImageStatusIncomplete) {
  +    else if (status == kCGImageStatusIncomplete)
           callback->notifyUpdate();
  -    }
  -    else if (status == kCGImageStatusComplete) {
  +    else if (status == kCGImageStatusComplete)
           callback->notifyFinished();
  -    }
   }
   
   - (void)setImageSourceStatus:(CGImageSourceStatus)s
  @@ -186,17 +185,16 @@
       return [WebCoreImageRendererFactory shouldUseThreadedDecoding] ? true : false;
   }
   
  -bool QPixmap::receivedData(const QByteArray &bytes, bool isComplete, khtml::CachedImageCallback *decoderCallback)
  +bool QPixmap::receivedData(const QByteArray& bytes, bool isComplete, CachedImageCallback *decoderCallback)
   {
  -    if (imageRenderer == nil) {
  -        imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithMIMEType:MIMEType]);
  -    }
  +    if (!m_imageRenderer)
  +        m_imageRenderer = KWQRetain([[WebCoreImageRendererFactory sharedFactory] imageRendererWithMIMEType:m_MIMEType]);
       
       WebImageCallback *callbackWrapper = nil;
       if (decoderCallback)
           callbackWrapper = [[WebImageCallback alloc] initWithCallback:decoderCallback];
   
  -    bool result = [imageRenderer incrementalLoadWithBytes:bytes.data() length:bytes.size() complete:isComplete callback:callbackWrapper];
  +    bool result = [m_imageRenderer incrementalLoadWithBytes:bytes.data() length:bytes.size() complete:isComplete callback:callbackWrapper];
   
       [callbackWrapper release];
       
  @@ -210,60 +208,48 @@
   
   bool QPixmap::isNull() const
   {
  -    return imageRenderer == nil || [imageRenderer isNull];
  +    return !m_imageRenderer || [m_imageRenderer isNull];
   }
   
   QSize QPixmap::size() const
   {
  -    if (imageRenderer == nil) {
  +    if (!m_imageRenderer)
           return QSize(0, 0);
  -    }
  -    NSSize sz = [imageRenderer size];
  -    return QSize((int)sz.width, (int)sz.height);
  +    return QSize([m_imageRenderer size]);
   }
   
   QRect QPixmap::rect() const
   {
  -    if (imageRenderer == nil) {
  -        return QRect(0, 0, 0, 0);
  -    }
  -    NSSize sz = [imageRenderer size];
  -    return QRect(0, 0, (int)sz.width, (int)sz.height);
  +    return QRect(QPoint(0, 0), size());
   }
   
   int QPixmap::width() const
   {
  -    if (imageRenderer == nil) {
  -        return 0;
  -    }
  -    return (int)[imageRenderer size].width;
  +    return size().width();
   }
   
   int QPixmap::height() const
   {
  -    if (imageRenderer == nil) {
  -        return 0;
  -    }
  -    return (int)[imageRenderer size].height;
  +    return size().height();
   }
   
  -void QPixmap::resize(const QSize &sz)
  +void QPixmap::resize(const QSize& sz)
   {
       resize(sz.width(), sz.height());
   }
   
   void QPixmap::resize(int w, int h)
   {
  -    if (needCopyOnWrite) {
  -        id <WebCoreImageRenderer> newImageRenderer = KWQRetainNSRelease([imageRenderer copyWithZone:NULL]);
  -        KWQRelease(imageRenderer);
  -        imageRenderer = newImageRenderer;
  -        needCopyOnWrite = false;
  +    if (m_needCopyOnWrite) {
  +        id <WebCoreImageRenderer> newImageRenderer = KWQRetainNSRelease([m_imageRenderer copyWithZone:NULL]);
  +        KWQRelease(m_imageRenderer);
  +        m_imageRenderer = newImageRenderer;
  +        m_needCopyOnWrite = false;
       }
  -    [imageRenderer resize:NSMakeSize(w, h)];
  +    [m_imageRenderer resize:NSMakeSize(w, h)];
   }
   
  -QPixmap QPixmap::xForm(const QWMatrix &xmatrix) const
  +QPixmap QPixmap::xForm(const QWMatrix& xmatrix) const
   {
       // This function is only called when an image needs to be scaled.  
       // We can depend on render_image.cpp to call resize AFTER
  @@ -274,35 +260,35 @@
       return *this;
   }
   
  -QPixmap &QPixmap::operator=(const QPixmap &assignFrom)
  +QPixmap& QPixmap::operator=(const QPixmap& assignFrom)
   {
  -    id <WebCoreImageRenderer> oldImageRenderer = imageRenderer;
  -    imageRenderer = KWQRetainNSRelease([assignFrom.imageRenderer retainOrCopyIfNeeded]);
  +    id <WebCoreImageRenderer> oldImageRenderer = m_imageRenderer;
  +    m_imageRenderer = KWQRetainNSRelease([assignFrom.m_imageRenderer retainOrCopyIfNeeded]);
       KWQRelease(oldImageRenderer);
  -    NSString *newMIMEType = KWQRetainNSRelease([assignFrom.MIMEType copy]);
  -    KWQRelease(MIMEType);
  -    MIMEType = newMIMEType;
  -    assignFrom.needCopyOnWrite = true;
  -    needCopyOnWrite = true;
  +    NSString *newMIMEType = KWQRetainNSRelease([assignFrom.m_MIMEType copy]);
  +    KWQRelease(m_MIMEType);
  +    m_MIMEType = newMIMEType;
  +    assignFrom.m_needCopyOnWrite = true;
  +    m_needCopyOnWrite = true;
       return *this;
   }
   
   void QPixmap::increaseUseCount() const
   {
  -    [imageRenderer increaseUseCount];
  +    [m_imageRenderer increaseUseCount];
   }
   
   void QPixmap::decreaseUseCount() const
   {
  -    [imageRenderer decreaseUseCount];
  +    [m_imageRenderer decreaseUseCount];
   }
   
   void QPixmap::stopAnimations()
   {
  -    [imageRenderer stopAnimation];
  +    [m_imageRenderer stopAnimation];
   }
   
   void QPixmap::flushRasterCache()
   {
  -    [imageRenderer flushRasterCache];
  +    [m_imageRenderer flushRasterCache];
   }
  
  
  
  1.115     +3 -28     WebCore/kwq/KWQWidget.mm
  
  Index: KWQWidget.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/KWQWidget.mm,v
  retrieving revision 1.114
  retrieving revision 1.115
  diff -u -r1.114 -r1.115
  --- KWQWidget.mm	30 Nov 2005 00:57:56 -0000	1.114
  +++ KWQWidget.mm	8 Dec 2005 08:40:27 -0000	1.115
  @@ -361,40 +361,15 @@
   void QWidget::setCursor(const QCursor &cur)
   {
       KWQ_BLOCK_EXCEPTIONS;
  -    id view = data->view;
  -    while (view) {
  +    for (id view = data->view; view; view = [view superview]) {
           if ([view respondsToSelector:@selector(setDocumentCursor:)]) {
  +            if ([view respondsToSelector:@selector(documentCursor)] && cur.handle() == [view documentCursor])
  +                break;
               [view setDocumentCursor:cur.handle()];
               break;
           }
  -        view = [view superview];
  -    }
  -    KWQ_UNBLOCK_EXCEPTIONS;
  -}
  -
  -QCursor QWidget::cursor()
  -{
  -    KWQ_BLOCK_EXCEPTIONS;
  -    QCursor cursor;
  -
  -    id view = data->view;
  -    while (view) {
  -        if ([view respondsToSelector:@selector(documentCursor)]) { 
  -            cursor = QCursor::makeWithNSCursor([view documentCursor]);
  -            break;
  -        }
  -        view = [view superview];
       }
  -
  -    return cursor;
       KWQ_UNBLOCK_EXCEPTIONS;
  -
  -    return QCursor();
  -}
  -
  -void QWidget::unsetCursor()
  -{
  -    setCursor(QCursor());
   }
   
   bool QWidget::event(QEvent *)
  
  
  
  1.439     +8 -6      WebCore/kwq/WebCoreBridge.mm
  
  Index: WebCoreBridge.mm
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/WebCoreBridge.mm,v
  retrieving revision 1.438
  retrieving revision 1.439
  diff -u -r1.438 -r1.439
  --- WebCoreBridge.mm	5 Dec 2005 22:01:30 -0000	1.438
  +++ WebCoreBridge.mm	8 Dec 2005 08:40:27 -0000	1.439
  @@ -1110,20 +1110,22 @@
       if (node) {
           [element setObject:[DOMNode _nodeWithImpl:node] forKey:WebCoreElementDOMNodeKey];
       
  +        // Only return image information if there is an image.
           if (node->renderer() && node->renderer()->isImage()) {
               RenderImage *r = static_cast<RenderImage *>(node->renderer());
  -            NSImage * image = (NSImage *)(r->pixmap().image());
  -            // Only return image information if there is an image.
  -            if (image && !r->isDisplayingError()) {
  -                [element setObject:r->pixmap().image() forKey:WebCoreElementImageKey];
  +            if (!r->isDisplayingError()) {
  +                QPixmap p = r->pixmap();
  +                NSImage *image = [p.imageRenderer() image];
  +                if (image)
  +                    [element setObject:image forKey:WebCoreElementImageKey];
               }
  -                
  +
               int x, y;
               if (r->absolutePosition(x, y)) {
                   NSValue *rect = [NSValue valueWithRect:NSMakeRect(x, y, r->contentWidth(), r->contentHeight())];
                   [element setObject:rect forKey:WebCoreElementImageRectKey];
               }
  -                
  +
               ElementImpl *i = static_cast<ElementImpl*>(node);
       
               // FIXME: Code copied from RenderImage::updateFromElement; should share.
  
  
  
  1.18      +6 -3      WebCore/kwq/WebCoreImageRenderer.h
  
  Index: WebCoreImageRenderer.h
  ===================================================================
  RCS file: /cvs/root/WebCore/kwq/WebCoreImageRenderer.h,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- WebCoreImageRenderer.h	6 Nov 2005 21:47:28 -0000	1.17
  +++ WebCoreImageRenderer.h	8 Dec 2005 08:40:27 -0000	1.18
  @@ -1,5 +1,5 @@
   /*
  - * Copyright (C) 2003 Apple Computer, Inc.  All rights reserved.
  + * Copyright (C) 2003, 2005 Apple Computer, Inc.  All rights reserved.
    *
    * Redistribution and use in source and binary forms, with or without
    * modification, are permitted provided that the following conditions
  @@ -47,8 +47,11 @@
   - (void)increaseUseCount;
   - (void)decreaseUseCount;
   - (void)flushRasterCache;
  -- (CGImageRef)imageRef;
  -- (NSImage *)image;
   - (void)resetAnimation;
   - (void)setAnimationRect:(NSRect)r;
  +
  +- (CGImageRef)imageRef;
  +- (NSImage *)image;
  +- (NSData *)TIFFRepresentation;
  +
   @end
  
  
  
  1.3388    +16 -0     WebKit/ChangeLog
  
  Index: ChangeLog
  ===================================================================
  RCS file: /cvs/root/WebKit/ChangeLog,v
  retrieving revision 1.3387
  retrieving revision 1.3388
  diff -u -r1.3387 -r1.3388
  --- ChangeLog	8 Dec 2005 07:41:08 -0000	1.3387
  +++ ChangeLog	8 Dec 2005 08:40:29 -0000	1.3388
  @@ -1,3 +1,19 @@
  +2005-12-08  Darin Adler  <darin at apple.com>
  +
  +        Reviewed by Eric.
  +
  +        - fixed http://bugzilla.opendarwin.org/show_bug.cgi?id=5689
  +          add support for CSS "custom cursors" (cursor images)
  +
  +        * WebCoreSupport.subproj/WebImageRenderer.h: Remove declaration of TIFFRepresentation and
  +        image methods since both are required by the WebCoreImageRenderer protocol now and we don't
  +        have to re-declare them.
  +
  +        * Misc.subproj/WebNSPasteboardExtras.m: Add an import of the WebCoreImageRenderer.h file
  +        since we need to use methods inherited from that protocol.
  +        * Misc.subproj/WebNSViewExtras.m: Ditto.
  +        * WebCoreSupport.subproj/WebImageRenderer.m: Ditto. (Use and implement.)
  +
   2005-12-07  Mitz Pettel  <opendarwin.org at mitzpettel.com>
   
           Reviewed by Maciej, landed by Darin.
  
  
  
  1.50      +1 -0      WebKit/Misc.subproj/WebNSPasteboardExtras.m
  
  Index: WebNSPasteboardExtras.m
  ===================================================================
  RCS file: /cvs/root/WebKit/Misc.subproj/WebNSPasteboardExtras.m,v
  retrieving revision 1.49
  retrieving revision 1.50
  diff -u -r1.49 -r1.50
  --- WebNSPasteboardExtras.m	14 Oct 2005 20:31:46 -0000	1.49
  +++ WebNSPasteboardExtras.m	8 Dec 2005 08:40:32 -0000	1.50
  @@ -28,6 +28,7 @@
   
   #import <WebKit/WebNSPasteboardExtras.h>
   
  +#import <WebCore/WebCoreImageRenderer.h>
   #import <WebKit/WebArchive.h>
   #import <WebKit/WebAssertions.h>
   #import <WebKit/WebImageRenderer.h>
  
  
  
  1.62      +3 -3      WebKit/Misc.subproj/WebNSViewExtras.m
  
  Index: WebNSViewExtras.m
  ===================================================================
  RCS file: /cvs/root/WebKit/Misc.subproj/WebNSViewExtras.m,v
  retrieving revision 1.61
  retrieving revision 1.62
  diff -u -r1.61 -r1.62
  --- WebNSViewExtras.m	6 Jun 2005 00:15:08 -0000	1.61
  +++ WebNSViewExtras.m	8 Dec 2005 08:40:32 -0000	1.62
  @@ -28,6 +28,7 @@
   
   #import <WebKit/WebNSViewExtras.h>
   
  +#import <WebCore/WebCoreImageRenderer.h>
   #import <WebKit/WebDataSource.h>
   #import <WebKit/WebFramePrivate.h>
   #import <WebKit/WebFrameViewInternal.h>
  @@ -209,9 +210,8 @@
       NSPoint mouseDownPoint = [self convertPoint:[event locationInWindow] fromView:nil];
       NSImage *dragImage;
       NSPoint origin;
  -    NSImage *image;
  -    
  -    image = [wir image];
  +
  +    NSImage *image = [wir image];
       if (image != nil && [image size].height * [image size].width <= WebMaxOriginalImageArea) {
           NSSize originalSize = rect.size;
           origin = rect.origin;
  
  
  
  1.34      +0 -2      WebKit/WebCoreSupport.subproj/WebImageRenderer.h
  
  Index: WebImageRenderer.h
  ===================================================================
  RCS file: /cvs/root/WebKit/WebCoreSupport.subproj/WebImageRenderer.h,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- WebImageRenderer.h	16 Aug 2005 17:36:37 -0000	1.33
  +++ WebImageRenderer.h	8 Dec 2005 08:40:33 -0000	1.34
  @@ -56,8 +56,6 @@
   - (NSRect)targetAnimationRect;
   - (void)resize:(NSSize)s;
   - (NSSize)size;
  -- (NSData *)TIFFRepresentation;
  -- (NSImage *)image;
   
   @end
   
  
  
  
  1.109     +3 -5      WebKit/WebCoreSupport.subproj/WebImageRenderer.m
  
  Index: WebImageRenderer.m
  ===================================================================
  RCS file: /cvs/root/WebKit/WebCoreSupport.subproj/WebImageRenderer.m,v
  retrieving revision 1.108
  retrieving revision 1.109
  diff -u -r1.108 -r1.109
  --- WebImageRenderer.m	10 Sep 2005 17:36:09 -0000	1.108
  +++ WebImageRenderer.m	8 Dec 2005 08:40:33 -0000	1.109
  @@ -28,18 +28,16 @@
   
   #import <WebKit/WebImageRenderer.h>
   
  +#import <WebCore/WebCoreImageRenderer.h>
   #import <WebKit/WebAssertions.h>
  -#import <WebKit/WebImageRendererFactory.h>
   #import <WebKit/WebGraphicsBridge.h>
   #import <WebKit/WebHTMLView.h>
  +#import <WebKit/WebImageData.h>
  +#import <WebKit/WebImageRendererFactory.h>
   #import <WebKit/WebImageView.h>
   #import <WebKit/WebNSObjectExtras.h>
   #import <WebKitSystemInterface.h>
   
  -#import <WebCore/WebCoreImageRenderer.h>
  -
  -#import <WebKit/WebImageData.h>
  -
   // Forward declarations of internal methods.
   @interface WebImageRenderer (WebInternal)
   - (void)_startOrContinueAnimationIfNecessary;
  
  
  



More information about the webkit-changes mailing list