=== WebCore-146.1 ===

2004-06-18  Vicki Murley  <vicki@apple.com>

	- merge this change from HEAD

    2004-06-18  Trey Matteson  <trey@apple.com>

        3702053 - DHTML dragging destination can't control the cursor (by setting the drop operation)

        Fallout from security work, but an easy fix.

        Reviewed by Darin

        * kwq/KWQClipboard.mm:
        (KWQClipboard::setDropEffect):  Allow dest side to set dropEffect.

2004-06-18  Vicki Murley  <vicki@apple.com>

	- merge this change from HEAD

    2004-06-18  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - re-fixed <rdar://problem/3701893> show expert preferences notes in xcode causes crash (in EllipsisBox code)

        * khtml/rendering/render_block.cpp: (khtml::RenderBlock::paintEllipsisBoxes):
        Check !isInlineFlow rather than checking hasMarkupTruncation. Otherwise, we break
        plain old non-markup truncation.

2004-06-18  Vicki Murley  <vicki@apple.com>

	- merge this change from HEAD

    2004-06-18  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed <rdar://problem/3701893> show expert preferences notes in xcode causes crash (in EllipsisBox code)

        * khtml/rendering/render_block.cpp: (khtml::RenderBlock::paintEllipsisBoxes):
        Only walk the ellipsis list if hasMarkupTruncation is true.

=== Safari-146 ===

2004-06-17  Richard Williamson   <rjw@apple.com>

	Fixed <rdar://problem/3698867> setting the canvas or parent to display:none and updating the causes a nil-deref

	Ensured that we have a renderer before rendering.

        Reviewed by John.

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):

2004-06-17  David Hyatt  <hyatt@apple.com>

	Fix for 3674601, "Read More..." links should trail articles in Emerson.
	
        Reviewed by darin

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        (khtml::RenderBlock::deleteEllipsisLineBoxes):
        (khtml::RenderBlock::checkLinesForTextOverflow):
        * khtml/rendering/render_block.cpp:
        (khtml:::RenderFlow):
        (khtml::RenderBlock::paintEllipsisBoxes):
        (khtml::RenderBlock::nodeAtPoint):
        (khtml::shouldCheckLines):
        (khtml::getLineAtIndex):
        (khtml::getHeightForLineCount):
        (khtml::RenderBlock::lineAtIndex):
        (khtml::RenderBlock::lineCount):
        (khtml::RenderBlock::heightForLineCount):
        (khtml::RenderBlock::clearTruncation):
        * khtml/rendering/render_block.h:
        (khtml::RenderBlock::setHasMarkupTruncation):
        (khtml::RenderBlock::hasMarkupTruncation):
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutVerticalBox):
        * khtml/rendering/render_line.cpp:
        (khtml::EllipsisBox::m_str):
        (khtml::InlineBox::adjustPosition):
        (khtml::InlineFlowBox::adjustPosition):
        (khtml::InlineFlowBox::clearTruncation):
        (khtml::EllipsisBox::paint):
        (khtml::EllipsisBox::nodeAtPoint):
        (khtml::RootInlineBox::clearTruncation):
        (khtml::RootInlineBox::placeEllipsis):
        (khtml::RootInlineBox::paintEllipsisBox):
        (khtml::RootInlineBox::hitTestEllipsisBox):
        (khtml::RootInlineBox::adjustPosition):
        (khtml::RootInlineBox::childRemoved):
        * khtml/rendering/render_line.h:
        (khtml::InlineBox::clearTruncation):
        * khtml/rendering/render_text.cpp:
        * khtml/rendering/render_text.h:
        (khtml::InlineTextBox::clearTruncation):

2004-06-17  Trey Matteson  <trey@apple.com>

	3698514 - coordinates in ondragstart and ondrag events are wrong

	This part fixes the ondragstart coords.  We salt away the window-based mouseDown
	location, since we need that when we dispatch the ondragstart event.  Previously
	we were errantly using a mouseDown point that had already been converted to view
	coords, and then the dispatch converted it again.

        Reviewed by Maciej.

        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::khtmlMouseMoveEvent):  Use window based mouse event coords to dispatch event.
        (KWQKHTMLPart::mouseDown):  Save window based mouse event coords .

2004-06-16  David Hyatt  <hyatt@apple.com>

	Fix for 3596620, implement a subset of CSS3 text truncation for Emerson.
	
        Reviewed by mjs

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::checkLinesForTextOverflow):
        * khtml/rendering/font.cpp:
        (Font::checkSelectionPoint):
        * khtml/rendering/font.h:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paintObject):
        (khtml::RenderBlock::paintFloats):
        (khtml::RenderBlock::paintEllipsisBoxes):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_line.cpp:
        (InlineBox::canAccommodateEllipsis):
        (InlineBox::placeEllipsisBox):
        (InlineFlowBox::paintDecorations):
        (InlineFlowBox::placeEllipsisBox):
        (EllipsisBox::paint):
        (RootInlineBox::placeEllipsis):
        (RootInlineBox::placeEllipsisBox):
        * khtml/rendering/render_line.h:
        (khtml::EllipsisBox::m_str):
        (khtml::RootInlineBox::ellipsisBox):
        * khtml/rendering/render_text.cpp:
        (InlineTextBox::placeEllipsisBox):
        (InlineTextBox::paintDecoration):
        (InlineTextBox::offsetForPosition):
        (RenderText::positionForCoordinates):
        (RenderText::paint):
        * khtml/rendering/render_text.h:
        * kwq/KWQFontMetrics.h:
        * kwq/KWQFontMetrics.mm:
        (QFontMetrics::checkSelectionPoint):
        * kwq/WebCoreTextRenderer.h:

=== WebCore-145.1 ===

2004-06-16  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	<rdar://problem/3697602> REGRESSION (144.2-TOT) Selection highlight does not draw

        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::setSelection):

=== Safari-145 ===

2004-06-16  Richard Williamson   <rjw@apple.com>

	Fixed 3695730:  Added support for embeds[], much like
	applets[], to allow access to a plugin's exported interface.

        Reviewed by Chris.

        * khtml/dom/html_document.cpp:
        (HTMLDocument::embeds):
        * khtml/dom/html_document.h:
        * khtml/ecma/kjs_dom.cpp:
        (KJS::getRuntimeObject):
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocument::tryGet):
        (KJS::HTMLElement::tryGet):
        (KJS::HTMLCollection::tryGet):
        (KJS::HTMLCollection::getNamedItems):
        * khtml/ecma/kjs_html.h:
        (KJS::HTMLDocument::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):
        * khtml/html/html_miscimpl.cpp:
        (HTMLCollectionImpl::calcLength):
        (HTMLCollectionImpl::getItem):
        (HTMLCollectionImpl::getNamedItem):
        * khtml/html/html_miscimpl.h:
        (DOM::HTMLCollectionImpl::):
        * khtml/html/html_objectimpl.cpp:
        (HTMLEmbedElementImpl::getEmbedInstance):
        * khtml/html/html_objectimpl.h:
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::getEmbedInstanceForView):

2004-06-15  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	<rdar://problem/3695907>: (can't enable selection inside parent where it is disabled via CSS)

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue): 
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/rendering/render_object.cpp:
        (RenderObject::shouldSelect):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::RenderStyle::userSelect):
        (khtml::RenderStyle::setUserSelect):
        (khtml::RenderStyle::initialUserSelect):

2004-06-15  David Hyatt  <hyatt@apple.com>

	Initial impl of the EllipsisBox.  This code just gets the box created and gets it placed vertically.  The next
	stage will be to position the box horizontally as well.
	
        Reviewed by trey

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::checkLinesForTextOverflow):
        * khtml/rendering/render_line.cpp:
        (RootInlineBox::placeEllipsis):
        * khtml/rendering/render_line.h:
        (khtml::EllipsisBox::m_str):

2004-06-15  David Hyatt  <hyatt@apple.com>

	Implement canAccommodateEllipsis.  The basic idea is that everything on a line will allow an ellipsis to be
	drawn on top of it unless it's a replaced element.  Then, if the replaced element overlaps, the ellipsis won't
	be allowed.
	
        Reviewed by john

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::checkLinesForTextOverflow):
        * khtml/rendering/render_line.cpp:
        (InlineBox::closestLeafChildForXPos):
        (InlineBox::canAccommodateEllipsis):
        (InlineFlowBox::canAccommodateEllipsis):
        (RootInlineBox::canAccommodateEllipsis):
        * khtml/rendering/render_line.h:

2004-06-15  Vicki Murley <vicki@apple.com>

	- added a few layout tests, rdar://3694510

        * layout-tests/editing/deleting/delete-image-004-expected.txt: Added.
        * layout-tests/editing/deleting/delete-image-004.html: Added.
        * layout-tests/editing/selection/extend-by-character-006-expected.txt: Added.
        * layout-tests/editing/selection/extend-by-character-006.html: Added.

2004-06-15  Trey Matteson  <trey@apple.com>

	Dragging tweak:  We pass the mouse down coords instead of the
	latest mouse drag coords to the ondragstart event.  This makes it
	easy for the client to figure the correct drag image offset,
	whereas the mouse drag location is next to useless for that.

        Reviewed by Louch

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::khtmlMouseMoveEvent):

2004-06-15  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3685236>: (Safari does not support onselectstart event handler)

        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::getValueProperty):
        (DOMNode::putValue):
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMNode::):
        * khtml/ecma/kjs_dom.lut.h:
        (KJS::):
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseHTMLAttribute):
        * khtml/misc/htmlattrs.c:
        (hash_attr):
        (findAttr):
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:
        * khtml/rendering/render_object.cpp:
        (RenderObject::shouldSelect):
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::typeToId):
        (EventImpl::idToType):
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::):

2004-06-15  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	Fix crash with last checkin.

        * khtml/ecma/kjs_binding.cpp:
        (ScriptInterpreter::domObjectsPerDocument): check the same
	property we want to initialize.

2004-06-15  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3685309>: (properties not shared for JS wrappers of same DOM object, accessed from different frames)

        * khtml/ecma/kjs_binding.cpp:
        (ScriptInterpreter::domObjects):
        (ScriptInterpreter::domObjectsPerDocument):
        (ScriptInterpreter::ScriptInterpreter):
        (ScriptInterpreter::forgetDOMObject):
        (ScriptInterpreter::getDOMObjectForDocument):
        (ScriptInterpreter::putDOMObjectForDocument):
        (ScriptInterpreter::deleteDOMObjectsForDocument):
        (ScriptInterpreter::mark):
        (ScriptInterpreter::forgetDOMObjectsForDocument):
        (ScriptInterpreter::updateDOMObjectDocument):
        * khtml/ecma/kjs_binding.h:
        (KJS::ScriptInterpreter::getDOMObject):
        (KJS::ScriptInterpreter::putDOMObject):
        (KJS::ScriptInterpreter::deleteDOMObject):

2004-06-15  Darin Adler  <darin@apple.com>

        - rolled out Ken's fix for <rdar://problem/3672377> assertion failure in AppendNodeCommandImpl::doApply due to non-0 exception code trying to insert a DIV markup string
          (it was making most layout tests fail)

        * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::checkAddChild): Rolled check back in.

2004-06-15  David Hyatt  <hyatt@apple.com>

	Add a truncation variable to text run boxes that will eventually be used to know how to cut out some of the glyphs when
	rendering.
	
        Reviewed by darin

        * khtml/rendering/render_text.cpp:
        (RenderText::clearTextOverflowTruncation):
        * khtml/rendering/render_text.h:
        (khtml::InlineTextBox:::InlineRunBox):
        (khtml::InlineTextBox::clearTruncation):

2004-06-14  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed some things for GC that Patrick missed, or that happened after the branch

        * kwq/DOM-CSS.mm:
        (-[DOMStyleSheet finalize]): Added.
        (-[DOMStyleSheetList finalize]): Added.
        (-[DOMCSSStyleSheet finalize]): Added.
        (-[DOMMediaList finalize]): Added.
        (-[DOMCSSRuleList finalize]): Added.
        (-[DOMCSSRule finalize]): Added.
        (-[DOMCSSStyleDeclaration finalize]): Added.
        (-[DOMCSSValue finalize]): Added.
        (-[DOMRGBColor finalize]): Added.
        (-[DOMRect finalize]): Added.
        (-[DOMCounter finalize]): Added.
        * kwq/DOM.mm:
        (-[DOMObject finalize]): Added.
        (-[DOMNode finalize]): Added.
        (-[DOMNamedNodeMap finalize]): Added.
        (-[DOMNodeList finalize]): Added.
        (-[DOMImplementation finalize]): Added.
        (-[DOMRange finalize]): Added.
        (-[DOMNodeFilter finalize]): Added.
        (-[DOMNodeIterator finalize]): Added.
        (-[DOMTreeWalker dealloc]): Removed unneeded nil check.
        (-[DOMTreeWalker finalize]): Added.
        * kwq/DOMHTML.mm:
        (-[DOMHTMLCollection finalize]): Added.
        (-[DOMHTMLOptionsCollection finalize]): Added.
        * kwq/KWQClipboard.mm:
        (KWQClipboard::KWQClipboard): Use KWQRetain instead of retain.
        (KWQClipboard::~KWQClipboard): Use KWQRelease instead of release.
        * kwq/KWQEditCommand.mm:
        (-[KWQEditCommand finalize]): Added.
        * kwq/KWQFont.mm:
        (QFont::~QFont): Use KWQRelease instead of release.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::keyEvent): Use KWQRetain instead of retain, and KWQRelease instead of release.
        (KWQKHTMLPart::mouseDown): Use KWQRetain instead of retain, and KWQRelease instead of release.
        (KWQKHTMLPart::mouseDragged): Use KWQRetain instead of retain, and KWQRelease instead of release.
        (KWQKHTMLPart::mouseUp): Use KWQRetain instead of retain, and KWQRelease instead of release.
        (KWQKHTMLPart::mouseMoved): Use KWQRetain instead of retain, and KWQRelease instead of release.
        (KWQKHTMLPart::sendContextMenuEvent): Use KWQRetain instead of retain, and KWQRelease instead of release.
        * kwq/KWQPageState.mm:
        (-[KWQPageState finalize]): Added. Filed <rdar://problem/3694163> about the fact that this is not right.
        * kwq/KWQTimer.mm:
        (-[KWQSingleShotTimerTarget finalize]): Added.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge finalize]): Added. Filed <rdar://problem/3694165> about the fact that this is not right.

2004-06-15  David Hyatt  <hyatt@apple.com>

	Initial work on text truncation.  Working top-down, I think I've made all the changes I will need to bidi.cpp
	and to the block code itself.  The rest of the code can be concentrated in the render_line and render_text files.
	
        Reviewed by darin

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        (khtml::RenderBlock::findNextLineBreak):
        (khtml::RenderBlock::deleteEllipsisLineBoxes):
        (khtml::RenderBlock::checkLinesForTextOverflow):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_line.cpp:
        (RootInlineBox::detach):
        (RootInlineBox::detachEllipsisBox):
        (RootInlineBox::canAccommodateEllipsis):
        (RootInlineBox::placeEllipsis):
        * khtml/rendering/render_line.h:
        (khtml::RootInlineBox::RootInlineBox):
        * khtml/rendering/render_text.cpp:
        (RenderText::clearTextOverflowTruncation):
        * khtml/rendering/render_text.h:

2004-06-14  Trey Matteson  <trey@apple.com>

	3692690 - REGRESSION: canceling drag from WebView cause link to load
	Just need to take extra care to cancel any click handling in
	all cases once we're committed to doing the drag.

        Reviewed by Darin.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::khtmlMouseMoveEvent):  Call invalidateClick once
	we're past the hysteresis point, and definitely going to try
	to start a drag and drop.

2004-06-14  Darin Adler  <darin@apple.com>

        - fixed crash on boot

        * kwq/KWQFoundationExtras.h: (KWQRetainNSRelease):
        Fixed return value of this method; was uninitialized.

2004-06-14  Trey Matteson  <trey@apple.com>

	Dashboard wants access to pastboard data during the drag gesture.

	We address this need be allowing docs that are local files to access the
	pasteboard data during a drag, while other pages can only get at the types
	list until the drop happens.  This is deemed safe because local files already
	have such broad super powers.

        Reviewed by Maciej.

        * kwq/KWQKURL.h:
        * kwq/KWQKURL.mm:
        (KURL::isLocalFile):  Implement this QT method to look for the file scheme.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge dragOperationForDraggingInfo:]):  Use more relaxed clipboard
	security for local file pages.
        (-[WebCoreBridge dragExitedWithDraggingInfo:]):  Ditto.

2004-06-14  Darin Adler  <darin@apple.com>

        Reviewed by me, code changes by Patrick Beard.

        - fixed <rdar://problem/3671507>: (WebKit should adopt GC changes and compile with GC enabled)

        * WebCore.pbproj/project.pbxproj: Added KWQFoundationExtras.h.
        * kwq/KWQFoundationExtras.h: Added.
        (KWQRetain): Cover for CFRetain that is tolerant of nil.
        (KWQRelease): Cover for CFRelease that is tolerant of nil.
        (KWQRetainNSRelease): Combination of a CFRetain and an -[NSObject release] that is tolerant of nil.
        Also includes a declaration of finalize so we can call [super finalize] without warnings on Panther.

        * kwq/DOM.mm:
        (ObjCNodeFilterCondition::ObjCNodeFilterCondition): Use CFRetain instead of retain.
        (ObjCNodeFilterCondition::~ObjCNodeFilterCondition): Use CFRelease instead of release.
        * kwq/KWQComboBox.mm:
        (QComboBox::~QComboBox): Use KWQRelease instead of release.
        (QComboBox::setFont): Use KWQRelease instead of release.
        (QComboBox::labelFont): Use KWQRetain instead of retain.
        * kwq/KWQCursor.mm:
        (QCursor::QCursor): Use KWQRetain instead of retain.
        (QCursor::~QCursor): Use KWQRelease instead of release.
        (QCursor::operator=): More of the same.
        * kwq/KWQFileButton.mm:
        (KWQFileButton::KWQFileButton): Use KWQRetainNSRelease to retain a newly-allocated object.
        (KWQFileButton::~KWQFileButton): Use CFRelease instead of release.
        * kwq/KWQFont.mm:
        (QFont::QFont): Use KWQRetain instead of retain.
        (QFont::operator=): More of the same.
        (QFont::setFamily): Use KWQRelease instead of release.
        (QFont::setFirstFamily): Use KWQRelease instead of release.
        (QFont::setPixelSize): Use KWQRelease instead of release.
        (QFont::setWeight): Use KWQRelease instead of release.
        (QFont::setItalic): Use KWQRelease instead of release.
        (QFont::getNSFont): Use KWQRetain instead of retain.
        * kwq/KWQFontMetrics.mm:
        (QFontMetricsPrivate::~QFontMetricsPrivate): Use KWQRelease instead of release.
        (QFontMetricsPrivate::getRenderer): Use KWQRetain instead of retain.
        (QFontMetricsPrivate::setFont): Use KWQRelease instead of release.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::~KWQKHTMLPart): Use KWQRelease instead of release.
        (KWQKHTMLPart::clearRecordedFormValues): Use KWQRelease instead of release.
        (KWQKHTMLPart::recordFormValue): Use KWQRetainNSRelease and use KWQRetain instead of retain.
        (KWQKHTMLPart::windowScriptObject): Use KWQRetainNSRelease.
        * kwq/KWQKJobClasses.mm:
        (KIO::TransferJobPrivate::TransferJobPrivate): Use KWQRetainNSRelease.
        (KIO::TransferJobPrivate::~TransferJobPrivate): Use KWQRelease instead of release.
        (KIO::TransferJob::setLoader): More of the same.
        * kwq/KWQLoader.mm:
        (KWQRetainResponse): Use KWQRetain instead of retain.
        (KWQReleaseResponse): Use KWQRelease instead of release.
        * kwq/KWQPainter.mm:
        (QPainterPrivate::~QPainterPrivate): Use KWQRelease instead of release.
        (QPainter::_updateRenderer): More of the same.
        (QPainter::initFocusRing): Use KWQRetainNSRelease.
        (QPainter::clearFocusRing): Use KWQRelease instead of release.
        * kwq/KWQPixmap.mm:
        (QPixmap::QPixmap): Use KWQRetain instead of retain.
        (QPixmap::~QPixmap): Use KWQRelease instead of release.
        (QPixmap::receivedData): Use KWQRetain instead of retain.
        (QPixmap::resize): Use KWQRetainNSRelease and use KWQRelease instead of release.
        (QPixmap::operator=): More of the same.
        * kwq/KWQRegion.mm:
        (QRegion::QRegion): Use KWQRetain instead of retain.
        (QRegion::~QRegion): Use KWQRelease instead of release.
        (QRegion::operator=): More of the same.
        * kwq/KWQTimer.mm:
        (QTimer::start): Use KWQRetain instead of retain.
        (QTimer::stop): Use KWQRelease instead of release.
        (QTimer::fire): Use KWQRelease instead of release.
        * kwq/KWQWidget.mm:
        (QWidget::QWidget): Use KWQRetain instead of retain.
        (QWidget::~QWidget): Use KWQRelease instead of release.
        (QWidget::setView): More of the same.
        * kwq/WebCoreSettings.mm: (-[WebCoreSettings finalize]):
        Delete the storage here, as well as in dealloc.

2004-06-14  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Trey.

	<rdar://problem/3693818>: (Safari should use CG calls for circle drawing for better performance)

	* kwq/KWQPainter.mm:
        (QPainter::drawEllipse): Use CG calls instead of NS calls for faster circle drawing.
        (QPainter::drawArc): Ditto.

2004-06-14  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Vicki

        Fix for this bug:
        
        <rdar://problem/3690115> Crash deleting text out of iChat's profile (an editable Webview)

        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::isFocusable): Added null-check of parent node before deref'ing it.

2004-06-14  Trey Matteson  <trey@apple.com>

	Two tweaks to recently added "drag" pseudo-class, as suggested by
	Dave.  The class is renamed to "-khtml-drag", and we update layout
	when using it, instead of only updating styles.

        Reviewed by hyatt.

        * khtml/css/css_base.cpp:
        (CSSSelector::extractPseudoType):
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::snapshotDragImage):

2004-06-13  Trey Matteson  <trey@apple.com>

	Support for DHTML cut/copy/paste.  We now support oncut, oncopy, onpaste.  The events
	are sent to the first node in the selection, or else the body.  Current holes are
	that we do not send events for operations in text fields or text areas (because it
	is hard to get the right hooks into the AppKit).

	We also send onbeforecut, onbeforecopy, onbeforepaste before the other events, which
	isn't really WinIE compatible, but is close.  WinIE uses these to enable cut/paste
	menu items in its UI.  DB doesn't need this for now.

        Reviewed by Chris

        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::getValueProperty):  Boilerplate for new events
        (DOMNode::putValue):    Boilerplate for new events
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMNode::):    Boilerplate for new events
        * khtml/ecma/kjs_dom.lut.h:
        * khtml/ecma/kjs_events.cpp:
        (DOMEvent::DOMEvent): "dataTransfer" and "clipboardData" properties are conditionally
	defined on DOMEvent, depending on if the event is a dragging or clipboard event.
        (DOMMouseEvent::mark):  Pass mark along to any clipboard object we have.
        (DOMEvent::getValueProperty):  Return "dataTransfer" or "clipboardData".
        (DOMMouseEvent::getValueProperty):  Returning "dataTransfer" now handled by
	the superclass.
        * khtml/ecma/kjs_events.h:
        (KJS::DOMEvent::):
        (KJS::DOMMouseEvent::DOMMouseEvent):
        (KJS::DOMMouseEvent::):
        (KJS::DOMMouseEvent::toMouseEvent):
        * khtml/ecma/kjs_events.lut.h:
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseHTMLAttribute):  Boilerplate for new events
        * khtml/misc/htmlattrs.c:
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:  Boilerplate for new events
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::typeToId):  Boilerplate for new events
        (EventImpl::idToType):  Boilerplate for new events
        (EventImpl::isDragEvent):  New utility
        (EventImpl::isClipboardEvent):  New utility
        (MouseEventImpl::isDragEvent):  New utility
        (ClipboardEventImpl::ClipboardEventImpl):  ref optional clipboard
        (ClipboardEventImpl::~ClipboardEventImpl):  deref optional clipboard
        (ClipboardEventImpl::isClipboardEvent):  New utility
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::):  Boilerplate for new events
        (DOM::ClipboardEventImpl::clipboard):
        * kwq/KWQClipboard.h:  Monkey business so this file is includable in C++.
        * kwq/KWQClipboard.mm:
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::dispatchCPPEvent):  Send one of the new events.
        (KWQKHTMLPart::tryCut):  Declare pasteboard types, send cut events.
        (KWQKHTMLPart::tryCopy):  Declare pasteboard types, send copy events.
        (KWQKHTMLPart::tryPaste):  Send paste events.
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge tryDHTMLCut]):  Pass through to part
        (-[WebCoreBridge tryDHTMLCopy]):  Ditto
        (-[WebCoreBridge tryDHTMLPaste]):  Ditto

2004-06-14  Trey Matteson  <trey@apple.com>

	A new CSS pseudo-class ".drag" is added.  Analogous to the "hover" class,
	this class determines styles used while an element is generating a drag
	image.

        Reviewed by hyatt.

        * khtml/css/css_base.cpp:
        (CSSSelector::extractPseudoType):  Boilerplate for adding new class.
        * khtml/css/css_base.h:  Boilerplate for adding new class.
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::checkOneSelector):  Match new class against
	elements being dragged.
        * khtml/css/cssstyleselector.h:
        (khtml::StyleSelector::):  Boilerplate for adding new class.
        * khtml/rendering/render_object.cpp:
        (RenderObject::RenderObject):  Init new member.
        (RenderObject::isDragging):  Return whether this object is being dragged.
        (RenderObject::updateDragState):  Paint us an all children with a new dragged state.
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_style.h: Boilerplate for adding new class.
        (khtml::RenderStyle::NonInheritedFlags::operator==):
        (khtml::RenderStyle::setBitDefaults):
        (khtml::RenderStyle::affectedByDragRules):
        (khtml::RenderStyle::setAffectedByDragRules):
        * kwq/KWQClipboard.mm:
        (KWQClipboard::dragNSImage):  Method rename.
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::snapshotDragImage):  Mark the element as being dragged before
	we snapshot it, so new style class will apply.

2004-06-14  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me
        
        Added a few more editing-related layout tests.

        * layout-tests/editing/inserting/insert-3654864-fix-expected.txt: Added.
        * layout-tests/editing/inserting/insert-3654864-fix.html: Added.
        * layout-tests/editing/inserting/insert-3659587-fix-expected.txt: Added.
        * layout-tests/editing/inserting/insert-3659587-fix.html: Added.
        * layout-tests/editing/inserting/insert-after-delete-001-expected.txt: Added.
        * layout-tests/editing/inserting/insert-after-delete-001.html: Added.
        * layout-tests/editing/inserting/insert-br-case1-expected.txt: Added.
        * layout-tests/editing/inserting/insert-br-case1.html: Added.
        * layout-tests/editing/inserting/insert-br-case2-expected.txt: Added.
        * layout-tests/editing/inserting/insert-br-case2.html: Added.
        * layout-tests/editing/inserting/insert-br-case3-expected.txt: Added.
        * layout-tests/editing/inserting/insert-br-case3.html: Added.

2004-06-14  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me

        Regarding the bug below, removing some tests since we have removed the execCommand("paste") 
        feature, at least for now.

        <rdar://problem/3684792>: (JavaScript execCommand("paste") presents security issues)

        * layout-tests/editing/pasteboard/copy-paste-text-001-expected.txt: Removed.
        * layout-tests/editing/pasteboard/copy-paste-text-001.html: Removed.
        * layout-tests/editing/pasteboard/cut-paste-text-002-expected.txt: Removed.
        * layout-tests/editing/pasteboard/cut-paste-text-002.html: Removed.

2004-06-14  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        Fix for this bug:
        
        <rdar://problem/3672377> assertion failure in AppendNodeCommandImpl::doApply due to non-0 exception code trying to insert a DIV markup string
        
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::checkAddChild): This function was being too strict in disallowing certain nodes
        to be added as other child nodes, applying rules we typically use for parsing. However,
        those parsing rules are primarily for dealing with "bad" HTML, and should not be
        applied to programmatic DOM operations. The fix involves removing calls to childAllowed().

2004-06-12  Trey Matteson  <trey@apple.com>

	The drag image may be updated during a DHTML drag.  This includes updating
	from a Timer instead of a drag event handler.  In addition, an arbitrary
	element can be set as the one to snapshot for the drag image.

        Reviewed by John

        * khtml/ecma/kjs_events.cpp:
        (ClipboardProtoFunc::tryCall):  setDragImage accepts a node.  Previously,
	it had to be an Image object.
        * khtml/rendering/render_object.cpp:
        (RenderObject::paintingRootRect):  Also returns top element's rect.
        * khtml/rendering/render_object.h:
        * khtml/xml/dom2_eventsimpl.h:
        * kwq/KWQClipboard.h:  New security mode where image is still writable, but
	pasteboard is not.
        (KWQClipboard::):
        (KWQClipboard::setDragHasStarted):
        * kwq/KWQClipboard.mm:
        (KWQClipboard::KWQClipboard):    Part may be passed.  Needed in the source
	case to generate an image from an element.
        (KWQClipboard::setAccessPolicy):  New, replaces former becomeNumb method
	which wasn't flexible enough.
        (KWQClipboard::accessPolicy):  New getter.
        (KWQClipboard::dragImage):  No change, diff confusion.
        (KWQClipboard::setDragImage):  Call new helper, below.
        (KWQClipboard::dragImageElement):  New, return any element set.
        (KWQClipboard::setDragImageElement):  New, call new helper.
        (KWQClipboard::setDragImage):  New helper, set the image via either a
	pixmap or an element to snapshot, pushes the result to WebKit if we've
	already started the drag.
        (KWQClipboard::dragNSImage):  Generate an NSImage and mouse offset, no
	matter how the drag image was set (Image or element).
        * kwq/KWQKHTMLPart.h:  A single clipboard is kept over the life of a
	source drag instead of making one for each event.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::KWQKHTMLPart):  Init clipboard.
        (KWQKHTMLPart::~KWQKHTMLPart):  Free clipboard.
        (KWQKHTMLPart::freeClipboard):  New helper.
        (KWQKHTMLPart::dispatchDragSrcEvent):  Most code moved to caller.
        (KWQKHTMLPart::khtmlMouseMoveEvent):  Make clipboard for this drag session.
	Init clipboard to make an image from the dragSource element.  Mark the
	drag as having started.
        (KWQKHTMLPart::dragSourceMovedTo):  Clipboard will update WK with any new
	drag image, so we don't need to.
        (KWQKHTMLPart::dragSourceEndedAt):  Ditto.
        (KWQKHTMLPart::elementImage):  Also return element rect.
        * kwq/WebCoreBridge.h:  Glue moved to WebCoreGraphicsBridge.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge dragOperationForDraggingInfo:]):  Use new method.
        (-[WebCoreBridge dragExitedWithDraggingInfo:]):  Ditto
        (-[WebCoreBridge concludeDragForDraggingInfo:]):  Ditto
        * kwq/WebCoreGraphicsBridge.h:
        * kwq/WebCoreGraphicsBridge.m:
        (-[WebCoreGraphicsBridge setDraggingImage:at:]):  Glue moved from WebBridge

2004-06-11  Chris Blumenberg  <cblu@apple.com>

	Support for WebKit drag & drop API.

        Reviewed by trey.

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge _positionForPoint:]): new
        (-[WebCoreBridge moveDragCaretToPoint:]): call _positionForPoint
        (-[WebCoreBridge editableDOMRangeForPoint:]): new

2004-06-11  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed <rdar://problem/3645846>: (REGRESSION: Stuck "Loading" when logging into Google's Gmail on newer versions of Safari)

        * khtml/html/html_baseimpl.cpp: (HTMLFrameElementImpl::parseHTMLAttribute):
        Call through to base class for ATTR_ID so the "has ID" bit gets set.
        * khtml/html/html_imageimpl.cpp:
        (HTMLImageElementImpl::parseHTMLAttribute): Move ATTR_COMPOSITE code up and out of the way so
        it doesn't screw up ATTR_ID parsing.
        (HTMLMapElementImpl::parseHTMLAttribute): Call through to base class for ATTR_ID
        so the "has ID" bit gets set.
        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::parseHTMLAttribute): Remove ATTR_ID case; not needed.
        (HTMLParamElementImpl::parseHTMLAttribute): Call through to base class for ATTR_ID
        so the "has ID" bit gets set.

2004-06-11  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Fix for this bug:
        
        <rdar://problem/3659587>: "when typing in Blot, bold style does not carry over to next line after pressing 'return'"

        Did some work to improve the insert newline command. The refinement is to insert the newline
        at the upstream position of the caret, ensuring that the newline takes on the 
        appropriate style, and does not let the caret "escape" from an element that is
        conferring style.

        * khtml/editing/htmlediting_impl.cpp:
        (khtml::InputNewlineCommandImpl::insertNodeAfterPosition): New helper. Adds smarts about adding
        newlines when the selection is a caret in a block.
        (khtml::InputNewlineCommandImpl::insertNodeBeforePosition): Ditto.
        (khtml::InputNewlineCommandImpl::doApply): Simplified cases. One case in the code could not
        happen.
        * khtml/editing/htmlediting_impl.h:

        Fix for this bug:
    
        <rdar://problem/3654864>: "Pasting content at start of line places it at end of previous line"

        (khtml::InputTextCommandImpl::prepareForTextInsertion): Simple code mistake. Content was indeed
        being added to the line before. Fixed to add new content after the line break.

2004-07-10  Trey Matteson  <trey@apple.com>

	Prep work for latest delegate API for dragging.  In addition, I also straightened out all
	the cases of DHTML setting a drag image or setting pasteboard data, and how that would
	override WebKit's default behavior (which follows how WinIE does things).

        Reviewed by Chris.

        * khtml/rendering/render_object.cpp:
        (RenderObject::draggableNode):  Obey new params for whether a DHTML or UserAgent (i.e.,
	WebKit) drag source is allowed.
        * khtml/rendering/render_object.h:
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::dispatchDragSrcEvent):  Setting pasteboard data was moved out of here, now
	caller's responsibility.
        (KWQKHTMLPart::khtmlMouseMoveEvent):  Ask bridge for allowable drag actions (DHTML vs UA).
	Only send drag events if DHTML is allowed.  Only generate a drag image if the source is
	a DHTML element.  Note whether event handler set any pasteboard	data, and pass that fact
	to WebKit.
        (KWQKHTMLPart::dragSourceMovedTo): Only send drag events if DHTML is allowed.  
        (KWQKHTMLPart::dragSourceEndedAt): Only send drag events if DHTML is allowed.  
        * kwq/WebCoreBridge.h:

2004-06-11  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Trey

        Lay some groundwork for better testing of inserting newlines. Layout
        tests that use this new code will be coming soon.

        * khtml/editing/jsediting.cpp: Add commands for bold and inserting newlines.
        * layout-tests/editing/editing.js: Added new insertNewline command.
        which calls through to TypingCommand::insertNewline. There was no way to get
        to this command from JS before this addition.

2004-06-11  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        Javascript execCommand system wants to use case-insensitive QDict.
        The interface for QDict offers this feature, but it was never implemented.
        Now it is.

        * kwq/KWQDictImpl.h: Declare bool to store case-sensitive bit.
        * kwq/KWQDictImpl.mm:
        (KWQDictImpl::KWQDictImpl): No longer drops caseSensitive on the floor; stores
        it in instance variable.
        (KWQDictImpl::insert): Make lowercase version of key for operation, if necessary.
        (KWQDictImpl::remove): Ditto.
        (KWQDictImpl::find): Ditto.
        (KWQDictIteratorImpl::currentStringKey): Whitespace cleanup.

=== Safari-144 ===

2004-06-10  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        Fix for this bug:
        
        <rdar://problem/3654850>: "Style changes do not work across blocks"
        
        Now, applying styles works across blocks. I did quite a bit
        of internal redsign on the member functions of this class to
        make this work. As a bonus, from an architectural standpoint,
        all style changes are now done "in place". There is no more
        copying of content in order to perform style changes.

        * khtml/editing/htmlediting_impl.cpp:
        (khtml::ApplyStyleCommandImpl::doApply):
        (khtml::ApplyStyleCommandImpl::removeHTMLStyleNode):
        (khtml::ApplyStyleCommandImpl::removeCSSStyle):
        (khtml::ApplyStyleCommandImpl::removeStyle):
        (khtml::ApplyStyleCommandImpl::nodeFullySelected):
        (khtml::ApplyStyleCommandImpl::splitTextAtStartIfNeeded):
        (khtml::ApplyStyleCommandImpl::splitTextAtEndIfNeeded):
        (khtml::ApplyStyleCommandImpl::surroundNodeRangeWithElement):
        (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded):
        (khtml::ApplyStyleCommandImpl::positionInsertionPoint):
        * khtml/editing/htmlediting_impl.h:

2004-06-10  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - filled out execCommand a lot more
        - fixed <rdar://problem/3685231>: (execCommand italic is not implemented)
        - fixed <rdar://problem/3685232>: (execCommand bold is not implemented)
        - fixed <rdar://problem/3675899>: (Make queryCommandIndeterm work as specified in the Javascript execCommand Compatibility Plan)
        - fixed <rdar://problem/3675901>: (Make queryCommandState work as specified in the Javascript execCommand Compatibility Plan)
        - fixed <rdar://problem/3675904>: (Make queryCommandValue work as specified in the Javascript execCommand Compatibility Plan)

        * khtml/editing/jsediting.cpp:
        (DOM::JSEditor::queryCommandIndeterm): Changed to use KHTMLPart::TriState instead of CommandState.
        (DOM::JSEditor::queryCommandState): Ditto.
        (execStyleChange): Changed to use KHTMLPart::applyStyle.
        (stateStyle): Used KHTMLPart::selectionHasStyle for this.
        (selectionStartHasStyle): Use KHTMLPart::selectionStartHasStyle for this.
        (valueStyle): Used KHTMLPart::selectionStartStylePropertyValue for this.
        (execBold): Implemented toggling, using selectionStartHasStyle.
        (execItalic): Implemented toggling, using selectionStartHasStyle.
        (execPrint): Implemented.
        (enabledRedo): Implemented, using canRedo.
        (enabledUndo): Implemented, using canUndo.
        (stateNone): Renamed from stateNo.
        (valueBackColor): Implemented, using valueStyle.
        (valueFontName): Implemented, using valueStyle.
        (valueFontSize): Implemented, using valueStyle.
        (valueForeColor): Implemented, using valueStyle.
        (valueFontSize): Implemented, using valueStyle.

        * khtml/khtml_part.h: Added editing operations.
        * khtml/khtml_part.cpp:
        (KHTMLPart::copyToPasteboard): Added.
        (KHTMLPart::cutToPasteboard): Added.
        (KHTMLPart::redo): Added.
        (KHTMLPart::undo): Added.
        (KHTMLPart::applyStyle): Added.
        (updateState): Added.
        (KHTMLPart::selectionHasStyle): Added.
        (KHTMLPart::selectionStartHasStyle): Added.
        (KHTMLPart::selectionStartStylePropertyValue): Added.
        (KHTMLPart::selectionComputedStyle): Added.
        (KHTMLPart::print): Added.

        * khtml/ecma/kjs_window.cpp: (WindowFunc::tryCall): Call print() on plain old part, not KWQ(part).

        * kwq/KWQKHTMLPart.h: Removed print(), added _haveUndoRedoOperations.
        * kwq/KWQKHTMLPart.mm:
        (KHTMLPart::print): Moved from KWQKHTMLPart to KHTMLPart.
        (KWQKHTMLPart::registerCommandForUndo): Moved code here from bridge.
        (KWQKHTMLPart::registerCommandForRedo): Moved code here from bridge.
        (KWQKHTMLPart::clearUndoRedoOperations): Moved code here from bridge.
        (KWQKHTMLPart::issueUndoCommand): Moved code here from bridge.
        (KWQKHTMLPart::issueRedoCommand): Moved code here from bridge.
        (KWQKHTMLPart::issuePasteCommand): Moved code here from bridge.
        (KHTMLPart::canUndo): Added.
        (KHTMLPart::canRedo): Added.

        * kwq/WebCoreBridge.h: Added undoManager, removed undo-related methods.
        * kwq/WebCoreBridge.mm: (-[WebCoreBridge applyStyle:]): Changed to call
        KHTMLPart::applyStyle.

        * WebCore.pbproj/.cvsignore: Updated for new Xcode files.

2004-06-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	<rdar://problem/3671555>: Blot scrolls to the top every time you type
	
        * khtml/xml/dom_selection.cpp:
        (DOM::Selection::getRepaintRect): If the caret position is invalid, recompute it.

2004-06-09  David Hyatt  <hyatt@apple.com>

	Fix for 3607091, implement a style that prevents zoom and min font size from taking effect.
	The name of the new style is "-apple-text-size-adjust" with values of "none" and "auto."  The default
	is "auto."
	
        Reviewed by mjs

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::styleForElement):
        (khtml::CSSStyleSelector::pseudoStyleForElement):
        (khtml::CSSStyleSelector::applyDeclarations):
        (khtml::CSSStyleSelector::applyProperty):
        (khtml::CSSStyleSelector::checkForTextSizeAdjust):
        * khtml/css/cssstyleselector.h:
        * khtml/rendering/render_style.cpp:
        (textSizeAdjust):
        (StyleCSS3InheritedData):
        (StyleCSS3InheritedData::operator==):
        (RenderStyle::diff):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::lineClamp):
        (khtml::RenderStyle::textSizeAdjust):
        (khtml::RenderStyle::setTextSizeAdjust):
        (khtml::RenderStyle::initialTextSizeAdjust):

2004-06-09  David Hyatt  <hyatt@apple.com>

	Implement parsing and setting of the text-overflow CSS3 property.
	
        Reviewed by kocienda

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/rendering/render_style.cpp:
        (textOverflow):
        (StyleCSS3NonInheritedData::operator==):
        (RenderStyle::diff):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::textOverflow):
        (khtml::RenderStyle::setTextOverflow):
        (khtml::RenderStyle::initialTextOverflow):

2004-06-09  David Hyatt  <hyatt@apple.com>

	Fix for 3678031, implement better flexing for Emerson headers.  This involved adding support for max-width: intrinsic,
	fixing the box layout algorithm to properly deal with max-widths, and implementing support for baseline alignment
	so that boxes can be aligned vertically along their interior baselines.
	
        Reviewed by kocienda

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        (CSSParser::parseShadow):
        * khtml/css/cssparser.h:
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/misc/khtmllayout.h:
        (khtml::):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::baselinePosition):
        (khtml::RenderBlock::getBaselineOfFirstLineBox):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_box.cpp:
        (RenderBox::RenderBox):
        (RenderBox::overrideWidth):
        (RenderBox::overrideHeight):
        (RenderBox::calcWidth):
        (RenderBox::calcHeight):
        * khtml/rendering/render_box.h:
        (khtml::RenderBox::overrideSize):
        (khtml::RenderBox::setOverrideSize):
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::calcMinMaxWidth):
        (khtml::RenderFlexibleBox::layoutBlock):
        (khtml::RenderFlexibleBox::layoutHorizontalBox):
        (khtml::RenderFlexibleBox::layoutVerticalBox):
        (khtml::RenderFlexibleBox::placeChild):
        (khtml::RenderFlexibleBox::allowedChildFlex):
        * khtml/rendering/render_flexbox.h:
        * khtml/rendering/render_image.cpp:
        (RenderImage::isWidthSpecified):
        (RenderImage::isHeightSpecified):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::getBaselineOfFirstLineBox):
        (khtml::RenderObject::overrideSize):
        (khtml::RenderObject::overrideWidth):
        (khtml::RenderObject::overrideHeight):
        (khtml::RenderObject::setOverrideSize):
        * khtml/rendering/render_style.cpp:
        (StyleFlexibleBoxData::StyleFlexibleBoxData):
        (StyleFlexibleBoxData::operator==):
        (ShadowData::operator==):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::boxPack):
        (khtml::RenderStyle::setBoxPack):
        * khtml/rendering/table_layout.cpp:
        (AutoTableLayout::layout):

2004-06-09  Richard Williamson   <rjw@apple.com>

	Added support for drawing un-rasterized transformed PDFs.

        Reviewed by John.

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):

2004-06-09  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - implemented still more execCommand commands

        * khtml/editing/jsediting.cpp: Added a lot more commands, and reformatted a bit.

2004-06-08  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - implemented a bunch more execCommand commands
        - fixed <rdar://problem/3684792>: (JavaScript execCommand("paste") presents security issues)
        - fixed <rdar://problem/3675898>: (Make queryCommandEnabled work as specified in the Javascript execCommand Compatibility Plan)
        - fixed <rdar://problem/3675903>: (Make queryCommandSupported work as specified in the Javascript execCommand Compatibility Plan)
        - about half of <rdar://problem/3685231>: (execCommand italic is not implemented)
        - about half of <rdar://problem/3685232>: (execCommand bold is not implemented)

        * khtml/editing/jsediting.h: Made constructor inline. Deleted a few unneeded member functions
        that are now just private functions inside jsediting.cpp.

        * khtml/editing/jsediting.cpp:
        (commandImp): Changed this around, so the dictionary is a static local to this function,
        and initialized with C++ "first time initialization" rule.
        (DOM::JSEditor::execCommand): Got rid of special case for 0 for function pointer and added const.
        (DOM::JSEditor::queryCommandEnabled): Ditto.
        (DOM::JSEditor::queryCommandIndeterm): Got rid of special case for 0 for function pointer, added const,
        and use a common three-state state function rather than a separate "indeterm" function.
        (DOM::JSEditor::queryCommandState): Ditto.
        (DOM::JSEditor::queryCommandValue): More of the same.
        (execNotImplemented): Added. Used for unimplemented commands; there are only a few left.
        (execCopy): Renamed.
        (execCut): Renamed.
        (execDelete): Renamed.
        (execInsertText): Renamed.
        (execPaste): Renamed, and disabled.
        (execRedo): Renamed.
        (execSelectAll): Renamed.
        (execUndo): Renamed.
        (execStyleChange): Added. Helper function for commands that are style changes.
        (execBold): Added.
        (execItalic): Added.
        (execJustifyCenter): Added.
        (execJustifyFull): Added.
        (execJustifyLeft): Added.
        (execJustifyRight): Added.
        (execSubscript): Added.
        (execSuperscript): Added.
        (execUnselect): Added.
        (stateNotImplemented): Added. Used for unimplemented state queries; there are a few left.
        (noState): Added.
        (valueNotImplemented): Added. Used for unimplemented value queries; there are a few left.
        (nullStringValue): Added.
        (createCommandDictionary): Changed the initDict function into this function. Added implementations
        for many commands and condensed format so it's easier to work with.

2004-06-08  Darin Adler  <darin@apple.com>

        Reviewed by Vicki.

        - our part of fix to <rdar://problem/3629334>: (REGRESSION (Tiger): titles on pop-ups menus are truncated and show ellipses)

        * kwq/KWQComboBox.mm: (QComboBox::QComboBox): Call setLineBreakMode:NSLineBreakByClipping.
        In the current version of Tiger I am using, this is not implemented yet.

        - a couple of other unrelated changes

        * khtml/rendering/render_form.cpp: (RenderTextArea::calcMinMaxWidth): Put a little more code
        inside the APPLE_CHANGES ifdef.
        * kwq/KWQTextEdit.h: Remove unused setTabStopWidth function, and make empty setTextFormat
        function an inline for slightly smaller code size.
        * kwq/KWQTextEdit.mm: Ditto.
        * kwq/KWQTextField.mm: Update copyright date.

2004-06-08  Trey Matteson  <trey@apple.com>

	A DHTML drag source can now change the dragging image during the drag.  Currently
	it may only be set to a static image.

        Reviewed by John

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::dragSourceMovedTo):  If the ondrag event handler set an image,
	pass it to WebKit.
        * kwq/WebCoreBridge.h:

2004-06-08  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Changes to the selection state for these tests as a result of my previous
        checkin. The changes are minor to a couple of offsets. I looked at the
        changes and approve them.

        * layout-tests/editing/deleting/delete-block-contents-001-expected.txt
        * layout-tests/editing/deleting/delete-block-contents-002-expected.txt
        * layout-tests/editing/deleting/delete-block-contents-003-expected.txt

2004-06-08  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Fix for this bug:

        <rdar://problem/3654841>: "Hitting delete key with start of block selected 
        does not merge content with preceding block"

        Selections that span blocks now work correctly for deleting the selection and inserting
        over the selection. The largest part of the change is adding a new field to the 
        RemoveNodeAndPruneCommand and its impl version. This was done since the starting block
        for a multi-block selection should always be preserved when deleting, and this was
        a convenient way to express this using the code structure already in place.
        
        * khtml/editing/htmlediting.cpp:
        (khtml::RemoveNodeAndPruneCommand::RemoveNodeAndPruneCommand): Modify this command to 
        take two nodes: the node to remove and a node to stop at when pruning back up the tree.
        (khtml::RemoveNodeAndPruneCommand::pruneNode): New accessor, replaces old node() accessor.
        (khtml::RemoveNodeAndPruneCommand::stopNode): New accessor for additional feature described 
        above.
        * khtml/editing/htmlediting.h:
        * khtml/editing/htmlediting_impl.cpp:
        (khtml::shouldPruneNode): blow flow renderers can now be deleted, but not if they are a 
        rootEditableElement.
        (khtml::CompositeEditCommandImpl::removeNodeAndPrune): Pass new stopNode param and change the
        name of the existing node argument to pruneNode to distinguish it.
        (khtml::DeleteSelectionCommandImpl::doApply): Pass the block containing the start of the
        selection to removeNodeAndPrune in each case. Also, add one little loop to move all
        the content from the block containing the end of the selection if that block is different
        than the start block.
        (khtml::RemoveNodeAndPruneCommandImpl::RemoveNodeAndPruneCommandImpl): Implement the
        pruneNode/stopNode design already described.
        (khtml::RemoveNodeAndPruneCommandImpl::~RemoveNodeAndPruneCommandImpl): Manage the
        lifecycle of stopNode.
        (khtml::RemoveNodeAndPruneCommandImpl::doApply): Add a check to stop at the stop
        node while pruning.
        * khtml/editing/htmlediting_impl.h:
        (khtml::RemoveNodeAndPruneCommandImpl::pruneNode): New accessor.
        (khtml::RemoveNodeAndPruneCommandImpl::stopNode): Ditto.

2004-06-07  Trey Matteson  <trey@apple.com>

	Clipboard access during DHTML dragging is made secure.

        Reviewed by John.

        * kwq/KWQClipboard.h:
        (KWQClipboard::):
        * kwq/KWQClipboard.mm:
        (KWQClipboard::KWQClipboard):    Init new policy and changeCount members.
        (KWQClipboard::becomeNumb):  Set policy to numb.
        (KWQClipboard::clearData):   Check policy.
        (KWQClipboard::clearAllData):   Check policy.
        (KWQClipboard::getData):   Check policy and changeCount.
        (KWQClipboard::setData):   Check policy.
        (KWQClipboard::types):   Check policy and ChangeCount.
        (KWQClipboard::setDragLocation):   Check policy.
        (KWQClipboard::setDragImage):   Check policy.
        (KWQClipboard::setDropEffect):   Check policy.
        (KWQClipboard::setEffectAllowed):   Check policy.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::dispatchDragSrcEvent):  Set policy when creating clipboard,
	and numb-ify it when we're done.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge dragOperationForDraggingInfo:]): Set policy when creating clipboard,
	and numb-ify it when we're done.
        (-[WebCoreBridge dragExitedWithDraggingInfo:]):  Ditto
        (-[WebCoreBridge concludeDragForDraggingInfo:]):  Ditto

2004-06-08  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me

        * khtml/editing/jsediting.cpp:
        (DOM::EditorCommand::): Stray capital letter in "selectAll" command static
        initializer prevented the command from ever working since the command
        strings are lower-cased when trying to find a match, but not when they
        are inserted into the dictionary. This is a one character change to make
        the string "selectall" in the initializer.

2004-06-07  Trey Matteson  <trey@apple.com>

	WebCore will now generate a default drag image when an element serves as a drag
	source.  The basic idea is the image contains the element and all its children.

	As for the implementation, instead of adding a new paintAction I added a new
	field to the paintInfo struct, "paintingRoot".  If this field is set, painting will
	only paint that root's descendants.

	Some code also moved from the bridge to the part, to be available within WebCore.

        Reviewed by hyatt.

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paintObject):  Pass along paintingRoot to kids.
        (khtml::RenderBlock::paintFloats):  Pass along paintingRoot to kids.
        * khtml/rendering/render_box.cpp:
        (RenderBox::paintBoxDecorations):  Test paintingRoot before painting.
        * khtml/rendering/render_canvasimage.cpp:
        (RenderCanvasImage::paint):    Test paintingRoot before painting.
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::paintLineBoxBackgroundBorder):    Test paintingRoot before painting.
        (RenderFlow::paintLineBoxDecorations):    Test paintingRoot before painting.
        * khtml/rendering/render_image.cpp:
        (RenderImage::paint):    Test paintingRoot before painting.
        * khtml/rendering/render_inline.cpp:
        (RenderInline::paint):    Pass along paintingRoot to kids.
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::paint):   Pass along paintingRoot to kids.
        (RenderLayer:: paintLayer):  Pass along paintingRoot to kids.  Test if we are within the
	paintingRoot to decide whether to pass the root to our renderer.
        * khtml/rendering/render_layer.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::hasAncestor):  New utility.
        (RenderObject::absoluteBoundingBoxRect): Helper for paintingRootRect
        (RenderObject::addAbsoluteRectForLayer):  Helper for paintingRootRect
        (RenderObject::paintingRootRect):  Return rect that will be painted if we are
	the painting root.
        (RenderObject::draggableNode):  Add test to avoid rare NULL ptr crash.
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::PaintInfo::PaintInfo):  Add paintingRoot field.
        (khtml::RenderObject::paintingRootForChildren):  New utility.  Return the current
	paintingRoot, or nil if we are the root (so kids draw normally).
        (khtml::RenderObject::shouldPaintWithinRoot):  New utility.  We can paint if we
	are the paintingRoot, or no root is set.
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::shouldPaint):  Pass along paintingRoot to kids.
        * khtml/rendering/render_table.cpp:
        (RenderTable::paint):   Pass along paintingRoot to kids.
        * khtml/rendering/render_text.cpp:
        (RenderText::paint):  Test paintingRoot before painting.
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::KWQKHTMLPart):  Init new _elementToDraw member.
        (KWQKHTMLPart::paint):  Generalized to handle cases of painting selection or a
	given element.
        (KWQKHTMLPart::khtmlMouseMoveEvent):  Make a default image if dragSrc didn't
	provide one.
        (KWQKHTMLPart::selectionRect):  Moved from bridge.
        (KWQKHTMLPart::visibleSelectionRect):  Ditto.
        (KWQKHTMLPart::imageFromRect):  Newly factored code, from bridge.
        (KWQKHTMLPart::selectionImage):  Moved from bridge, wrapper around imageFromRect.
        (KWQKHTMLPart::elementImage):  New method, wrapper around imageFromRect.
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge drawRect:withPainter:]):  Just call part to draw.
        (-[WebCoreBridge visibleSelectionRect]):  Guts moved to part.
        (-[WebCoreBridge selectionImage]):  Ditto.

2004-06-07  Darin Adler  <darin@apple.com>

        Reviewed by Chris.

        - fixed <rdar://problem/3682821>: (setTimeout fails when additional parameters are used and timeout function is a string)

        * khtml/ecma/kjs_window.cpp: (WindowFunc::tryCall): Ignore excess arguments instead
        of rejecting the argument list for window.scrollBy, scroll, scrollTo, moveBy, moveTo,
        resizeBy, resizeTo, and setTimeout (when the timeout is a string rather than an object).

        - did a refinement of JSEditor to be slightly more efficient, and not have to edit
          both the .cpp file and the .h when adding more implementation

        * khtml/khtml_part.h: Hack so we can get to the docImpl and xmlDocImpl without being a friend.
        * khtml/editing/jsediting.h: Simplified a bit.
        * khtml/editing/jsediting.cpp: Redid to use a table, and simplified a bit.

2004-06-07  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Fix for this bug:
        
        <rdar://problem/3682354>: "Typing style does not work yet"
        
        Did the final hook-up of support that has landed in the tree in the
        recent past as part of ongoing style-application work.
        
        For the most part, this patch modifies the InputNewlineCommandImpl and
        InputTextCommandImpl commands to insert a styling span when there is
        a typing style active. 

        * khtml/editing/htmlediting_impl.cpp:
        (khtml::CompositeEditCommandImpl::createTypingStyleElement): Helper
        shared by the two commands modified.
        (khtml::InputNewlineCommandImpl::doApply): Create a styling span if the
        part has a typing style. Maintain a nodeToInsert local variable, which is
        either the break to insert or a styling span containing the break. Also,
        remove some utterly bogus derefs. They are just plain wrong.
        (khtml::InputTextCommandImpl::InputTextCommandImpl): Don't need to keep
        m_insertedTextNode. The composite commands this command uses will keep
        track of that object's lifetime. We do not need to do that here.
        (khtml::InputTextCommandImpl::~InputTextCommandImpl): No longer need 
        to deref obsolete m_insertedTextNode.
        (khtml::InputTextCommandImpl::prepareForTextInsertion): Handle the case
        where a styling span needs to be added.
        (khtml::TypingCommandImpl::insertText): Create a new InputTextCommand when
        there is an active typping style.
        * khtml/editing/htmlediting_impl.h: Declare createTypingStyleElement helper.
        Remove m_insertedTextNode from InputTextCommandImpl.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge applyStyle:]): Swicth on the state of the selection, calling
        setTypingStyle when a caret and ApplyStyleCommand when a range.

2004-06-07  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        * khtml/editing/jsediting.h: Elide some unnecessary namespace prefixes.
        * khtml/editing/jsediting.cpp: Make typed constants instead of macros.
        (DOM::JSEditor::commandDict): Elide unnecessary namespace prefix.
        (DOM::JSEditor::execCommand): Remove xxxNotImplemented functions; just return false instead.
        (DOM::JSEditor::queryCommandEnabled): Ditto.
        (DOM::JSEditor::queryCommandIndeterm): Ditto.
        (DOM::JSEditor::queryCommandState): Ditto.
        (DOM::JSEditor::queryCommandSupported): Ditto.
        (DOM::JSEditor::queryCommandValue): Ditto.

2004-06-05  Trey Matteson  <trey@apple.com>

	As agreed with Hyatt and Louch, do not post incoming dragging events
	to text nodes.

        Reviewed by Maciej

        * khtml/khtmlview.cpp:
        (KHTMLView::updateDragAndDrop):  For any drag target that is a text node,
	use its parent instead.

2004-06-03  Trey Matteson  <trey@apple.com>

	DHTML dragging uses the Cocoa NSDragOperation on both the source and dest ends.

	In addition, I caught a prime gaffe where I had used "dropAllowed" instead of "effectAllowed"
	for that particular WinIE property.  That is renamed throughout.

        Reviewed by rjw

        * khtml/ecma/kjs_events.cpp:
        (stringOrUndefined):  New little helper.
        (Clipboard::getValueProperty):  Return Undefined if dropEffect or effectAllowed are not set.
        (Clipboard::putValue):  Rename.
        * khtml/ecma/kjs_events.h:
        (KJS::Clipboard::):  Rename.
        * khtml/ecma/kjs_events.lut.h:
        * khtml/xml/dom2_eventsimpl.h:  Rename.
        * kwq/KWQClipboard.h: Rename, add access to Cocoa drag op.
        * kwq/KWQClipboard.mm:
        (KWQClipboard::dropEffect):   These 4 just moved in the file.
        (KWQClipboard::setDropEffect):
        (KWQClipboard::effectAllowed):
        (KWQClipboard::setEffectAllowed):
        (cocoaOpFromIEOp):  Convert from an IE operation string to a Cocoa DragOp
        (IEOpFromCocoaOp):  and vice-versa
        (KWQClipboard::sourceOperation):  Return effectAllowed, converted to a NSDragOp
        (KWQClipboard::destinationOperation):  Return dropEffect, converted to a NSDragOp
        (KWQClipboard::setSourceOperation):  Set effectAllowed, using a Cocoa value
        (KWQClipboard::setDestinationOperation):  Set dropEffect, using a Cocoa value
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::dispatchDragSrcEvent):  Return the drag op specified by the source element.
        (KWQKHTMLPart::khtmlMouseMoveEvent):  Pass our drag op up to WebKit.
        (KWQKHTMLPart::dragSourceMovedTo):  Pass NULL for new arg.
        (KWQKHTMLPart::dragSourceEndedAt):  Ditto
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge dragOperationForDraggingInfo:]):  Set the incoming dragOp onto the clipboard
	so DHTML can access it.  In addition, validate whatever op DHTML returns so we play well
	with Cocoa.

2004-06-04  David Hyatt  <hyatt@apple.com>

	Add support for auto values in flex transitions.  Add support for mapping the back end values to
	front end values.  Next it's time to actually try to use this stuff in render_flexbox.
	
        Reviewed by darin

        * khtml/css/css_valueimpl.cpp:
        (length):
        * khtml/css/css_valueimpl.h:
        (DOM::FlexGroupTransitionValueImpl::isAuto):
        * khtml/css/cssparser.cpp:
        (FlexGroupTransitionParseContext::length):
        (FlexGroupTransitionParseContext::commitAutoValue):
        (FlexGroupTransitionParseContext::commitValue):
        (CSSParser::parseFlexGroupTransition):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/rendering/render_style.cpp:
        (FlexGroupTransitionData::operator==):
        * khtml/rendering/render_style.h:
        (khtml::FlexGroupTransitionData::next):
        (khtml::FlexGroupTransitionData::isAuto):

=== Safari-143 ===

2004-06-04  Kevin Decker  <kdecker@apple.com>

        Reviewed by Dave.

        - kwq/KWQKHTMLPart.mm: addMessagetoConsole places sourceURL in the dictionary
        - khtml/xml/dom_docimpl.cpp: right now, we don't have a way to get a url,
          so we leave this blank
        - khtml/ecma/kjs_window.cpp: still need to get the real line number and sourceURL
        - khtml/ecma/kjs_proxy.cpp: now passing the sourceURL to addMessageToConsole
        - khtml/ecma/kjs_events.cpp: still need to grab an accurate line number and sourceURL
        
        * khtml/ecma/kjs_events.cpp:
        (JSEventListener::handleEvent):
        (JSLazyEventListener::handleEvent):
        * khtml/ecma/kjs_proxy.cpp:
        (KJSProxyImpl::evaluate):
        * khtml/ecma/kjs_window.cpp:
        (Window::isSafeScript):
        (ScheduledAction::execute):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::open):
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::addMessageToConsole):

2004-06-04  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Fix a comical little bug where the style-applying code did not take into
        account deleting content from the start of a block. After the deletion, 
        the caret is placed in the node before the deleted content and so 
        inserting a styled fragment after the deletion position works great.
        The problem is that if the selectionis at the start of a block, there
        is no "position before the deletion" and the caret is placed in the new
        first child of the block. Inserting the styled content after this 
        node is just plain wrong. Now, this case is handled correctly, and the
        styled content is inserted in the proper position.

        * khtml/editing/htmlediting_impl.cpp:
        (khtml::ApplyStyleCommandImpl::insertFragment):

2004-06-04  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren): Only add additional line height
        in for root editable elements. This helps to keep layout from deviating too
        much from the intended page layout, but still gives an empty document a line
        in which it can blink the caret.

2004-06-04  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Made some progress on this set of related bugs:
        
        <rdar://problem/3675867>: "Make execCommand work as specified in the Javascript execCommand Compatibility Plan"
        <rdar://problem/3675898>: "Make queryCommandEnabled work as specified in the Javascript execCommand Compatibility Plan"
        <rdar://problem/3675899>: "Make queryCommandIndeterm work as specified in the Javascript execCommand Compatibility Plan"
        <rdar://problem/3675901>: "Make queryCommandState work as specified in the Javascript execCommand Compatibility Plan"
        <rdar://problem/3675903>: "Make queryCommandSupported work as specified in the Javascript execCommand Compatibility Plan"
        <rdar://problem/3675904>: "Make queryCommandValue work as specified in the Javascript execCommand Compatibility Plan"
        
        I did several things to move the ahead with the plan:
        
        1. The latter five methods did not appear in the tree at all. Now they do, although
        
        2. I removed the implementation for these editing methods from dom_docimpl.cpp, and moved
           them out to new js_editing.cpp/js_editing.h files. The remaining code in dom_docimpl.cpp
           is glue to call over to the new JSEditor object defined in the new files.
           
        3. For a couple of the command implementations in js_editing.cpp, I made a stab at returning sensible values.
           For others, I just return place-holder values. I have added some comments to describe what has been done and
           what still needs to be done. 

        * WebCore.pbproj/project.pbxproj:
        * khtml/dom/dom_doc.cpp: Add call-overs for these methods.
        (DOM::Document::queryCommandEnabled):
        (DOM::Document::queryCommandIndeterm):
        (DOM::Document::queryCommandState):
        (DOM::Document::queryCommandSupported):
        (DOM::Document::queryCommandValue):
        * khtml/dom/dom_doc.h:
        * khtml/ecma/kjs_dom.cpp: Add queryCommandXXX terminology.
        (DOMDocumentProtoFunc::tryCall):
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMDocument::):
        * khtml/ecma/kjs_dom.lut.h:
        (KJS::):
        * khtml/editing/jsediting.cpp: Added. This file implements the guts of editing-related JS methods.
        (DOM::execCommandNotImplemented):
        (DOM::queryBoolNotImplemented):
        (DOM::queryValueNotImplemented):
        (DOM::JSEditor::commandDict):
        (DOM::JSEditor::JSEditor):
        (DOM::JSEditor::~JSEditor):
        (DOM::JSEditor::commandIdentifier):
        (DOM::JSEditor::addCommand):
        (DOM::JSEditor::initDict):
        (DOM::JSEditor::execCommand):
        (DOM::JSEditor::queryCommandEnabled):
        (DOM::JSEditor::queryCommandIndeterm):
        (DOM::JSEditor::queryCommandState):
        (DOM::JSEditor::queryCommandSupported):
        (DOM::JSEditor::queryCommandValue):
        (DOM::JSEditor::execCommandCopy):
        (DOM::JSEditor::execCommandCut):
        (DOM::JSEditor::execCommandDelete):
        (DOM::JSEditor::execCommandInsertText):
        (DOM::JSEditor::execCommandPaste):
        (DOM::JSEditor::execCommandRedo):
        (DOM::JSEditor::execCommandSelectAll):
        (DOM::JSEditor::execCommandUndo):
        (DOM::JSEditor::enabledIfPartNotNull):
        (DOM::JSEditor::enabledIfSelectionNotEmpty):
        (DOM::JSEditor::enabledIfSelectionIsRange):
        (DOM::JSEditor::commandSupported):
        * khtml/editing/jsediting.h: Added.
        (DOM::JSEditor::CommandIdentifier::CommandIdentifier):
        (DOM::JSEditor::document):
        (DOM::JSEditor::part):
        * khtml/xml/dom_docimpl.cpp: Rework JS editing support into glue that calls over into new JSEditor object.
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::~DocumentImpl):
        (DocumentImpl::jsEditor):
        (DocumentImpl::execCommand):
        (DocumentImpl::queryCommandEnabled):
        (DocumentImpl::queryCommandIndeterm):
        (DocumentImpl::queryCommandState):
        (DocumentImpl::queryCommandSupported):
        (DocumentImpl::queryCommandValue):
        * khtml/xml/dom_docimpl.h:

2004-06-03  Richard Williamson   <rjw@apple.com>

	Added setCompositeOperation method to Context2D.
	Actually pass composite operation to drawPixmap (instead of 1).

        Reviewed by jay lo.

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):
        * khtml/ecma/kjs_html.h:
        (KJS::Context2D::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::compositeOperatorFromString):
        (QPainter::drawPixmap):

2004-06-03  David Hyatt  <hyatt@apple.com>

	Add support for box-flex-group-transition (whew!), a new property that is going to enable some incredibly
	complicated flexing layouts in HTML.

	This is Stage 1 - wire up the CSS property and make it get parsed into front-end data.  Nobody actually looks
	at this data yet.
	
        Reviewed by darin

        * khtml/css/css_valueimpl.cpp:
        (CSSInheritedValueImpl::cssText):
        (ShadowValueImpl::cssText):
        (length):
        (FlexGroupTransitionValueImpl::~FlexGroupTransitionValueImpl):
        (FlexGroupTransitionValueImpl::cssText):
        * khtml/css/css_valueimpl.h:
        (DOM::FlexGroupTransitionValueImpl::cssValueType):
        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        (CSSParser::parseShadow):
        (FlexGroupTransitionParseContext::length):
        (FlexGroupTransitionParseContext::~FlexGroupTransitionParseContext):
        (FlexGroupTransitionParseContext::failed):
        (FlexGroupTransitionParseContext::allowGroup):
        (FlexGroupTransitionParseContext::commitGroup):
        (FlexGroupTransitionParseContext::commitSlash):
        (FlexGroupTransitionParseContext::commitLength):
        (FlexGroupTransitionParseContext::commitValue):
        (CSSParser::parseFlexGroupTransition):
        * khtml/css/cssparser.h:
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/rendering/render_style.cpp:
        (StyleFlexibleBoxData::StyleFlexibleBoxData):
        (StyleFlexibleBoxData::operator==):
        (StyleFlexibleBoxData::transitionDataEquivalent):
        (StyleCSS3InheritedData::operator==):
        (StyleCSS3InheritedData::shadowDataEquivalent):
        (ShadowData::operator==):
        (RenderStyle::setBoxFlexGroupTransition):
        (length):
        (FlexGroupTransitionData::operator==):
        * khtml/rendering/render_style.h:
        (khtml::FlexGroupTransitionData::next):
        (khtml::FlexGroupTransitionData::~FlexGroupTransitionData):
        (khtml::FlexGroupTransitionData::operator!=):
        (khtml::StyleFlexibleBoxData::~StyleFlexibleBoxData):
        (khtml::RenderStyle::boxFlexGroupTransition):

2004-06-03  Richard Williamson   <rjw@apple.com>

	Add extra sanity check to Image parameter of drawImage...

        Reviewed by Hyatt.

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):

2004-06-02  David Hyatt  <hyatt@apple.com>

	Fix for 3673931, negative margins on objects that dodge floats not handled correctly.
	
        Reviewed by darin

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlockChildren):

2004-06-03  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Fix for layout regression I caused when fixing:

        <rdar://problem/3668619>: "REGRESSION: text placed on pasteboard by WebKit is offset by one character"

        Extra height is added to empty blocks that are editable, so we can click to place
        the caret in them. This extra height was erroneously being added to non-editable
        blocks as a result of my earlier change. After looking at this and doing some
        code review, there are the following changes:
        
        Change away from "containingBlock" terminology in the NodeImpl class. The
        operation we are doing in NodeImpl is not the same as what is done in CSS
        when it uses the term "containingBlock" so:
            containingBlock changes to enclosingBlockFlowElement, and
            rootEditableBlock changes to rootEditableElement
        
        The vast majority of changes here are to make these name changes. The other
        significant piece of work, and the fix for the regression, is to change 
        bidi.cpp to only include this extra line height if a block is empty
        and is content-editable.    

        * khtml/editing/htmlediting_impl.cpp:
        (khtml::leadingWhitespacePosition):
        (khtml::trailingWhitespacePosition):
        (khtml::DeleteSelectionCommandImpl::doApply):
        (khtml::InputNewlineCommandImpl::doApply):
        (khtml::RemoveNodeAndPruneCommandImpl::doApply):
        (khtml::TypingCommandImpl::issueCommandForDeleteKey):
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::relinquishesEditingFocus):
        (DocumentImpl::acceptsEditingFocus):
        * khtml/xml/dom_nodeimpl.cpp:
        * khtml/xml/dom_nodeimpl.h:
        * khtml/xml/dom_position.cpp:
        (DOM::Position::equivalentLeafPosition):
        (DOM::Position::previousCharacterPosition):
        (DOM::Position::nextCharacterPosition):
        (DOM::Position::previousLinePosition):
        (DOM::Position::nextLinePosition):
        (DOM::Position::equivalentUpstreamPosition):
        (DOM::Position::equivalentDownstreamPosition):
        (DOM::Position::atStartOfRootEditableElement):
        (DOM::Position::inRenderedContent):
        (DOM::Position::rendersOnSameLine):
        (DOM::Position::rendersInDifferentPosition):
        (DOM::Position::isLastRenderedPositionInEditableBlock):
        (DOM::Position::inFirstEditableInRootEditableElement):
        (DOM::Position::inLastEditableInRootEditableElement):
        (DOM::Position::inFirstEditableInContainingEditableBlock):
        (DOM::Position::inLastEditableInContainingEditableBlock):
        * khtml/xml/dom_position.h:
        * khtml/xml/dom_selection.cpp:
        (DOM::Selection::moveToRenderedContent):

2004-06-02  Trey Matteson  <trey@apple.com>

	Added types property to JS clipboard object.

        Reviewed by Richard.

        * khtml/ecma/kjs_events.cpp:
        (Clipboard::getValueProperty):  Create JS array for strings coming from the clipboard impl.
        * khtml/ecma/kjs_events.h:
        (KJS::Clipboard::):
        * khtml/ecma/kjs_events.lut.h:
        * kwq/KWQClipboard.mm:
        (MIMETypeFromCocoaType):  New helper routine to map types.
        (KWQClipboard::types):  Implement based on NSPasteboard's types.

2004-06-02  Richard Williamson   <rjw@apple.com>

	Corrected typo ID_IMG should have been ID_CANVAS when
	checking for the canvas composite operator.

        Reviewed by Ken.

        * khtml/rendering/render_canvasimage.cpp:
        (RenderCanvasImage::paint):

2004-06-02  Richard Williamson   <rjw@apple.com>

	Correctly size the <CANVAS> if margins, borders, or
	padding is added.

        Reviewed by Trey.

        * khtml/rendering/render_canvasimage.cpp:
        (RenderCanvasImage::createDrawingContext):

2004-06-01  Trey Matteson  <trey@apple.com>

	First cut at the source side of DHTML dragging.  Following IE, new events are added:
	ondragstart, ondrag, ondragend.  The recently added CSS property -khtml-user-drag can
	be used to make an element draggable.  event.dataTransfer.setDragImage(ImageObject,x,y)
	can be used from ondragstart to set a static image for the dragImage.  x,y is the location
	of the mouse within the image from the upper right corner.  clipboard methods setdata
	and cleardata are implemented.

        Reviewed by hyatt.

        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::getValueProperty):  Boilerplate for new events
        (DOMNode::putValue):  Boilerplate for new events
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMNode::):   Boilerplate for new events
        * khtml/ecma/kjs_dom.lut.h:
        * khtml/ecma/kjs_events.cpp:
        (DOMMouseEvent::getValueProperty):  Return undefined for clipboard when its not a drag event.
        (ClipboardProtoFunc::tryCall):  setDragImage glue to clipboard routine.
        * khtml/ecma/kjs_events.h:
        (KJS::Clipboard::):
        * khtml/ecma/kjs_events.lut.h:
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseHTMLAttribute):  Boilerplate for new events
        * khtml/khtml_part.cpp:
        (KHTMLPart::shouldDragAutoNode):  Empty impl of new method, where UA determines
	draggability for events with -khtml-user-drag=auto
        * khtml/khtml_part.h:
        * khtml/misc/htmlattrs.c:
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:  Boilerplate for new events
        * khtml/rendering/render_object.cpp:
        (RenderObject::draggableNode):  Find the node or parent node which might be dragged.
        * khtml/rendering/render_object.h:
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::typeToId):  Boilerplate for new events
        (EventImpl::idToType):  Boilerplate for new events
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::):  Boilerplate for new events
        * kwq/KWQClipboard.h:
        * kwq/KWQClipboard.mm:
        (KWQClipboard::clearData):  Implemented to call NSPasteboard
        (KWQClipboard::clearAllData): ditto
        (KWQClipboard::getData):  fix corner case that came up testing
        (KWQClipboard::setData):  Implemented to call NSPasteboard
        (KWQClipboard::dragLocation):  Simple setter/getters
        (KWQClipboard::setDragLocation):
        (KWQClipboard::dragImage):
        (KWQClipboard::setDragImage):
        (KWQClipboard::dragNSImage):
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::KWQKHTMLPart): init new member var
        (KWQKHTMLPart::dragHysteresisExceeded):  Hysteresis moved here from WebKit
        (KWQKHTMLPart::dispatchDragSrcEvent):  Send a dragging event to the current dragSource
        (KWQKHTMLPart::khtmlMouseMoveEvent):  Initiate dragging, now including consulting DHTML,
	hysteresis and sending ondragstart.
        (KWQKHTMLPart::dragSourceMovedTo):  simple passthrough
        (KWQKHTMLPart::dragSourceEndedAt):  simple passthrough
        (KWQKHTMLPart::mouseDown):  salt away _mouseDownX, _mouseDownY
        (KWQKHTMLPart::shouldDragAutoNode):  Called for -khtml-user-drag=auto.  We just call
	out to WebKit.
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge dragSourceMovedTo:]):  New glue to drive new dragging events.
        (-[WebCoreBridge dragSourceEndedAt:operation:]):

2004-06-02  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me

        Finish off name change from previous check-in by changing dom_edititerator
        file names to dom_positioniterator. Files copied and renamed in repository.
        Includes updated as needed.

        * ForwardingHeaders/xml/dom_edititerator.h: Removed.
        * ForwardingHeaders/xml/dom_positioniterator.h: Added.
        * WebCore.pbproj/project.pbxproj:
        * khtml/editing/htmlediting_impl.cpp:
        * khtml/xml/dom_edititerator.cpp: Removed.
        * khtml/xml/dom_edititerator.h: Removed.
        * khtml/xml/dom_position.cpp:
        * khtml/xml/dom_positioniterator.cpp: Added.
        (DOM::PositionIterator::peekPrevious):
        (DOM::PositionIterator::peekNext):
        (DOM::PositionIterator::atStart):
        (DOM::PositionIterator::atEnd):
        * khtml/xml/dom_positioniterator.h: Added.
        (DOM::PositionIterator::PositionIterator):
        (DOM::PositionIterator::current):
        (DOM::PositionIterator::previous):
        (DOM::PositionIterator::next):
        (DOM::PositionIterator::setPosition):
        (DOM::PositionIterator::isEmpty):
        * khtml/xml/dom_selection.cpp:

2004-06-02  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        Probable fix for this bug:
        
        <rdar://problem/3668619>: "REGRESSION: text placed on pasteboard by WebKit is offset by one character"
        
        I could not reproduce the bug myself, which is why I call the fix
        as probable.
        
        Darin and I did some code inspection and found some problems
        with the equivalentUpstreamPosition and
        equivalentDownstreamPosition functions on DOM::Position and how
        these functions dealt with changing from editable to
        non-editable content. As a result of these discoveries, I went
        over this code and the helpers and functions which support them,
        and made some corrections and simplifications. The big changes
        are as follows:
        
        1. Rename EditIterator class to PositionIterator. This class needs
        to run code for selections in non-editable content, so the name
        change is appropriate.
        
        2. Change containingEditableBlock to containingBlock. It turns out
        that none of the editing code relies on the distinction between
        editable blocks and non-editable blocks. The important distinction
        is the block boundary. The notion of rootEditableBlock remains.
         
        * khtml/editing/htmlediting_impl.cpp:
        (khtml::DeleteCollapsibleWhitespaceCommandImpl::deleteWhitespace): PositionIterator name change.
        (khtml::DeleteSelectionCommandImpl::joinTextNodesWithSameStyle): Ditto.
        (khtml::DeleteSelectionCommandImpl::containsOnlyWhitespace): Ditto.
        (khtml::DeleteSelectionCommandImpl::doApply): Ditto.
        (khtml::InputNewlineCommandImpl::doApply): Ditto.
        (khtml::RemoveNodeAndPruneCommandImpl::doApply): Ditto.
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren): Ditto.
        * khtml/xml/dom_edititerator.cpp:
        (DOM::PositionIterator::peekPrevious): Call for previousLeafNode instead of previousEditable.
        Editable check is not appropriate as this class is used for non-editable content.
        (DOM::PositionIterator::peekNext): Call nextLeafNode instead of nextEditable, as above.
        (DOM::PositionIterator::atStart): Call for previousLeafNode instead of previousEditable, as above.
        (DOM::PositionIterator::atEnd): Call nextLeafNode instead of nextEditable, as above.
        * khtml/xml/dom_edititerator.h:
        (DOM::PositionIterator::PositionIterator): PositionIterator name change. Remove unused and unneeded constructors.
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::previousEditable): Simplify. Rely on previousLeafNode as a helper.
        (NodeImpl::nextEditable): Ditto, but rely on nextLeafNode.
        (NodeImpl::previousLeafNode): Remove tree-walking code. Rely on traversePreviousNode as a helper.
        (NodeImpl::nextLeafNode): Ditto, but rely on traverseNextNode.
        (NodeImpl::containingBlock): Renamed replacement for containingEditableBlock.
        (NodeImpl::inSameContainingEditableBlock): Call renamed containingBlock.
        * khtml/xml/dom_nodeimpl.h:
        * khtml/xml/dom_position.cpp:
        (DOM::Position::previousCharacterPosition): Various name changes, as described above.
        (DOM::Position::nextCharacterPosition): Ditto.
        (DOM::Position::previousWordPosition): Ditto.
        (DOM::Position::nextWordPosition): Ditto.
        (DOM::Position::previousLinePosition): Ditto.
        (DOM::Position::nextLinePosition): Ditto.
        (DOM::Position::equivalentUpstreamPosition): Remove bogus check for editable node in loop. Perform
        improved block-crossing check at start of loop which works for editable and non-editable content.
        This is the crux of the fix for the bug.
        (DOM::Position::equivalentDownstreamPosition): Ditto.
        (DOM::Position::inRenderedContent): Various name changes, as described above.
        (DOM::Position::rendersOnSameLine): Ditto.
        (DOM::Position::rendersInDifferentPosition): Ditto.
        (DOM::Position::isFirstRenderedPositionOnLine): Ditto.
        (DOM::Position::isLastRenderedPositionOnLine): Ditto.
        (DOM::Position::isLastRenderedPositionInEditableBlock): Ditto.
        (DOM::Position::inFirstEditableInRootEditableBlock): Ditto.
        (DOM::Position::inLastEditableInRootEditableBlock): Ditto.
        (DOM::Position::inFirstEditableInContainingEditableBlock): Ditto.
        (DOM::Position::inLastEditableInContainingEditableBlock): Ditto.

2004-06-01  Richard Williamson   <rjw@apple.com>

        Fixed deployment build warning.

        * khtml/rendering/render_canvasimage.cpp:
        (RenderCanvasImage::paint):

2004-06-01  Richard Williamson   <rjw@apple.com>

        Added support for composite attribute to <CANVAS>
        Added support for drawImage and drawImageFromRect to <CANVAS>, i.e.:

            <html>
            <head>
            <script>
            
            var img = new Image(600,600);
            
            function drawImage()
            {
                    var aCanvas = document.getElementById ("canvas1");
                    var context = aCanvas.getContext("context-2d");
                    context.drawImage (img, 0, 0, 600, 600, "copy");
            }
            
            img.onload = drawImage;
            img.src = "http://www.google.com/images/logo.gif";
            
            </script>
            </head>
            <body>
            <canvas id="canvas1" width=600 height=600>
            </body>
            <html>

        Reviewed by Trey.

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):
        (Context2D::Context2D):
        * khtml/ecma/kjs_html.h:
        * khtml/rendering/render_canvasimage.cpp:
        (RenderCanvasImage::paint):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::getCompositeOperation):
        (QPainter::setCompositeOperation):
        (QPainter::drawPixmap):
        (QPainter::drawTiledPixmap):
        * kwq/KWQPixmap.h:
        * kwq/KWQPixmap.mm:
        (QPixmap::flushRasterCache):
        * kwq/WebCoreImageRenderer.h:
        * kwq/WebCoreImageRendererFactory.h:

2004-06-01  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        Fix for these bugs:
        
        <rdar://problem/3655028>: "Text styles have hard-coded values making bold the only supported text style"
        <rdar://problem/3656969>: "HTML Editing: Font panel doesn't work"

        * khtml/css/css_valueimpl.cpp:
        (FontFamilyValueImpl::cssText): Added implementation for this subclass. Returns parsedFontName.  
        * khtml/css/css_valueimpl.h: Declare cssText() on FontFamilyValueImpl.
        (DOM::CSSProperty::value):
        * khtml/editing/htmlediting.cpp:
        (khtml::ApplyStyleCommand::ApplyStyleCommand): Changed signature to take a CSSStyleDeclarationImpl.
        (khtml::ApplyStyleCommand::style): Added accessor.
        * khtml/editing/htmlediting.h: Changed constructor signature to take a CSSStyleDeclarationImpl.
        * khtml/editing/htmlediting_impl.cpp:
        (khtml::styleSpanClassString): Added helper to return attribute used to tag spans we add to apply styles.
        (khtml::ApplyStyleCommandImpl::ApplyStyleCommandImpl): Ref style passed in.
        (khtml::ApplyStyleCommandImpl::~ApplyStyleCommandImpl): Deref style passed in.
        (khtml::ApplyStyleCommandImpl::doApply): m_removingStyle is obsolete. Removed.
        (khtml::ApplyStyleCommandImpl::isHTMLStyleNode): Now checks all properties in the object's declaration.
        (khtml::ApplyStyleCommandImpl::removeCSSStyle): Again, now is multi-property-savvy. Will now remove an empty span
        if we added it.
        (khtml::ApplyStyleCommandImpl::currentlyHasStyle): Replaced, bold-only code with code that can handle all styles.
        (khtml::ApplyStyleCommandImpl::computeStyleChange): Helper which helps to determine whether we want to apply
        HTML-style markup for bold and italic, and gathers up all style changes that need to be done.
        (khtml::ApplyStyleCommandImpl::positionInsertionPoint): Added comment explaining possible optimization that might be
        done in the future.
        (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Significant reworking; now handles applying multiple styles.
        (khtml::ApplyStyleCommandImpl::cloneSelection): Assert fragment has at least one child. Don't want to work
        on empty fragments.
        (khtml::ApplyStyleCommandImpl::surroundContentsWithElement): New helper.
        (khtml::RemoveCSSPropertyCommandImpl::~RemoveCSSPropertyCommandImpl): Juggle asserts and lifecycle methods to be
        more like other commands.
        (khtml::RemoveCSSPropertyCommandImpl::doApply): Ditto.
        (khtml::RemoveNodeAttributeCommandImpl::~RemoveNodeAttributeCommandImpl): Ditto.
        (khtml::RemoveNodeAttributeCommandImpl::doApply):Ditto.
        * khtml/editing/htmlediting_impl.h:
        (khtml::ApplyStyleCommandImpl::style): Added.
        (khtml::ApplyStyleCommandImpl::StyleChange::StyleChange): Added.
        * kwq/DOM-CSS.mm:
        (-[DOMCSSStyleDeclaration setProperty:::]): Fix problem where passing an empty NSString to a function expecting a boolean
        made all properties important priority.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge applyStyle:]): Remove provisional code and comment. Now pass along style, following the intended design.

2004-06-01  Chris Blumenberg  <cblu@apple.com>

        Reviewed by kocienda.

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge dragCaretDOMRange]): new, lets WebKit pass the drag caret DOM range to the editing delegate

2004-05-28  John Louch  <ouch@apple.com>

        Reviewed by gramps.

        - removed setShadowWithColor and change setShadow to work with optional attributes
          it follows the same rules as setFill/StrokeColor
        - Fixed bug in setFillColor and setStrokeColor for CMYK colors (missing break in case).

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):
        * khtml/ecma/kjs_html.h:
        (KJS::Context2D::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):

2004-05-28  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - various editing-related improvements

        * khtml/xml/dom_selection.h: Removed UP and DOWN directions, and added PARAGRAPH granularity.
        * khtml/xml/dom_selection.cpp:
        (DOM::Selection::modify): Got rid of the UP and DOWN directions, and made movement
        between lines happen when granularity is LINE. Added a new unimplemented granularity:
        PARAGRAPH.
        (DOM::Selection::validate): Remove some unneeded APPLE_CHANGES. The code need not be ifdef'd.
        (DOM::Selection::debugPosition): Ditto.

        * kwq/WebCoreBridge.h: Removed WebSelectUp and WebSelectDown, and added WebSelectByParagraph.
        Added stringForRange: and selectedDOMRangeWithGranularity:, and renamed replaceSelectionWithNewline
        to insertNewline because it has the insertText: semantic, not the replaceSelectionWithText: one.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge stringForRange:]): Added.
        (-[WebCoreBridge selectedDOMRangeWithGranularity:]): Added.
        (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Updated code to understand
        that vertical movement is based on granularity now, not direction.
        (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:]): Moved an ensureCaretVisible
        from the WebKit down here. I think perhaps this should go down even further in WebCore.
        (-[WebCoreBridge insertNewline]): Renamed, and moved ensureCaretVisible here.
        (-[WebCoreBridge insertText:]): Moved ensureCaretVisible here.
        (-[WebCoreBridge deleteKeyPressed]): Moved ensureCaretVisible here.

        * khtml/xml/dom_position.cpp: Some ifdef tweaks.

        * khtml/misc/helper.cpp: Namespace and formatting tweaks.
        * khtml/misc/helper.h: Removed some unused stuff.

        * khtml/dom/dom2_range.h: Make range constructor public so that anyone with
        a RangeImpl can easily make a Range.

2004-05-28  Richard Williamson   <rjw@apple.com>

	setStrokeColor and setFillColor now support
	old school web color string, oswcs+alpha, gray, gray+alpha,
	rgba, and cmyka.

        Reviewed by jay-lo.

        * khtml/css/cssparser.cpp:
        (CSSParser::parseColor):
        (CSSParser::parseColorFromValue):
        * khtml/css/cssparser.h: Made parseColor static public class method
        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):

2004-05-28  David Hyatt  <hyatt@apple.com>

	Implement -khtml-user-select and add support for the property -khtml-user-drag (although someone will still
	need to wire it up).
	
        Reviewed by rjw

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/khtml_part.cpp:
        (KHTMLPart::handleMousePressEventDoubleClick):
        (KHTMLPart::handleMousePressEventTripleClick):
        (KHTMLPart::handleMousePressEventSingleClick):
        (KHTMLPart::handleMouseMoveEventSelection):
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::setSelection):
        * khtml/rendering/render_object.cpp:
        (RenderObject::shouldSelect):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_style.cpp:
        (userSelect):
        (StyleCSS3NonInheritedData::operator==):
        (RenderStyle::diff):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::RenderStyle::userDrag):
        (khtml::RenderStyle::userSelect):
        (khtml::RenderStyle::setUserDrag):
        (khtml::RenderStyle::setUserSelect):
        (khtml::RenderStyle::initialUserDrag):
        (khtml::RenderStyle::initialUserSelect):

2004-05-28  John Louch  <set EMAIL_ADDRESS environment variable>
	added addArc and clip path routines.

        Reviewed by sullivan.

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):
        * khtml/ecma/kjs_html.h:
        (KJS::Context2D::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):

2004-05-28  John Louch  <ouch@apple.com>

	Added addArcToPoint and addRect path routines.

        Reviewed by sullivan.

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):
        * khtml/ecma/kjs_html.h:
        (KJS::Context2D::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):

2004-05-27  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        * khtml/xml/dom_selection.cpp:
        (DOM::Selection::toRange): Add call to update document layout before returning a Range.
        This is done to ensure recently-done editing changes are reflected in the calculation
        of the Range. This change solves a specific problem with updating the font panel, where
        the wrong Range was used, resulting in an incorrect font. Also, defer converting 
        positions to be range-compliant positions. The nodeIsBeforeNode function is not 
        range-compliant-position-savvy.

2004-05-27  Kevin Decker  <kdecker@apple.com>

        Reviewed by Ken.
        
        - added support for the new JavaScript error console
        - error messages are now wired directly to the bridge
        - revised generated error message content
        
        * khtml/ecma/kjs_events.cpp:
        (JSEventListener::handleEvent):
        * khtml/ecma/kjs_proxy.cpp:
        (KJSProxyImpl::evaluate):
        * khtml/ecma/kjs_window.cpp:
        (Window::isSafeScript):
        (ScheduledAction::execute):
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::addMessageToConsole):
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:

2004-05-27  Trey Matteson  <trey@apple.com>

	Two dragging tweaks:  ondragleave events are sent before ondragenter events when
	going across element boundaries, to match WinIE.
	For compatibility with WinIE, we honor MIME types of "Text" and "URL".

        Reviewed by rjw.

        * khtml/khtmlview.cpp:
        (KHTMLView::updateDragAndDrop):
        * kwq/KWQClipboard.mm:
        (cocoaTypeFromMIMEType):

=== Safari-142 ===

2004-05-27  Vicki Murley <vicki@apple.com>

        Reviewed by Darin.

	- Fix Tiger build failure.  Rename constant "S" to "WHITESPACE",
	and change all instances of S to WHITESPACE.

        * khtml/css/cssparser.cpp:
        (DOM::CSSParser::lex): S to WHITESPACE
        * khtml/css/parser.cpp: regenerated file
        * khtml/css/parser.h: regenerated file
        * khtml/css/parser.y: S to WHITESPACE
        * khtml/css/tokenizer.cpp: regenerated file
        * khtml/css/tokenizer.flex: S to WHITESPACE

2004-05-27  John Louch  <set EMAIL_ADDRESS environment variable>

        Reviewed by NOBODY (OOPS!).

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):
        * khtml/ecma/kjs_html.h:
        (KJS::Context2D::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):

2004-05-27  Trey Matteson  <trey@apple.com>

 	First cut at DHTML dragging, destination side.  Dragging text, files
        and URLs onto elements works.  Type conversion from NSPasteboard to
	MIME types is hardwired.  No JS access yet to modifier keys, or
	drag operations mask.

	Per IE's dragging API, we have the new DOM events ondragenter,
	ondragover, ondragleave and ondrop.
	We also have an event.dataTransfer object providing access to the
	NSPasteboard bearing the incoming data.

        Reviewed by rjw.

        * WebCore.pbproj/project.pbxproj:  add 2 new files.
        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::getValueProperty):  JS access to ondragenter and pals
        (DOMNode::putValue):  Ditto
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMNode::):  New attr enum values.
        * khtml/ecma/kjs_dom.lut.h:
        (KJS::):
        * khtml/ecma/kjs_events.cpp:
        (DOMMouseEvent::mark):  Pass along mark to dataTransfer we hold.
        (DOMMouseEvent::getValueProperty):  Create and return dataTransfer.
        (Clipboard::Clipboard):  New class exposed in JS.
        (Clipboard::~Clipboard):
        (Clipboard::tryGet):  Boilerplate.
        (Clipboard::getValueProperty):  Return the clipboard's props.
        (Clipboard::tryPut):  Boilerplate.
        (Clipboard::putValue):  Set the clipboard's props.
        (ClipboardProtoFunc::tryCall): Implement clipboard's funcs.
        * khtml/ecma/kjs_events.h:
        (KJS::DOMMouseEvent::DOMMouseEvent):  Init clipboard ptr.
        (KJS::DOMMouseEvent::):
        (KJS::Clipboard::toBoolean):
        (KJS::Clipboard::classInfo):
        (KJS::Clipboard::):
        * khtml/ecma/kjs_events.lut.h:
        (KJS::):
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseHTMLAttribute):  Enable setting ondragenter
	and friends as html attributes.
        * khtml/khtmlview.cpp:
        (KHTMLView::dispatchDragEvent):  Send a drag related event to the DOM.
        (KHTMLView::updateDragAndDrop):  Handle a dragenter or dragupdate.
        (KHTMLView::cancelDragAndDrop):  Handle a dragexit.
        (KHTMLView::performDragAndDrop):  Handle an actual drop.
        * khtml/khtmlview.h:
        * khtml/misc/htmlattrs.c:  Generated code.
        * khtml/misc/htmlattrs.h:  Generated code.
        * khtml/misc/htmlattrs.in:  Add ondragenter, etc
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::typeToId):  Handle new event types for dragging.
        (EventImpl::idToType):  Ditto.
        (MouseEventImpl::MouseEventImpl):  Init new clipboard ptr.
        (MouseEventImpl::~MouseEventImpl):  Deref clipboard.
        (ClipboardImpl::ClipboardImpl):
        (ClipboardImpl::~ClipboardImpl):
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::):  New event enums.
        (DOM::MouseEventImpl::clipboard):
        * kwq/KWQClipboard.h: Added.
        * kwq/KWQClipboard.mm: Added.
        (KWQClipboard::KWQClipboard):
        (KWQClipboard::~KWQClipboard):
        (KWQClipboard::isForDragging): Trivial getter/setters.
        (KWQClipboard::dropEffect):
        (KWQClipboard::setDropEffect):
        (KWQClipboard::dropAllowed):
        (KWQClipboard::setDropAllowed):
        (cocoaTypeFromMIMEType):  Convert MIME pboard type to Cocoa type.
        (KWQClipboard::clearData):  OSX specific clipboard impl. of IE func
        (KWQClipboard::clearAllData):   Ditto
        (KWQClipboard::getData): Ditto
        (KWQClipboard::setData): Ditto
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge dragOperationForDraggingInfo:]):  Passthrough from WebKit to khtmlpart
        (-[WebCoreBridge dragExitedWithDraggingInfo:]):  Ditto
        (-[WebCoreBridge concludeDragForDraggingInfo:]): Ditto

2004-05-27  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Gramps

        * kwq/KWQKHTMLPart.h: Declare new fontForCurrentPosition helper.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::fontForCurrentPosition): Determines the "current font" in the way that Cocoa
        does. Either the font of the character before the caret, when the selection is a caret, or
        the font of the first character selected, when the selection is a range.
        * kwq/WebCoreBridge.h: Declare bridge method so this can be called from WebKit.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge fontForCurrentPosition]): Calls through to fontForCurrentPosition on KWQKHTMLPart.

2004-05-27  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Gramps
        
        Adds a typing style member variable to khtml part.
        This patch adds basic life-cycle management and 
        accessors. In addition, one essential piece of
        behavior has been added: Clearing the typing style
        whenever the selection changes.

        Follow-on work will make this typing style a fully 
        functional part of applying styles to text while typing.

        * khtml/khtml_part.cpp:
        (KHTMLPart::notifySelectionChanged): Clear typing style.
        (KHTMLPart::typingStyle): Getter.
        (KHTMLPart::setTypingStyle): Setter.
        (KHTMLPart::clearTypingStyle): Convenience. Sets to 0.
        * khtml/khtml_part.h: Function declarations.
        * khtml/khtmlpart_p.h:
        (KHTMLPartPrivate::KHTMLPartPrivate): Initialize member variable.
        (KHTMLPartPrivate::~KHTMLPartPrivate): Deref if necessary.

2004-05-27  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Gramps

        Add helper to get the DOM element for a Position.
        
        * khtml/xml/dom_position.cpp:
        (DOM::Position::element): Returns the Position's node if it is an element, or
        the first ancestor of the node that is an element. Returns 0 if node is not
        an element and has no parent that is an element.
        * khtml/xml/dom_position.h: Added declaration.

2004-05-27  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - moved to new symlink technique for embedding frameworks

        * WebCore.pbproj/project.pbxproj: Get rid of embed-frameworks build step
        because we don't need it any more.

2004-05-27  Darin Adler  <darin@apple.com>

        - fixed bug where all pages with images would cause a crash
        - fixed Deployment build

        * kwq/KWQPainter.mm: (QPainter::drawPixmap): Put #if 0 around placeholder code
        for setting up the graphics context.

2004-05-26  Richard Williamson   <rjw@apple.com>

	Added shadow support (w/ Louch).
	Added infrastructure for drawing images.

	New context methods:

	setShadow
	setShadowWithColor
	clearShadow

	Reviewed by me and Louch.

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):
        * khtml/ecma/kjs_html.h:
        (KJS::Image::image):
        (KJS::Context2D::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::drawPixmap):

2004-05-26  Richard Williamson   <rjw@apple.com>

	Fixed build snafu.

        * khtml/ecma/kjs_html.cpp:
        (KJS::Context2DFunction::tryCall):
        * khtml/ecma/kjs_html.h:
        (KJS::Context2D::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):

2004-05-26  Richard Williamson   <rjw@apple.com>

	Part 2 of the new <CANVAS> tag implementation.  This adds the 
	basic machinery and draw operations for the <CANVAS> tag.  Pretty cool.  

        function drawLine() {
	    var canvas1 = document.getElementById ("canvas1");
	    var context = canvas1.getContext("context-2d");

	    context.setStrokeColor ("red");
	    context.setLineWidth (10);
	    context.beginPath();
	    context.moveToPoint (0,0);
	    context.addLineToPoint (400,400);
	    context.strokePath();
        }

        ...

        <canvas id="canvas1" width="400" height="400">

Currently supported operations on the 2D context are:

Save, Restore,
Scale, Rotate, Translate,
BeginPath, ClosePath,
SetStrokeColor, SetFillColor, SetLineWidth, SetLineCap, SetLineJoin, SetMiterLimit,
FillPath, StrokePath,
MoveToPoint, AddLineToPoint, AddQuadraticCurveToPoint, AddBezierCurveToPoint,
ClearRect

	More to come.

        Reviewed by Dave.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElementFunction::tryCall):
        (KJS::Context2DFunction::tryCall):
        (Context2D::tryGet):
        (Context2D::getValueProperty):
        (Context2D::tryPut):
        (Context2D::putValue):
        (Context2D::Context2D):
        (Context2D::~Context2D):
        * khtml/ecma/kjs_html.h:
        (KJS::Context2D::toBoolean):
        (KJS::Context2D::classInfo):
        (KJS::Context2D::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):
        * khtml/html/html_canvasimpl.cpp:
        (HTMLCanvasElementImpl::HTMLCanvasElementImpl):
        * khtml/html/htmlparser.cpp:
        (KHTMLParser::getElement):
        * khtml/rendering/render_canvasimage.cpp:
        (RenderCanvasImage::RenderCanvasImage):
        (RenderCanvasImage::~RenderCanvasImage):
        (RenderCanvasImage::createDrawingContext):
        (RenderCanvasImage::drawingContext):
        (RenderCanvasImage::setNeedsImageUpdate):
        (RenderCanvasImage::updateDrawnImage):
        (RenderCanvasImage::drawnImage):
        (RenderCanvasImage::paint):
        (RenderCanvasImage::layout):
        * khtml/rendering/render_canvasimage.h:
        * khtml/rendering/render_image.cpp:
        (RenderImage::paint):
        * khtml/rendering/render_image.h:
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::shouldPaint):
        (RenderWidget::paint):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::currentContext):

2004-05-26  Darin Adler  <darin@apple.com>

        - fixed warning that prevents Deployment build from compiling

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::khtmlMousePressEvent):
        Moved use of single-click boolean outside the scope of the "block exceptions" macros.

2004-05-25  Chris Blumenberg  <cblu@apple.com>

	Fixed a regression where selections that were created via double or triple were not draggable.

        Reviewed by darin.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::khtmlMousePressEvent): if the click count is greater than 1, don't allow drags
        (KWQKHTMLPart::khtmlMouseMoveEvent): allow drags to occur even if the selection was originally created via double or triple click

2004-05-25  Chris Blumenberg  <cblu@apple.com>

	Fixed regression where undoing typing would undo character-by-character.

        Reviewed by kocienda.

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge insertText:]): new, this method used to be replaceSelectionWithText, but replaceSelectionWithText now is one operation whereas calls to insertText: are coalesced

2004-05-25  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        Change postDidChangeSelectionNotification and postDidChangeNotification tp
        respondToChangedSelection and respondToChangedContents, respectively, to
        account for the fact that we do work in these calls other than post a
        notification.

        * khtml/khtml_part.cpp:
        (KHTMLPart::notifySelectionChanged): Use new names.
        (KHTMLPart::appliedEditing): Ditto.
        (KHTMLPart::unappliedEditing): Ditto.
        (KHTMLPart::reappliedEditing): Ditto.
        * kwq/KWQKHTMLPart.h: Change name of functions as described.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::respondToChangedSelection): Ditto.
        (KWQKHTMLPart::respondToChangedContents): Ditto.
        * kwq/WebCoreBridge.h: Ditto.

2004-05-25  Maciej Stachowiak  <mjs@apple.com>

        Fixed build.

        * ForwardingHeaders/misc/khtml_text_operations.h: Added.

2004-05-25  Richard Williamson   <rjw@apple.com>

	Part 1 of the new <CANVAS> tag implementation.  This patch
	adds the boiler plate for the new element.

        Reviewed by Dave.

        * ForwardingHeaders/html/html_canvasimpl.h: Added.
        * ForwardingHeaders/rendering/render_canvasimage.h: Added.
        * WebCore.pbproj/project.pbxproj:
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::classInfo):
        (KJS::HTMLElementFunction::tryCall):
        * khtml/ecma/kjs_html.h:
        (KJS::HTMLElement::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):
        * khtml/html/dtd.cpp:
        (DOM::checkChild):
        * khtml/html/html_canvasimpl.cpp: Added.
        (HTMLCanvasElementImpl::HTMLCanvasElementImpl):
        (HTMLCanvasElementImpl::~HTMLCanvasElementImpl):
        (HTMLCanvasElementImpl::id):
        (HTMLCanvasElementImpl::mapToEntry):
        (HTMLCanvasElementImpl::parseHTMLAttribute):
        (HTMLCanvasElementImpl::createRenderer):
        (HTMLCanvasElementImpl::attach):
        (HTMLCanvasElementImpl::detach):
        (HTMLCanvasElementImpl::isURLAttribute):
        * khtml/html/html_canvasimpl.h: Added.
        * khtml/html/htmlparser.cpp:
        (KHTMLParser::getElement):
        * khtml/misc/htmltags.c:
        (hash_tag):
        (findTag):
        * khtml/misc/htmltags.h:
        * khtml/misc/htmltags.in:
        * khtml/rendering/render_canvasimage.cpp: Added.
        (RenderCanvasImage::RenderCanvasImage):
        (RenderCanvasImage::~RenderCanvasImage):
        (RenderCanvasImage::paint):
        (RenderCanvasImage::layout):
        * khtml/rendering/render_canvasimage.h: Added.
        (khtml::RenderCanvasImage::renderName):
        (khtml::RenderCanvasImage::element):

2004-05-25  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3546418>: (when dragging text within an editable HTML doc, the selection should be moved not copied)

        Reviewed by kocienda.

        * khtml/editing/htmlediting_impl.cpp:
        (khtml::MoveSelectionCommandImpl::doApply): implemented
        * khtml/khtml_part.cpp:
        (KHTMLPart::setDragCaret): make the old drag cursor rect dirty
        * khtml/khtml_part.h:

2004-05-25  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed <rdar://problem/3657363>: (Editing: export innerText, innerHTML, outerText, outerHTML and setters to Objective-C)
	- partial fix for <rdar://problem/3656706>: (Fix innerText and setInnerText DOM extensions)
	
        * khtml/html/html_elementimpl.cpp:
	(HTMLElementImpl::innerText): Use plainText() to make the text, to
	match other browsers.
        (HTMLElementImpl::outerText): Extended comment.
        * khtml/misc/khtml_text_operations.h:
        * kwq/DOMExtensions.h:
        * kwq/DOMHTML.mm:
        (-[DOMHTMLElement outerText]): Added new ObjC wrapper for this.
        (-[DOMHTMLElement setOuterText:]): Ditto.

2004-05-25  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Chris
        
        Defer setting the selection to delete when none has been passed in to the
        time that the command is run. This fixes a problem where a command nested
        in a composite was not correctly picking up the right selection to begin
        its work. Now, the command will correctly use the ending selection of
        its parent when no selection has been passed in.

        * khtml/editing/htmlediting_impl.cpp:
        (khtml::DeleteCollapsibleWhitespaceCommandImpl::DeleteCollapsibleWhitespaceCommandImpl):
        (khtml::DeleteCollapsibleWhitespaceCommandImpl::doApply):
        (khtml::DeleteSelectionCommandImpl::DeleteSelectionCommandImpl):
        (khtml::DeleteSelectionCommandImpl::doApply):
        * khtml/editing/htmlediting_impl.h:

2004-05-24  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	Added a new simple layout test for outerText.

        * layout-tests/fast/dom/outerText-expected.txt: Added.
        * layout-tests/fast/dom/outerText.html: Added.

2004-05-24  Darin Adler  <darin@apple.com>

        Reviewed by Vicki.

        - fixed <rdar://problem/3665813>: (iBench is crashing in TOT)

        * khtml/html/html_formimpl.cpp: (HTMLSelectElementImpl::HTMLSelectElementImpl):
        Initialize m_options to 0.

2004-05-24  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Richard

        * khtml/xml/dom_selection.cpp:
        (DOM::Selection::toRange): Improved the code to return ranges that are
        convenient to use by WebKit code which needs to perform text-editor-like
        operations with ranges. Comments in the code describe this behavior.
        (DOM::Selection::nodeIsBeforeNode): Make this method const.
        * khtml/xml/dom_selection.h: Ditto.

2004-05-24  Chris Blumenberg  <cblu@apple.com>

	Improved editing via drag.

        Reviewed by kocienda.

        * khtml/editing/htmlediting.cpp: Renamed PasteMarkupCommand to ReplaceSelectionCommand
        (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand):
        (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand):
        (khtml::ReplaceSelectionCommand::impl):
        (khtml::MoveSelectionCommand::MoveSelectionCommand):
        (khtml::MoveSelectionCommand::~MoveSelectionCommand):
        (khtml::MoveSelectionCommand::impl):
        * khtml/editing/htmlediting.h:
        (khtml::):
        * khtml/editing/htmlediting_impl.cpp:
        (khtml::ReplaceSelectionCommandImpl::ReplaceSelectionCommandImpl):
        (khtml::ReplaceSelectionCommandImpl::~ReplaceSelectionCommandImpl):
        (khtml::ReplaceSelectionCommandImpl::commandID):
        (khtml::ReplaceSelectionCommandImpl::doApply):
        (khtml::MoveSelectionCommandImpl::MoveSelectionCommandImpl): new command
        (khtml::MoveSelectionCommandImpl::~MoveSelectionCommandImpl):
        (khtml::MoveSelectionCommandImpl::commandID):
        (khtml::MoveSelectionCommandImpl::doApply):
        * khtml/editing/htmlediting_impl.h:
        * khtml/khtml_part.cpp:
        (KHTMLPart::dragCaret): new
        (KHTMLPart::setDragCaret): new
        (KHTMLPart::notifyDragCaretChanged): new
        (KHTMLPart::paintDragCaret): new
        * khtml/khtml_part.h:
        * khtml/khtmlpart_p.h:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paintObject): paint the drag caret
        * kwq/DOM.mm:
        (+[DOMDocumentFragment _documentFragmentWithImpl:]): made internally available
        (-[DOMDocumentFragment _fragmentImpl]):
        * kwq/DOMInternal.h:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]): new
        (-[WebCoreBridge documentFragmentWithText:]): new
        (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:]): new
        (-[WebCoreBridge replaceSelectionWithNode:selectReplacement:]): renamed to take the selectReplacement BOOL
        (-[WebCoreBridge replaceSelectionWithMarkupString:baseURLString:selectReplacement:]): ditto
        (-[WebCoreBridge replaceSelectionWithText:selectReplacement:]): ditto
        (-[WebCoreBridge replaceSelectionWithNewline]): moved
        (-[WebCoreBridge setSelectionToDragCaret]): new
        (-[WebCoreBridge moveSelectionToDragCaret:]): new
        (-[WebCoreBridge moveDragCaretToPoint:]): set the drag caret, not the selection
        (-[WebCoreBridge removeDragCaret]): new

2004-05-24  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John
        
        Fixed some life-cycle issues with node iterators and detaching. Big deal is
        to detach in DOMNodeIterator dealloc. Otherwise, NodeIterators created from
        obj-c leak.

        * khtml/xml/dom2_traversalimpl.cpp:
        (DOM::NodeIteratorImpl::detach): Only detach if not yet detached.
        * khtml/xml/dom2_traversalimpl.h:
        (DOM::NodeIteratorImpl::setDetached): New convenience.
        * kwq/DOM.mm:
        (-[DOMNodeIterator dealloc]): Detach here, if not yet detached; fixes leak.

2004-05-24  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/css/css_computedstyle.cpp:
        (DOM::CSSComputedStyleDeclarationImpl::getPropertyValue): Fixed to return the property value, 
        as it should, instead of the whole property, as it was doing before.

2004-05-23  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3259919>: (Shift click should extend selection)

        * khtml/khtmlpart_p.h: Renamed m_textElement to m_selectionGranularity and
        m_mouseMovedSinceLastMousePress to m_beganSelectingText.
        * khtml/khtml_part.cpp:
        (KHTMLPart::handleMousePressEventDoubleClick): Set m_beganSelectingText if the double-click
        began selecting text.
        (KHTMLPart::handleMousePressEventTripleClick): Ditto.
        (KHTMLPart::handleMousePressEventSingleClick): Added code to extend selection if shift is down.
        (KHTMLPart::khtmlMousePressEvent): Remove code that sets the selection granularity to
        "by character". We only want to do that if we start selecting with a single click.
        Otherwise we want to leave the selection granularity alone.
        (KHTMLPart::khtmlMouseReleaseEvent): Change the code that clears the selection on a plain old
        click to check the m_beganSelectingText boolean so it won't run when you shift-click, for example.
        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::khtmlMouseMoveEvent): Updated for m_textElement
        name change.

2004-05-22  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - went through things marked "unimplemented" or "not implemented" and removed
          or implemented as many as possible

        * kwq/DOM.mm: (-[DOMNode dispatchEvent:]): Implemented.
        Also moved DOMAbstractView and DOMDocumentView into DOMViews.mm.
        * kwq/DOM-CSS.mm: (-[DOMDocument getComputedStyle::]): Implemented.

        * kwq/DOMEventsInternal.h: Added.
        * kwq/DOMEvents.mm:
        (-[DOMEvent type]): Implemented.
        (-[DOMEvent target]): Implemented.
        (-[DOMEvent currentTarget]): Implemented.
        (-[DOMEvent eventPhase]): Implemented.
        (-[DOMEvent bubbles]): Implemented.
        (-[DOMEvent cancelable]): Implemented.
        (-[DOMEvent timeStamp]): Implemented.
        (-[DOMEvent stopPropagation]): Implemented.
        (-[DOMEvent preventDefault]): Implemented.
        (-[DOMEvent initEvent:::]): Implemented.
        (-[DOMEvent _eventImpl]): Added.
        (-[DOMEvent _initWithEventImpl:]): Added.
        (+[DOMEvent _eventWithImpl:]): Added.
        (-[DOMMouseEvent _mouseEventImpl]): Added.
        (-[DOMMouseEvent screenX]): Implemented.
        (-[DOMMouseEvent screenY]): Implemented.
        (-[DOMMouseEvent clientX]): Implemented.
        (-[DOMMouseEvent clientY]): Implemented.
        (-[DOMMouseEvent ctrlKey]): Implemented.
        (-[DOMMouseEvent shiftKey]): Implemented.
        (-[DOMMouseEvent altKey]): Implemented.
        (-[DOMMouseEvent metaKey]): Implemented.
        (-[DOMMouseEvent button]): Implemented.
        (-[DOMMouseEvent relatedTarget]): Implemented.
        (-[DOMMouseEvent initMouseEvent:::::::::::::::]): Implemented.
        (-[DOMMutationEvent _mutationEventImpl]): Added.
        (-[DOMMutationEvent relatedNode]): Implemented.
        (-[DOMMutationEvent prevValue]): Implemented.
        (-[DOMMutationEvent newValue]): Implemented.
        (-[DOMMutationEvent attrName]): Implemented.
        (-[DOMMutationEvent attrChange]): Implemented.
        (-[DOMMutationEvent initMutationEvent::::::::]):
        (-[DOMUIEvent _UIEventImpl]): Added.
        (-[DOMUIEvent view]): Implemented.
        (-[DOMUIEvent detail]): Implemented.
        (-[DOMUIEvent initUIEvent:::::]): Implemented.
        (-[DOMDocument createEvent:]): Implemented.

        * kwq/DOMHTMLInternal.h: Added.
        * kwq/DOMHTML.mm:
        (+[DOMHTMLOptionsCollection _optionsCollectionWithImpl:]): Added.
        (-[DOMHTMLOptionsCollection length]): Implemented.
        (-[DOMHTMLOptionsCollection setLength:]): Implemented.
        (-[DOMHTMLOptionsCollection item:]): Implemented.
        (-[DOMHTMLOptionsCollection namedItem:]): Implemented.
        (-[DOMHTMLSelectElement options]): Implemented.

        * kwq/DOMViews.h: Changed DOMDocumentView to be a category on DOMDocument
        rather than a separate class.
        * kwq/DOMViewsInternal.h: Added.
        * kwq/DOMViews.mm: Added.
        (-[DOMAbstractView document]): Implemnted.
        (-[DOMAbstractView _abstractViewImpl]): Added.
        (-[DOMAbstractView _initWithAbstractViewImpl:]): Added.
        (+[DOMAbstractView _abstractViewWithImpl:]): Added.
        (-[DOMDocument defaultView]): Implemented.

        * khtml/dom/dom2_views.h: Made AbstractView constructor public to allow creation in
        the bindings. Would not be necessary if the impl classes were used consistently.

        * khtml/html/html_formimpl.h: Added options() function to HTMLSelectElementImpl.
        Added HTMLOptionsCollectionImpl class.
        * khtml/html/html_formimpl.cpp:
        (HTMLSelectElementImpl::~HTMLSelectElementImpl): Added code to detach and deref the
        options collection.
        (HTMLSelectElementImpl::options): Create an options collection if needed.
        (HTMLOptionsCollectionImpl::length): Added. Not yet implemented.
        (HTMLOptionsCollectionImpl::setLength): Ditto.
        (HTMLOptionsCollectionImpl::item): Ditto.
        (HTMLOptionsCollectionImpl::namedItem): Ditto.

        * khtml/khtmlview.h: Move unused focusNextPrevChild virtual function inside !APPLE_CHANGES.
        * khtml/khtmlview.cpp: Put the tp, paintBuffer, and formCompletions fields entirely
        inside !APPLE_CHANGES. Also made QT_NO_TOOLTIP entirely disable the tooltip field.
        Also put focusNextPrevChild and formCompletionItems functions inside !APPLE_CHANGES.

        * khtml/rendering/render_text.h: Removed unused isFixedWidthFont member function.
        * khtml/rendering/render_text.cpp: Ditto.

        * kwq/KWQCursor.h: Removed unused pos member function.
        * kwq/KWQCursor.mm: Ditto.

        * kwq/KWQFontMetrics.h: Removed unused rightBearing and leftBearing member functions.
        * kwq/KWQFontMetrics.mm: Ditto.

        * kwq/KWQKComboBox.h: Removed KCompletionBase as a base class.

        * kwq/KWQKConfigBase.h: Removed unused readBoolEntry, writeEntry, and readListEntry
        member functions.
        * kwq/KWQKConfigBase.mm: Ditto.
        (KConfig::readEntry): Improved "not implemented" message to indicate which key is uinimplemented.
        (KConfig::readNumEntry): Ditto.
        (KConfig::readUnsignedNumEntry): Ditto.

        * kwq/KWQKLineEdit.h: Removed everything, since all the KLineEdit stuff was unused.
        Changed KLineEdit to just be a typedef for QLineEdit.

        * kwq/KWQSlot.mm: Removed slotAutoScroll.
        (KWQSlot::KWQSlot): And from here.
        (KWQSlot::call): And from here.

        * kwq/KWQTextStream.h: Removed unused QTextOStream and QTextIStream.
        * kwq/KWQTextStream.mm: Removed unused QTextIStream function. Also made buffer sizes larger
        so we don't have any problems on 64-bit systems. 10 bytes might not be long enough to sprintf an
        integer or a long or a pointer, but 100 bytes surely will.

        * kwq/KWQWidget.h: Removed unused focusNextPrevChild.
        * kwq/KWQWidget.mm: Ditto.

        * WebCore.pbproj/project.pbxproj: Removed some files, added others.

        * ForwardingHeaders/kcompletionbox.h: Emptied out, no KWQKCompletionBox.h any more.
        * ForwardingHeaders/kiconloader.h: Emptied out, no KWQKIconLoader.h any more.
        * ForwardingHeaders/kmimetype.h: Emptied out, no KWQKMimeType.h any more.
        * ForwardingHeaders/ksimpleconfig.h: Emptied out, no KWQKSimpleConfig.h any more.
        * ForwardingHeaders/qfontinfo.h: Emptied out, no KWQFontInfo.h any more.
        * ForwardingHeaders/qtooltip.h: Replaced with define of QT_NO_TOOLTIP, no
        KWQToolTip.h any more.

        * kwq/KWQCompletion.h: Removed.
        * kwq/KWQCompletion.mm: Removed.
        * kwq/KWQFontInfo.h: Removed.
        * kwq/KWQFontInfo.mm: Removed.
        * kwq/KWQKCompletionBox.h: Removed.
        * kwq/KWQKIconLoader.h: Removed.
        * kwq/KWQKIconLoader.mm: Removed.
        * kwq/KWQKMimeType.h: Removed.
        * kwq/KWQKMimeType.mm: Removed.
        * kwq/KWQKSimpleConfig.h: Removed.
        * kwq/KWQKSimpleConfig.mm: Removed.
        * kwq/KWQToolTip.h: Removed.

2004-05-21  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed <rdar://problem/3663659>: (result of toString mistakenly includes all subsequent sibling content)

        * khtml/xml/dom2_rangeimpl.h: Added private startNode() and pastEndNode() functions.
        * khtml/xml/dom2_rangeimpl.cpp:
        (DOM::RangeImpl::toString): Rewrote to use startNode(), pastEndNode(), and traverseNextNode().
        The old code here was wrong, and it was easier to rewrite than fix.
        (DOM::RangeImpl::checkDeleteExtract): Extracted the logic to compute the start node and the past-end
        node into separate functions.
        (DOM::RangeImpl::startNode): Added. Started with code extracted from checkDeleteExtract, but then
        also fixed bugs by using the new traverseNextSibling. The old code handled cases where the offset was
        past the last child in a container incorrectly.
        (DOM::RangeImpl::pastEndNode): Added. Started with code extracted from checkDeleteExtract, but then
        also fixed bugs by using the new traverseNextSibling. The old code hanlded cases where the offset was
        past the last child in a container incorrectly, and also iterated one node too few in cases where the
        end contaier was a text node.

        * khtml/xml/dom2_traversalimpl.h: Removed a bunch of unused and unneeded member functions.

        * khtml/xml/dom_nodeimpl.h: Added traverseNextSibling.
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::traverseNextNode): Reformatted the code a little bit.
        (NodeImpl::traverseNextSibling): Added. Like traverseNextNode except it starts after the node's children
        instead of starting at the beginning of the first child.

2004-05-21  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Trey.

	<rdar://problem/3656722>: Implement outerText and setOuterText DOM extensions
        
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::outerText): Return same value as innerText().
        (HTMLElementImpl::setInnerText): Fix comment.
        (HTMLElementImpl::setOuterText): Replace node with text, merge neighboring text nodes.
        * khtml/html/html_elementimpl.h: Prototype new methods.
	* khtml/dom/html_element.cpp:
        (HTMLElement::outerText): Hook up to impl.
        (HTMLElement::setOuterText): Ditto.
        * khtml/dom/html_element.h: Prototype new methods.
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::getValueProperty): Glue up outerText.
        (KJS::HTMLElement::putValue): Ditto. 
        * khtml/ecma/kjs_html.h: Added new enum value.
        * khtml/ecma/kjs_html.lut.h:
        (KJS::): Regenerated.

2004-05-21  Richard Williamson   <rjw@apple.com>

        Removed _bindObject:forFrame: SPI.
        
        Reviewed by Chris.

        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:

2004-05-21  David Hyatt  <hyatt@apple.com>

	Fix for 3663644, repaints don't occur when the .innerHTML of a positioned element is changed.
	
        Reviewed by john

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        * khtml/rendering/render_layer.h:
        (khtml::RenderLayer::repaintRect):

=== Safari-141 ===

2004-05-21  Darin Adler  <darin@apple.com>

        Reviewed by Ken and Chris.

        - fixed <rdar://problem/3656948>: (markup strings that contain <html> and <body> elements don't work, producing nothing)

        * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::createContextualFragment):
        Changed things around so that nodes are removed from their parent node before 

2004-05-21  Darin Adler  <darin@apple.com>

        Reviewed by Ken and Chris.

        - fixed part of <rdar://problem/3656948>: (HTML Editing: -[WebView replaceSelectionWithMarkupString:] doesn't seem to work)

        * khtml/editing/htmlediting_impl.cpp: (khtml::PasteMarkupCommandImpl::doApply):
        Changed code to handle case where contextual fragment parses to nothing without crashing.

2004-05-21  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        * kwq/DOM-CSS.mm: Change DOMCSSStyleDeclaration methods to use strings with dash-separators in them
        rather than interCaps.

2004-05-21  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed <rdar://problem/3090663>: (scroll to top of page when anchor is "#top" or "#")

        * khtml/khtml_part.cpp:
        (KHTMLPart::gotoAnchor): Detect anchor by checking for non-null, not non-empty, because an
        empty anchor is not the same as no anchor.
        (KHTMLPart::gotoAnchor): Add special case for anchors named "" and "top" (case insensitive),
        to scroll to the top left of the frame to match what WinIE and Mozilla do.
        (KHTMLPart::checkCompleted): Check for non-null here too for consistency.

        * kwq/KWQKURL.mm:
        (KURL::ref): Change check so that we return empty, not null, if there's an empty ref,
        as opposed to no ref.
        (KURL::hasRef): Return true if there's an empty ref, as opposed to no ref.
        (KURL::parse): Preserve an empty fragment when parsing.

2004-05-20  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed <rdar://problem/3575385>: (multiple radio buttons checked when arriving at sites (poll at www.1170kfaq.com, many others))

        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::parseHTMLAttribute): Use setChecked to set the default value if we are still in
        "use default checked" mode. That way, other radio buttons will be unchecked properly and the proper
        changed methods will be dispatched.
        (HTMLInputElementImpl::reset): Ditto.
        * khtml/html/html_formimpl.h: (DOM::HTMLInputElementImpl::checked): Changed to just return m_checked.
        The m_useDefaultChecked flag is now only really looked at when you parse a checked attribute; that's
        because m_checked and m_defaultChecked are kept equal as long as m_useDefaultChecked is true.

        * khtml/xml/dom_nodeimpl.h: Removed an unnecessary virtual, to make code a little smaller and faster.

2004-05-20  Darin Adler  <darin@apple.com>

        Reviewed by Chris.

        - fixed <rdar://problem/3662383>: (REGRESSION: drag slide-back sometimes causes link to load)
        - fixed <rdar://problem/3662556>: (REGRESSION: letting up mouse while dragging over link activates the link)

        * khtml/khtmlview.h: Added invalidateClick.
        * khtml/khtmlview.cpp: (KHTMLView::invalidateClick): Added. Sets clickCount to 0.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::matchLabelsAgainstElement): Changed a string replace to a character replace for slightly
        faster code and smaller code size.
        (KWQKHTMLPart::khtmlMouseMoveEvent): Call invalidateClick at the appropriate times. To do this correctly,
        had to add a boolean result to handleMouseDragged: so I can tell if a drag started or not (due to hysteresis).
        (KWQKHTMLPart::attributedString): Changed a string append to a character append for slightly faster code
        and smaller code size.

        * kwq/WebCoreBridge.h: Added BOOL result to handleMouseDragged:.

        Reviewed by Dave.

        - handle rules with empty bodies properly

        * khtml/css/parser.y: Remove bogus check for empty body that prevents the rule
        from being created.
        * khtml/css/parser.cpp: Regenerated.

2004-05-20  David Hyatt  <hyatt@apple.com>

	Revise the patch for incorrect caret positions when brs get deleted.  It can be even simpler.
	
        Reviewed by kocienda

        * khtml/rendering/render_flow.cpp:
        (RenderFlow::dirtyLinesFromChangedChild):
        * khtml/rendering/render_text.cpp:
        (RenderText::detach):

2004-05-20  David Hyatt  <hyatt@apple.com>

	Fix for 3629816, caret in wrong position when deleting <br>s on lines by themselves or when moving <br>s
	on lines by themselves.
	
        Reviewed by kocienda

        * khtml/rendering/render_box.cpp:
        (RenderBox::detach):
        * khtml/rendering/render_br.cpp:
        (RenderBR::setPos):
        * khtml/rendering/render_br.h:
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::dirtyLinesFromChangedChild):

2004-05-20  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Provide the methods to glue the WebView's editing delegate so that these methods work:
        
        <rdar://problem/3655316>: "Editing: -webViewShouldBeginEditing:inDOMRange: method unimplemented (WebKit editing API)"
        <rdar://problem/3655317>: "Editing: -webViewShouldEndEditing:inDOMRange: method unimplemented (WebKit editing API)"

        While I was in the neighborhood and working on understanding focus shifts, I fixed this bug as well:
        
        <rdar://problem/3645154>: "contentEditable div receives focus and blur twice when focus changes to new element"

        * khtml/khtml_part.cpp:
        (KHTMLPart::invalidateSelection): Do not move focus in this function. That is just a mistake. This function
        is all about redraw.
        (KHTMLPart::selectionLayoutChanged): New function. Factor out the redraw parts of notifySelectionChanged so
        that invalidateSelection can call it.
        (KHTMLPart::notifySelectionChanged): Call selectionLayoutChanged now that the redraw parts have been
        factored out.
        (KHTMLPart::shouldBeginEditing): New function that calls through to the KWQKHTMLPart in an APPLE_CHANGES
        block. This is part of the code path that will eventually The WebView's delegate to ask the
        shouldBeginEditing question. 
        (KHTMLPart::shouldEndEditing): Ditto, except the question is about shouldEndEditing.
        * khtml/khtml_part.h:
        * khtml/khtmlview.cpp:
        (KHTMLView::dispatchMouseEvent): Now looks at the boolean value returned from DocumentImpl::setFocusNode 
        (described below). If the focus shift was blocked, swallow the mouse event.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::relinquishesEditingFocus): Part of the WebView's delegation call chain described above.
        (DocumentImpl::acceptsEditingFocus): Ditto.
        (DocumentImpl::setFocusNode): Many improvements. Now handles WebView delegation and switching focus
        in the handlers called as a result of the DOM events that this function calls. Also now returns a 
        boolean to say whether the attempt to set focus was blocked by a handler or by the WebView's delegate.
        * khtml/xml/dom_docimpl.h:
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::shouldBeginEditing): More WebView's delegation glue.
        (KWQKHTMLPart::shouldEndEditing): Ditto.
        * kwq/WebCoreBridge.h:

2004-05-20  Richard Williamson   <rjw@apple.com>

        Reviewed by NOBODY (OOPS!).

        * kwq/DOM.mm:
        (-[DOMObject _init]):
        * kwq/DOMInternal.mm:
        (-[WebScriptObject _init]):
        (-[WebScriptObject _initializeScriptDOMNodeImp]):
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::KWQKHTMLPart):
        (KWQKHTMLPart::bindingRootObject):
        (KWQKHTMLPart::windowScriptObject):

2004-05-20  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3661918>: "repro nil-deref in RenderImage::paint (www.codepoetry.net)"

        * khtml/rendering/render_image.cpp: (RenderImage::paint): Check renderer pointer to see if it's
        nil before dereferencing it.

        - fixed <rdar://problem/3658455>: "readFromData:options:documentAttributes: crashes when passed page without a body (in WebKit mode)"

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::bodyBackgroundColor): Check renderer pointer to see if it's
        nil before dereferencing it.

        - fixed <rdar://problem/2948112>: "implement addRule for JavaScript for style sheets"

        * khtml/dom/css_stylesheet.h: Added addRule.
        * khtml/dom/css_stylesheet.cpp: (CSSStyleSheet::addRule): Added.
        * khtml/css/css_stylesheetimpl.h: Added addRule.
        * khtml/css/css_stylesheetimpl.cpp: (CSSStyleSheetImpl::addRule): Added an implementation
        based on the Microsoft documentation. An index of -1 means "at the end of the list".

        * khtml/dom/dom_string.h: Changed the string-append operator to be a non-member function
        so it works even if the left side has to undergo type conversion.
        * khtml/dom/dom_string.cpp: (DOM::operator+): Changed implementation to match above.
        Also changed to not use anything private or protected so it doesn't have to be a friend.

        * khtml/ecma/kjs_css.h: Added addRule to the list of functions for CSS style sheets.
        * khtml/ecma/kjs_css.cpp: (DOMCSSStyleSheetProtoFunc::tryCall): Add support for addRule,
        based on the Microsoft documentation; always returns -1. Also removed unused string conversions.
        * khtml/ecma/kjs_css.lut.h: Regenerated.

2004-05-19  David Hyatt  <hyatt@apple.com>

	Implement support for notification posting to accessibility clients for layouts and loads.
	
        * khtml/khtmlview.cpp:
        (KHTMLView::layout):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::close):
        * kwq/KWQAccObjectCache.h:
        (KWQAccObjectCache::enableAccessibility):
        (KWQAccObjectCache::accessibilityEnabled):
        * kwq/KWQAccObjectCache.mm:
        (KWQAccObjectCache::accObject):
        (KWQAccObjectCache::setAccObject):
        (KWQAccObjectCache::removeAccObject):
        (KWQAccObjectCache::detach):
        (KWQAccObjectCache::childrenChanged):
        (KWQAccObjectCache::postNotification):
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge accessibilityTree]):

2004-05-19  Chris Blumenberg  <cblu@apple.com>

	Tweaks for forthcoming dragging improvements.

        Reviewed by john.

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge moveDragCaretToPoint:]): renamed for future reasons, removed text only restrictions

2004-05-19  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt and Darin

        Fix for this bug:
        
        <rdar://problem/3643230>: "can't tab out of contentEditable Elements"

        * khtml/xml/dom_elementimpl.cpp: Now checks if key event was intercepted by the editing
        key-handler before setting the event as defaultHandled.
        (ElementImpl::defaultEventHandler):
        * kwq/KWQKHTMLPart.h: Name change from editingKeyEvent.
        Also now returns a BOOL to report whether the event was handled or not.
        * kwq/KWQKHTMLPart.mm: 
        (KWQKHTMLPart::interceptEditingKeyEvent): Ditto.
        * kwq/WebCoreBridge.h: Renamed from _editingKeyDown.

2004-05-19  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        Fix for this bug:
        
        <rdar://problem/3655601>: "deleting characters is much slower than inserting them"

        Cleaned up the way selections are set in edit commands, and how KHTMLPart is
        notified of these changes. This clears up a number of inefficiencies, including unnecessary repaints
        which were causing the performace problem.

        * khtml/editing/htmlediting.cpp: Removed moveToStartingSelection and moveToEndingSelection functions.
        This work is going to be done using another pre-existing communication facility shared by edit commands
        and the part.
        * khtml/editing/htmlediting.h: Ditto.
        * khtml/editing/htmlediting_impl.cpp:
        (khtml::EditCommandImpl::setStartingSelection): Fix coding mistake which caused double recursion while setting
        ancestor values.
        (khtml::EditCommandImpl::setEndingSelection): Ditto.
        (khtml::CompositeEditCommandImpl::doUnapply): No longer calls moveToStartingSelection. Work done in the part now.
        (khtml::CompositeEditCommandImpl::doReapply): No longer calls moveToEndingSelection. Work done in the part now.
        (khtml::TypingCommandImpl::typingAddedToOpenCommand): New function. Provides a hook for
        typing commands to tell the part about additional typing that has been done.
        (khtml::TypingCommandImpl::insertText): Now calls typingAddedToOpenCommand.
        (khtml::TypingCommandImpl::insertNewline): Ditto.
        (khtml::TypingCommandImpl::issueCommandForDeleteKey): Ditto.
        (khtml::TypingCommandImpl::deleteKeyPressed): Ditto.
        * khtml/editing/htmlediting_impl.h: Removed moveToStartingSelection and moveToEndingSelection functions.
        * khtml/khtml_part.cpp:
        (KHTMLPart::setSelection): Modified to take an argument which tells whether the set closes an active
        typing command.
        (KHTMLPart::notifySelectionChanged): Changed endTyping variable to be consistent with "close typing"
        terminology used elsewhere.
        (KHTMLPart::appliedEditing): Now sets the selection using the value of the passed-in command. Added
        an assert for typing cases. Fixed problem where didChangeNotification was not being posted for typing
        changes after the first one.
        (KHTMLPart::unappliedEditing): Now sets the selection using the value of the passed-in command.
        (KHTMLPart::reappliedEditing): Now sets the selection using the value of the passed-in command.
        * khtml/khtml_part.h:
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::clearSelection): Do not call repaint when the selection is a caret.

2004-05-19  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::isContentEditable): Ask if the part is contenteditable.
        True value is treated as an "override" and will short-circuit, returning true.
        * khtml/khtml_part.cpp:
        (KHTMLPart::isContentEditable): Call over bridge. Has the effect of checking the
        isEditable method on the WebView which contains this part.
        * khtml/khtml_part.h: Declare isContentEditable.
        * kwq/KWQKHTMLPart.h: Declare isContentEditable.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::isContentEditable): Call over bridge, as described above.
        * kwq/WebCoreBridge.h: Declare isEditable.

2004-05-19  Darin Adler  <darin@apple.com>

        - fixed headers with licenses mangled by Xcode auto-indenting

        * kwq/DOMExtensions.h:
        * kwq/KWQAccObject.h:
        * kwq/KWQAccObject.mm:
        * kwq/KWQAccObjectCache.h:
        * kwq/KWQKSSLKeyGen.mm:
        * kwq/KWQScrollBar.mm:
        * kwq/KWQSlider.mm:
        * kwq/WebCoreGraphicsBridge.h:
        * kwq/WebCoreGraphicsBridge.m:
        * kwq/WebCoreKeyGenerator.h:
        * kwq/WebCoreKeyGenerator.m:

2004-05-18  David Hyatt  <hyatt@apple.com>

	Add two new attributes for accessibility that can be polled by the screen reader.  AXLayoutCount indicates
	the number of layouts that have occurred, and AXLoaded indicates whether or not a page has finished loading.
	
        * khtml/khtmlview.cpp:
        (KHTMLViewPrivate::reset):
        (KHTMLView::layoutCount):
        (KHTMLView::layout):
        * khtml/khtmlview.h:
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject roleDescription]):
        (-[KWQAccObject accessibilityAttributeNames]):
        (-[KWQAccObject accessibilityAttributeValue:]):

2004-05-18  David Hyatt  <hyatt@apple.com>

	Fix crash when retrieving the AXHelp text.
	
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject helpText]):

2004-05-18  David Hyatt  <hyatt@apple.com>

	Improve layout scheduling and add instrumentation for debugging layout scheduling
	
        Reviewed by kocienda

        * khtml/khtml_part.cpp:
        (KHTMLPart::slotFinishedParsing):
        (KHTMLPart::checkCompleted):
        * khtml/khtmlview.cpp:
        (KHTMLViewPrivate::KHTMLViewPrivate):
        (KHTMLViewPrivate::reset):
        (KHTMLView::layout):
        (KHTMLView::scheduleRelayout):
        (KHTMLView::haveDelayedLayoutScheduled):
        (KHTMLView::unscheduleRelayout):
        * khtml/khtmlview.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::repaintAfterLayoutIfNeeded):
        * khtml/rendering/render_replaced.cpp:
        (RenderWidget::updateWidgetPositions):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::close):
        (DocumentImpl::setParsing):
        (DocumentImpl::shouldScheduleLayout):
        (DocumentImpl::minimumLayoutDelay):
        (DocumentImpl::elapsedTime):
        (DocumentImpl::finishParsing):
        (DocumentImpl::updateStyleSelector):
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentImpl::allDataReceived):
        * kwq/KWQDateTime.h:
        * kwq/KWQDateTime.mm:
        (QTime::elapsed):
        * kwq/KWQWidget.mm:
        (QWidget::setFrameGeometry):

2004-05-18  Richard Williamson   <rjw@apple.com>

	Finished implementing support for windowScriptObject.

        Reviewed by Maciej.

        * khtml/khtml_part.cpp:
        (KHTMLPart::begin):
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::KWQKHTMLPart):
        (KWQKHTMLPart::~KWQKHTMLPart):
        (KWQKHTMLPart::windowScriptObject):
        * kwq/WebCoreBridge.mm:
        (updateRenderingForBindings):

2004-05-18  Richard Williamson   <rjw@apple.com>

	Added stubs to get the WebScriptObject for the window
	JS object.
	
	Made updateRenderingForBindings more robust when handed a
	nil root object.  This was causing a crash in DB.  Still need to
	address root cause of nil root object.

        Reviewed by Maciej.

        * khtml/khtml_part.cpp:
        (KHTMLPart::begin):
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::windowScriptObject):
        (KWQKHTMLPart::partClearedInBegin):
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (updateRenderingForBindings):
        (-[WebCoreBridge init]):
        (-[WebCoreBridge stringByEvaluatingJavaScriptFromString:]):
        (-[WebCoreBridge windowScriptObject]):

2004-05-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken.

	<rdar://problem/3656719>: Implement outerHTML and setOuterHTML DOM extensions

	They were already implemented (by Chris), all that was required
	was exporting them to JavaScript.

        * khtml/dom/html_element.cpp:
        (HTMLElement::outerHTML): Call impl.
        (HTMLElement::setOuterHTML): Ditto.
        * khtml/dom/html_element.h: Prototype new methods.
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::getValueProperty): Add OuterHTML.
        (KJS::HTMLElement::putValue): Add OuterHTML.
        * khtml/ecma/kjs_html.h: Add new enum values.
        * khtml/ecma/kjs_html.lut.h: Regenerated.

2004-05-18  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Removed support for designMode attribute, which we will not be supporting for Tiger.
        Removed inEditMode from KHTMLPart. This cached designMode value.
        Removed KHTMLPart::isEditingAtNode function. Asking a node if it is content-editable
        is a suitable replacement.

        * khtml/dom/dom_misc.h: Remove TristateFlag enum that was used to track designMode values.
        * khtml/dom/html_document.cpp: Remove designMode and setDesignMode.
        * khtml/dom/html_document.h: Ditto.
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocument::tryGet): Remove designMode.
        (KJS::HTMLDocument::putValue): Ditto.
        * khtml/ecma/kjs_html.lut.h:
        (KJS::): Ditto.
        * khtml/html/html_documentimpl.cpp: Remove designMode and setDesignMode.
        * khtml/html/html_documentimpl.h: Ditto.
        * khtml/khtml_part.cpp: Remove setEditMode, editMode, inEditMode, and isEditingAtNode.
        * khtml/khtml_part.h: Ditto.
        * khtml/khtmlpart_p.h: Remove m_inEditMode variable.
        (KHTMLPartPrivate::KHTMLPartPrivate):
        * khtml/khtmlview.cpp:
        (KHTMLView::focusNextPrevNode): Change over one use in tree of isEditingAtNode to use
        isContentEditable instead. isContentEditable will be modified in future patch to handle
        whether the per-part switch has been thrown to override whether something is editable or not.

2004-05-17  Richard Williamson   <rjw@apple.com>

	Implemented new API for WebScriptObject.
	Fixed <rdar://problem/3657145>: (objc to javascript method calls do not cause updates.)

        Reviewed by Hyatt.

        * kwq/WebCoreBridge.mm:
        (updateRenderingForBindings):
        (-[WebCoreBridge init]):

2004-05-14  Vicki Murley  <vicki@apple.com>

        Reviewed by mjs.
 
	<rdar://problem/3642427>: framework marketing number should be 2.0 for DoubleBarrel release

        * WebCore.pbproj/project.pbxproj: change CFBundleShortVersionString to 2.0

2004-05-14  Darin Adler  <darin@apple.com>

        Reviewed by Darin, coded by Maciej.

        - fixed extra repaints when doing auto-fill checks on all pages that have pop-up buttons

        * kwq/KWQComboBox.mm:
        (QComboBox::populateMenu): Set the populating-menu flag and clear it when done.
        (-[KWQPopUpButton setPopulatingMenu:]): Added. Sets flag.
        (-[KWQPopUpButton setNeedsDisplayInRect:]): Do nothing if the flag is set.

2004-05-14  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed <rdar://problem/3650026>: "background property doesn't work right on webdevtips.com due to background:inherit"

        * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::applyDeclarations):
        Added CSS_PROP_BACKGROUND to the list of properties that must be applied in the first pass.

=== Safari-140 ===

2004-05-13  David Hyatt  <hyatt@apple.com>

	Fix image loading for <input type=image> and <object>.  Make sure it works dynamically and make sure
	the renderer is properly null-checked at attach time.
	
        Reviewed by darin

        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::HTMLInputElementImpl):
        (HTMLInputElementImpl::~HTMLInputElementImpl):
        (HTMLInputElementImpl::parseHTMLAttribute):
        (HTMLInputElementImpl::attach):
        * khtml/html/html_formimpl.h:
        * khtml/html/html_objectimpl.cpp:
        (HTMLObjectElementImpl::HTMLObjectElementImpl):
        (HTMLObjectElementImpl::~HTMLObjectElementImpl):
        (HTMLObjectElementImpl::parseHTMLAttribute):
        (HTMLObjectElementImpl::attach):
        * khtml/html/html_objectimpl.h:

2004-05-14  Chris Blumenberg  <cblu@apple.com>

	- Made DOMEventTarget a formal protocol that is implemented by DOMNode
	- Made DOMEventListener a formal protocol that any object can implement

        Reviewed by kocienda.

        * kwq/DOMCore.h:
        * kwq/DOMEvents.h:

2004-05-13  Richard Williamson   <rjw@apple.com>

	Removed vestigial isSelected method.

        Reviewed by Chris.

        * kwq/KWQWidget.h:
        * kwq/KWQWidget.mm:
        (QWidget::setIsSelected):
        * kwq/WebCoreBridge.h:

2004-05-13  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3616555>: (API: Make DOM extensions and WebKit DOM operations public)

        Reviewed by rjw.

        * kwq/DOM.h: added DOMExtensions.h
        * kwq/DOMHTML.h: renamed frame on DOMHTMLTableElement to frameBorders to avoid NSView conflicts
        * kwq/DOMHTML.mm:
        (-[DOMHTMLTableElement frameBorders]):
        (-[DOMHTMLTableElement setFrameBorders:]):

2004-05-13  Richard Williamson   <rjw@apple.com>

	Changed imports of all DOM headers.  DOM headers
	should be imported using the normal #import <WebCore/foo.h>,
	they import is modified when copied to WebKit.

        Reviewed by Chris.

        * ChangeLog:
        * kwq/DOM.h:
        * kwq/DOMCSS.h:
        * kwq/DOMCore.h:
        * kwq/DOMEvents.h:
        * kwq/DOMExtensions.h:
        * kwq/DOMHTML.h:
        * kwq/DOMInternal.h:
        * kwq/DOMRange.h:
        * kwq/DOMStylesheets.h:
        * kwq/DOMTraversal.h:
        * kwq/DOMViews.h:

2004-05-13  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me

        * khtml/editing/htmlediting_impl.cpp:
        (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Fix deployment
        build bustage. Uninitialized variable.

2004-05-13  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Implemented first cut at text style change code.

        * khtml/editing/htmlediting.cpp:
        (khtml::ApplyStyleCommand::ApplyStyleCommand):
        (khtml::ApplyStyleCommand::~ApplyStyleCommand):
        (khtml::ApplyStyleCommand::impl):
        (khtml::RemoveCSSPropertyCommand::RemoveCSSPropertyCommand):
        (khtml::RemoveCSSPropertyCommand::~RemoveCSSPropertyCommand):
        (khtml::RemoveCSSPropertyCommand::impl):
        (khtml::RemoveCSSPropertyCommand::styleDeclaration):
        (khtml::RemoveCSSPropertyCommand::property):
        (khtml::RemoveNodeAttributeCommand::RemoveNodeAttributeCommand):
        (khtml::RemoveNodeAttributeCommand::~RemoveNodeAttributeCommand):
        (khtml::RemoveNodeAttributeCommand::impl):
        (khtml::RemoveNodeAttributeCommand::element):
        (khtml::RemoveNodeAttributeCommand::attribute):
        (khtml::RemoveNodePreservingChildrenCommand::RemoveNodePreservingChildrenCommand):
        (khtml::RemoveNodePreservingChildrenCommand::~RemoveNodePreservingChildrenCommand):
        (khtml::RemoveNodePreservingChildrenCommand::impl):
        (khtml::RemoveNodePreservingChildrenCommand::node):
        (khtml::SetNodeAttributeCommand::SetNodeAttributeCommand):
        (khtml::SetNodeAttributeCommand::~SetNodeAttributeCommand):
        (khtml::SetNodeAttributeCommand::impl):
        (khtml::SetNodeAttributeCommand::element):
        (khtml::SetNodeAttributeCommand::attribute):
        (khtml::SetNodeAttributeCommand::value):
        * khtml/editing/htmlediting.h:
        (khtml::):
        (khtml::ApplyStyleCommand::):
        
        Removed a bunch of unnecessary DOM namespace qualifiers.
        Fixed calls to parent(), which relied on the TreeShared interface to get a parent,
        and changed to the parentNode() DOM Node call, which is more suitable given the
        intention.
        
        * khtml/editing/htmlediting_impl.cpp:
        (khtml::CompositeEditCommandImpl::insertNodeBefore):
        (khtml::CompositeEditCommandImpl::insertNodeAfter):
        (khtml::CompositeEditCommandImpl::appendNode):
        (khtml::CompositeEditCommandImpl::removeNode):
        (khtml::CompositeEditCommandImpl::removeNodeAndPrune):
        (khtml::CompositeEditCommandImpl::removeNodePreservingChildren):
        (khtml::CompositeEditCommandImpl::splitTextNode):
        (khtml::CompositeEditCommandImpl::joinTextNodes):
        (khtml::CompositeEditCommandImpl::insertText):
        (khtml::CompositeEditCommandImpl::deleteText):
        (khtml::CompositeEditCommandImpl::replaceText):
        (khtml::CompositeEditCommandImpl::removeCSSProperty):
        (khtml::CompositeEditCommandImpl::removeNodeAttribute):
        (khtml::CompositeEditCommandImpl::setNodeAttribute):
        
        
        Text style change command implementations.
        There are a couple more parent() -> parentNode() changes in here as well.
        
        (khtml::ApplyStyleCommandImpl::ApplyStyleCommandImpl):
        (khtml::ApplyStyleCommandImpl::~ApplyStyleCommandImpl):
        (khtml::ApplyStyleCommandImpl::commandID):
        (khtml::ApplyStyleCommandImpl::doApply):
        (khtml::ApplyStyleCommandImpl::isHTMLStyleNode):
        (khtml::ApplyStyleCommandImpl::removeHTMLStyleNode):
        (khtml::ApplyStyleCommandImpl::removeCSSStyle):
        (khtml::ApplyStyleCommandImpl::removeCSSProperty):
        (khtml::ApplyStyleCommandImpl::setNodeAttribute):
        (khtml::ApplyStyleCommandImpl::removeNodeAttribute):
        (khtml::ApplyStyleCommandImpl::removeNodePreservingChildren):
        (khtml::ApplyStyleCommandImpl::mustExlicitlyApplyStyle):
        (khtml::ApplyStyleCommandImpl::createExplicitApplyStyleNode):
        (khtml::ApplyStyleCommandImpl::currentlyHasStyle):
        (khtml::ApplyStyleCommandImpl::cssProperty):
        (khtml::ApplyStyleCommandImpl::matchesTargetStyle):
        (khtml::ApplyStyleCommandImpl::positionInsertionPoint):
        (khtml::ApplyStyleCommandImpl::splitTextAtStartIfNeeded):
        (khtml::ApplyStyleCommandImpl::splitTextAtEndIfNeeded):
        (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded):
        (khtml::ApplyStyleCommandImpl::removeStyle):
        (khtml::ApplyStyleCommandImpl::cloneSelection):
        (khtml::ApplyStyleCommandImpl::insertFragment):
        (khtml::ApplyStyleCommandImpl::applyInPlace):
        (khtml::ApplyStyleCommandImpl::applyUsingFragment):
        (khtml::DeleteSelectionCommandImpl::DeleteSelectionCommandImpl):
        (khtml::InsertNodeBeforeCommandImpl::doApply):
        (khtml::InsertNodeBeforeCommandImpl::doUnapply):
        (khtml::JoinTextNodesCommandImpl::doApply):
        (khtml::PasteMarkupCommandImpl::PasteMarkupCommandImpl):
        (khtml::RemoveCSSPropertyCommandImpl::RemoveCSSPropertyCommandImpl):
        (khtml::RemoveCSSPropertyCommandImpl::~RemoveCSSPropertyCommandImpl):
        (khtml::RemoveCSSPropertyCommandImpl::commandID):
        (khtml::RemoveCSSPropertyCommandImpl::doApply):
        (khtml::RemoveCSSPropertyCommandImpl::doUnapply):
        (khtml::RemoveNodeAttributeCommandImpl::RemoveNodeAttributeCommandImpl):
        (khtml::RemoveNodeAttributeCommandImpl::~RemoveNodeAttributeCommandImpl):
        (khtml::RemoveNodeAttributeCommandImpl::commandID):
        (khtml::RemoveNodeAttributeCommandImpl::doApply):
        (khtml::RemoveNodeAttributeCommandImpl::doUnapply):
        (khtml::RemoveNodePreservingChildrenCommandImpl::RemoveNodePreservingChildrenCommandImpl):
        (khtml::RemoveNodePreservingChildrenCommandImpl::~RemoveNodePreservingChildrenCommandImpl):
        (khtml::RemoveNodePreservingChildrenCommandImpl::commandID):
        (khtml::RemoveNodePreservingChildrenCommandImpl::doApply):
        (khtml::SetNodeAttributeCommandImpl::SetNodeAttributeCommandImpl):
        (khtml::SetNodeAttributeCommandImpl::~SetNodeAttributeCommandImpl):
        (khtml::SetNodeAttributeCommandImpl::commandID):
        (khtml::SetNodeAttributeCommandImpl::doApply):
        (khtml::SetNodeAttributeCommandImpl::doUnapply):
        (khtml::SplitTextNodeCommandImpl::doUnapply):
        (khtml::TypingCommandImpl::insertText):


        Text style change command implementations.

        * khtml/editing/htmlediting_impl.h:
        (khtml::ApplyStyleCommandImpl::):
        (khtml::ApplyStyleCommandImpl::removingStyle):
        (khtml::RemoveCSSPropertyCommandImpl::styleDeclaration):
        (khtml::RemoveCSSPropertyCommandImpl::property):
        (khtml::RemoveNodeAttributeCommandImpl::element):
        (khtml::RemoveNodeAttributeCommandImpl::attribute):
        (khtml::RemoveNodePreservingChildrenCommandImpl::node):
        (khtml::SetNodeAttributeCommandImpl::element):
        (khtml::SetNodeAttributeCommandImpl::attribute):
        (khtml::SetNodeAttributeCommandImpl::value):
        
        
        Fixed a bug where the TreeWalker returned the current node instead
        of null when an attempt was made to use the iterator to go to a
        non-existent location.
        
        * khtml/xml/dom2_traversalimpl.cpp:
        (DOM::TreeWalkerImpl::parentNode):
        (DOM::TreeWalkerImpl::firstChild):
        (DOM::TreeWalkerImpl::lastChild):
        (DOM::TreeWalkerImpl::previousSibling):
        (DOM::TreeWalkerImpl::nextSibling):
        (DOM::TreeWalkerImpl::previousNode):
        (DOM::TreeWalkerImpl::nextNode):
        
        
        A convenience.
        
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::hasAttributes):
        * khtml/xml/dom_elementimpl.h:
        
        
        New helpers to begin moving us to using DOM Range-compliant positions in our code.
        
        * khtml/xml/dom_position.cpp:
        (DOM::Position::equivalentRangeCompliantPosition):
        (DOM::Position::equivalentShallowPosition):
        (DOM::Position::inLastEditableInContainingEditableBlock):
        
        
        (DOM::Position::debugPosition): Debugging aid.
        * khtml/xml/dom_position.h:
       
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge applyStyle:]): First bit of wiring up. Some hard-coded temporary code 
        in here will need to be improved soon.

2004-05-12  David Hyatt  <hyatt@apple.com>

	Improve layout scheduling.  Make sure no layouts can be scheduled until over a minimum delay threshold.
	
        * khtml/khtmlview.cpp:
        (KHTMLView::scheduleRelayout):
        * khtml/rendering/render_frames.cpp:
        (RenderPart::updateWidgetPositions):
        * khtml/rendering/render_text.cpp:
        (RenderText::paint):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::close):
        (DocumentImpl::setParsing):
        (DocumentImpl::shouldScheduleLayout):
        (DocumentImpl::minimumLayoutDelay):
        * khtml/xml/dom_docimpl.h:

2004-05-11  Chris Blumenberg  <cblu@apple.com>

	Support for: <rdar://problem/3616471>: (API: provide way to get from WebFrame to DOMDocument and vice versa)

        Reviewed by rjw.

        * kwq/DOM.mm:
        (-[DOMDocument _ownerElement]): new
        * kwq/DOMInternal.h:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge frameElement]): new

2004-05-11  David Hyatt  <hyatt@apple.com>

	Fix makeChildrenNonInline so that it does not wrap floats unless an inline is actually found.

        Fix block minmaxwidth to add together contiguous runs of floats.

	Fix the content image loader to not destroy the image when removed from the document.

        Reviewed by darin
	
        * ChangeLog:
        * khtml/html/html_imageimpl.cpp:
        (HTMLImageLoader::~HTMLImageLoader):
        (HTMLImageElementImpl::detach):
        * khtml/html/html_imageimpl.h:
        (DOM::):
        * khtml/html/html_objectimpl.cpp:
        (HTMLObjectElementImpl::createRenderer):
        * khtml/html/html_objectimpl.h:
        * khtml/rendering/render_block.cpp:
        (khtml::getInlineRun):
        (khtml::RenderBlock::calcInlineMinMaxWidth):
        (khtml::RenderBlock::calcBlockMinMaxWidth):

2004-05-06  David Hyatt  <hyatt@apple.com>

	Fix makeChildrenNonInline so that it does not wrap floats unless an inline is actually found.

	Fix block minmaxwidth to add together contiguous runs of floats.

	Fix the content image loader to not destroy the image when removed from the document.
	
        Reviewed by darin

        * khtml/rendering/render_block.cpp:
        (khtml::getInlineRun):
        (khtml::RenderBlock::calcBlockMinMaxWidth):

2004-05-11  Vicki Murley  <vicki@apple.com>

        Reviewed by Vicki (fixed by Darin).

        * kwq/KWQKSSLKeyGen.h: fix build failure in B&I due to case sensitivity

2004-05-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- avoid redecoding animated images that are only used once for
	~2.5% iBench speedup (WebCore part of fix)

        * khtml/rendering/render_image.cpp:
        (RenderImage::setPixmap): Maintain use count for pixmap.
        (RenderImage::~RenderImage): Likewise.
        * kwq/KWQPixmap.h:
        * kwq/KWQPixmap.mm:
        (QPixmap::increaseUseCount): Call WebCoreImageRenderer
        (QPixmap::decreaseUseCount): Call WebCoreImageRenderer
        * kwq/WebCoreImageRenderer.h: Prototype new protocol methods.

2004-05-10  David Hyatt  <hyatt@apple.com>

	Make sure that when finished parsing if all the right conditions are met, we just go ahead and updateRendering and
	layout.
	
        Reviewed by rjw
	
        * khtml/khtmlview.cpp:
        (KHTMLView::scheduleRelayout):

2004-05-08  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	- some minor performance tweaks that together give .5% or so on
	the HTML iBench
	
        * khtml/css/css_valueimpl.h: don't use a bitfield for id and important,
	unpacking the bitfield is too expensive
        * kwq/KWQArrayImpl.h:
        * kwq/KWQArrayImpl.mm:
        (KWQArrayImpl::at): inline this method because it's so hot
        * kwq/KWQString.mm:
        (allocateHandle): inline this function because it's so hot
        (initializeHandleNodes): move this in the file so above can be inlined
        (allocateNode): ditto

2004-05-10  David Hyatt  <hyatt@apple.com>

	Move image loading to content.
	
        Reviewed by kocienda

        * khtml/html/html_imageimpl.cpp:
        (m_imageComplete):
        (HTMLImageLoader::~HTMLImageLoader):
        (HTMLImageLoader::updateFromElement):
        (HTMLImageLoader::removedFromDocument):
        (HTMLImageLoader::dispatchLoadEvent):
        (HTMLImageLoader::notifyFinished):
        (HTMLImageElementImpl::HTMLImageElementImpl):
        (HTMLImageElementImpl::parseHTMLAttribute):
        (HTMLImageElementImpl::attach):
        (HTMLImageElementImpl::detach):
        (HTMLImageElementImpl::removedFromDocument):
        (HTMLImageElementImpl::currentImage):
        * khtml/html/html_imageimpl.h:
        (DOM::):
        * khtml/html/html_objectimpl.cpp:
        (HTMLObjectElementImpl::HTMLObjectElementImpl):
        (HTMLObjectElementImpl::removedFromDocument):
        (HTMLObjectElementImpl::attach):
        * khtml/html/html_objectimpl.h:
        * khtml/misc/loader.cpp:
        (CachedImage::ref):
        * khtml/rendering/render_image.cpp:
        (RenderImage::RenderImage):
        (RenderImage::setImage):
        (RenderImage::updateAltText):
        * khtml/rendering/render_image.h:
        (khtml::RenderImage::getImage):
        * khtml/rendering/render_object.cpp:
        (RenderObject::canvas):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::dispatchImageLoadEventSoon):
        (DocumentImpl::removeImage):
        (DocumentImpl::dispatchImageLoadEventsNow):
        * khtml/xml/dom_docimpl.h:

2004-05-10  Darin Adler  <darin@apple.com>

        Reviewed by Vicki.

        - fixed build failure seen in B&I log (due to case sensitive file system?)

        * kwq/KWQLoader.h: Include "KWQCString.h" rather than "QCString.h". The latter was
        failing because the forwarding header is called "qcstring.h" and I guess B&I started
        building with a case sensitive file system. I could have changed this to "qcstring.h",
        but it seemed better to use the header's real name since we're inside KWQ here.

2004-05-07  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	- change things around so extremely hot TokenizerString::current()
	method doesn't have to do any work. It's cheaper to maintain the
	relevant state than to always compute it.
	
        * khtml/misc/stringit.h:
        (khtml::TokenizerString::TokenizerString): Initialize m_currentChar
        (khtml::TokenizerString::push): update m_currentChar
        (khtml::TokenizerString::advance): ditto
        (khtml::TokenizerString::current): return m_currentChar
        * khtml/misc/stringit.cpp:
        (khtml::TokenizerString::clear): update m_currentChar
        (khtml::TokenizerString::append): update m_currentChar
        (khtml::TokenizerString::prepend): update m_currentChar

2004-05-07  Don Melton  <gramps@apple.com>

        Reviewed by Dave.

	Fixed minor, edge-case regression in KEYGEN RSA logic caused by Dave's
	"atomic string" patch back in January.

        * khtml/html/html_formimpl.cpp:
        (HTMLKeygenElementImpl::encoding):

=== Safari-139 ===

2004-05-06  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- two trivial changes for a 1% speedup, thanks to Shark
	
        * khtml/dom/dom_string.cpp:
        * khtml/dom/dom_string.h:
        (DOM::DOMString::~DOMString): inline this method because it's hot and the
	function call overhead was very costly.
        * WebCore.pbproj/project.pbxproj: Add -falign-loops=16
	optimization flag, as suggested by Shark.

2004-05-06  Chris Blumenberg  <cblu@apple.com>

	Added alpha to DOMRGBColor as an extension.

        Reviewed by dave.

        * kwq/DOM-CSS.mm:
        (-[DOMRGBColor alpha]): new
        * kwq/DOMExtensions.h:

2004-05-05  David Hyatt  <hyatt@apple.com>

	Fix whitespace rendering for brs inside pres. The bug is 3640711.
	
        Reviewed by kocienda

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        (khtml::RenderBlock::findNextLineBreak):

2004-04-25  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        * khtml/ecma/kjs_events.cpp:
        (JSLazyEventListener::parseCode): Make sure to protect the
	permanent "event" string object.

2004-05-05  David Hyatt  <hyatt@apple.com>

	Fixes for 3637924, 3643356, and 3558513, all crashes in recalcStyle.  Make sure the tree is always in a
	sane state when removing children while changing .innerHTML.
	
        Reviewed by darin

        * khtml/xml/dom_nodeimpl.cpp:

2004-05-05  David Hyatt  <hyatt@apple.com>

	A collection of fixes.

	(1) Fix a regression from the style sharing landing that made visited and unvisited links accidentally share.
	(2) Make sure 100% height divs fill the <body> in quirks mode, even if the body has no height specified.
	(3) Make sure table cell percentage heights exclude border/padding.
	(4) Make sure that before flexing auto height is used for the contents of the cells.
	
        Reviewed by darin

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::canShareStyleWithElement):
        (khtml::CSSStyleSelector::locateSharedStyle):
        * khtml/rendering/render_box.cpp:
        (RenderBox::calcPercentageHeight):
        * khtml/rendering/render_table.cpp:
        (RenderTable::layout):
        (RenderTableSection::layoutRows):

2004-05-05  Chris Blumenberg  <cblu@apple.com>

	- DOM Extensions API tweaks
	- Implemented outerHTML

        Reviewed by kocienda.

        * WebCore-combined.exp:
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::outerHTML): new
        (HTMLElementImpl::setOuterHTML): mew
        * khtml/html/html_elementimpl.h:
        * kwq/DOMExtensions.h: removed background methods on table and table cell since these are unnecessary conveniences
        * kwq/DOMHTML.mm:
        (-[DOMHTMLElement outerHTML]): new
        (-[DOMHTMLElement setOuterHTML:]): mew

2004-05-04  David Hyatt  <hyatt@apple.com>

	Fix for 3641331, make sure <th> elements don't reset text-align to center if they inherit a specified
	value.

	Also remove the styles from <abbr> and <acronym>.
	
        Reviewed by darin

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::adjustRenderStyle):
        * khtml/css/html4.css:
        * khtml/css/quirks.css:

2004-05-04  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt
        
        Fix for behavior which extends selection drawing to beginning and end of blocks.
        I added this feature a few days ago, but my checks to see if the extension should
        be done was naive: Is first or last item in root line box selected? Clearly this 
        needs to be "selection is *beyond* first or last item in root line box. Done.

        * khtml/rendering/render_image.cpp:
        (RenderImage::paint): Add selectionState() == SelectionInside check.
        * khtml/rendering/render_text.cpp:
        (InlineTextBox::paintSelection): Constrain passed-in offsets to be relative to box.
        Use passed-in offsets to check whether selection extends beyond this box. Also, now
        passes in flag to tell whether the whole RenderText has selectionState() == SelectionInside
        (in which case you always want to extend).
        (RenderText::paint): Remove box offset constraining from here. Now done in above function.
        * khtml/rendering/render_text.h: Modify paintSelection interface to add 
        selectionState() == SelectionInside flag.

2004-05-04  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me
        
        Added layout tests for DOM traversal objects.

        * layout-tests/traversal/node-iterator-001-expected.txt: Added.
        * layout-tests/traversal/node-iterator-001.html: Added.
        * layout-tests/traversal/node-iterator-002-expected.txt: Added.
        * layout-tests/traversal/node-iterator-002.html: Added.
        * layout-tests/traversal/node-iterator-003-expected.txt: Added.
        * layout-tests/traversal/node-iterator-003.html: Added.
        * layout-tests/traversal/node-iterator-004-expected.txt: Added.
        * layout-tests/traversal/node-iterator-004.html: Added.
        * layout-tests/traversal/node-iterator-005-expected.txt: Added.
        * layout-tests/traversal/node-iterator-005.html: Added.
        * layout-tests/traversal/node-iterator-006-expected.txt: Added.
        * layout-tests/traversal/node-iterator-006.html: Added.
        * layout-tests/traversal/node-iterator-007-expected.txt: Added.
        * layout-tests/traversal/node-iterator-007.html: Added.
        * layout-tests/traversal/traversal.js: Added.
        * layout-tests/traversal/tree-walker-001-expected.txt: Added.
        * layout-tests/traversal/tree-walker-001.html: Added.
        * layout-tests/traversal/tree-walker-002-expected.txt: Added.
        * layout-tests/traversal/tree-walker-002.html: Added.
        * layout-tests/traversal/tree-walker-003-expected.txt: Added.
        * layout-tests/traversal/tree-walker-003.html: Added.
        * layout-tests/traversal/tree-walker-004-expected.txt: Added.
        * layout-tests/traversal/tree-walker-004.html: Added.

2004-05-04  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/xml/dom2_traversalimpl.cpp:
        (DOM::NodeIteratorImpl::nextNode): Change to make NodeIterators behave like the spec in that
        reference node is null until you iterate the first time. 
        (DOM::NodeIteratorImpl::previousNode): Ditto.

2004-05-04  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me

        * WebCore.pbproj/project.pbxproj: Backed out unintentional
        change.

2004-05-04  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt
        
        Implemented DOM traversal objects, NodeIterator and TreeWalker.

        * WebCore-combined.exp: Regenerate
        * WebCore.exp: Export DOMNodeFilter protocol
        * khtml/dom/dom2_traversal.cpp: Completed half-done implementation pulled from KDE tree.
        * khtml/dom/dom2_traversal.h: Ditto.
        * khtml/dom/dom_doc.cpp:
        (DOM::Document::createNodeIterator): Ditto.
        (DOM::Document::createTreeWalker): Ditto.
        * khtml/dom/dom_doc.h: Ditto.
        * khtml/ecma/kjs_dom.cpp:
        (DOMDocumentProtoFunc::tryCall): Fix cases that create traversal objects.
        * khtml/ecma/kjs_traversal.cpp:
        (DOMNodeIterator::getValueProperty): Add referenceNode and pointerBeforeReferenceNode
        properties to node interator.
        (DOMTreeWalkerProtoFunc::tryCall): Fix typo where DOMTreeWalker::PreviousNode case called previousSibling function.
        (JSNodeFilterCondition::JSNodeFilterCondition): Implement JS glue class for node filter conditions.
        (JSNodeFilterCondition::acceptNode): Ditto.
        * khtml/ecma/kjs_traversal.h:
        (KJS::DOMNodeIterator::): Add ReferenceNode and PointerBeforeReferenceNode constants.
        * khtml/ecma/kjs_traversal.lut.h:
        (KJS::): Regenerated
        * khtml/xml/dom2_traversalimpl.cpp: Completed half-done implementation pulled from KDE tree.
        * khtml/xml/dom2_traversalimpl.h: Ditto.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::createNodeIterator): Ditto.
        (DocumentImpl::createTreeWalker): Ditto.
        * khtml/xml/dom_docimpl.h: Ditto.
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::checkAddChild): Patched due to change in isAncestor function. This was the one pre-existing caller.
        (NodeImpl::isAncestor): Changed so that it does not return true for itself: node->isAncestor(node) now returns false.
        * khtml/xml/dom_nodeimpl.h: Made isAncestor const.
        * kwq/DOM.mm: Implemented obj-c glue for traversal objects.
        * kwq/DOMInternal.h: Ditto.
        * kwq/DOMTraversal.h: Ditto.

2004-05-04  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3642252>: "starting to drag a link and then releasing needs to activate the link if you are still over it"

        * khtml/khtmlview.cpp:
        (KHTMLView::viewportMouseMoveEvent): Put hysteresis check inside !APPLE_CHANGES because
        the Web Kit does our hysteresis checks.
        (KHTMLView::viewportMouseReleaseEvent): Ditto.

        * kwq/KWQApplication.h: Removed startDragDistance and globalStrut; unused.
        * kwq/KWQApplication.mm: Removed the implementations.
        * kwq/KWQPointArray.h: Removed manhattanLength; unused.
        * kwq/KWQPoint.mm:  Removed the implementation.

        * WebCore-tests.exp: Removed manhattanLength.
        * WebCore-combined.exp: Regenerated.

2004-05-03  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Nifty hack to work around problem where BR's inserted at the end of a block do not 
        render. Since only the *last* BR has this quirk, insert two when at the end of a block.
        Once done, you can't caret past the last one, so you never insert two again.

        * khtml/editing/htmlediting_impl.cpp:
        (InputNewlineCommandImpl::doApply)

2004-05-03  Darin Adler  <darin@apple.com>

        Reviewed by Ken

        - fixed <rdar://problem/3091531>: "should format copied tables with tabs between cells, spreadsheet-style, for pasting to Excel"
        - fixed <rdar://problem/3110002>: "Find doesn't match across formatting boundaries"
        - fixed <rdar://problem/3640340>: "REGRESSION (136-137): nil-deref in KHTMLPart::setFocusNodeIfNeeded inside triple click code after repeatedly click/drag selecting text"
        - fixed <rdar://problem/3640422>: "too many blank lines between paragraphs in copied text"

        * khtml/dom/dom2_range.h: Added == and != operators to DOMRange.
        * khtml/dom/dom2_range.cpp: (DOM::operator==): Added.

        * khtml/khtml_part.cpp:
        (KHTMLPart::init): Don't call findTextBegin any more; it's now not used at all
        in WebCore.
        (KHTMLPart::clear): Don't call findTextBegin any more. Also don't set up the
        load statistics variables.
        (KHTMLPart::findTextNext): Roll out APPLE_CHANGES; this function is no longer
        used in WebCore any more and instead the entire thing is compiled out.
        (KHTMLPart::text): Reimplement this by calling one of the new text operations. All the interesting
        parts were moved into the TextIterator class.
        (KHTMLPart::setFocusNodeIfNeeded): Add a check for nil; this is the fix for 364030.

        * khtml/khtmlpart_p.h: (KHTMLPartPrivate::KHTMLPartPrivate): Put m_findPos,
        m_findNode, m_overURL, m_overURLTarget, m_scrollTimer, m_loadedObjects,
        m_totalObjectCount, and m_jobPercent inside !APPLE_CHANGES.

        * khtml/xml/dom_selection.h: Replaced uses of 4-character tabs with spaces.
        (DOM::Selection::Selection): Added a constructor that takes a DOM range.
        (DOM::Selection::operator=): Overloaded operator= for DOM range and position.
        This is slightly more efficient than letting a second Selection object be constructed.
        * khtml/xml/dom_selection.cpp: Replaced uses of 4-character tabs with spaces.
        (DOM::Selection::Selection): Added a constructor that takes a DOM range.

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::findString): Reimplement find so it uses
        the new text operations function for finding.

        * khtml/misc/khtml_text_operations.h:
        * khtml/misc/khtml_text_operations.cpp:
        * WebCore.pbproj/project.pbxproj:
        Added new text iterator classes that do the heavy lifting.

2004-05-03  David Hyatt  <hyatt@apple.com>

	Make sure that XML processing instructions set themselves as the parent node of the stylesheets they load,
	so that they will get stylesheetLoaded() notifications when @imported stylesheets are contained inside the
	sheet.

        Reviewed by cblu

        * khtml/xml/dom_xmlimpl.cpp:
        (ProcessingInstructionImpl::setStyleSheet):

2004-04-30  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3543662>: HITLIST-137: REGRESSION: reproducible hang copying all text at Dave's blog, and other pages

        Reviewed by dave.

        * khtml/xml/dom2_rangeimpl.cpp:
        (RangeImpl::toHTMLWithOptions): when looping with containingBlock, check the value to see if it is the same

2004-04-30  David Hyatt  <hyatt@apple.com>

	Fix for 3639530, regression on generated content pages.  They crash because I forgot to null-check the style
	object.
	
        Reviewed by kocienda

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::checkOneSelector):

2004-04-30  John Sullivan  <sullivan@apple.com>

        - added bridge method to get the NSFont used to render a node, to
        help with supporting the font panel

        Reviewed by Ken.

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge renderedFontForNode:]):
        return nil if no renderer, otherwise return NSFont

2004-04-29  David Hyatt  <hyatt@apple.com>

	Expose summary on tables.
	
        Reviewed by darin

        * kwq/KWQAccObject.mm:
        (-[KWQAccObject helpText]):

2004-04-29  David Hyatt  <hyatt@apple.com>

	Implement image maps for accessibility.
	
        Reviewed by darin

        * khtml/html/html_imageimpl.cpp:
        (HTMLAreaElementImpl::getRect):
        * khtml/html/html_imageimpl.h:
        * khtml/rendering/render_image.cpp:
        (RenderImage::imageMap):
        (RenderImage::nodeAtPoint):
        * khtml/rendering/render_image.h:
        * kwq/KWQAccObject.h:
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject initWithRenderer:]):
        (-[KWQAccObject anchorElement]):
        (-[KWQAccObject parentObject]):
        (-[KWQAccObject parentObjectUnignored]):
        (-[KWQAccObject addChildrenToArray:]):
        (-[KWQAccObject role]):
        (-[KWQAccObject helpText]):
        (-[KWQAccObject value]):
        (-[KWQAccObject title]):
        (-[KWQAccObject position]):
        (-[KWQAccObject size]):
        (-[KWQAccObject accessibilityIsIgnored]):
        (-[KWQAccObject accessibilityAttributeNames]):
        (-[KWQAccObject accessibilityAttributeValue:]):
        * kwq/KWQRegion.mm:
        (QRegion::boundingRect):

2004-04-29  Chris Blumenberg  <cblu@apple.com>

	Fixed:
	<rdar://problem/3631431>: web archive of .Mac welcome page renders has gaps in layout
	<rdar://problem/3631470>: news.google.com web archive has a different font than the live site

        Reviewed by kocienda.

        * khtml/html/html_documentimpl.cpp:
        (HTMLDocumentImpl::determineParseMode): don't set a name on the doc type when there is no doc type in the source
        * khtml/xml/dom_docimpl.cpp:
        (DocumentTypeImpl::toString): don't return "<!DOCTYPE>" when there is no doc type in the source
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::recursive_toHTMLWithOptions): don't escape STYLE text, don't include the end tags for document nodes just as we don't for start tags

2004-04-29  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - some tweaks on image

        * khtml/html/html_imageimpl.h: Remove unused noref bit and unneeded override of isURLAttribute.
        * khtml/html/html_imageimpl.cpp:
        (HTMLAreaElementImpl::HTMLAreaElementImpl): Remove unused noref bit.
        (HTMLAreaElementImpl::parseHTMLAttribute): Remove parsing of noref; no need to store the
        bit since it has no meaning.

2004-04-29  David Hyatt  <hyatt@apple.com>

	1. Change the role of links from AXButton to AXLink.
	2. Add support for list markers using a new role, AXListMarker.
	
        Reviewed by kocienda

        * khtml/rendering/render_list.h:
        (khtml::RenderListMarker::text):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject role]):
        (-[KWQAccObject roleDescription]):
        (-[KWQAccObject value]):
        (-[KWQAccObject accessibilityIsIgnored]):

2004-04-29  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3636566>: "space bar on a form button hits default button instead (autorestore.apple.com)"

        * khtml/html/html_formimpl.cpp: (HTMLInputElementImpl::defaultEventHandler):
        Remove special handling for space, falling back to default AppKit behavior. Change enter handling to
        click the form element itself in the case of elements other than text input ones.

2004-04-29  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3636673>: "unrepro nil-deref crash in KHTMLPart::frameDetached() (espn.com)"

        * kwq/KWQKHTMLPart.mm: (KHTMLPart::frameDetached): Check for nil.

2004-04-28  Chris Blumenberg  <cblu@apple.com>

	- Implemented DOMHTMLElementExtensions.
	- Added stubs for the rest of the DOM API.

        Reviewed by dave.

        * WebCore.pbproj/project.pbxproj:
        * khtml/dom/html_element.cpp:
        (HTMLElement::setContentEditable): moved implementation from here to HTMLElementImpl
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::setContentEditable): new, moved from HTMLElement
        * khtml/html/html_elementimpl.h:
        * kwq/DOM-CSS.mm:
        (-[DOMObject sheet]):
        (-[DOMDocument getComputedStyle::]):
        * kwq/DOM.mm:
        (-[DOMAbstractView document]):
        (-[DOMDocumentView defaultView]):
        (-[DOMDocument createNodeIterator::::]):
        (-[DOMDocument createTreeWalker::::]):
        (-[DOMNodeFilter acceptNode:]):
        (-[DOMNodeIterator root]):
        (-[DOMNodeIterator whatToShow]):
        (-[DOMNodeIterator filter]):
        (-[DOMNodeIterator expandEntityReferences]):
        (-[DOMNodeIterator nextNode]):
        (-[DOMNodeIterator previousNode]):
        (-[DOMNodeIterator detach]):
        (-[DOMTreeWalker root]):
        (-[DOMTreeWalker whatToShow]):
        (-[DOMTreeWalker filter]):
        (-[DOMTreeWalker expandEntityReferences]):
        (-[DOMTreeWalker currentNode]):
        (-[DOMTreeWalker setCurrentNode:]):
        (-[DOMTreeWalker parentNode]):
        (-[DOMTreeWalker firstChild]):
        (-[DOMTreeWalker lastChild]):
        (-[DOMTreeWalker previousSibling]):
        (-[DOMTreeWalker nextSibling]):
        (-[DOMTreeWalker previousNode]):
        (-[DOMTreeWalker nextNode]):
        * kwq/DOMEvents.mm: Added.
        (-[DOMEvent type]):
        (-[DOMEvent target]):
        (-[DOMEvent currentTarget]):
        (-[DOMEvent eventPhase]):
        (-[DOMEvent bubbles]):
        (-[DOMEvent cancelable]):
        (-[DOMEvent timeStamp]):
        (-[DOMEvent stopPropagation]):
        (-[DOMEvent preventDefault]):
        (-[DOMEvent initEvent:::]):
        (-[DOMEventTarget addEventListener:::]):
        (-[DOMEventTarget removeEventListener:::]):
        (-[DOMEventTarget dispatchEvent:]):
        (-[DOMMouseEvent screenX]):
        (-[DOMMouseEvent screenY]):
        (-[DOMMouseEvent clientX]):
        (-[DOMMouseEvent clientY]):
        (-[DOMMouseEvent ctrlKey]):
        (-[DOMMouseEvent shiftKey]):
        (-[DOMMouseEvent altKey]):
        (-[DOMMouseEvent metaKey]):
        (-[DOMMouseEvent button]):
        (-[DOMMouseEvent relatedTarget]):
        (-[DOMMouseEvent initMouseEvent:::::::::::::::]):
        (-[DOMMutationEvent relatedNode]):
        (-[DOMMutationEvent prevValue]):
        (-[DOMMutationEvent newValue]):
        (-[DOMMutationEvent attrName]):
        (-[DOMMutationEvent attrChange]):
        (-[DOMMutationEvent initMutationEvent::::::::]):
        (-[DOMUIEvent view]):
        (-[DOMUIEvent detail]):
        (-[DOMUIEvent initUIEvent:::::]):
        (-[DOMDocument createEvent:]):
        * kwq/DOMHTML.mm:
        (-[DOMHTMLElement innerHTML]): implemented
        (-[DOMHTMLElement setInnerHTML:]): implemented
        (-[DOMHTMLElement innerText]): implemented
        (-[DOMHTMLElement setInnerText:]): implemented
        (-[DOMHTMLElement children]): implemented
        (-[DOMHTMLElement contentEditable]): implemented
        (-[DOMHTMLElement setContentEditable:]): implemented
        (-[DOMHTMLElement isContentEditable]): implemented

2004-04-27  David Hyatt  <hyatt@apple.com>

	Implement sharing of similar style objects. Cuts the # of style objects allocated on the PLT by more
	than half.
	
        Reviewed by kocienda

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::initElementAndPseudoState):
        (khtml::CSSStyleSelector::initForStyleResolve):
        (khtml::cleanpath):
        (khtml::checkPseudoState):
        (khtml::CSSStyleSelector::locateSiblingList):
        (khtml::CSSStyleSelector::canShareStyleWithElement):
        (khtml::CSSStyleSelector::locateSharedStyle):
        (khtml::CSSStyleSelector::styleForElement):
        (khtml::CSSStyleSelector::pseudoStyleForElement):
        (khtml::CSSStyleSelector::checkOneSelector):
        * khtml/css/cssstyleselector.h:
        * khtml/css/html4.css:
        * khtml/css/parser.cpp:
        * khtml/css/parser.y:
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::mapToEntry):
        (HTMLIFrameElementImpl::mapToEntry):
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_blockimpl.cpp:
        (HTMLDivElementImpl::mapToEntry):
        (HTMLHRElementImpl::mapToEntry):
        (HTMLParagraphElementImpl::mapToEntry):
        (HTMLMarqueeElementImpl::mapToEntry):
        * khtml/html/html_blockimpl.h:
        * khtml/html/html_elementimpl.cpp:
        (HTMLNamedAttrMapImpl::declCount):
        (HTMLNamedAttrMapImpl::mapsEquivalent):
        (HTMLElementImpl::attributeChanged):
        (HTMLElementImpl::mapToEntry):
        * khtml/html/html_elementimpl.h:
        (DOM::HTMLElementImpl::isMappedAttribute):
        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::mapToEntry):
        * khtml/html/html_formimpl.h:
        * khtml/html/html_imageimpl.cpp:
        (HTMLImageElementImpl::mapToEntry):
        * khtml/html/html_imageimpl.h:
        * khtml/html/html_inlineimpl.cpp:
        (HTMLBRElementImpl::mapToEntry):
        (HTMLFontElementImpl::mapToEntry):
        * khtml/html/html_inlineimpl.h:
        * khtml/html/html_listimpl.cpp:
        (HTMLUListElementImpl::mapToEntry):
        (HTMLOListElementImpl::mapToEntry):
        (HTMLLIElementImpl::mapToEntry):
        * khtml/html/html_listimpl.h:
        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::mapToEntry):
        (HTMLEmbedElementImpl::mapToEntry):
        (HTMLObjectElementImpl::mapToEntry):
        * khtml/html/html_objectimpl.h:
        * khtml/html/html_tableimpl.cpp:
        (HTMLTableElementImpl::mapToEntry):
        (HTMLTablePartElementImpl::mapToEntry):
        (HTMLTableCellElementImpl::mapToEntry):
        (HTMLTableColElementImpl::mapToEntry):
        (HTMLTableCaptionElementImpl::mapToEntry):
        * khtml/html/html_tableimpl.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::setStyle):
        * khtml/rendering/render_style.cpp:
        (m_affectedByAttributeSelectors):
        (RenderStyle::RenderStyle):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::RenderStyle::pseudoState):
        (khtml::RenderStyle::setPseudoState):
        (khtml::RenderStyle::affectedByAttributeSelectors):
        (khtml::RenderStyle::setAffectedByAttributeSelectors):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentImpl::usesSiblingRules):
        (DOM::DocumentImpl::setUsesSiblingRules):

2004-04-28  Darin Adler  <darin@apple.com>

        Reviewed by Chris.

        - another step of refinement on the reinterpret_cast stuff; now it's a compile-time
          error if you do it wrong
        - fixed a couple of storage leaks

        * kwq/DOMInternal.h: Added new DOM_cast template function. Like reinterpret_cast, but a
        compile-time error if you use it with the wrong parameters. Also added type-safe versions
        of the wrapper functions that do the DOM_cast automatically.
        * kwq/DOMInternal.mm:
        (getDOMWrapperImpl): Changed name and parameter type as part of above change.
        (addDOMWrapperImpl): Ditto.
        (removeDOMWrapper): Ditto.

        * kwq/DOM.mm: Use the new DOM_cast instead of reinterpret_cast, and the new
        DOM wrapper calls that do the cast automatically.
        * kwq/DOM-CSS.mm: More of the same.
        (-[DOMCSSStyleSheet dealloc]): Added override to deref, fixes leak.
        * kwq/DOMHTML.mm: More of the same.
        (-[DOMHTMLCollection dealloc]): Added override to deref, fixes leak.
        (-[DOMHTMLOptionsCollection dealloc]): Added override to deref, fixes theoretical leak.

2004-04-28  Darin Adler  <darin@apple.com>

        Reviewed by Chris.

        - fixed reinterpret_cast mistakes and some style issues in DOM implementation

        * kwq/DOM-CSS.mm:
        (-[DOMCSSStyleRule _styleRuleImpl]): Fix broken reinterpret_cast; you must reinterpret_cast back
        to the class you reinterpret_casted from, not to a derived class.
        (-[DOMCSSMediaRule _mediaRuleImpl]): Ditto.
        (-[DOMCSSFontFaceRule _fontFaceRuleImpl]): Ditto.
        (-[DOMCSSPageRule _pageRuleImpl]): Ditto.
        (-[DOMCSSImportRule _importRuleImpl]): Ditto.
        (-[DOMCSSCharsetRule _importRuleImpl]): Ditto.
        * kwq/DOMHTML.mm:
        (-[DOMHTMLOptionsCollection length]): Put in an "unimplemented" version instead of leaving out
        the class implementation altogether.
        (-[DOMHTMLOptionsCollection setLength:]): Ditto.
        (-[DOMHTMLOptionsCollection item:]): Ditto.
        (-[DOMHTMLOptionsCollection namedItem:]): Ditto.
        (+[DOMHTMLElement _elementWithImpl:]): Corrected this implementation. The wrapper must use a
        standard node wrapper, since this is a subclass of DOMNode. Also moved into a separate category
        so it gets checked against the declarations above.
        (-[DOMHTMLElement _HTMLElementImpl]): Fix broken reinterpret_cast.
        (-[DOMHTMLHtmlElement _HTMLHtmlElementImpl]): Ditto.
        (-[DOMHTMLHeadElement _headElementImpl]): Ditto.
        (-[DOMHTMLLinkElement _linkElementImpl]): Ditto.
        (-[DOMHTMLTitleElement _titleElementImpl]): Ditto.
        (-[DOMHTMLMetaElement _metaElementImpl]): Ditto.
        (-[DOMHTMLBaseElement _baseElementImpl]): Ditto.
        (-[DOMHTMLStyleElement _styleElementImpl]): Ditto.
        (-[DOMHTMLBodyElement _bodyElementImpl]): Ditto.
        (-[DOMHTMLFormElement _formElementImpl]): Ditto.
        (+[DOMHTMLFormElement _formElementWithImpl:]): Another DOMNode subclass wrapper fix.
        (-[DOMHTMLIsIndexElement _isIndexElementImpl]): Fix broken reinterpret_cast.
        (-[DOMHTMLSelectElement _selectElementImpl]): Ditto.
        (-[DOMHTMLOptGroupElement _optGroupElementImpl]): Ditto.
        (-[DOMHTMLOptionElement _optionElementImpl]): Ditto.
        (-[DOMHTMLInputElement _inputElementImpl]): Ditto.
        (-[DOMHTMLTextAreaElement _textAreaElementImpl]): Ditto.
        (-[DOMHTMLButtonElement _buttonElementImpl]): Ditto.
        (-[DOMHTMLLabelElement _labelElementImpl]): Ditto.
        (-[DOMHTMLFieldSetElement _fieldSetElementImpl]): Ditto.
        (-[DOMHTMLLegendElement _legendElementImpl]): Ditto.
        (-[DOMHTMLUListElement _uListElementImpl]): Ditto.
        (-[DOMHTMLOListElement _oListElementImpl]): Ditto.
        (-[DOMHTMLDListElement _dListElementImpl]): Ditto.
        (-[DOMHTMLDirectoryElement _directoryListElementImpl]): Ditto.
        (-[DOMHTMLMenuElement _menuListElementImpl]): Ditto.
        (-[DOMHTMLLIElement _liElementImpl]): Ditto.
        (-[DOMHTMLQuoteElement _quoteElementImpl]): Ditto.
        (-[DOMHTMLDivElement _divElementImpl]): Ditto.
        (-[DOMHTMLParagraphElement _paragraphElementImpl]): Ditto.
        (-[DOMHTMLHeadingElement _headingElementImpl]): Ditto.
        (-[DOMHTMLPreElement _preElementImpl]): Ditto.
        (-[DOMHTMLBRElement _BRElementImpl]): Ditto.
        (-[DOMHTMLBaseFontElement _baseFontElementImpl]): Ditto.
        (-[DOMHTMLFontElement _fontElementImpl]): Ditto.
        (-[DOMHTMLHRElement _HRElementImpl]): Ditto.
        (-[DOMHTMLModElement _modElementImpl]): Ditto.
        (-[DOMHTMLAnchorElement _anchorElementImpl]): Ditto.
        (-[DOMHTMLImageElement _imageElementImpl]): Ditto.
        (-[DOMHTMLObjectElement _objectElementImpl]): Ditto.
        (-[DOMHTMLParamElement _paramElementImpl]): Ditto.
        (-[DOMHTMLAppletElement _appletElementImpl]): Ditto.
        (-[DOMHTMLMapElement _mapElementImpl]): Ditto.
        (-[DOMHTMLAreaElement _areaElementImpl]): Ditto.
        (-[DOMHTMLScriptElement _scriptElementImpl]): Ditto.
        (+[DOMHTMLTableCaptionElement _tableCaptionElementWithImpl:]): Another DOMNode subclass wrapper fix.
        (-[DOMHTMLTableCaptionElement _tableCaptionElementImpl]): Fix broken reinterpret_cast.
        (+[DOMHTMLTableSectionElement _tableSectionElementWithImpl:]): Another DOMNode subclass wrapper fix.
        (-[DOMHTMLTableSectionElement _tableSectionElementImpl]): Fix broken reinterpret_cast.
        (+[DOMHTMLTableElement _tableElementWithImpl:]): Another DOMNode subclass wrapper fix.
        (-[DOMHTMLTableElement _tableElementImpl]): Fix broken reinterpret_cast.
        (-[DOMHTMLTableColElement _tableColElementImpl]): Ditto.
        (-[DOMHTMLTableRowElement _tableRowElementImpl]): Ditto.
        (+[DOMHTMLTableCellElement _tableCellElementWithImpl:]): Another DOMNode subclass wrapper fix.
        (-[DOMHTMLTableCellElement _tableCellElementImpl]): Fix broken reinterpret_cast.
        (-[DOMHTMLFrameSetElement _frameSetElementImpl]): Ditto.
        (-[DOMHTMLFrameElement _frameElementImpl]): Ditto.
        (-[DOMHTMLIFrameElement _IFrameElementImpl]): Ditto.
        (-[DOMHTMLEmbedElement _embedElementImpl]): Ditto.

        * kwq/HTMLDOM.mm: Removed.

2004-04-28  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        * khtml/khtml_part.cpp:
        (KHTMLPart::notifySelectionChanged): Call new postDidChangeSelectionNotification function
        to send Cocoa notification when the selection changes.
        (KHTMLPart::appliedEditing): Call postDidChangeNotification to send Cocoa notification when the document changes
        due to editing.
        (KHTMLPart::unappliedEditing): Ditto.
        (KHTMLPart::reappliedEditing): Ditto.
        * kwq/DOMHTML.mm:
        (-[DOMHTMLDocument _HTMLDocumentImpl]): Fix cast to account for multiple inheritance used by the impl class.
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::postDidChangeSelectionNotification): New function. Call the bridge to post the notification.
        (KWQKHTMLPart::postDidChangeNotification): Ditto.
        * kwq/WebCoreBridge.h: Declare new -postDidChangeSelectionNotification and -postDidChangeNotification methods.

2004-04-28  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3636261>: "nil-deref in selectedStylesheetSet iterating through properties in a non-view document"

        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::selectedStylesheetSet): Add nil check.
        (DocumentImpl::setSelectedStylesheetSet): Ditto.

2004-04-27  Richard Williamson   <rjw@apple.com>

	<rdar://problem/3564519>: API: please add a way to set the media type for a WebView

        Reviewed by Chris.

        * khtml/khtmlview.cpp:
        (KHTMLView::mediaType):
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::overrideMediaType):
        * kwq/WebCoreBridge.h:

2004-04-27  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt
        
        Make selections draw in a more Cocoa-like way, where
        fully-selected lines draw out to the ends of lines, and
        spaces between lines are drawn with the selection color as well.

        * WebCore-combined.exp: Add _WebCoreInitializeEmptyTextGeometry symbol
        * WebCore.exp: Ditto.
        * khtml/khtml_part.cpp:
        (KHTMLPart::isPointInsideSelection): Marginally-related change. Fix up this function
        so that it works right, given my recent changes to positionForCoordinates. This fix
        "really" fixes the problem. Unlike my attempt to fix yesterday.
        * khtml/rendering/font.cpp:
        (Font::drawHighlightForText): New drawHighlightForText interface which includes extra
        information to draw the selection.
        * khtml/rendering/font.h: Ditto.
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::positionForCoordinates): Some minor improvements and cleanups to
        make this code work correctly in more cases.
        * khtml/rendering/render_block.h: Remove spurious semi-colon after namespace block.
        * khtml/rendering/render_container.cpp:
        (RenderContainer::positionForCoordinates): Fix typo in comment. Also, clean up
        one unnecessary call to absolutePosition.
        * khtml/rendering/render_image.cpp:
        (RenderImage::paint): Many changes to add the new selection drawing behavior.
        * khtml/rendering/render_inline.cpp:
        (RenderInline::positionForCoordinates): Added to help make selections work right 
        with continuations.
        * khtml/rendering/render_inline.h: Ditto.
        * khtml/rendering/render_object.h: Give zero default argument to inlineBox() helper.
        * khtml/rendering/render_text.cpp:
        (InlineTextBox::paintSelection): Many changes to add the new selection drawing behavior.
        * kwq/KWQListBox.mm:
        (-[KWQTableView drawRow:clipRect:]): Use new WebCoreTextGeometry struct.
        * kwq/KWQPainter.h: New drawHighlightForText interface which includes extra
        information to draw the selection.
        * kwq/KWQPainter.mm:
        (QPainter::drawText): Use new WebCoreInitializeEmptyTextGeometry struct.
        (QPainter::drawHighlightForText): Use new WebCoreTextGeometry struct.
        * kwq/WebCoreTextRenderer.h: Declare new WebCoreTextGeometry struct.
        * kwq/WebCoreTextRendererFactory.m:
        (WebCoreInitializeEmptyTextGeometry): Initializer for WebCoreTextGeometry struct.

2004-04-27  Richard Williamson   <rjw@apple.com>

	Don't do unnecessary string comparisons when no composite operator is
	specified.  

        Reviewed by Hyatt.

        * kwq/KWQPainter.mm:
        (compositeOperatorFromString):

2004-04-27  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3623694>: "top level <option> and <optgroup> labels look identical in pop-up menus; should not"

        * khtml/rendering/render_form.cpp: (RenderSelect::updateFromElement):
        Call appendGroupLabel instead of appendItem for group labels.

        * kwq/KWQComboBox.h: Added appendGroupLabel, private setControlSize, labelFont, setTitle, _labelFont,
        and make _items a QValueList<KWQListBoxItem> instead of QStringList.
        * kwq/KWQComboBox.mm:
        (QComboBox::QComboBox): Initializes _labelFont to nil.
        (QComboBox::~QComboBox): Release _labelFont.
        (QComboBox::setTitle): Added helper function. Uses an attributed string for group labels, and also sets
        the action to NULL so they are disabled.
        (QComboBox::appendItem): Added isLabel boolean parameter, make KWQListBoxItem, call setTitle.
        (QComboBox::sizeHint): Changed to handle group labels with a separate renderer to measure bolded text.
        (QComboBox::setCurrentItem): Changed to use setTitle helper.
        (QComboBox::setFont): Release _labelFont if control size changed.
        (QComboBox::labelFont): Compute label font lazily.
        (QComboBox::populateMenu): Changed to use setTitle helper.

        * kwq/KWQListBox.h: Removed excess includes, fixed comment.

2004-04-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - follow-on to fix for <rdar://problem/3488892>: "anchor names with non-ASCII characters in them do not work"
        This part fixes anchor names with non-ASCII characters in local files.

        * kwq/KWQKURL.mm: (KURL::KURL): For file and help URLs, force UTF-8 only for the path part of the URL.
        Use the document encoding for the rest of the URL.
        * kwq/KWQTextCodec.h: (operator!=): Added.

2004-04-26  David Hyatt  <hyatt@apple.com>

	Fix for Emerson truncation problem using apple-line-clamp.  Always dirty positioned objects so that they
	will move when the height changes.
	
        Reviewed by darin

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::markPositionedObjectsForLayout):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutVerticalBox):

2004-04-26  Richard Williamson   <rjw@apple.com>

	Added support for specifying composite operation on an
	image element.  Attribute name is "composite", possible values
	are:

	clear,
	copy
	source-over
	source-in
	source-out
	source-atop
	destination-over
	destination-in
	destination-out
	destination-atop
	xor
	darker
	highlight
	lighter

	<img composite="source-over" src="triangle.png">
	<img style="position:relative; left:-200px;" composite="destination-in" src="circle.png">

        Reviewed by Ken.

        * khtml/html/html_imageimpl.cpp:
        (HTMLImageElementImpl::parseHTMLAttribute):
        * khtml/html/html_imageimpl.h:
        (DOM::HTMLImageElementImpl::compositeOperator):
        * khtml/misc/htmlattrs.c:
        (findAttr):
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:
        * khtml/rendering/render_image.cpp:
        (RenderImage::paint):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (compositeOperatorFromString):
        (QPainter::drawPixmap):
        * kwq/WebCoreImageRenderer.h:

2004-04-26  Darin Adler  <darin@apple.com>

        - fixed <rdar://problem/3634145>: "REGRESSION: nil-deref in QTextCodec::toUnicode every time loading page at wiki.wordpress.org"

        * kwq/KWQKURL.mm:
        (KURL::KURL): Simplify check for nil that defaults to UTF-8.
        (KURL::decode_string): Add a similar test here.

2004-04-26  David Hyatt  <hyatt@apple.com>

	Implement the quirk that makes the <body> and <html> size to fill the viewport in quirks mode.  This
	matches WinIE.
	
        Reviewed by john

        * khtml/rendering/render_box.cpp:
        (RenderBox::calcHeight):

2004-04-26  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John
        
        Fix for this bug:
        
        <rdar://problem/3633458>: "REGRESSION (125-137): Can't drag a selection unless it starts at beginning of line"

        * khtml/khtml_part.cpp:
        (KHTMLPart::isPointInsideSelection): I flubbed when I converted this
        code to use my new positionForCoordinates helper. I failed to add in
        the passed in values for x and y to the absolute coordinates for the
        clicked node. So, the "unless it starts at beginning of line" behavior 
        is exactly as one would expect.

2004-04-25  David Hyatt  <hyatt@apple.com>

	Eliminate overhangingContents.  This concept was redundant with the overflowHeight mechanism that I
	implemented some time ago, and in fact, it causes us to grovel through much more of the render tree
	than we should when painting.  It turns out that none of the places that used this boolean needed
	to any longer, and so the entire implementation can now be removed from the tree.
	
        Reviewed by mjs, darin

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::addChildToFlow):
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::paint):
        (khtml::RenderBlock::insertPositionedObject):
        * khtml/rendering/render_box.cpp:
        (RenderBox::calcHeight):
        * khtml/rendering/render_image.cpp:
        (RenderImage::setStyle):
        * khtml/rendering/render_inline.cpp:
        (RenderInline::addChildToFlow):
        * khtml/rendering/render_object.cpp:
        (RenderObject::RenderObject):
        (RenderObject::containingBlock):
        (RenderObject::information):
        (RenderObject::dump):
        (RenderObject::nodeAtPoint):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::minMaxKnown):
        * khtml/rendering/render_table.cpp:
        (RenderTable::layout):
        (RenderTable::paint):
        (RenderTableCell::paint):

2004-04-23  David Hyatt  <hyatt@apple.com>

	Fix for 3258403, implement support for min-height and max-height on normal flow elements.  With this patch the
	only min-height/max-height work that remains to be done is for table cells and positioned elements.
	
        Reviewed by darin

        * khtml/rendering/render_box.cpp:
        (RenderBox::calcHeight):
        (RenderBox::calcHeightUsing):
        (RenderBox::calcPercentageHeight):
        * khtml/rendering/render_box.h:
        * layout-tests/fast/block/basic/minheight-expected.txt: Added.
        * layout-tests/fast/block/basic/minheight.html: Added.

2004-04-25  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed <rdar://problem/3633091>: "add overrideMimeType function to XMLHttpRequest"

        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::getValueProperty): Add logic to override MIME type if
        OverrideMIMEType was called.
        (KJS::XMLHttpRequestProtoFunc::tryCall): Store the MIME type when overrideMimeType is called.
        * khtml/ecma/xmlhttprequest.h: Add OverrideMIMEType to the XMLHttpRequest property enum,
        and also add a MIMETypeOverride data member to the class.
        * khtml/ecma/xmlhttprequest.lut.h: Regenerated.

2004-04-25  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3628309>: Fedex tracking page so slow it seems like a hang (site change?)
	<rdar://problem/3608061>: "ATI Developer site so slow it seems like a hang"
	<rdar://problem/3612130>: "Reproducible hang in JavaScript at www.tfl.gov.uk"
	<rdar://problem/3626022>: "Safari was consuming > 100% CPU on dual-G5 Mac, sample shows JavaScript"
	<rdar://problem/3632348>: "www.whatis.com search for "pivot table" leads to JavaScript hang"
	
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::getValueProperty): The "text" property for anchors should be
	innerText, not innerHTML.
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::innerText): Make sure not to include all the text after an
	element if it has no children.
        * layout-tests/fast/dom/anchor-text-expected.txt: Added.
        * layout-tests/fast/dom/anchor-text.html: Added.
        * layout-tests/fast/dom/inner-text-expected.txt: Added.
        * layout-tests/fast/dom/inner-text.html: Added.

2004-04-24  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed <rdar://problem/3488892>: "anchor names with non-ASCII characters in them do not work"

        * khtml/khtml_part.h: Add new gotoAnchor helper function, private.
        * khtml/khtml_part.cpp:
        (KHTMLPart::openURL): Call new gotoAnchor helper, since the code is now complex enough
        that I don't want to copy and paste.
        (KHTMLPart::gotoAnchor): Use the pages own encoding when decoding the string for an
        anchor reference when going to an anchor. This matches the behavior of other browsers.
        (KHTMLPart::slotFinishedParsing): Call new gotoAnchor helper.
        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::scrollToAnchor): Call new gotoAnchor helper.

        * kwq/KWQKURL.h: Removed htmlRef function, and made encodedHtmlRef an inline.
        Removed unused encoding hint parameter from setQuery (it's not a "hint" at all, but we
        don't use it). Added a codec parameter to decode_string.
        * kwq/KWQKURL.mm:
        (hexDigitValue): Added. Helper function.
        (KURL::setQuery): Removed unused parameter.
        (KURL::decode_string): Implemented this function. It needs to use an encoding specified
        by the web page. Also, we wanted to make a version that did not use the
        CFURLCreateStringByReplacingPercentEscapes function anyway.

        * kwq/KWQString.h: Added parameters to copyLatin1. Now you can copy an arbitrary substring.
        * kwq/KWQString.mm: (QString::copyLatin1): Updated implementation to handle the two
        new parameters.

        * WebCore-tests.exp: Updated for change in signature of setQuery and decode_string.
        * WebCore-combined.exp: Regenerated.

2004-04-24  Darin Adler  <darin@apple.com>

        - fixed <rdar://problem/3570953>: "Update "Acknowledgements" to remove expat and possibly include libxml"

        * WebCore.pbproj/project.pbxproj: Removed the part of the copyright notice that was for expat contributors.

2004-04-23  David Hyatt  <hyatt@apple.com>

	Fix the apple-line-clamp values to more closely match what is needed, an even split of the max lines between the possible
	values.

        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutVerticalBox):

2004-04-23  David Hyatt  <hyatt@apple.com>

	Fix to make the containing block percentage height calculation actually work according to the CSS2 spec.
	Percentages other than 100% are now supported, and flexing percentage height blocks inside table cells
	are now supported.

        Reviewed by kocienda

        * khtml/rendering/render_box.cpp:
        (RenderBox::calcHeight):
        (RenderBox::calcPercentageHeight):
        * khtml/rendering/render_box.h:

2004-04-23  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        Fix for this bug:
        <rdar://problem/3632163>: "REGRESSSION: crash on css home page"

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::positionForRenderer): Add null check.

2004-04-20  David Hyatt  <hyatt@apple.com>

	Fix hiermenu opacity bug.  Make sure to save/restore the graphics state before pushing and popping
	transparency layers, so that alterations to alpha don't accidentally persist.
	
        Reviewed by kocienda

        * kwq/KWQPainter.mm:
        (QPainter::beginTransparencyLayer):
        (QPainter::endTransparencyLayer):

2004-04-20  David Hyatt  <hyatt@apple.com>

	Fix for 3622818, bad rendering on sabernomics.com.  Just eliminate the priority difference between
	4 and 5, and make all of the priority 4 tags the same.  This seems to match other browsers.
	
        Reviewed by kocienda

        * khtml/html/dtd.cpp:

2004-04-23  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        Changed inlineBoxForRenderer(RenderObject *, int) helper that was static 
        in dom_position.cpp into a virtual method on RenderObjects. Function is
        now called inlineBox(int). Functionality unchanged.

        * khtml/rendering/render_br.cpp:
        (RenderBR::inlineBox)
        * khtml/rendering/render_br.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::caretMaxRenderedOffset)
        (RenderObject::inlineBox)
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_text.cpp:
        (RenderText::inlineBox)
        * khtml/rendering/render_text.h:
        * khtml/xml/dom_position.cpp:
        (DOM::renderersOnDifferentLine):
        (DOM::nextRenderedEditable)
        (DOM::previousRenderedEditable)
        (DOM::Position::previousLinePosition)
        (DOM::Position::nextLinePosition)
        (DOM::Position::rendersInDifferentPosition)

2004-04-23  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        * khtml/editing/htmlediting_impl.cpp:
        (DeleteSelectionCommandImpl::doApply): Fix editing test
        regression with deleting whitespace at the end of the line.
        I just made this "improvement" yesterday, and the concept
        of the change is a good one, but instead of short-circuiting
        if the selection after deleting collapsible whitespace is a
        range (which can be confused by "significant" collapsed 
        whitespace at the end of a line), short-circuit if the 
        upstream start position equals the downstream end position.

=== Safari-138 ===

2004-04-23  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        Added some plumbing for applying styles.

        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::createCSSStyleDeclaration): New factory method.
        * khtml/xml/dom_docimpl.h: Declare the above.
        * kwq/DOM-CSS.mm:
        (-[DOMCSSStyleDeclaration _styleDeclarationImpl]): Expose this in the
        WebCoreInternal category, "promoting" it from being private to the 
        DOM-CSS.mm file.
        * kwq/DOM.mm: Add -(DOMCSSStyleDeclaration *)createCSSStyleDeclaration extension.
        * kwq/DOMExtensions.h: Delcare the above.
        * kwq/DOMInternal.h: Add _styleDeclarationImpl to WebCoreInternal category.

2004-04-23  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3631541>: "repro crash in KHTMLPart::setFocusNodeIfNeeded"

        Reviewed by Maciej.

        * khtml/khtml_part.cpp:
        (KHTMLPart::setFocusNodeIfNeeded):
        added nil check

2004-04-23  Maciej Stachowiak  <mjs@apple.com>

        Back out one of the previous changes, it causes a crash. Whoops!
        
        * kwq/KWQScrollView.mm:
        (QScrollView::addChild):

2004-04-23  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	These two tiny changes (made w/ Dave's help) should get us about
	1% or so combined on the HTML iBench.

        * khtml/rendering/render_br.cpp:
        (RenderBR::setStyle): Don't call superclass setStyle, since
	according to Dave we don't need any of the work done in there.
        * kwq/KWQScrollView.mm:
        (QScrollView::addChild): Don't actually move the widget if the x
	coordinate is -500000, since we don't need the initial offscreen
	positioning that KHTML does and it is costly to do.

2004-04-22  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/editing/htmlediting_impl.cpp:
        (DeleteSelectionCommandImpl::doApply): Short-circuit return if the selection
        is not a range after collapsing whitespace.

2004-04-22  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        More work to bring code up to date with the latest API proposal.

        * khtml/xml/dom_selection.h: Fix typo in comment.
        * kwq/WebCoreBridge.h: -applyStyle:toElementsInDOMRange: is now applyStyle:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge applyStyle:]): Ditto.

2004-04-22  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        Adds the notion of selection affinity to the editing API, bringing it up to
        date with the latest proposal.

        * khtml/xml/dom_selection.cpp:
        (DOM::Selection::Selection): Adds support for selection affinity member variable.
        (DOM::Selection::init): Ditto.
        (DOM::Selection::operator=): Ditto.
        (DOM::Selection::setAffinity): New function.
        (DOM::Selection::layoutCaret): Added comment to indicate that we need to enhance this
        function to handle selection affinity.
        * khtml/xml/dom_selection.h: Added EAffinity enum and m_affinity member variable.
        (DOM::Selection::): Moved the enums above the constructors. No code change.
        (DOM::Selection::affinity): New accessor.
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm: Add selection affinity to API declarations as needed.
        (-[WebCoreBridge setSelectedDOMRange:affinity:]): Ditto.
        (-[WebCoreBridge selectedDOMRange]): Ditto.
        (-[WebCoreBridge selectionAffinity]): Ditto.

2004-04-21  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	Preliminary change for conservative GC. Use new "protected"
	subclasses to GC-protect objects when on heap, since we will soon
	remove the built-in refcounting of the normal wrapper classes.
	
        * ForwardingHeaders/kjs/protect.h: Added.
        * khtml/ecma/kjs_binding.h:
        * khtml/ecma/kjs_events.h:
        * khtml/ecma/kjs_traversal.h:
        * khtml/ecma/kjs_window.h:

2004-04-22  Darin Adler  <darin@apple.com>

        * khtml/ecma/kjs_window.cpp: (Window::get): Removed code that gets properties from the parent.
        This was a mistake we inherited from KHTML, and they have long since fixed it.

2004-04-22  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        Ensures caret visibility after making an editing action.

        * khtml/xml/dom_selection.cpp:
        (DOM::Selection::getRepaintRect): Expose this as public.
        * khtml/xml/dom_selection.h: Ditto.
        * kwq/WebCoreBridge.h: Add ensureCaretVisible method.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge replaceSelectionWithMarkupString:baseURLString:]):
        Unrelated crash fix. Null-check baseURLString.
        (-[WebCoreBridge ensureCaretVisible]): Added.

2004-04-21  David Hyatt  <hyatt@apple.com>

	Fix for 3245627, nested tables don't expand vertically.  I actually fixed the basic problem in the
	previous checkin, but this exposed another basic math error where |numVariable| was not being
	decremented properly.  This meant space was mis-allocated when multiple variable height rows both needed
	to expand.

        * khtml/rendering/render_table.cpp:
        (RenderTableSection::layoutRows):

2004-04-21  David Hyatt  <hyatt@apple.com>

	Fix for 3020449, ensure that the paint order of cells with rowspans matches other browsers.
	
        Reviewed by darin

        * khtml/rendering/render_table.cpp:
        (RenderTableSection::paint):

2004-04-21  David Hyatt  <hyatt@apple.com>

	Remove the (incorrect) restriction on table flexing that required the cell to have a fixed width.  In
	reality, the style on the cell is completely irrelevant.
	
        Reviewed by kocienda

        * khtml/rendering/render_table.cpp:
        (RenderTable::layout):

2004-04-21  David Hyatt  <hyatt@apple.com>

	Make sure cells that get flexed vertically in tables don't check text children when looking for 
	percentage height children.
	
        Reviewed by kocienda

        * khtml/rendering/render_table.cpp:
        (RenderTableSection::layoutRows):

2004-04-21  David Hyatt  <hyatt@apple.com>

	Fix for hiermenus bug.  Absolutely positioned images should not contribute to their containing block's
	max width.  Make sure to disregard positioned elements when computing min/max width.
	
        Reviewed by kocienda

        * khtml/rendering/render_block.cpp:
        (khtml::InlineMinMaxIterator::next):

2004-04-21  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/editing/htmlediting_impl.cpp:
        (DeleteSelectionCommandImpl::doApply): Do not shift ending selection downstream
        when at position zero of a BR. That's just wrong. Simplify code that does
        "onlyWhitespace" delete. No need to handle multiple characters here; we can
        only ever have one thanks to the delete-collapsible-whitespace code.
        (TypingCommandImpl::issueCommandForDeleteKey): Don't do anything if at the
        start of a root editable block. This is a no-op....not an opportunity to crash.
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::positionForRenderer): Return this renderer's element position
        if the passed-in renderer is nil. This helps to make clicking in empty blocks work.
        * khtml/rendering/render_container.cpp:
        (RenderContainer::positionForCoordinates): Fixed typo in comment.
        * khtml/xml/dom_position.cpp:
        (DOM::Position::equivalentLeafPosition): Do not attempt to find a leaf if the
        position's node does not have a renderer, if the renderer has no kids.
        * layout-tests/editing/deleting/delete-br-001-expected.txt: Update expected results for BR fix.
        * layout-tests/editing/deleting/delete-br-003-expected.txt: Ditto.
        * layout-tests/editing/deleting/delete-br-006-expected.txt: Ditto.
        * layout-tests/editing/deleting/delete-br-007.html: Added. New BR test.
        * layout-tests/editing/deleting/delete-br-007-expected.txt: Added.

2004-04-21  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/css/css_computedstyle.cpp:
        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Added implementations for
        these properties: CSS_PROP_TEXT_DECORATION, CSS_PROP_VERTICAL_ALIGN, CSS_PROP_TEXT_INDENT,
        CSS_PROP_LETTER_SPACING, CSS_PROP_WORD_SPACING, CSS_PROP_LINE_HEIGHT

2004-04-21  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        The Selection class now uses the Position class throughout its public and
        private interface. This replaces the inconsistent use of the Position
        class here and node/offset pairs there. There are no functional changes, only
        updates to the new Selection class API.

        * khtml/ecma/kjs_window.cpp:
        (Selection::get):
        (SelectionFunc::tryCall):
        * khtml/editing/htmlediting_impl.cpp:
        (DeleteCollapsibleWhitespaceCommandImpl::doApply):
        (DeleteSelectionCommandImpl::joinTextNodesWithSameStyle):
        (DeleteSelectionCommandImpl::doApply):
        (InputNewlineCommandImpl::doApply):
        (InputTextCommandImpl::deleteCharacter):
        (InputTextCommandImpl::prepareForTextInsertion):
        (InputTextCommandImpl::execute):
        (PasteMarkupCommandImpl::doApply):
        (TypingCommandImpl::issueCommandForDeleteKey):
        * khtml/khtml_part.cpp:
        (KHTMLPart::findTextNext):
        (KHTMLPart::setFocusNodeIfNeeded):
        (KHTMLPart::notifySelectionChanged):
        (KHTMLPart::isPointInsideSelection):
        (KHTMLPart::handleMouseMoveEventSelection):
        (KHTMLPart::khtmlMouseReleaseEvent):
        (KHTMLPart::selectAll):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paintObject):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::updateSelection):
        * khtml/xml/dom_nodeimpl.cpp:
        * khtml/xml/dom_selection.cpp:
        (DOM::emptyPosition):
        (DOM::Selection::Selection):
        (DOM::Selection::init):
        (DOM::Selection::operator=):
        (DOM::Selection::moveTo):
        (DOM::Selection::modify):
        (DOM::Selection::xPosForVerticalArrowNavigation):
        (DOM::Selection::clear):
        (DOM::Selection::setBase):
        (DOM::Selection::setExtent):
        (DOM::Selection::setBaseAndExtent):
        (DOM::Selection::setStart):
        (DOM::Selection::setEnd):
        (DOM::Selection::setStartAndEnd):
        (DOM::Selection::toRange):
        (DOM::Selection::layoutCaret):
        (DOM::Selection::needsCaretRepaint):
        (DOM::Selection::paintCaret):
        (DOM::Selection::validate):
        (DOM::Selection::moveToRenderedContent):
        (DOM::Selection::nodeIsBeforeNode):
        (DOM::startAndEndLineNodesIncludingNode):
        (DOM::Selection::debugRenderer):
        (DOM::Selection::debugPosition):
        * khtml/xml/dom_selection.h:
        (DOM::Selection::~Selection):
        (DOM::Selection::base):
        (DOM::Selection::extent):
        (DOM::Selection::start):
        (DOM::Selection::end):
        (DOM::Selection::assignBase):
        (DOM::Selection::assignExtent):
        (DOM::Selection::assignBaseAndExtent):
        (DOM::Selection::assignStart):
        (DOM::Selection::assignEnd):
        (DOM::Selection::assignStartAndEnd):
        (DOM::operator==):
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::jumpToSelection):
        (KWQKHTMLPart::selectionStartOffset):
        (KWQKHTMLPart::selectionEndOffset):
        (KWQKHTMLPart::selectionStart):
        (KWQKHTMLPart::selectionEnd):
        * kwq/KWQRenderTreeDebug.cpp:
        (writeSelection):
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge isSelectionEditable]):
        (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]):
        (-[WebCoreBridge setSelectedDOMRange:]):

2004-04-20  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt
        
        Renamed DOMPosition class to Position.
        Renamed KHTMLSelection to Selection and moved to DOM namespace.

        * ForwardingHeaders/xml/dom_selection.h: Added.
        * WebCore.pbproj/project.pbxproj: Go Xcode!
        * khtml/khtml_selection.cpp: Removed.
        * khtml/khtml_selection.h: Removed.
        * khtml/xml/dom_position.cpp: Renamed DOMPosition to Position
        * khtml/xml/dom_position.h: Ditto.
        * khtml/xml/dom_selection.cpp: New home for renamed Selection object.
        * khtml/xml/dom_selection.h: Ditto.

2004-04-20  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * WebCore.pbproj/project.pbxproj:
        * khtml/khtml_part.cpp:
        (KHTMLPart::handleMousePressEventDoubleClick): Improved name of expandToElement. Now is expandUsingGranularity.
        (KHTMLPart::handleMousePressEventTripleClick): Ditto.
        (KHTMLPart::handleMouseMoveEventSelection): Ditto.
        * khtml/khtml_selection.cpp:
        (KHTMLSelection::modify): Added support for modifying and extending selection right and left by word.
        Also added support for extending selection up and down.
        (KHTMLSelection::expandUsingGranularity): New name for expandToElement.
        (KHTMLSelection::xPosForVerticalArrowNavigation): Made this function handle cases where we know we
        want to use a particular position for calculating the right x position. We need this to handle
        extending selection up and down, and for setting the caret to the right place when moving up
        and down when a range is already selected.
        (KHTMLSelection::validate): Name tweak. expandTo variable now granularity.
        * khtml/khtml_selection.h: Make declaration changes for changes to cpp file.
        * khtml/misc/helper.cpp:
        (khtml::findWordBoundary): Added this hook for KDE to do their version of KWQFindWordBoundary
        * khtml/misc/helper.h:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::positionForCoordinates): Factor out closest box finder code to its own function
        * khtml/rendering/render_line.cpp:
        (InlineFlowBox::closestChildForXPos): New function. This is the factored code that was taken out of 
        render_block.cpp.
        (InlineBox::closestLeafChildForXPos): Ditto.
        * khtml/rendering/render_line.h: Ditto.
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::positionForCoordinates): I think I am starting to get how the coordinate transforms work.
        Made some fixups based on this greater sense of enlightenment.
        * khtml/rendering/render_text.cpp:
        (RenderText::positionForCoordinates): Ditto. Fix lastTextBox/firstTextBox code mistake.
        * khtml/xml/dom_position.cpp:
        (DOMPosition::previousWordPosition): Added.
        (DOMPosition::nextWordPosition): Added.
        (DOMPosition::previousLinePosition): No longer use nodeAtPoint. Use new closestLeafChildForXPos instead.
        (DOMPosition::nextLinePosition): Ditto.
        (DOMPosition::inLastEditableInContainingEditableBlock):
        * khtml/xml/dom_position.h:
        * kwq/KWQTextUtilities.cpp: Added.
        (KWQFindWordBoundary): Factored out code that was in a static function in khtml_selection.cpp so 
        that DOMPosition can use it too.
        * kwq/KWQTextUtilities.h: Added.

2004-04-19  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/khtml_part.cpp:
        (KHTMLPart::notifySelectionChanged): Clear the value
        used for maintaining x position when doing vertical arrow
        navigation. WebCoreBridge restores this value when needed. 
        (KHTMLPart::setXPosForVerticalArrowNavigation): New accessor.
        (KHTMLPart::xPosForVerticalArrowNavigation): New accessor.
        * khtml/khtml_part.h:
        (KHTMLPart::): Add NoXPosForVerticalArrowNavigation constant.
        * khtml/khtml_selection.cpp:
        (KHTMLSelection::modify): Add cases for UP and DOWN navigation
        (KHTMLSelection::xPosForVerticalArrowNavigation): New helper.
        * khtml/khtml_selection.h: Add UP and DOWN constants to EDirection enum.
        (KHTMLSelection::):
        * khtml/khtmlpart_p.h: Declare storage for m_xPosForVerticalArrowNavigation, 
        the value used for maintaining x position when doing vertical arrow
        navigation. 
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::positionForCoordinates): Improved this function to
        handle deficiencies exposed when trying to implement new behavior.
        * khtml/rendering/render_br.cpp:
        (RenderBR::positionForCoordinates): Added implementation of this virtual function.
        * khtml/rendering/render_br.h: Declare implementation for positionForCoordinates virtual function.
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::positionForCoordinates): Improved this function to
        handle deficiencies exposed when trying to implement new behavior.
        * khtml/rendering/render_text.cpp:
        (InlineTextBox::offsetForPosition): Remove left/right "bounds" check here.
        (RenderText::positionForCoordinates): Improved this function to
        handle deficiencies exposed when trying to implement new behavior.
        * khtml/xml/dom_position.cpp:
        (inlineBoxForRenderer): Moved to top of file so all code in the file can see this static function.
        (renderersOnDifferentLine): Ditto.
        (nextRenderedEditable): Ditto.
        (previousRenderedEditable): Ditto.
        (DOMPosition::previousLinePosition): New function. Implements the guts of up/down navigation.
        (DOMPosition::nextLinePosition): Ditto.
        * khtml/xml/dom_position.h: Added declarations for nextLinePosition and previousLinePosition.
        * kwq/WebCoreBridge.h: Add WebSelectUp and WebSelectDown constants.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Handles saving and restoring the 
        x position used for doing vertical arrow navigation.

2004-04-16  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/css/css_computedstyle.cpp:
        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Added implementations for
        these four properties: CSS_PROP_WHITE_SPACE, CSS_PROP_DISPLAY, CSS_PROP_FLOAT, and CSS_PROP_COLOR.

2004-04-16  Chris Blumenberg  <cblu@apple.com>

	Subresources weren't being archived for LINK tags.

        Reviewed by kocienda.

        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::recursive_toHTMLWithOptions): indent tweak
        * kwq/DOMHTML.mm:
        (-[DOMHTMLLinkElement _linkElementImpl]): C+casting voodoo to make methods like rel and href work correctly

2004-04-16  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::isContentEditable): Call getDocument()->updateRendering() to make sure 
        outstanding changes for this attribute are applied.
        (HTMLElementImpl::contentEditable): Call getDocument()->updateRendering() to make sure 
        outstanding changes for this attribute are applied.
        (HTMLElementImpl::setContentEditable): Call enabled.isEmpty() before strcasecmp(enabled, "true").
        It's cheaper.

2004-04-16  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/editing/htmlediting_impl.cpp: New helper.
        (DeleteSelectionCommandImpl::containsOnlyWhitespace): Fix deleting collapsed whitespace 
        at the end of a line where text has flowed to the next line and the caret is at the 
        beginning of the next line. 
        (DeleteSelectionCommandImpl::doApply): Updated for new helper.
        * khtml/editing/htmlediting_impl.h:
        * layout-tests/editing/deleting/delete-line-end-ws-001-expected.txt: Added.
        * layout-tests/editing/deleting/delete-line-end-ws-001.html: Added.
        * layout-tests/editing/deleting/delete-line-end-ws-002-expected.txt: Added.
        * layout-tests/editing/deleting/delete-line-end-ws-002.html: Added.

=== Safari-137 ===

2004-04-16  Richard Williamson   <rjw@apple.com>

	Added an SPI to allow ObjC instances to be easily bound to 
	JS.  This is needed by the dashboard guys for their prototyping.
	Eventually they will use new API.

        Reviewed by Chris.

        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::bindObject):
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge bindObject:withName:]):

2004-04-16  Chris Blumenberg  <cblu@apple.com>

	Added DOMHTMLEmbedElement as a DOM extension since EMBED is represented in our DOM even though its not part of the spec.
	Added all DOMCore and DOMHTML symbols to WebCore's symbols file.
	Removed isSubresourceURLAttribute from dom node. This was only used for the WebArchive feature and all that work is now done in WebKit.

        Reviewed by kocienda.

        * WebCore-combined.exp:
        * WebCore.exp:
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::isURLAttribute): renamed from isSubresourceURLAttribute. As a convenience to subclasses, dom_elementimpl would call isSubresourceURLAttribute in isURLAttribute, but this is no longer done
        (HTMLFrameElementImpl::isURLAttribute): ditto
        (HTMLIFrameElementImpl::isURLAttribute): ditto
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::isURLAttribute): ditto
        * khtml/html/html_formimpl.h:
        * khtml/html/html_headimpl.cpp:
        (HTMLScriptElementImpl::isURLAttribute): ditto
        * khtml/html/html_headimpl.h:
        * khtml/html/html_imageimpl.cpp: 
        (HTMLImageElementImpl::isURLAttribute): ditto
        * khtml/html/html_imageimpl.h:
        * khtml/html/html_objectimpl.cpp:
        (HTMLEmbedElementImpl::isURLAttribute): ditto
        (HTMLObjectElementImpl::isURLAttribute): ditto
        (HTMLParamElementImpl::isURLAttribute): ditto
        * khtml/html/html_objectimpl.h:
        * khtml/html/html_tableimpl.cpp:
        (HTMLTableElementImpl::isURLAttribute): ditto
        (HTMLTableCellElementImpl::isURLAttribute): ditto
        * khtml/html/html_tableimpl.h:
        * khtml/xml/dom2_rangeimpl.cpp:
        (RangeImpl::toHTMLWithOptions): take a node list (see below)
        * khtml/xml/dom2_rangeimpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::isURLAttribute):
        * khtml/xml/dom_elementimpl.h:
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::recursive_toHTMLWithOptions): append copied nodes to a list of nodes so that WebKit can operate on them
        * khtml/xml/dom_nodeimpl.h:
        * kwq/DOM.mm:
        (+[DOMNode _nodeWithImpl:]): added support for HTML types
        * kwq/DOMExtensions.h:
        * kwq/DOMHTML.mm:
        (-[DOMHTMLPreElement setWidth:]):
        (-[DOMHTMLEmbedElement _embedElementImpl]):
        (-[DOMHTMLEmbedElement align]):
        (-[DOMHTMLEmbedElement setAlign:]):
        (-[DOMHTMLEmbedElement height]):
        (-[DOMHTMLEmbedElement setHeight:]):
        (-[DOMHTMLEmbedElement name]):
        (-[DOMHTMLEmbedElement setName:]):
        (-[DOMHTMLEmbedElement src]):
        (-[DOMHTMLEmbedElement setSrc:]):
        (-[DOMHTMLEmbedElement type]):
        (-[DOMHTMLEmbedElement setType:]):
        (-[DOMHTMLEmbedElement width]):
        (-[DOMHTMLEmbedElement setWidth:]):
        (-[DOMHTMLTableElement background]):
        (-[DOMHTMLTableElement setBackground:]):
        (-[DOMHTMLTableCellElement background]): new extension 
        (-[DOMHTMLTableCellElement setBackground:]): ditto
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge nodesFromList:]): new
        (-[WebCoreBridge markupStringFromNode:nodes:]): return a list of nodes instead of subresource URLs so WebKit can operate on the nodes
        (-[WebCoreBridge markupStringFromRange:nodes:]): ditto

2004-04-15  David Hyatt  <hyatt@apple.com>

	Fix for 3624335, bugs with overflow and positioned objects.  The scrollbar didn't properly update
	as you changed the sizes of positioned objects inside an overflow block.
	
        Reviewed by rjw

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlock):
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutBlock):
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::updateScrollInfoAfterLayout):

2004-04-15  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave
        
        Improved selection behavior. As part of this work, I removed
        almost all of the checkSelectionPoint() functions, leaving
        only those associated with fonts, and all of the 
        checkSelectionPointIgnoringContinuations() functions. Each
        of these has been replaced by a new function called
        positionForCoordinates(), which returns a DOMPosition.
        
        * WebCore.pbproj/project.pbxproj:
        * khtml/khtml_events.cpp:
        (khtml::MouseEvent::offset): Converted to use positionForCoordinates.
        * khtml/khtml_part.cpp: Ditto.
        (KHTMLPart::isPointInsideSelection):
        (KHTMLPart::handleMousePressEventDoubleClick): Ditto.
        (KHTMLPart::handleMousePressEventTripleClick): Ditto.
        (KHTMLPart::handleMousePressEventSingleClick): Ditto.
        (KHTMLPart::handleMouseMoveEventSelection): Ditto.
        (KHTMLPart::khtmlMouseReleaseEvent): Ditto.
        * khtml/khtml_part.h:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::positionForBox): New helper.
        (khtml::RenderBlock::positionForRenderer): New helper.
        (khtml::RenderBlock::positionForCoordinates): New selection-node-offset-finder method.
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_br.cpp: Removed checkSelectionPointIgnoringContinuations.
        No special behavior is needed for this class anymore.
        * khtml/rendering/render_br.h: Ditoo.
        * khtml/rendering/render_container.cpp:
        (RenderContainer::positionForCoordinates): New selection-node-offset-finder method.
        * khtml/rendering/render_container.h:
        * khtml/rendering/render_line.cpp:
        (InlineBox::firstLeafChild): New helper.
        (InlineBox::lastLeafChild): New helper.
        (InlineFlowBox::firstLeafChild): New helper.
        (InlineFlowBox::lastLeafChild): New helper.
        * khtml/rendering/render_line.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::firstLeafChild): New helper.
        (RenderObject::lastLeafChild): New helper.
        (RenderObject::positionForCoordinates):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::positionForCoordinates): New selection-node-offset-finder method.
        * khtml/rendering/render_replaced.h:
        * khtml/rendering/render_text.cpp:
        (InlineTextBox::offsetForPosition): New helper, replaces checkSelectionPoint()
        (RenderText::positionForCoordinates): New selection-node-offset-finder method.
        * khtml/rendering/render_text.h:
        * khtml/xml/dom_nodeimpl.cpp: Added positionForCoordinates() convenience here. This
        checks to see if the node has a renderer before doing the position check.
        * khtml/xml/dom_nodeimpl.h: Ditto.
        * kwq/DOM.mm:
        (-[DOMNode isContentEditable]): Added this unrelated method, since without it, I crash when dragging an image.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge moveCaretToPoint:]): Converted to use positionForCoordinates.

2004-04-15  David Hyatt  <hyatt@apple.com>

	Fix for 3603455, block truncation support.
	
        Reviewed by kocienda

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/ecma/kjs_css.cpp:
        (cssPropertyName):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::lineCount):
        (khtml::RenderBlock::heightForLineCount):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutHorizontalBox):
        (khtml::RenderFlexibleBox::layoutVerticalBox):
        * khtml/rendering/render_style.cpp:
        (marquee):
        (StyleCSS3NonInheritedData::operator==):
        (RenderStyle::diff):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::lineClamp):
        (khtml::RenderStyle::setLineClamp):
        (khtml::RenderStyle::initialLineClamp):

2004-04-13  Chris Blumenberg  <cblu@apple.com>

	- Removed WebCoreElementIsEditableKey. This functionality is available via [DOMNode isContentEditable].

        Reviewed by rjw.

        * WebCore-combined.exp:
        * WebCore.exp:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge elementAtPoint:]): removed use of WebCoreElementIsEditableKey
        (-[WebCoreBridge URLWithRelativeString:]): new method for WebKit API

2004-04-13  David Hyatt  <hyatt@apple.com>

	Fix for 3559764, make sure overflow is applied consistently using a separate bit on render objects, so that
	the body scroll quirk can easily disable overflow even when it is present on the style.
	
        Reviewed by kocienda

        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::putValue):
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::setStyle):
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::layoutBlockChildren):
        (khtml::RenderBlock::paintObject):
        (khtml::RenderBlock::rightOffset):
        (khtml::RenderBlock::lowestPosition):
        (khtml::RenderBlock::rightmostPosition):
        (khtml::RenderBlock::leftmostPosition):
        (khtml::RenderBlock::isPointInScrollbar):
        (khtml::RenderBlock::nodeAtPoint):
        (khtml::RenderBlock::inRootBlockContext):
        * khtml/rendering/render_block.h:
        (khtml::RenderBlock::overflowHeight):
        (khtml::RenderBlock::overflowWidth):
        * khtml/rendering/render_box.cpp:
        (RenderBox::setStyle):
        (RenderBox::contentWidth):
        (RenderBox::contentHeight):
        (RenderBox::absolutePosition):
        (RenderBox::computeAbsoluteRepaintRect):
        (RenderBox::calcAbsoluteVertical):
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutBlock):
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::lowestPosition):
        (RenderFlow::rightmostPosition):
        (RenderFlow::leftmostPosition):
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::updateLayerPosition):
        (RenderLayer::updateScrollInfoAfterLayout):
        (RenderLayer::intersectsDamageRect):
        (RenderLayer::containsPoint):
        * khtml/rendering/render_object.cpp:
        (RenderObject::RenderObject):
        (RenderObject::requiresLayer):
        (RenderObject::clientWidth):
        (RenderObject::clientHeight):
        (RenderObject::scrollWidth):
        (RenderObject::scrollHeight):
        (RenderObject::setStyle):
        (RenderObject::absolutePosition):
        (RenderObject::nodeAtPoint):
        (RenderObject::avoidsFloats):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::hasOverflowClip):
        (khtml::RenderObject::hasAutoScrollbars):
        (khtml::RenderObject::scrollsOverflow):
        (khtml::RenderObject::includeScrollbarSize):
        (khtml::RenderObject::setHasOverflowClip):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::overflow):
        (khtml::RenderStyle::isDisplayReplacedType):
        (khtml::RenderStyle::isDisplayInlineType):
        * khtml/rendering/render_table.cpp:
        (RenderTable::setStyle):
        (RenderTableCell::setStyle):
        (RenderTableCell::requiresLayer):
        * khtml/rendering/render_table.h:

2004-04-12  David Hyatt  <hyatt@apple.com>

	Fix for 3556036, make sure that when the position changes via style that all render layer
	descendants simply immediately repaint.
	
        Reviewed by kocienda
	
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::repaintIncludingDescendants):
        * khtml/rendering/render_layer.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::setStyle):

2004-04-12  Chris Blumenberg  <cblu@apple.com>

	- Fixed build failure by removing references to WebArchive in WebCore.
	- For HTML copy/paste, relative URLs are now made absolute at paste time instead of at copy time. This allows relative URLs to be kept relative if the destination page has the same base URL as the source page.

        Reviewed by kocienda.

        * khtml/editing/htmlediting.cpp:
        (PasteMarkupCommand::PasteMarkupCommand): take the base URL of the clipping
        * khtml/editing/htmlediting.h:
        * khtml/editing/htmlediting_impl.cpp:
        (PasteMarkupCommandImpl::PasteMarkupCommandImpl): take the base URL of the clipping
        (PasteMarkupCommandImpl::doApply): if we have a base URL and it is different than the base URL of the document, fix the URLs in the new DOM tree
        * khtml/editing/htmlediting_impl.h:
        * khtml/xml/dom2_rangeimpl.cpp:
        (RangeImpl::toHTMLWithOptions): removed completeURLs param
        * khtml/xml/dom2_rangeimpl.h:
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::recursive_toHTMLWithOptions): removed completeURLs param
        (NodeImpl::recursive_toHTML): ditto
        (NodeImpl::recursive_completeURLs): new
        * khtml/xml/dom_nodeimpl.h:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge markupStringFromNode:subresourceURLStrings:]): call recursive_toHTML with less params
        (-[WebCoreBridge markupStringFromRange:subresourceURLStrings:]): ditto
        (-[WebCoreBridge replaceSelectionWithMarkupString:baseURLString:]): take a base URL

2004-04-12  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave

        Added execCommand support for cut/copy/paste.
        
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::execCommand): Added cut/copy/paste atoms and added else if cases
        for the commands.
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::issueCutCommand): Glue for calling from WebCore to do a cut in Cocoa.
        (KWQKHTMLPart::issueCopyCommand): Same as above, but for copy.
        (KWQKHTMLPart::issuePasteCommand): Same as above, but for paste.
        * kwq/WebCoreBridge.h: Declared issueCutCommand, issueCopyCommand, and issuePasteCommand
        to be implemented on the WebKit side of the bridge.
        * layout-tests/editing/editing.js: Added cut/copy/paste support to js library to support
        making layout tests.
        * layout-tests/editing/pasteboard/copy-paste-text-001-expected.txt: Added.
        * layout-tests/editing/pasteboard/copy-paste-text-001.html: Added.
        * layout-tests/editing/pasteboard/cut-paste-text-002-expected.txt: Added.
        * layout-tests/editing/pasteboard/cut-paste-text-002.html: Added.
        * layout-tests/editing/pasteboard/cut-text-001-expected.txt: Added.
        * layout-tests/editing/pasteboard/cut-text-001.html: Added.

2004-04-12  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John
        
        Some delete and insert cleanups.

        * khtml/editing/htmlediting_impl.cpp:
        (DeleteSelectionCommandImpl::doApply): For ending position case 1,
        the caret should be placed before the first child of the containing block, 
        not before the containing block itself. Also, add some code to handle
        converting nbsp's back to regular spaces. This will need to be improved
        some day to convert only nbsp's added by the editor to make rendering come out right.
        (InputTextCommandImpl::execute): 
        (TypingCommandImpl::issueCommandForDeleteKey): Make deleting collapsible whitespace part 
        of the work of deleting a selection, rather than something that needs to be done by a 
        user of DeleteSelectionCommandImpl. This makes it impossible to leave out
        this essential step.
        (TypingCommandImpl::deleteKeyPressed): We can't use a possible optimization here until 
        the code to do deletions properly has been factored better. Big FIXME added.
        * layout-tests/editing/deleting/delete-block-contents-001-expected.txt: Updated for
        ending position case 1 behavior change.
        * layout-tests/editing/deleting/delete-block-contents-002-expected.txt: Ditto. 
        * layout-tests/editing/deleting/delete-block-contents-003-expected.txt: Ditto.

2004-04-09  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        Added support for methods added to flesh out the WebKit 
        editing API.

        * khtml/khtml_part.h: Removed pasteMarkupString and deleteSelection functions.
        All this work is now done in WebCoreBridge.
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge isSelectionEditable]): Added a FIXME.
        (-[WebCoreBridge setDrawsBackground:]): Moved this since CVS merged this in the
        middle of editing code.
        (-[WebCoreBridge replaceSelectionWithNode:]): New method.
        (-[WebCoreBridge replaceSelectionWithText:]): Replaces insertText:
        (-[WebCoreBridge replaceSelectionWithMarkupString:]): New method.
        (-[WebCoreBridge replaceSelectionWithWebArchive:]): New method.
        (-[WebCoreBridge replaceSelectionWithNewline]): Replaces insertNewline:
        (-[WebCoreBridge deleteSelection]): New method.
        (-[WebCoreBridge applyStyle:toElementsInDOMRange:]): New method.

2004-04-09  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - added "transparent mode"

        * khtml/khtmlview.h: Added isTransparent and setTransparent functions.
        * khtml/khtmlview.cpp:
        (KHTMLViewPrivate::KHTMLViewPrivate): Initialize isTransparent to false.
        (KHTMLView::isTransparent): Return isTransparent.
        (KHTMLView::setTransparent): Set isTransparent.

        * khtml/rendering/render_box.cpp:
        (RenderBox::paintRootBoxDecorations): Use slow repaints for the top frame when the view
        is transparent; also don't draw a background. This is the same thing we do for subframes.
        (RenderBox::paintBackgroundExtended): Don't do the extra draw so we can blend with the
        background color for the top frame when the view is transparent.
        * khtml/rendering/render_canvas.cpp: (RenderCanvas::paintBoxDecorations): More of the same.

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::paint): Make "fill with red" debug mode work only
        when the view is not transparent.

        * kwq/WebCoreBridge.h: Added setDrawsBackground: method.
        * kwq/WebCoreBridge.mm: (-[WebCoreBridge setDrawsBackground:]): If told NO
        (don't draw background), then set isTransparent to true on the KHTMLView.

2004-04-09  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me
        
        Added one more layout test for editing.

        * layout-tests/editing/deleting/delete-3608445-fix-expected.txt: Added.
        * layout-tests/editing/deleting/delete-3608445-fix.html: Added.

2004-04-08  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	Changed things so that newly created objects get a prototype based
	on the scope chain of the current function, rather than the
	interpreter that started execution. This fixes the following bugs:
	
	<rdar://problem/3368523>: ARCH: wrong prototype used to create new objects (hang on lookup.atomica.com)
        <rdar://problem/3559173>: ARCH: Cannot scan using a HP Jetdirect product (JS object prototypes bind incorrectly)

	* khtml/ecma/kjs_binding.h:
        (KJS::cacheDOMObject):
        (KJS::cacheGlobalObject):
        * khtml/ecma/kjs_css.cpp:
        (KJS::getDOMStyleSheet):
        (KJS::getDOMStyleSheetList):
        (KJS::getDOMCSSValue):
        * khtml/ecma/kjs_dom.cpp:
        (KJS::getDOMDocumentNode):
        (KJS::getDOMNode):
        * khtml/ecma/kjs_events.cpp:
        (KJS::getDOMEvent):
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocument::tryGet):
        (KJS::HTMLDocument::putValue):
        (KJS::getSelectHTMLCollection):
        * khtml/ecma/kjs_navigator.cpp:
        (Navigator::Navigator):
        (PluginBase::PluginBase):
        * khtml/ecma/kjs_window.cpp:
        (KJS::History::History):
        (KJS::FrameArray::FrameArray):
        (Screen::Screen):
        (Window::retrieveActive):
        (Window::put):
        (Window::isSafeScript):
        (WindowFunc::tryCall):
        (Location::put):
        (LocationFunc::tryCall):

2004-04-09  David Hyatt  <hyatt@apple.com>

	Fix for 3613081, repaint glitches when using overflow:auto/overlay.
	
        Reviewed by john

        * khtml/rendering/render_layer.cpp:
        (RenderLayer::updateScrollInfoAfterLayout):

2004-04-09  David Hyatt  <hyatt@apple.com>

	Fix for 3608445, garbage characters rendered after doing delete.  Delta was unsigned when it was supposed to
	be signed, since deletion involves a negative delta.  Also had an off-by-one error in the line break end check.
	
        Reviewed by john

        * khtml/rendering/render_text.cpp:
        (RenderText::setTextWithOffset):

2004-04-09  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me
        
        Added two more layout tests for editing.

        * layout-tests/editing/selection/move-between-blocks-no-001-expected.txt: Added.
        * layout-tests/editing/selection/move-between-blocks-no-001.html: Added.
        * layout-tests/editing/selection/move-between-blocks-yes-001-expected.txt: Added.
        * layout-tests/editing/selection/move-between-blocks-yes-001.html: Added.

2004-04-09  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave
        
        Small collection of editing improvements.

        * ChangeLog:
        * khtml/editing/htmlediting_impl.cpp:
        (shouldDeleteUpstreamPosition): This was deleting significant spaces on preceding
        lines when the caret was at the start of a line. Fixed. 
        (DeleteSelectionCommandImpl::doApply): Fixed a case where caret jumped to previous
        line when deleting a character at the start of a line after a BR.
        (InputNewlineCommandImpl::doApply): Handle more cases correctly. Previously, this
        only handled inserting a newline when the caret was already in a text node.
        (InputTextCommandImpl::prepareForTextInsertion): Ditto.
        (InputTextCommandImpl::execute): Ditto.
        * khtml/editing/htmlediting_impl.h:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::checkSelectionPointIgnoringContinuations): Now can place caret
        with a click in an empty block.
        * khtml/rendering/render_block.h: Added checkSelectionPointIgnoringContinuations declaration.
        * khtml/rendering/render_replaced.cpp: 
        (RenderReplaced::checkSelectionPointIgnoringContinuations): Now can place caret with a click 
        on a replaced element.
        * khtml/rendering/render_replaced.h: Added checkSelectionPointIgnoringContinuations declaration.
        * khtml/rendering/render_text.cpp:
        (InlineTextBox::checkSelectionPoint): Now can place caret with a click in text on a line made "tall"
        by an image on the same line.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::createEditingTextNode): This creates a text node subclass that whill always create
        a renderer for itself.
        * khtml/xml/dom_docimpl.h:
        * khtml/xml/dom_position.cpp:
        (DOMPosition::isLastRenderedPositionInEditableBlock): Improved code to handle more cases.
        * khtml/xml/dom_textimpl.cpp:
        (TextImpl::TextImpl): Rolled out m_rendererIsNeeded flag.
        (TextImpl::rendererIsNeeded): Ditto.
        (EditingTextImpl::EditingTextImpl): New class.
        (EditingTextImpl::~EditingTextImpl): New.
        (EditingTextImpl::rendererIsNeeded): New. Always returns true.
        * khtml/xml/dom_textimpl.h: New EditingTextImpl class.
        * layout-tests/editing/deleting/delete-3608430-fix-expected.txt: Added.
        * layout-tests/editing/deleting/delete-3608430-fix.html: Added.
        * layout-tests/editing/deleting/delete-3608462-fix-expected.txt: Added.
        * layout-tests/editing/deleting/delete-3608462-fix.html: Added.
        * layout-tests/editing/deleting/delete-trailing-ws-002-expected.txt: Added.
        * layout-tests/editing/deleting/delete-trailing-ws-002.html: Added.

2004-04-08  Chris Blumenberg  <cblu@apple.com>

	Renamed the PasteHTMLCommand to PasteMarkupCommand. Removed PasteImageCommand because we will use PasteMarkupCommand for pasting images.

        Reviewed by kocienda.

        * ChangeLog:
        * khtml/editing/htmlediting.cpp:
        (PasteMarkupCommand::PasteMarkupCommand):
        (PasteMarkupCommand::~PasteMarkupCommand):
        (PasteMarkupCommand::impl):
        (PasteMarkupCommand::markupString):
        * khtml/editing/htmlediting.h:
        (khtml::):
        * khtml/editing/htmlediting_impl.cpp:
        (PasteMarkupCommandImpl::PasteMarkupCommandImpl):
        (PasteMarkupCommandImpl::~PasteMarkupCommandImpl):
        (PasteMarkupCommandImpl::commandID):
        (PasteMarkupCommandImpl::doApply):
        * khtml/editing/htmlediting_impl.h:
        (khtml::PasteMarkupCommandImpl::markupString):
        * khtml/khtml_part.cpp:
        (KHTMLPart::pasteMarkupString):
        * khtml/khtml_part.h:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge pasteMarkupString:]):


2004-04-08  David Hyatt  <hyatt@apple.com>

	Fix for 3608430 and 3608462, crashes in findNextLineBreak when deleting.  Make sure that the removal of line boxes
	always checks the previous root line box's line break information and dirties the line if it is pointing
	to the deleted object.
	
        Reviewed by kocienda

        * khtml/rendering/render_line.cpp:
        (InlineFlowBox::removeChild):

2004-04-08  Chris Blumenberg  <cblu@apple.com>

	Removed DOMExtensions.h from DOM.h until it is public.

        Reviewed by koicienda.

        * kwq/DOM.h:

2004-04-07  Chris Blumenberg  <cblu@apple.com>

	WebCore side for supporting WebDOMOperations.	

        Reviewed by rjw.

        * WebCore-combined.exp:
        * WebCore.exp:
        * kwq/DOM.mm:
        * kwq/DOMExtensions.h:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (+[WebCoreBridge bridgeForDOMDocument:]): new
        (-[WebCoreBridge imageForImageElement:]): new

2004-04-07  Darin Adler  <darin@apple.com>

        Reviewed by Chris.

        * kwq/DOMCSS.h: Changed DOMCSS2Properties to be a category on DOMCSSStyleDeclaration
        (after API review, oops!, but I doubt anyone will even notice).
        * kwq/DOM-CSS.mm: Implemented the entire DOMCSS2Properties category.

2004-04-07  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Chris

        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge _stringWithDocumentTypeStringAndMarkupString:]): Do not add a newline in between
        the doctype and the content. The newline was showing up when the content was pasted.

2004-04-07  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        Removed concept of currentSelection from EditCommands and refined concept of
        startingSelection and endingSelection, making them work more sensibly in the 
        system of composed editing commands.

        * khtml/editing/htmlediting.cpp: Removed currentSelection().
        * khtml/editing/htmlediting.h: Ditto.
        * khtml/editing/htmlediting_impl.cpp: currentSelection().
        (CompositeEditCommandImpl::applyCommandToComposite): Set the startingSelection 
        and endingSelection for the command being applied to the endingSelection of
        its new parent. This is the proper starting and ending point.
        (CompositeEditCommandImpl::deleteSelection): Changed call to currentSelection
        to endingSelection.
        (DeleteCollapsibleWhitespaceCommandImpl::DeleteCollapsibleWhitespaceCommandImpl): Ditto.
        (DeleteSelectionCommandImpl::DeleteSelectionCommandImpl): Changed call from startingSelection
        to endingSelection.
        (DeleteSelectionCommandImpl::joinTextNodesWithSameStyle): Changed call to currentSelection
        to endingSelection.
        (InputNewlineCommandImpl::doApply): Ditto.
        (InputTextCommandImpl::deleteCharacter): Ditto.
        (InputTextCommandImpl::prepareForTextInsertion): Ditto.
        (InputTextCommandImpl::execute): Ditto.
        (PasteHTMLCommandImpl::doApply): Ditto.
        (TypingCommandImpl::insertText): Remove extraneous call to reset endingSelection. This has
        already been done by the helpers this command uses to do its work.
        (TypingCommandImpl::issueCommandForDeleteKey): Changed call to currentSelection
        to endingSelection.
        (TypingCommandImpl::deleteKeyPressed): Remove extraneous call to reset endingSelection. This has
        already been done by the helpers this command uses to do its work.
        * khtml/editing/htmlediting_impl.h:
        (khtml::EditCommandImpl::endingSelection): Remove extraneous call to reset endingSelection. This has
        already been done by the helpers this command uses to do its work.

2004-04-07  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John
        
        Make paste work again. It has been broken for some undetermined
        period of time.

        * khtml/editing/htmlediting_impl.cpp:
        (CompositeEditCommandImpl::insertNodeAt): Handle inserting a node when
        the reference node has children, or is an empty block.
        (CompositeEditCommandImpl::inputText): New convenience to create and
        apply an InputTextCommand.
        (InputTextCommandImpl::execute): Collapse whitespace when selection is
        not a range. Deleting the selection when it is a range already does that, 
        so no need to make special accommodation for it.
        (PasteHTMLCommandImpl::PasteHTMLCommandImpl): Initialize m_HTMLString using 
        an initialization list.
        (PasteHTMLCommandImpl::doApply): Collapse whitespace.... as above for 
        InputTextCommandImpl::execute. Don't need to qualify NodeImpl's with DOM 
        namespace. Clean up selection access; no need to grep around for it, the
        desired selection is returned by calling currentSelection(). Treat "simple
        text paste" like typing. Tighten up and simplify HTML fragment paste; no
        real change in algorithm. 
        (SplitTextNodeCommandImpl::SplitTextNodeCommandImpl): m_text1 member variable
        not initialized. This bug was introduced by a recent change by me. Fixing now.
        * khtml/editing/htmlediting_impl.h: Add inputText() declaration.

2004-04-06  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Richard

        * khtml/khtml_part.cpp:
        (KHTMLPart::setSelection): Now calls setFocusNodeIfNeeded.
        (KHTMLPart::takeSelectionFrom): Now calls setFocusNodeIfNeeded.
        (KHTMLPart::clearSelection): Now calls setFocusNodeIfNeeded.
        (KHTMLPart::invalidateSelection): Now calls setFocusNodeIfNeeded.
        (KHTMLPart::setSelectionVisible): Now calls setFocusNodeIfNeeded.
        (KHTMLPart::setFocusNodeIfNeeded): New function focuses first element 
        of a selection that is contenteditable, if any of the nodes are. The "first"
        determination is made by doing a document-order search.
        * khtml/khtml_part.h:
        * khtml/xml/dom_nodeimpl.cpp: Remove debug spam.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge setSelectedDOMRange:]): Now updates document layout before
        setting the selection. This was needed for Blot, so that setting the 
        contenteditable attribute on the body is "seen" when the attempt is made
        to set the selection right immediately after.

2004-04-06  David Hyatt  <hyatt@apple.com>

	After columns have been expanded to their preferred sizes, if space is left over in the table, then
	fixed columns should expand to fill space before percentage width columns do.  The old code had it
	backwards.
	
        Reviewed by john

        * khtml/rendering/table_layout.cpp:
        (AutoTableLayout::layout):

2004-04-06  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave

        * khtml/dom/dom_node.cpp:
        (Node::isContentEditable): Added. Calls through to impl function of same name.
        * khtml/dom/dom_node.h: Added isContentEditable declaration.
        * khtml/khtmlview.cpp:
        (KHTMLView::viewportMouseMoveEvent): Now, the cursor will change
        to an i-beam whenever it is over a node that is contenteditable, and nothing, 
        like a link, takes precedence.

2004-04-06  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave

        * khtml/css/html4.css: Refine focus rules so that HTML and BODY
        elements do not draw a focus ring around themselves when focused.
        This prevents a silly-looking focus ring from drawing around a 
        document's entire contents when a body element is contenteditable.

2004-04-06  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave

        Caret height is now the height of the tallest element on the line,
        mimicking NSText behavior.

        * khtml/rendering/render_box.cpp:
        (RenderBox::caretPos): Use root line box topOverflow and bottomOverflow 
        for the calculation of caret height.
        * khtml/rendering/render_text.cpp:
        (RenderText::caretPos): Ditto.

2004-04-06  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me

        Added a new suite of layout tests for editing, all added
        in the new layout-tests/editing subtree.

        * layout-tests/editing/abe.jpg: Added.
        * layout-tests/editing/deleting/delete-block-contents-001-expected.txt: Added.
        * layout-tests/editing/deleting/delete-block-contents-001.html: Added.
        * layout-tests/editing/deleting/delete-block-contents-002-expected.txt: Added.
        * layout-tests/editing/deleting/delete-block-contents-002.html: Added.
        * layout-tests/editing/deleting/delete-block-contents-003-expected.txt: Added.
        * layout-tests/editing/deleting/delete-block-contents-003.html: Added.
        * layout-tests/editing/deleting/delete-br-001-expected.txt: Added.
        * layout-tests/editing/deleting/delete-br-001.html: Added.
        * layout-tests/editing/deleting/delete-br-002-expected.txt: Added.
        * layout-tests/editing/deleting/delete-br-002.html: Added.
        * layout-tests/editing/deleting/delete-br-003-expected.txt: Added.
        * layout-tests/editing/deleting/delete-br-003.html: Added.
        * layout-tests/editing/deleting/delete-br-004-expected.txt: Added.
        * layout-tests/editing/deleting/delete-br-004.html: Added.
        * layout-tests/editing/deleting/delete-br-005-expected.txt: Added.
        * layout-tests/editing/deleting/delete-br-005.html: Added.
        * layout-tests/editing/deleting/delete-br-006-expected.txt: Added.
        * layout-tests/editing/deleting/delete-br-006.html: Added.
        * layout-tests/editing/deleting/delete-character-001-expected.txt: Added.
        * layout-tests/editing/deleting/delete-character-001.html: Added.
        * layout-tests/editing/deleting/delete-contiguous-ws-001-expected.txt: Added.
        * layout-tests/editing/deleting/delete-contiguous-ws-001.html: Added.
        * layout-tests/editing/deleting/delete-image-001-expected.txt: Added.
        * layout-tests/editing/deleting/delete-image-001.html: Added.
        * layout-tests/editing/deleting/delete-image-002-expected.txt: Added.
        * layout-tests/editing/deleting/delete-image-002.html: Added.
        * layout-tests/editing/deleting/delete-image-003-expected.txt: Added.
        * layout-tests/editing/deleting/delete-image-003.html: Added.
        * layout-tests/editing/deleting/delete-leading-ws-001-expected.txt: Added.
        * layout-tests/editing/deleting/delete-leading-ws-001.html: Added.
        * layout-tests/editing/deleting/delete-selection-001-expected.txt: Added.
        * layout-tests/editing/deleting/delete-selection-001.html: Added.
        * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt: Added.
        * layout-tests/editing/deleting/delete-trailing-ws-001.html: Added.
        * layout-tests/editing/editing.js: Added.
        * layout-tests/editing/inserting/typing-001-expected.txt: Added.
        * layout-tests/editing/inserting/typing-001.html: Added.
        * layout-tests/editing/inserting/typing-002-expected.txt: Added.
        * layout-tests/editing/inserting/typing-002.html: Added.
        * layout-tests/editing/inserting/typing-around-br-001-expected.txt: Added.
        * layout-tests/editing/inserting/typing-around-br-001.html: Added.
        * layout-tests/editing/inserting/typing-around-image-001-expected.txt: Added.
        * layout-tests/editing/inserting/typing-around-image-001.html: Added.
        * layout-tests/editing/selection/extend-by-character-001-expected.txt: Added.
        * layout-tests/editing/selection/extend-by-character-001.html: Added.
        * layout-tests/editing/selection/extend-by-character-002-expected.txt: Added.
        * layout-tests/editing/selection/extend-by-character-002.html: Added.
        * layout-tests/editing/selection/extend-by-character-003-expected.txt: Added.
        * layout-tests/editing/selection/extend-by-character-003.html: Added.
        * layout-tests/editing/selection/extend-by-character-004-expected.txt: Added.
        * layout-tests/editing/selection/extend-by-character-004.html: Added.
        * layout-tests/editing/selection/extend-by-character-005-expected.txt: Added.
        * layout-tests/editing/selection/extend-by-character-005.html: Added.
        * layout-tests/editing/selection/move-by-character-001-expected.txt: Added.
        * layout-tests/editing/selection/move-by-character-001.html: Added.
        * layout-tests/editing/selection/move-by-character-002-expected.txt: Added.
        * layout-tests/editing/selection/move-by-character-002.html: Added.
        * layout-tests/editing/selection/move-by-character-003-expected.txt: Added.
        * layout-tests/editing/selection/move-by-character-003.html: Added.
        * layout-tests/editing/selection/move-by-character-004-expected.txt: Added.
        * layout-tests/editing/selection/move-by-character-004.html: Added.
        * layout-tests/editing/selection/move-by-character-005-expected.txt: Added.
        * layout-tests/editing/selection/move-by-character-005.html: Added.
        * layout-tests/editing/undo/redo-typing-001-expected.txt: Added.
        * layout-tests/editing/undo/redo-typing-001.html: Added.
        * layout-tests/editing/undo/undo-typing-001-expected.txt: Added.
        * layout-tests/editing/undo/undo-typing-001.html: Added.

2004-04-06  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave

        Added execCommand feature. 
        Added Javascript selection object.
        This lays the groundwork for layout tests for editing.

        * khtml/dom/dom_doc.cpp:
        (DOM::Document::execCommand): Added. Calls through to impl's execCommand.
        * khtml/dom/dom_doc.h: Added execCommand declaration.
        * khtml/ecma/kjs_dom.cpp:
        (DOMDocumentProtoFunc::tryCall): Switch on new ExecCommand constant and call through to the document.
        * khtml/ecma/kjs_dom.h: Added ExecCommand constant.
        (KJS::DOMDocument::):
        * khtml/ecma/kjs_dom.lut.h: Generated file.
        * khtml/ecma/kjs_window.cpp:
        (Window::Window): Initialize selection object.
        (Window::selection): Return window's selection object.
        (Window::mark): Mark selection object.
        (WindowFunc::tryCall): Return selection object on GetSelection.
        (LocationFunc::tryCall): Added.
        (Selection::Selection): Added.
        (Selection::~Selection): Added.
        (Selection::get): Added.
        (Selection::put): Added.
        (Selection::toPrimitive): Added.
        (Selection::toString): Added.
        (SelectionFunc::tryCall): Added.
        * khtml/ecma/kjs_window.h:
        (KJS::Selection::): Added.
        (KJS::Selection::part): Added.
        (KJS::Selection::classInfo): Added.
        * khtml/ecma/kjs_window.lut.h: Generated file.
        * khtml/editing/htmlediting_impl.cpp:
        (debugPosition): Debugging aid.
        (DeleteCollapsibleWhitespaceCommandImpl::deleteWhitespace): Move the ending position
        if you are about to delete it. Fixes a crasher I discovered while writing tests.
        (DeleteSelectionCommandImpl::doApply): Move to containing editable block position 0
        instead of 1 in a block in delete case 1.
        (InputTextCommandImpl::prepareForTextInsertion):
        (TypingCommandImpl::issueCommandForDeleteKey):
        * khtml/khtml_part.h:
        * khtml/khtml_selection.cpp:
        (KHTMLSelection::validate): Now adjusts the selection down to leaf nodes if needed.
        (KHTMLSelection::debugPosition): Debugging aid.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::execCommand): Added. Supports five different commands.
        * khtml/xml/dom_docimpl.h:
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::previousEditable): Use false instead of 0 for equality check.
        (NodeImpl::nextEditable): Ditto.
        * khtml/xml/dom_position.cpp:
        (DOMPosition::equivalentLeafPosition): New function
        (DOMPosition::previousRenderedEditablePosition): New function
        (DOMPosition::nextRenderedEditablePosition): New function
        (DOMPosition::equivalentUpstreamPosition): Refined behavior to handle more cases correctly.
        (DOMPosition::equivalentDownstreamPosition): Ditto.
        (DOMPosition::atStartOfContainingEditableBlock):New function
        (DOMPosition::atStartOfRootEditableBlock):New function
        * khtml/xml/dom_position.h:
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::issueUndoCommand): New function for calling undo programatically.
        (KWQKHTMLPart::issueRedoCommand): Ditto, but for redo.
        * kwq/KWQRenderTreeDebug.cpp:
        (nodePositionRelativeToRoot): New function to generate log information for the selection.
        (writeSelection): Writes the selection if there is one.
        (externalRepresentation): Calls writeSelection
        * kwq/WebCoreBridge.h: New declarations for issueUndoCommand and issueRedoCommand.

2004-04-05  Darin Adler  <darin@apple.com>

        * khtml/html/kentities.gperf: Added &COPY; and &REG;, both supported by Gecko
        (and presumably by WinIE). Also re-sorted the list.
        * khtml/html/kentities.c: Regenerated.

2004-04-05  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - rolled over fix from KHTML tree; anchor inside another anchor

        * khtml/rendering/render_layer.cpp: (RenderLayer::nodeAtPoint):
        Make sure the URL element is the innermost one, by not setting it once
        it's already set.

2004-04-05  David Hyatt  <hyatt@apple.com>

	Implement overflow: overlay so that a scrollbar can show/hide without causing a layout.
	
        Reviewed by darin

        * ChangeLog:
        * khtml/css/css_computedstyle.cpp:
        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::layoutBlockChildren):
        (khtml::RenderBlock::rightOffset):
        * khtml/rendering/render_box.cpp:
        (RenderBox::contentWidth):
        (RenderBox::contentHeight):
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::updateScrollInfoAfterLayout):
        * khtml/rendering/render_object.cpp:
        (RenderObject::clientWidth):
        (RenderObject::clientHeight):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::RenderStyle::hasAutoScrollbars):
        (khtml::RenderStyle::scrollsOverflow):
        (khtml::RenderStyle::includeScrollbarSize):

2004-04-03  David Hyatt  <hyatt@apple.com>

	Implementation of <input type=range>, which makes sliders available in Web pages.
	
        Reviewed by john

        * WebCore.pbproj/project.pbxproj:
        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::getValueProperty):
        (DOMNode::putValue):
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMNode::):
        * khtml/ecma/kjs_dom.lut.h:
        (KJS::):
        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::setType):
        (HTMLInputElementImpl::type):
        (HTMLInputElementImpl::click):
        (HTMLInputElementImpl::accessKeyAction):
        (HTMLInputElementImpl::parseHTMLAttribute):
        (HTMLInputElementImpl::rendererIsNeeded):
        (HTMLInputElementImpl::createRenderer):
        (HTMLInputElementImpl::encoding):
        * khtml/html/html_formimpl.h:
        (DOM::HTMLInputElementImpl::):
        * khtml/misc/htmlattrs.c:
        (hash_attr):
        (findAttr):
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:
        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::slotTextChanged):
        (:RenderFormElement):
        (RenderSlider::calcMinMaxWidth):
        (RenderSlider::updateFromElement):
        (RenderSlider::slotSliderValueChanged):
        * khtml/rendering/render_form.h:
        (khtml::RenderSlider::element):
        (khtml::RenderSlider::renderName):
        (khtml::RenderSlider::canHaveIntrinsicMargins):
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::typeToId):
        (EventImpl::idToType):
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::):
        * kwq/KWQSlider.h: Added.
        * kwq/KWQSlider.mm: Added.
        (-[KWQSlider initWithQSlider:]):
        (-[KWQSlider slide:]):
        (m_val):
        (QSlider::setFont):
        (QSlider::sizeHint):
        (QSlider::setValue):
        (QSlider::setMinValue):
        (QSlider::setMaxValue):
        (QSlider::value):
        (QSlider::minValue):
        (QSlider::maxValue):
        (QSlider::sliderValueChanged):
        (QSlider::dimensions):
        * kwq/KWQSlot.mm:
        (KWQSlot::KWQSlot):
        (KWQSlot::call):

2004-04-05  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3612580>: SPI: WebPlugin selection

        Reviewed by kocienda.

        * WebCore.pbproj/project.pbxproj:
        * khtml/rendering/render_replaced.cpp:
        (RenderWidget::setSelectionState): new override, calls QWidget::setIsSelected
        * khtml/rendering/render_replaced.h:
        (khtml::RenderWidget::selectionState): new override
        * kwq/KWQWidget.h:
        * kwq/KWQWidget.mm:
        (QWidget::setIsSelected): new, calls [WebCoreBridge setIsSelected:forView:]
        (QWidget::isSelected): new, calls [WebCoreBridge isViewSelected:]
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge selectionColor]): new

2004-04-03  David Hyatt  <hyatt@apple.com>

	Fix for 3601728, text overlaps borders at ejai.org.  Remove all the code in addForbidden for
	dir, menu, nobr, and pre that made them too restrictive regarding what child tags they could
	contain.
	
        Reviewed by kocienda

        * khtml/html/dtd.cpp:
        (DOM::addForbidden):
        (DOM::removeForbidden):

2004-04-02  Chris Blumenberg  <cblu@apple.com>

	Moved the DOM extensions to their own headers

        Reviewed by kocienda.

        * WebCore.pbproj/project.pbxproj:
        * kwq/DOM.h: include DOMExtensions.h
        * kwq/DOMExtensions.h: Added.
        * kwq/DOMHTML.h: moved extensions to DOMExtensions.h
        * kwq/DOMHTML.mm: Renamed to match header

2004-04-02  David Hyatt  <hyatt@apple.com>

	Fix for 3610662, rendering sometimes doesn't update in response to mouse events that change style.
	The document changed list was getting messed up.
	
        Reviewed by darin

        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::updateDocumentsRendering):
        * khtml/xml/dom_docimpl.h:

=== Safari-135 ===

2004-04-01  Darin Adler  <darin@apple.com>

        Based on a fix by Eric Albert.

        - fixed <rdar://problem/3594247>: Safari crashes when a background image has a height or width of 0

        * khtml/rendering/render_box.cpp: (RenderBox::paintBackgroundExtended):
        Change code path so we don't mod with 0.

2004-04-01  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed <rdar://problem/3608305>: DEMO: menu in search field has one disabled item: localized string not found

        * khtml/html/html_formimpl.cpp: (HTMLInputElementImpl::HTMLInputElementImpl):
        Initialize m_maxResults to 0.

2004-04-01  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - cleaned up image map code and made it work with XML documents

        * khtml/html/html_documentimpl.h: Removed getMap and mapMap.
        * khtml/html/html_documentimpl.cpp: Removed getMap; moved to base class.

        * khtml/html/html_imageimpl.cpp:
        (HTMLMapElementImpl::~HTMLMapElementImpl): Call new removeImageMap function instead
        of manipulating the mapMap field directly.
        (HTMLMapElementImpl::parseHTMLAttribute): Rewrite name changing code for simplicity
        and to avoid running off the end of the bufffer.
        Also remove image map before changing name so it doesn't end up in the map twice
        under both the old and new names.
        * khtml/html/html_imageimpl.h: Use a DOMString instead of QString for the name, since
        the public API already uses a DOMString.

        * khtml/rendering/render_image.cpp: (RenderImage::nodeAtPoint): Call the new
        getImageMap instead of the old getMap.

        * khtml/xml/dom_docimpl.h: Added addImageMap, removeImageMap, getImageMap, and m_imageMapsByName.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::addImageMap): Added. Stores the image map under its name, unless there's
        already another map of the same.
        (DocumentImpl::removeImageMap): Added. Removes the image map if it's already filed by
        name. Avoid pitfall of removing another image map that has the same name.
        (DocumentImpl::getImageMap): Added. Simplified version of logic from getMap in HTMLDocumentImpl.

2004-04-01  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3608978>: dual <map> means you can't select the enter site button at jurassicpark.com (same problem in MacIE, works in Netscape)

        * khtml/html/html_imageimpl.cpp: (HTMLMapElementImpl::parseHTMLAttribute):
        Make the first <map> seen win, as in other browsers. The old code made the last <map> seen win.

2004-04-01  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me
        
        Missing file broke build after my last checkin

        * ForwardingHeaders/rendering/render_line.h: Added.

2004-03-31  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave.
        
        Many, many editing improvements, with a concentration on getting
        caret navigation and deleting selections working correctly.

        * WebCore.pbproj/project.pbxproj:
        * khtml/dom/dom_position.cpp: Removed.
        * khtml/dom/dom_position.h: Removed.
        * khtml/editing/htmlediting.cpp:
        (EditCommand::isNull): Inlined.
        (EditCommand::notNull): New function.
        (EditCommand::parent): Commands now have parents. Allows for walking the tree of composite commands.
        (EditCommand::setParent): Ditto.
        (EditCommand::emptyCommand): Returns a static empty command.
        (AppendNodeCommand::AppendNodeCommand): 
        (AppendNodeCommand::parentNode): Member variable name change only. parent -> parentNode.
        (DeleteCollapsibleWhitespaceCommand::DeleteCollapsibleWhitespaceCommand): New command.
        (InputTextCommand::InputTextCommand):
        (InputTextCommand::input):
        (InputTextCommand::charactersAdded):
        (JoinTextNodesCommand::JoinTextNodesCommand): Now derives directly from EditCommand.
        (RemoveNodeAndPruneCommand::RemoveNodeAndPruneCommand): New command.
        (SplitTextNodeCommand::SplitTextNodeCommand): Now derives directly from EditCommand.
        * khtml/editing/htmlediting.h:
        * khtml/editing/htmlediting_impl.cpp:
        (isNBSP): New helper.
        (isWS): New helper.
        (shouldPruneNode): New helper.
        (leadingWhitespacePosition): New helper.
        (trailingWhitespacePosition): New helper.
        (textNodesAreJoinable): New helper.
        (nonBreakingSpaceString): Returns a static DOMString containing a non-breaking space.
        (EditCommandImpl::EditCommandImpl):
        (EditCommandImpl::setStartingSelection): Now recursively sets starting selection on parents.
        (EditCommandImpl::setEndingSelection): As above, for ending selection.
        (EditCommandImpl::parent): New accessor.
        (EditCommandImpl::setParent): New accessor.
        (CompositeEditCommandImpl::doUnapply): Removed some logging.
        (CompositeEditCommandImpl::doReapply): Removed some logging.
        (CompositeEditCommandImpl::applyCommandToComposite): Sets parent.
        (CompositeEditCommandImpl::removeNodeAndPrune): New comvenience.
        (CompositeEditCommandImpl::replaceText): New comvenience.
        (CompositeEditCommandImpl::deleteSelection): New comvenience.
        (CompositeEditCommandImpl::deleteCollapsibleWhitespace): New comvenience.
        (AppendNodeCommandImpl::AppendNodeCommandImpl): Member variable name change only. parent -> parentNode.
        (AppendNodeCommandImpl::~AppendNodeCommandImpl): Ditto.
        (AppendNodeCommandImpl::doApply): Ditto.
        (AppendNodeCommandImpl::doUnapply): Ditto.
        (DeleteCollapsibleWhitespaceCommandImpl::DeleteCollapsibleWhitespaceCommandImpl): New command
        (debugPosition): New debugging aid.
        (DeleteSelectionCommandImpl::doApply): Major reworking to handle more cases correctly.
        (InputNewlineCommandImpl::doApply): Position and selection tweaks.
        (InputTextCommandImpl::InputTextCommandImpl): Handles more cases now, like typing after an image.
        (JoinTextNodesCommandImpl::JoinTextNodesCommandImpl): Now derives directly from EditCommand.
        Implements the guts of the command itself now, rather than replying on its former base class.
        (RemoveNodeAndPruneCommandImpl::RemoveNodeAndPruneCommandImpl): New command.
        (SplitTextNodeCommandImpl::SplitTextNodeCommandImpl): Now derives directly from EditCommand.
        Implements the guts of the command itself now, rather than replying on its former base class.
        (TypingCommandImpl::TypingCommandImpl): Major rework to handle more cases correctly.
        * khtml/editing/htmlediting_impl.h:
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::isContentEditable): More efficient use of the style system to answer the question.
        * khtml/khtml_part.cpp:
        (KHTMLPart::setSelection): Fixes an issue where the caret would not repaint after being moved when undoing.
        (KHTMLPart::takeSelectionFrom): Ditto.
        (KHTMLPart::clearSelection): Ditto.
        (KHTMLPart::invalidateSelection): Ditto.
        (KHTMLPart::setSelectionVisible): Ditto.
        (KHTMLPart::slotClearSelection): Ditto.
        (KHTMLPart::clearCaretRectIfNeeded):  Ditto.
        (KHTMLPart::notifySelectionChanged): Ditto.
        (KHTMLPart::unappliedEditing): Now uses EditCommand::emptyCommand().
        (KHTMLPart::reappliedEditing): Ditto.
        * khtml/khtml_part.h:
        * khtml/khtml_selection.cpp:
        (KHTMLSelection::KHTMLSelection):
        (KHTMLSelection::modify): Updated to work with new DOMPosition API.
        (KHTMLSelection::paintCaret): Ditto.
        (KHTMLSelection::moveToRenderedContent): Ditto.
        (KHTMLSelection::basePosition): New convenience.
        (KHTMLSelection::extentPosition): New convenience.
        (KHTMLSelection::startPosition): New convenience.
        (KHTMLSelection::endPosition): New convenience.
        (KHTMLSelection::debugPosition): Modified debug output.
        * khtml/khtml_selection.h:
        (KHTMLSelection::isEmpty):
        (KHTMLSelection::notEmpty):
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren): Fixed a crasher that happened when deleting content at the start of a line.
        * khtml/rendering/render_br.cpp:
        (RenderBR::caretMaxRenderedOffset): New function.
        (RenderBR::caretPos): Now draws the caret in the right place when a block is empty.
        * khtml/rendering/render_br.h:
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::caretPos): Now draws the caret in the right place when a flow is empty.
        * khtml/rendering/render_line.cpp:
        (InlineBox::caretMaxRenderedOffset): New function.
        * khtml/rendering/render_line.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::isEditable):
        (RenderObject::caretMaxRenderedOffset): New function.
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::caretMaxRenderedOffset): New function.
        * khtml/rendering/render_replaced.h:
        * khtml/rendering/render_text.cpp:
        (InlineTextBox::caretMaxRenderedOffset): New function.
        (RenderText::detach):
        (RenderText::caretMaxOffset):
        (RenderText::caretMaxRenderedOffset): New function.
        * khtml/rendering/render_text.h:
        (khtml::InlineTextBox::len):
        * khtml/xml/dom_edititerator.cpp: Added.
        * khtml/xml/dom_edititerator.h: Added.
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::previousEditable): Improved the correctness of this function.
        (NodeImpl::nextEditable): Ditto.
        * khtml/xml/dom_nodeimpl.h:
        * khtml/xml/dom_position.cpp: Added.
        (DOMPosition::renderedOffset): New function.
        (DOMPosition::previousCharacterPosition): New function.
        (DOMPosition::nextCharacterPosition): New function.
        (DOMPosition::equivalentUpstreamPosition): New function.
        (DOMPosition::equivalentDownstreamPosition): New function.
        (DOMPosition::validUpstreamDownstreamPosition): New function.
        (DOMPosition::inRenderedContent): New function.
        (inlineBoxForRenderer): New function.
        (renderersOnDifferentLine): New function.
        (nextRenderedEditable): New function.
        (previousRenderedEditable): New function.
        (DOMPosition::inRenderedText): New function.
        (DOMPosition::rendersOnSameLine): New function.
        (DOMPosition::rendersInDifferentPosition): New function.
        (DOMPosition::isFirstRenderedPositionOnLine): New function.
        (DOMPosition::isLastRenderedPositionOnLine): New function.
        (DOMPosition::isLastRenderedPositionInEditableBlock): New function.
        (DOMPosition::inFirstEditableInRootEditableBlock): New function.
        (DOMPosition::inLastEditableInRootEditableBlock): New function.
        (DOMPosition::inFirstEditableInContainingEditableBlock): New function.
        (DOMPosition::inLastEditableInContainingEditableBlock): New function.
        * khtml/xml/dom_position.h: Added.
        (DOM::DOMPosition::notEmpty): New function.
        * khtml/xml/dom_stringimpl.cpp:
        (DOM::DOMStringImpl::containsOnlyWhitespace): Added a version which takes an offset and length.
        * khtml/xml/dom_stringimpl.h:
        * khtml/xml/dom_textimpl.cpp:
        (CharacterDataImpl::containsOnlyWhitespace): As above
        (CharacterDataImpl::maxOffset): New function.
        (CharacterDataImpl::caretMaxRenderedOffset): New function.
        (TextImpl::TextImpl):
        (TextImpl::rendererIsNeeded): A new bit. When set, makes a text renderer unconditionally.
        * khtml/xml/dom_textimpl.h:
        (DOM::TextImpl::setRendererIsNeeded): Sets the bit.
        * kwq/KWQAssertions.m:
        (KWQLog): Change to decrease the amount of output for the Editing log level. (my preference)

2004-03-31  David Hyatt  <hyatt@apple.com>

	Fix for 3601834, make sure that textareas do a layout when their rows/cols/wrap attributes are dynamically
	changed.
	
        Reviewed by darin.

        * khtml/html/html_formimpl.cpp:
        (HTMLTextAreaElementImpl::parseHTMLAttribute):

2004-03-30  David Hyatt  <hyatt@apple.com>

	Fix for 3604241, simple space collapsing results in a doubled character.  Simplify the ignoring of
	whitespace and make sure it works across absolutely positioned spans.
	
        Reviewed by darin

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::findNextLineBreak):

2004-03-30  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed <rdar://problem/3570877>: REGRESSION: onfocus handler not working at weather.com

        * khtml/ecma/kjs_binding.cpp:
        (UString::string): Turn a null UString into a null DOMString, but a non-null empty UString into a
        non-null empty DOMString.
        (UString::qstring): Ditto, for QString.
        (Identifier::string): Ditto, for Identifier.
        (Identifier::qstring): Ditto.

        * kwq/KWQLineEdit.h: Override focusPolicy.
        * kwq/KWQLineEdit.mm: (QLineEdit::focusPolicy): Return StrongFocus instead of TabFocus, since
        we allow clicking to focus on these widgets.
        * kwq/KWQTextEdit.h: More of the same.
        * kwq/KWQTextEdit.mm: (QTextEdit::focusPolicy): And still more.

        - fixed <rdar://problem/3605919>: text fields in web pages are too tall

        * kwq/KWQTextField.mm:
        (-[KWQTextFieldCell _typesetterBehavior]): Ignore the per-application typesetter setting and
        instead always use the latest behavior for text fields in web pages.
        (-[KWQSecureTextFieldCell _typesetterBehavior]): Ditto.
        (-[KWQSearchFieldCell _typesetterBehavior]): Ditto.

        - additional cleanup

        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::isKeyboardFocusable): Check tab focus bit instead of different modes.
        (HTMLGenericFormElementImpl::isMouseFocusable): Check click focus bit instead of different modes.

2004-03-30  David Hyatt  <hyatt@apple.com>

	Fix for 3603326, spurious line breaks in encyclopedia articles.  Make sure makeChildrenNonInline knows to
	skip over floating/positioned elements so that they remain part of contiguous inline runs for static positioning
	purposes.
	
        Reviewed by darin

        * khtml/rendering/render_block.cpp:
        (khtml::getInlineRun):

2004-03-30  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed garbage characters seen while I was rigging up the Mozilla JavaScript tests

        * kwq/KWQString.h: Add a "move constructor" for KWQStringData that extracts the data
        from an existing KWQStringData.
        * kwq/KWQString.mm:
        (KWQStringData::KWQStringData): Implement the move constructor.
        (QString::detachInternal): Use the move constructor rather than making a copy of the
        data. Should be both more efficient and preserves both the Unicode and the ASCII. The
        bug here is that TokenizerSubstring relies on the Unicode staying around. We still
        have a problem in the case where the Unicode is inside the KWQStringData. To deal with
        that we'll have to add a new QString call that TokenizerSubstring can use. The new call
        will force QString to keep the Unicode outside the internal KWQStringData.

2004-03-30  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3606146>: repro nil-deref in QWidget::move (www.stoltoffshore.com)

        * khtml/khtml_part.cpp:
        (KHTMLPart::requestObject): Add check for NULL widget.
        (KHTMLPart::processObjectRequest): Add check for NULL widget.

2004-03-29  David Hyatt  <hyatt@apple.com>

	Make sure "auto" is allowed as a valid value when parsing rect shapes (e.g., for the clip property).
	
        Reviewed by rjw

        * khtml/css/cssparser.cpp:
        (CSSParser::parseShape):

2004-03-29  David Hyatt  <hyatt@apple.com>

	Followup fix.  Handle the case where a hard line break occurs right after a soft hyphen.  In this
	case we were losing a letter of the word in addition to not rendering the soft hyphen.
	
        Reviewed by kocienda

        * khtml/rendering/bidi.cpp:
        (khtml::checkMidpoints):

2004-03-29  David Hyatt  <hyatt@apple.com>

	Fix for 3604154, support soft hyphens when rendering.  This patch implements soft hyphen support that
	matches IE6 on Windows and Opera 7.  Soft hyphens that don't break lines end up getting collapsed away.
	Only if the hyphen breaks a line does it render.
	
        Reviewed by kocienda

        * khtml/rendering/bidi.cpp:
        (khtml::chopMidpointsAt):
        (khtml::appendRunsForObject):
        (khtml::RenderBlock::findNextLineBreak):
        * khtml/rendering/render_text.cpp:
        (RenderText::calcMinMaxWidth):

2004-03-29  John Sullivan  <sullivan@apple.com>

        Made menu shortcuts work again when editing HTML

        Reviewed by Darin.

        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::defaultEventHandler):
        Don't treat key events with command key down as
        editing events.

2004-03-28  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed <rdar://problem/3602202>: "feed:uuid:...." links in Emerson content are being changed into "feed:uuuid:...."

        * kwq/KWQKURL.mm: (copyPathRemovingDots): Add special case for empty path. The old code had an
        assertion that explicitly allowed this case, but it copied a character from the src buffer,
        which was incorrect.

2004-03-26  David Hyatt  <hyatt@apple.com>

	Fix for 3600642, letter magnet demo doesn't update until mouse move.  This patch also fixes problems
	with the animated text Gecko DOM demos on developer.netscape.com.  Make sure that timer callbacks via
	setTimeout always updateRendering after executing the JS code.
	
        Reviewed by darin

        * khtml/ecma/kjs_window.cpp:
        (ScheduledAction::execute):

=== Safari-134 ===

2004-03-25  David Hyatt  <hyatt@apple.com>

	Implement the rest of the search field.  Make it work with form submission.  Implement onscroll at
	the document level.
	
        Reviewed by darin

        * khtml/html/html_formimpl.cpp:
        (HTMLFormElementImpl::submit):
        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::addSearchResult):
        * khtml/rendering/render_form.h:
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::sendScrollEvent):
        * kwq/KWQLineEdit.h:
        * kwq/KWQLineEdit.mm:
        (QLineEdit::setMaxResults):
        (QLineEdit::setPlaceholderString):
        (QLineEdit::addSearchResult):
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge sendScrollEvent]):
        * kwq/WebCoreViewFactory.h:

2004-03-25  David Hyatt  <hyatt@apple.com>

	Fix for 3570700, crash in inlineBox::isDirty.  Make sure line boxes null out parent pointers when those
	parents get deleted.  r=john

	Fix for .value not being settable on selects.  r=darin
	
        * khtml/html/html_formimpl.cpp:
        (HTMLSelectElementImpl::setValue):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::removeChildrenFromLineBoxes):
        (khtml::RenderBlock::removeChild):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_line.cpp:
        (InlineFlowBox::removeChild):
        
2004-03-25  Darin Adler  <darin@apple.com>

        Fix by Kristin Webster, reviewed by me.

        - fixed <rdar://problem/3582431>: HiDPI - Form elements not working when scaling factor != 1.0

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::passWidgetMouseDownEventToWidget): Pass nil for fromView
        rather than passing the top level view.

2004-03-24  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed <rdar://problem/3566805>: REGRESSION: When the subject of mailto is 2 byte Safari failed to send mail address and subject to Mail.app

        * kwq/KWQKURL.mm: (KURL::findHostnamesInMailToURL): Update to handle hostnames that end just before
        a '?' since a '?' ends the entire part of the URL that can contain hostnames. Also change the logic so
        that the '?' will successfully end the search.

2004-03-24  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed <rdar://problem/3599650>: main image missing due to incorrect relative URL resolution at www.brother.com

        * kwq/KWQKURL.mm: (KURL::KURL): Implement compatibility rule from the URI RFC.
        If a URL has a scheme, but does not start with the "/" character, and the scheme
        matches the base URL, then treat it as a relative URL.

2004-03-24  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me.

	I neglected to check in these required changes when I landed previously.
	This is what I get for trying to commit when I had other changes in
	my tree.

        * khtml/dom/html_form.cpp:
        (HTMLSelectElement::add): Uses new-style call.
        * khtml/html/html_formimpl.cpp:
        (HTMLSelectElementImpl::add): Change the interface for this call to use
	impl objects instead of API objects. This works around the fact that the
	API object's constructor that takes an impl is protected.
        * khtml/html/html_formimpl.h: Uses new-style call.

2004-03-24  Ken Kocienda <kocienda@apple.com>

        Implemented the remainder of the HTML DOM API.
    
        Reviewed by Chris.
    
        * kwq/DOMHTML.h
        * kwq/HTMLDOM.mm

2004-03-23  David Hyatt  <hyatt@apple.com>

	Fix for 3487207, implement onscroll DOM event for elements with overflow:auto/scroll/hidden.  This does
	not handle firing onscroll on the window when the document scrolls, nor does it handle firing onscroll
	on textareas.  These are two separate bugs.

	This patch finishes stubbing out the onscroll event and adds support for it to the DOM.  It also supports
	the firing of the event when overflow blocks scroll.
	
        Reviewed by darin

        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::getValueProperty):
        (DOMNode::putValue):
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMNode::):
        * khtml/ecma/kjs_dom.lut.h:
        (KJS::):
        * khtml/ecma/kjs_window.cpp:
        (Window::get):
        (Window::put):
        * khtml/ecma/kjs_window.h:
        (KJS::Window::):
        * khtml/ecma/kjs_window.lut.h:
        (KJS::):
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::parseHTMLAttribute):
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseHTMLAttribute):
        * khtml/misc/htmlattrs.c:
        (hash_attr):
        (findAttr):
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::scrollToOffset):

2004-03-23  David Hyatt  <hyatt@apple.com>

	Fix for 3513627, HTML mail prints upside down occasionally.  Change printing so that it never resizes the
        WebHTMLView when formatting for printing.  When computing page rects, instead of using the view's bounds,
        use the root layer's width instead.

        Reviewed by darin

        * khtml/khtmlview.cpp:
        (KHTMLView::layout):
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):

2004-03-23  David Hyatt  <hyatt@apple.com>

	Fix for crasher 3598204, previousKeyView was calling nextKeyView instead.
	
        Reviewed by darin

        * kwq/KWQTextField.mm:
        (-[KWQTextField previousKeyView]):
        (-[KWQSecureTextField previousKeyView]):
        (-[KWQSearchField previousKeyView]):

2004-03-23  Darin Adler  <darin@apple.com>

        Reviewed by Vicki.

        - fixed deployment build

2004-03-22  David Hyatt  <hyatt@apple.com>

	Wire up NSSearchField to WebCore.  Add support for placeholder strings, autosaving of recent items, the ability to show/hide
	the magnifying glass search button, the ability to specify the maximum number of results, the ability to specify an incremental
	search or not, etc.  Added a DOM event that fires when the search field indicates that search results should be updated.
	
        Reviewed by darin

        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::getValueProperty):
        (DOMNode::putValue):
        * khtml/ecma/kjs_dom.h:
        (KJS::DOMNode::):
        * khtml/ecma/kjs_dom.lut.h:
        (KJS::):
        * khtml/ecma/kjs_window.cpp:
        (Window::get):
        (Window::put):
        * khtml/ecma/kjs_window.h:
        (KJS::Window::):
        * khtml/ecma/kjs_window.lut.h:
        (KJS::):
        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::parseHTMLAttribute):
        * khtml/html/html_formimpl.h:
        (DOM::HTMLInputElementImpl::maxResults):
        * khtml/misc/htmlattrs.c:
        (hash_attr):
        (findAttr):
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:
        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::RenderLineEdit):
        (RenderLineEdit::slotPerformSearch):
        (RenderLineEdit::updateFromElement):
        * khtml/rendering/render_form.h:
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::typeToId):
        (EventImpl::idToType):
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::):
        * kwq/KWQLineEdit.h:
        (QLineEdit::performSearch):
        (QLineEdit::type):
        * kwq/KWQLineEdit.mm:
        (QLineEdit::QLineEdit):
        (QLineEdit::setLiveSearch):
        (QLineEdit::setAutoSaveName):
        (QLineEdit::setMaxResults):
        (QLineEdit::setPlaceholderString):
        * kwq/KWQSlot.mm:
        (KWQSlot::KWQSlot):
        (KWQSlot::call):
        * kwq/KWQTextField.mm:
        (-[KWQTextFieldController initWithTextField:QLineEdit:]):
        (-[KWQTextFieldController invalidate]):
        (-[KWQTextFieldController action:]):
        (-[KWQTextFieldController controlTextDidBeginEditing:]):
        (-[KWQTextFieldController controlTextDidEndEditing:]):
        (-[KWQTextFieldController controlTextDidChange:]):
        (-[KWQTextFieldController control:textShouldBeginEditing:]):
        (-[KWQTextFieldController control:textShouldEndEditing:]):
        (-[KWQTextFieldController control:didFailToFormatString:errorDescription:]):
        (-[KWQTextFieldController control:didFailToValidatePartialString:errorDescription:]):
        (-[KWQTextFieldController control:isValidObject:]):
        (-[KWQTextFieldController control:textView:doCommandBySelector:]):
        (-[KWQTextFieldController textChanged]):

2004-03-22  David Hyatt  <hyatt@apple.com>

	Factoring of form control code to enable sharing between three types of text fields: normal, password, and
	the new search field.  Also made search field creatable using <input type="search">.  There are still many
	bugs with the field, but you can at least type in it and submit it with a form.
	
        Reviewed by darin

        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::setType):
        (HTMLInputElementImpl::type):
        (HTMLInputElementImpl::click):
        (HTMLInputElementImpl::accessKeyAction):
        (HTMLInputElementImpl::rendererIsNeeded):
        (HTMLInputElementImpl::createRenderer):
        (HTMLInputElementImpl::encoding):
        (HTMLInputElementImpl::defaultEventHandler):
        (HTMLInputElementImpl::isEditable):
        * khtml/html/html_formimpl.h:
        (DOM::HTMLInputElementImpl::):
        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::RenderLineEdit):
        * kwq/KWQKLineEdit.h:
        (KLineEdit::KLineEdit):
        * kwq/KWQLineEdit.h:
        (QLineEdit::):
        * kwq/KWQLineEdit.mm:
        (QLineEdit::QLineEdit):
        (QLineEdit::~QLineEdit):
        (QLineEdit::setFont):
        (QLineEdit::setText):
        (QLineEdit::text):
        (QLineEdit::setMaxLength):
        (QLineEdit::isReadOnly):
        (QLineEdit::setReadOnly):
        (QLineEdit::maxLength):
        (QLineEdit::selectAll):
        (QLineEdit::edited):
        (QLineEdit::setEdited):
        (QLineEdit::sizeForCharacterWidth):
        (QLineEdit::baselinePosition):
        (QLineEdit::setAlignment):
        (QLineEdit::setWritingDirection):
        (KWQNSTextAlignmentForAlignmentFlags):
        (QLineEdit::setLiveSearch):
        * kwq/KWQTextField.h:
        * kwq/KWQTextField.mm:
        (-[KWQTextFieldController initWithTextField:QLineEdit:]):
        (-[KWQTextFieldController action:]):
        (-[KWQTextFieldController dealloc]):
        (-[KWQTextFieldController widget]):
        (-[KWQTextFieldController setMaximumLength:]):
        (-[KWQTextFieldController controlTextDidBeginEditing:]):
        (-[KWQTextFieldController controlTextDidEndEditing:]):
        (-[KWQTextFieldController controlTextDidChange:]):
        (-[KWQTextFieldController control:textShouldBeginEditing:]):
        (-[KWQTextFieldController control:textShouldEndEditing:]):
        (-[KWQTextFieldController control:didFailToFormatString:errorDescription:]):
        (-[KWQTextFieldController control:didFailToValidatePartialString:errorDescription:]):
        (-[KWQTextFieldController control:isValidObject:]):
        (-[KWQTextFieldController control:textView:doCommandBySelector:]):
        (-[KWQTextFieldController textChanged]):
        (-[KWQTextFieldController setInDrawingMachinery:]):
        (-[KWQTextFieldController textView:shouldDrawInsertionPointInRect:color:turnedOn:]):
        (-[KWQTextFieldController textView:shouldHandleEvent:]):
        (-[KWQTextFieldController textView:didHandleEvent:]):
        (-[KWQTextFieldController setBaseWritingDirection:]):
        (-[KWQTextFieldController baseWritingDirection]):
        (-[KWQTextFieldController selectedRange]):
        (-[KWQTextFieldController setSelectedRange:]):
        (-[KWQTextFieldController setHasFocus:]):
        (-[KWQTextFieldController updateTextAttributes:]):
        (+[KWQTextField cellClass]):
        (-[KWQTextField initWithQLineEdit:]):
        (-[KWQTextField dealloc]):
        (-[KWQTextField controller]):
        (-[KWQTextField widget]):
        (-[KWQTextField selectText:]):
        (-[KWQTextField setStringValue:]):
        (-[KWQTextField nextKeyView]):
        (-[KWQTextField previousKeyView]):
        (-[KWQTextField nextValidKeyView]):
        (-[KWQTextField previousValidKeyView]):
        (-[KWQTextField acceptsFirstResponder]):
        (-[KWQTextField display]):
        (-[KWQTextField displayRectIgnoringOpacity:]):
        (-[KWQTextField textView:shouldDrawInsertionPointInRect:color:turnedOn:]):
        (-[KWQTextField textView:shouldHandleEvent:]):
        (-[KWQTextField textView:didHandleEvent:]):
        (-[KWQTextFieldCell editWithFrame:inView:editor:delegate:event:]):
        (-[KWQTextFieldCell selectWithFrame:inView:editor:delegate:start:length:]):
        (-[KWQTextFieldCell _textAttributes]):
        (-[KWQSecureTextField initWithQLineEdit:]):
        (-[KWQSecureTextField dealloc]):
        (-[KWQSecureTextField controller]):
        (-[KWQSecureTextField widget]):
        (-[KWQSecureTextField setStringValue:]):
        (-[KWQSecureTextField nextKeyView]):
        (-[KWQSecureTextField previousKeyView]):
        (-[KWQSecureTextField acceptsFirstResponder]):
        (-[KWQSecureTextField display]):
        (-[KWQSecureTextField displayRectIgnoringOpacity:]):
        (-[KWQSecureTextField textView:shouldDrawInsertionPointInRect:color:turnedOn:]):
        (-[KWQSecureTextField textView:shouldHandleEvent:]):
        (-[KWQSecureTextField textView:didHandleEvent:]):
        (-[KWQSecureTextField selectText:]):
        (-[KWQSecureTextFieldCell editWithFrame:inView:editor:delegate:event:]):
        (-[KWQSecureTextFieldCell selectWithFrame:inView:editor:delegate:start:length:]):
        (-[KWQSecureTextFieldCell _textAttributes]):
        (+[KWQSearchField cellClass]):
        (-[KWQSearchField initWithQLineEdit:]):
        (-[KWQSearchField dealloc]):
        (-[KWQSearchField controller]):
        (-[KWQSearchField widget]):
        (-[KWQSearchField selectText:]):
        (-[KWQSearchField setStringValue:]):
        (-[KWQSearchField nextKeyView]):
        (-[KWQSearchField previousKeyView]):
        (-[KWQSearchField nextValidKeyView]):
        (-[KWQSearchField previousValidKeyView]):
        (-[KWQSearchField acceptsFirstResponder]):
        (-[KWQSearchField display]):
        (-[KWQSearchField displayRectIgnoringOpacity:]):
        (-[KWQSearchField textView:shouldDrawInsertionPointInRect:color:turnedOn:]):
        (-[KWQSearchField textView:shouldHandleEvent:]):
        (-[KWQSearchField textView:didHandleEvent:]):
        (-[KWQSearchFieldCell editWithFrame:inView:editor:delegate:event:]):
        (-[KWQSearchFieldCell selectWithFrame:inView:editor:delegate:start:length:]):
        (-[KWQSearchFieldCell _textAttributes]):
        (-[KWQTextFieldFormatter init]):
        (-[KWQTextFieldFormatter setMaximumLength:]):
        (-[KWQTextFieldFormatter maximumLength]):
        (-[KWQTextFieldFormatter stringForObjectValue:]):
        (-[KWQTextFieldFormatter getObjectValue:forString:errorDescription:]):
        (-[KWQTextFieldFormatter isPartialStringValid:newEditingString:errorDescription:]):
        (-[KWQTextFieldFormatter attributedStringForObjectValue:withDefaultAttributes:]):
        (-[NSString _KWQ_truncateToNumComposedCharacterSequences:]):
        (-[NSTextField _KWQ_currentEditor]):

=== Safari-133 ===

2004-03-19  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3583945>: crash when choosing a file to upload

        * kwq/KWQFileButton.mm:
        (-[KWQFileButtonAdapter dealloc]): Removed unneeded method.
        (-[KWQFileButtonAdapter filenameChanged:]): Check for nil.
        (-[KWQFileButtonAdapter focusChanged:]): Ditto.
        (-[KWQFileButtonAdapter clicked]): Ditto.

2004-03-17  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed rdar://problem/3312803>: extra space in copied text (3g.co.uk)

        * khtml/khtml_part.cpp: (KHTMLPart::text): Explicitly set neededSpace to false after
        processing a line break. Doesn't really have an effect here, but matches the change
        to the styled text version.
        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::attributedString): Same change in the styled
        text version.

2004-03-16  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - a little more DOM cleanup

        * kwq/DOM-CSS.mm: Added DOMCSSUnknownRule.
        * kwq/DOM.mm: Split category implementations out to match category interfaces.
        * kwq/DOMHTML.h: Removed lowSrc, not in DOM Level 2. Added a category for some
        extensions we'll want on DOMElement.
        * kwq/DOMInternal.h: Moved _documentImpl method here so it can be used from
        separate categories.
        * kwq/DOMRange.h: Changed DOMDocumentRange to a category from a protocol.
        * kwq/HTMLDOM.mm: Removed unneeded methods.

        * WebCore.pbproj/project.pbxproj: Sort DOM header files alphabetically.

2004-03-16  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - update for new DOM namespacing and header organization

        * WebCore.pbproj/project.pbxproj:
        * kwq/DOM-CSS.h: Removed.
        * kwq/DOM-CSS.mm: Update for name changes.
        * kwq/DOM.h: Changed to include the other DOM headers.
        * kwq/DOM.mm: Update for name changes.
        * kwq/DOMCSS.h: Added.
        * kwq/DOMCore.h: Added.
        * kwq/DOMEvents.h: Added.
        * kwq/DOMHTML.h: Added.
        * kwq/DOMInternal.h: Update for name changes.
        * kwq/DOMRange.h: Added.
        * kwq/DOMStylesheets.h: Added.
        * kwq/DOMTraversal.h: Added.
        * kwq/DOMViews.h: Added.
        * kwq/HTMLDOM.h: Removed.
        * kwq/HTMLDOM.mm: Update for name changes; add some missing setters.

2004-03-15  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- max out our iBench cheat. Don't even paint or lay out a quarter
	of the pages.
	
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::close):

2004-03-15  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        Fix for this bug:
        
        <rdar://problem/3588717>: REGRESSION (125-131u): Tabbing to links and tabbing in bookmarks view no longer works

        Change some support methods which feed editing key events to 
        WebKit. The real fix is on the WebKit side.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::editingKeyEvent): Call new -editingKeyDown:
        on WebCoreBridge, as described below.
        * kwq/WebCoreBridge.h: Changed -keyDown: to -editingKeyDown:
        since we want to tell WebView about editing key events
        in a way that does not interfere with other key down
        events the WebView processes. This is not necessary in the
        strictest sense, but it seems reasonable to keep the
        terminology clear.

=== Safari-132 ===

2004-03-12  Chris Blumenberg  <cblu@apple.com>

	Implemented ~25% of the HTML DOM API.

        Reviewed by kocienda.

        (DOM::HTMLElement::HTMLElement):
        * kwq/DOM.mm:
        * kwq/DOMInternal.h:
        * kwq/HTMLDOM.h:
        * kwq/HTMLDOM.mm:
        (-[HTMLCollection _initWithCollectionImpl:]):
        (+[HTMLCollection _collectionWithImpl:]):
        (-[HTMLCollection _collectionImpl]):
        (-[HTMLCollection length]):
        (-[HTMLCollection item:]):
        (-[HTMLCollection namedItem:]):
        (-[HTMLElement _initWithElementImpl:]):
        (+[HTMLElement _elementWithImpl:]):
        (-[HTMLElement _HTMLElementImpl]):
        (-[HTMLElement idName]):
        (-[HTMLElement setIdName:]):
        (-[HTMLElement title]):
        (-[HTMLElement setTitle:]):
        (-[HTMLElement lang]):
        (-[HTMLElement setLang:]):
        (-[HTMLElement dir]):
        (-[HTMLElement setDir:]):
        (-[HTMLElement className]):
        (-[HTMLElement setClassName:]):
        (-[HTMLDocument _HTMLDocumentImpl]):
        (-[HTMLDocument title]):
        (-[HTMLDocument setTitle:]):
        (-[HTMLDocument referrer]):
        (-[HTMLDocument domain]):
        (-[HTMLDocument URL]):
        (-[HTMLDocument body]):
        (-[HTMLDocument images]):
        (-[HTMLDocument applets]):
        (-[HTMLDocument links]):
        (-[HTMLDocument forms]):
        (-[HTMLDocument anchors]):
        (-[HTMLDocument setBody:]):
        (-[HTMLDocument cookie]):
        (-[HTMLDocument setCookie:]):
        (-[HTMLDocument open]):
        (-[HTMLDocument close]):
        (-[HTMLDocument write:]):
        (-[HTMLDocument writeln:]):
        (-[HTMLDocument getElementById:]):
        (-[HTMLDocument getElementsByName:]):
        (-[HTMLHtmlElement _HTMLHtmlElementImpl]):
        (-[HTMLHtmlElement version]):
        (-[HTMLHtmlElement setVersion:]):
        (-[HTMLHeadElement _headElementImpl]):
        (-[HTMLHeadElement profile]):
        (-[HTMLHeadElement setProfile:]):
        (-[HTMLLinkElement _linkElementImpl]):
        (-[HTMLLinkElement disabled]):
        (-[HTMLLinkElement setDisabled:]):
        (-[HTMLLinkElement charset]):
        (-[HTMLLinkElement setCharset:]):
        (-[HTMLLinkElement href]):
        (-[HTMLLinkElement setHref:]):
        (-[HTMLLinkElement hreflang]):
        (-[HTMLLinkElement setHreflang:]):
        (-[HTMLLinkElement media]):
        (-[HTMLLinkElement setMedia:]):
        (-[HTMLLinkElement rel]):
        (-[HTMLLinkElement setRel:]):
        (-[HTMLLinkElement rev]):
        (-[HTMLLinkElement setRev:]):
        (-[HTMLLinkElement target]):
        (-[HTMLLinkElement setTarget:]):
        (-[HTMLLinkElement type]):
        (-[HTMLLinkElement setType:]):
        (-[HTMLTitleElement _titleElementImpl]):
        (-[HTMLTitleElement text]):
        (-[HTMLTitleElement setText:]):
        (-[HTMLMetaElement _metaElementImpl]):
        (-[HTMLMetaElement content]):
        (-[HTMLMetaElement setContent:]):
        (-[HTMLMetaElement httpEquiv]):
        (-[HTMLMetaElement setHttpEquiv:]):
        (-[HTMLMetaElement name]):
        (-[HTMLMetaElement setName:]):
        (-[HTMLMetaElement scheme]):
        (-[HTMLMetaElement setScheme:]):
        (-[HTMLBaseElement _baseElementImpl]):
        (-[HTMLBaseElement href]):
        (-[HTMLBaseElement setHref:]):
        (-[HTMLBaseElement target]):
        (-[HTMLBaseElement setTarget:]):
        (-[HTMLStyleElement _styleElementImpl]):
        (-[HTMLStyleElement disabled]):
        (-[HTMLStyleElement setDisabled:]):
        (-[HTMLStyleElement media]):
        (-[HTMLStyleElement setMedia:]):
        (-[HTMLStyleElement type]):
        (-[HTMLStyleElement setType:]):
        (-[HTMLBodyElement _bodyElementImpl]):
        (-[HTMLBodyElement aLink]):
        (-[HTMLBodyElement setALink:]):
        (-[HTMLBodyElement background]):
        (-[HTMLBodyElement setBackground:]):
        (-[HTMLBodyElement bgColor]):
        (-[HTMLBodyElement setBgColor:]):
        (-[HTMLBodyElement link]):
        (-[HTMLBodyElement setLink:]):
        (-[HTMLBodyElement text]):
        (-[HTMLBodyElement setText:]):
        (-[HTMLBodyElement vLink]):
        (-[HTMLBodyElement setVLink:]):

2004-03-12  David Hyatt  <hyatt@apple.com>

	Fix for problem when undoing the deletion of a word in edit mode.
	
        Reviewed by kocienda

        * khtml/rendering/render_text.cpp:
        (RenderText::setTextWithOffset):

2004-03-12  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Chris

        * khtml/khtml_part.cpp:
        (KHTMLPart::handleMouseMoveEventSelection): Clear the selection's
        "modify bias" since the user clicked, and is therefore no longer
        extending the selection with arrow keys.
        * khtml/khtml_selection.cpp:
        (KHTMLSelection::KHTMLSelection): Add new m_modifyBiasSet flag.
        (KHTMLSelection::init): Set the flag to false by default.
        (KHTMLSelection::operator=): Copy over the value of the new m_modifyBiasSet flag.
        (KHTMLSelection::modify): Set the flag if extending the selection and set the 
        base and extent nodes based on the movement direction requested.
        * khtml/khtml_selection.h:
        * kwq/WebCoreBridge.h: See below.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:]): This
        method is used by the WebKit side in response to requests to change the selection
        using the arrow keys. It used to be called rangeByModifyingRange:alteration:direction:granularity:
        but I changed it to this new format since I explicitly want to use the current selection, and
        not some arbitrarily passed in selection. This helps to maintain the "modify bias" correctly.
        (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): New method. A command to alter
        the current selection as given. Again, applying the command to the current selection, rather
        than just setting the selection to a new one, helps to maintain the "modify bias" correctly.

2004-03-11  Chris Blumenberg  <cblu@apple.com>

	Added stubs for the HTML DOM API.

        Reviewed by rjw.

        * WebCore.pbproj/project.pbxproj:
        * kwq/HTMLDOM.h: Added.
        * kwq/HTMLDOM.mm: Added.
        (-[HTMLCollection length]):
        (-[HTMLCollection item:]):
        (-[HTMLCollection namedItem:]):
        (-[HTMLElement idName]):
        (-[HTMLElement setIdName:]):
        (-[HTMLElement title]):
        (-[HTMLElement setTitle:]):
        (-[HTMLElement lang]):
        (-[HTMLElement setLang:]):
        (-[HTMLElement dir]):
        (-[HTMLElement setDir:]):
        (-[HTMLElement className]):
        (-[HTMLElement setClassName:]):
        (-[HTMLDocument title]):
        (-[HTMLDocument setTitle:]):
        (-[HTMLDocument referrer]):
        (-[HTMLDocument domain]):
        (-[HTMLDocument URL]):
        (-[HTMLDocument body]):
        (-[HTMLDocument images]):
        (-[HTMLDocument applets]):
        (-[HTMLDocument links]):
        (-[HTMLDocument forms]):
        (-[HTMLDocument anchors]):
        (-[HTMLDocument setBody:]):
        (-[HTMLDocument cookie]):
        (-[HTMLDocument setCookie:]):
        (-[HTMLDocument open]):
        (-[HTMLDocument close]):
        (-[HTMLDocument write:]):
        (-[HTMLDocument writeln:]):
        (-[HTMLDocument getElementById:]):
        (-[HTMLDocument getElementsByName:]):
        (-[HTMLHtmlElement version]):
        (-[HTMLHtmlElement setVersion:]):
        (-[HTMLHeadElement profile]):
        (-[HTMLHeadElement setProfile:]):
        (-[HTMLLinkElement disabled]):
        (-[HTMLLinkElement setDisabled:]):
        (-[HTMLLinkElement charset]):
        (-[HTMLLinkElement setCharset:]):
        (-[HTMLLinkElement href]):
        (-[HTMLLinkElement setHref:]):
        (-[HTMLLinkElement hreflang]):
        (-[HTMLLinkElement setHreflang:]):
        (-[HTMLLinkElement media]):
        (-[HTMLLinkElement setMedia:]):
        (-[HTMLLinkElement rel]):
        (-[HTMLLinkElement setRrevel:]):
        (-[HTMLLinkElement rev]):
        (-[HTMLLinkElement setRev:]):
        (-[HTMLLinkElement target]):
        (-[HTMLLinkElement setTarget:]):
        (-[HTMLLinkElement type]):
        (-[HTMLLinkElement setType:]):
        (-[HTMLTitleElement text]):
        (-[HTMLTitleElement setText:]):
        (-[HTMLMetaElement content]):
        (-[HTMLMetaElement setContent:]):
        (-[HTMLMetaElement httpEquiv]):
        (-[HTMLMetaElement setHttpEquiv:]):
        (-[HTMLMetaElement name]):
        (-[HTMLMetaElement setName:]):
        (-[HTMLMetaElement scheme]):
        (-[HTMLMetaElement setScheme:]):
        (-[HTMLBaseElement href]):
        (-[HTMLBaseElement setHref:]):
        (-[HTMLBaseElement target]):
        (-[HTMLBaseElement setTarget:]):
        (-[HTMLStyleElement disabled]):
        (-[HTMLStyleElement setDisabled:]):
        (-[HTMLStyleElement media]):
        (-[HTMLStyleElement setMedia:]):
        (-[HTMLStyleElement type]):
        (-[HTMLStyleElement setType:]):
        (-[HTMLBodyElement aLink]):
        (-[HTMLBodyElement setALink:]):
        (-[HTMLBodyElement background]):
        (-[HTMLBodyElement setBackground:]):
        (-[HTMLBodyElement bgColor]):
        (-[HTMLBodyElement setBgColor:]):
        (-[HTMLBodyElement link]):
        (-[HTMLBodyElement setLink:]):
        (-[HTMLBodyElement text]):
        (-[HTMLBodyElement setText:]):
        (-[HTMLBodyElement vLink]):
        (-[HTMLBodyElement setVLink:]):
        (-[HTMLFormElement elements]):
        (-[HTMLFormElement length]):
        (-[HTMLFormElement name]):
        (-[HTMLFormElement setName:]):
        (-[HTMLFormElement acceptCharset]):
        (-[HTMLFormElement setAcceptCharset:]):
        (-[HTMLFormElement action]):
        (-[HTMLFormElement setAction:]):
        (-[HTMLFormElement enctype]):
        (-[HTMLFormElement setEnctype:]):
        (-[HTMLFormElement method]):
        (-[HTMLFormElement setMethod:]):
        (-[HTMLFormElement target]):
        (-[HTMLFormElement setTarget:]):
        (-[HTMLFormElement submit]):
        (-[HTMLFormElement reset]):
        (-[HTMLIsIndexElement form]):
        (-[HTMLIsIndexElement prompt]):
        (-[HTMLIsIndexElement setPrompt:]):
        (-[HTMLSelectElement type]):
        (-[HTMLSelectElement selectedIndex]):
        (-[HTMLSelectElement setSelectedIndex:]):
        (-[HTMLSelectElement value]):
        (-[HTMLSelectElement setValue:]):
        (-[HTMLSelectElement length]):
        (-[HTMLSelectElement form]):
        (-[HTMLSelectElement options]):
        (-[HTMLSelectElement disabled]):
        (-[HTMLSelectElement multiple]):
        (-[HTMLSelectElement name]):
        (-[HTMLSelectElement setName:]):
        (-[HTMLSelectElement size]):
        (-[HTMLSelectElement tabIndex]):
        (-[HTMLSelectElement add::]):
        (-[HTMLSelectElement remove:]):
        (-[HTMLSelectElement blur]):
        (-[HTMLSelectElement focus]):
        (-[HTMLOptGroupElement disabled]):
        (-[HTMLOptGroupElement setDisabled:]):
        (-[HTMLOptGroupElement label]):
        (-[HTMLOptGroupElement setLabel:]):
        (-[HTMLOptionElement form]):
        (-[HTMLOptionElement defaultSelected]):
        (-[HTMLOptionElement setDefaultSelected:]):
        (-[HTMLOptionElement text]):
        (-[HTMLOptionElement index]):
        (-[HTMLOptionElement setIndex:]):
        (-[HTMLOptionElement disabled]):
        (-[HTMLOptionElement setDisabled:]):
        (-[HTMLOptionElement label]):
        (-[HTMLOptionElement setLabel:]):
        (-[HTMLOptionElement selected]):
        (-[HTMLOptionElement value]):
        (-[HTMLOptionElement setValue:]):
        (-[HTMLInputElement defaultValue]):
        (-[HTMLInputElement setDefaultValue:]):
        (-[HTMLInputElement defaultChecked]):
        (-[HTMLInputElement setDefaultChecked:]):
        (-[HTMLInputElement form]):
        (-[HTMLInputElement accept]):
        (-[HTMLInputElement setAccept:]):
        (-[HTMLInputElement accessKey]):
        (-[HTMLInputElement setAccessKey:]):
        (-[HTMLInputElement align]):
        (-[HTMLInputElement setAlign:]):
        (-[HTMLInputElement alt]):
        (-[HTMLInputElement setAlt:]):
        (-[HTMLInputElement checked]):
        (-[HTMLInputElement setChecked:]):
        (-[HTMLInputElement disabled]):
        (-[HTMLInputElement setDisabled:]):
        (-[HTMLInputElement maxLength]):
        (-[HTMLInputElement setMaxLength:]):
        (-[HTMLInputElement name]):
        (-[HTMLInputElement setName:]):
        (-[HTMLInputElement readOnly]):
        (-[HTMLInputElement setReadOnly:]):
        (-[HTMLInputElement size]):
        (-[HTMLInputElement setSize:]):
        (-[HTMLInputElement src]):
        (-[HTMLInputElement setSrc:]):
        (-[HTMLInputElement tabIndex]):
        (-[HTMLInputElement setTabIndex:]):
        (-[HTMLInputElement type]):
        (-[HTMLInputElement useMap]):
        (-[HTMLInputElement setUseMap:]):
        (-[HTMLInputElement value]):
        (-[HTMLInputElement setValue:]):
        (-[HTMLInputElement blur]):
        (-[HTMLInputElement focus]):
        (-[HTMLInputElement select]):
        (-[HTMLInputElement click]):
        (-[HTMLTextAreaElement defaultValue]):
        (-[HTMLTextAreaElement setDefaultValue:]):
        (-[HTMLTextAreaElement form]):
        (-[HTMLTextAreaElement accessKey]):
        (-[HTMLTextAreaElement setAccessKey:]):
        (-[HTMLTextAreaElement cols]):
        (-[HTMLTextAreaElement setCols:]):
        (-[HTMLTextAreaElement disabled]):
        (-[HTMLTextAreaElement setDisabled:]):
        (-[HTMLTextAreaElement name]):
        (-[HTMLTextAreaElement setName:]):
        (-[HTMLTextAreaElement readOnly]):
        (-[HTMLTextAreaElement setReadOnly:]):
        (-[HTMLTextAreaElement rows]):
        (-[HTMLTextAreaElement setRows:]):
        (-[HTMLTextAreaElement tabIndex]):
        (-[HTMLTextAreaElement setTabIndex:]):
        (-[HTMLTextAreaElement type]):
        (-[HTMLTextAreaElement value]):
        (-[HTMLTextAreaElement setValue:]):
        (-[HTMLTextAreaElement blur]):
        (-[HTMLTextAreaElement focus]):
        (-[HTMLTextAreaElement select]):
        (-[HTMLButtonElement form]):
        (-[HTMLButtonElement accessKey]):
        (-[HTMLButtonElement setAccessKey:]):
        (-[HTMLButtonElement disabled]):
        (-[HTMLButtonElement setDisabled:]):
        (-[HTMLButtonElement name]):
        (-[HTMLButtonElement setName:]):
        (-[HTMLButtonElement tabIndex]):
        (-[HTMLButtonElement setTabIndex:]):
        (-[HTMLButtonElement type]):
        (-[HTMLButtonElement value]):
        (-[HTMLButtonElement setValue:]):
        (-[HTMLLabelElement form]):
        (-[HTMLLabelElement accessKey]):
        (-[HTMLLabelElement setAccessKey:]):
        (-[HTMLLabelElement htmlFor]):
        (-[HTMLLabelElement setHtmlFor:]):
        (-[HTMLFieldSetElement form]):
        (-[HTMLLegendElement form]):
        (-[HTMLLegendElement accessKey]):
        (-[HTMLLegendElement setAccessKey:]):
        (-[HTMLLegendElement align]):
        (-[HTMLLegendElement setAlign:]):
        (-[HTMLUListElement compact]):
        (-[HTMLUListElement setCompact:]):
        (-[HTMLUListElement type]):
        (-[HTMLUListElement setType:]):
        (-[HTMLOListElement compact]):
        (-[HTMLOListElement setCompact:]):
        (-[HTMLOListElement start]):
        (-[HTMLOListElement setStart:]):
        (-[HTMLOListElement type]):
        (-[HTMLOListElement setType:]):
        (-[HTMLDListElement compact]):
        (-[HTMLDListElement setCompact:]):
        (-[HTMLDirectoryElement compact]):
        (-[HTMLDirectoryElement setCompact:]):
        (-[HTMLMenuElement compact]):
        (-[HTMLMenuElement setCompact:]):
        (-[HTMLLIElement type]):
        (-[HTMLLIElement setType:]):
        (-[HTMLLIElement value]):
        (-[HTMLLIElement setValue:]):
        (-[HTMLBlockquoteElement cite]):
        (-[HTMLBlockquoteElement setCite:]):
        (-[HTMLDivElement align]):
        (-[HTMLDivElement setAlign:]):
        (-[HTMLParagraphElement align]):
        (-[HTMLParagraphElement setAlign:]):
        (-[HTMLHeadingElement align]):
        (-[HTMLHeadingElement setAlign:]):
        (-[HTMLQuoteElement cite]):
        (-[HTMLQuoteElement setCite:]):
        (-[HTMLPreElement width]):
        (-[HTMLPreElement setWidth:]):
        (-[HTMLBRElement clear]):
        (-[HTMLBRElement setClear:]):
        (-[HTMLBaseFontElement color]):
        (-[HTMLBaseFontElement setColor:]):
        (-[HTMLBaseFontElement face]):
        (-[HTMLBaseFontElement setFace:]):
        (-[HTMLBaseFontElement size]):
        (-[HTMLBaseFontElement setSize:]):
        (-[HTMLFontElement color]):
        (-[HTMLFontElement setColor:]):
        (-[HTMLFontElement face]):
        (-[HTMLFontElement setFace:]):
        (-[HTMLFontElement size]):
        (-[HTMLFontElement setSize:]):
        (-[HTMLHRElement align]):
        (-[HTMLHRElement setAlign:]):
        (-[HTMLHRElement noShade]):
        (-[HTMLHRElement setNoShade:]):
        (-[HTMLHRElement size]):
        (-[HTMLHRElement setSize:]):
        (-[HTMLHRElement width]):
        (-[HTMLHRElement setWidth:]):
        (-[HTMLModElement cite]):
        (-[HTMLModElement setCite:]):
        (-[HTMLModElement dateTime]):
        (-[HTMLModElement setDateTime:]):
        (-[HTMLAnchorElement accessKey]):
        (-[HTMLAnchorElement setAccessKey:]):
        (-[HTMLAnchorElement charset]):
        (-[HTMLAnchorElement setCharset:]):
        (-[HTMLAnchorElement coords]):
        (-[HTMLAnchorElement setCoords:]):
        (-[HTMLAnchorElement href]):
        (-[HTMLAnchorElement setHref:]):
        (-[HTMLAnchorElement hreflang]):
        (-[HTMLAnchorElement setHreflang:]):
        (-[HTMLAnchorElement name]):
        (-[HTMLAnchorElement setName:]):
        (-[HTMLAnchorElement rel]):
        (-[HTMLAnchorElement setRel:]):
        (-[HTMLAnchorElement rev]):
        (-[HTMLAnchorElement setRev:]):
        (-[HTMLAnchorElement shape]):
        (-[HTMLAnchorElement setShape:]):
        (-[HTMLAnchorElement tabIndex]):
        (-[HTMLAnchorElement setTabIndex:]):
        (-[HTMLAnchorElement target]):
        (-[HTMLAnchorElement setTarget:]):
        (-[HTMLAnchorElement type]):
        (-[HTMLAnchorElement setType:]):
        (-[HTMLAnchorElement blur]):
        (-[HTMLAnchorElement focus]):
        (-[HTMLImageElement lowSrc]):
        (-[HTMLImageElement setLowSrc:]):
        (-[HTMLImageElement name]):
        (-[HTMLImageElement setName:]):
        (-[HTMLImageElement align]):
        (-[HTMLImageElement setAlign:]):
        (-[HTMLImageElement alt]):
        (-[HTMLImageElement setAlt:]):
        (-[HTMLImageElement border]):
        (-[HTMLImageElement setBorder:]):
        (-[HTMLImageElement height]):
        (-[HTMLImageElement setHeight:]):
        (-[HTMLImageElement hspace]):
        (-[HTMLImageElement setHspace:]):
        (-[HTMLImageElement isMap]):
        (-[HTMLImageElement setIsMap:]):
        (-[HTMLImageElement longDesc]):
        (-[HTMLImageElement setLongDesc:]):
        (-[HTMLImageElement src]):
        (-[HTMLImageElement setSrc:]):
        (-[HTMLImageElement useMap]):
        (-[HTMLImageElement setUseMap:]):
        (-[HTMLImageElement vspace]):
        (-[HTMLImageElement setVspace:]):
        (-[HTMLImageElement width]):
        (-[HTMLImageElement setWidth:]):
        (-[HTMLObjectElement form]):
        (-[HTMLObjectElement code]):
        (-[HTMLObjectElement setCode:]):
        (-[HTMLObjectElement align]):
        (-[HTMLObjectElement setAlign:]):
        (-[HTMLObjectElement archive]):
        (-[HTMLObjectElement setArchive:]):
        (-[HTMLObjectElement border]):
        (-[HTMLObjectElement setBorder:]):
        (-[HTMLObjectElement codeBase]):
        (-[HTMLObjectElement setCodeBase:]):
        (-[HTMLObjectElement codeType]):
        (-[HTMLObjectElement setCodeType:]):
        (-[HTMLObjectElement data]):
        (-[HTMLObjectElement setData:]):
        (-[HTMLObjectElement declare]):
        (-[HTMLObjectElement setDeclare:]):
        (-[HTMLObjectElement height]):
        (-[HTMLObjectElement setHeight:]):
        (-[HTMLObjectElement hspace]):
        (-[HTMLObjectElement setHspace:]):
        (-[HTMLObjectElement name]):
        (-[HTMLObjectElement setName:]):
        (-[HTMLObjectElement standby]):
        (-[HTMLObjectElement setStandby:]):
        (-[HTMLObjectElement tabIndex]):
        (-[HTMLObjectElement setTabIndex:]):
        (-[HTMLObjectElement type]):
        (-[HTMLObjectElement setType:]):
        (-[HTMLObjectElement useMap]):
        (-[HTMLObjectElement setUseMap:]):
        (-[HTMLObjectElement vspace]):
        (-[HTMLObjectElement setVspace:]):
        (-[HTMLObjectElement width]):
        (-[HTMLObjectElement setWidth:]):
        (-[HTMLParamElement name]):
        (-[HTMLParamElement setName:]):
        (-[HTMLParamElement type]):
        (-[HTMLParamElement setType:]):
        (-[HTMLParamElement value]):
        (-[HTMLParamElement setValue:]):
        (-[HTMLParamElement valueType]):
        (-[HTMLParamElement setValueType:]):
        (-[HTMLAppletElement align]):
        (-[HTMLAppletElement setAlign:]):
        (-[HTMLAppletElement alt]):
        (-[HTMLAppletElement setAlt:]):
        (-[HTMLAppletElement archive]):
        (-[HTMLAppletElement setArchive:]):
        (-[HTMLAppletElement code]):
        (-[HTMLAppletElement setCode:]):
        (-[HTMLAppletElement codeBase]):
        (-[HTMLAppletElement setCodeBase:]):
        (-[HTMLAppletElement codeType]):
        (-[HTMLAppletElement setCodeType:]):
        (-[HTMLAppletElement height]):
        (-[HTMLAppletElement setHeight:]):
        (-[HTMLAppletElement hspace]):
        (-[HTMLAppletElement setHspace:]):
        (-[HTMLAppletElement name]):
        (-[HTMLAppletElement setName:]):
        (-[HTMLAppletElement object]):
        (-[HTMLAppletElement setObject:]):
        (-[HTMLAppletElement vspace]):
        (-[HTMLAppletElement setVspace:]):
        (-[HTMLAppletElement width]):
        (-[HTMLAppletElement setWidth:]):
        (-[HTMLMapElement areas]):
        (-[HTMLMapElement name]):
        (-[HTMLMapElement setName:]):
        (-[HTMLAreaElement accessKey]):
        (-[HTMLAreaElement setAccessKey:]):
        (-[HTMLAreaElement alt]):
        (-[HTMLAreaElement setAlt:]):
        (-[HTMLAreaElement coords]):
        (-[HTMLAreaElement setCoords:]):
        (-[HTMLAreaElement href]):
        (-[HTMLAreaElement setHref:]):
        (-[HTMLAreaElement noHref]):
        (-[HTMLAreaElement setNoHref:]):
        (-[HTMLAreaElement shape]):
        (-[HTMLAreaElement setShape:]):
        (-[HTMLAreaElement tabIndex]):
        (-[HTMLAreaElement setTabIndex:]):
        (-[HTMLAreaElement target]):
        (-[HTMLAreaElement setTarget:]):
        (-[HTMLScriptElement text]):
        (-[HTMLScriptElement setText:]):
        (-[HTMLScriptElement htmlFor]):
        (-[HTMLScriptElement setHtmlFor:]):
        (-[HTMLScriptElement event]):
        (-[HTMLScriptElement setEvent:]):
        (-[HTMLScriptElement charset]):
        (-[HTMLScriptElement setCharset:]):
        (-[HTMLScriptElement defer]):
        (-[HTMLScriptElement setDefer:]):
        (-[HTMLScriptElement src]):
        (-[HTMLScriptElement setSrc:]):
        (-[HTMLScriptElement type]):
        (-[HTMLScriptElement setType:]):
        (-[HTMLTableCaptionElement align]):
        (-[HTMLTableCaptionElement setAlign:]):
        (-[HTMLTableSectionElement align]):
        (-[HTMLTableSectionElement setAlign:]):
        (-[HTMLTableSectionElement ch]):
        (-[HTMLTableSectionElement setCh:]):
        (-[HTMLTableSectionElement chOff]):
        (-[HTMLTableSectionElement setChOff:]):
        (-[HTMLTableSectionElement vAlign]):
        (-[HTMLTableSectionElement setVAlign:]):
        (-[HTMLTableSectionElement rows]):
        (-[HTMLTableSectionElement insertRow:]):
        (-[HTMLTableSectionElement deleteRow:]):
        (-[HTMLTableElement caption]):
        (-[HTMLTableElement tHead]):
        (-[HTMLTableElement tFoot]):
        (-[HTMLTableElement rows]):
        (-[HTMLTableElement tBodies]):
        (-[HTMLTableElement align]):
        (-[HTMLTableElement setAlign:]):
        (-[HTMLTableElement bgColor]):
        (-[HTMLTableElement setBgColor:]):
        (-[HTMLTableElement border]):
        (-[HTMLTableElement setBorder:]):
        (-[HTMLTableElement cellPadding]):
        (-[HTMLTableElement setCellPadding:]):
        (-[HTMLTableElement cellSpacing]):
        (-[HTMLTableElement setCellSpacing:]):
        (-[HTMLTableElement frame]):
        (-[HTMLTableElement setFrame:]):
        (-[HTMLTableElement rules]):
        (-[HTMLTableElement setRules:]):
        (-[HTMLTableElement summary]):
        (-[HTMLTableElement setSummary:]):
        (-[HTMLTableElement width]):
        (-[HTMLTableElement setWidth:]):
        (-[HTMLTableElement createTHead]):
        (-[HTMLTableElement deleteTHead]):
        (-[HTMLTableElement createTFoot]):
        (-[HTMLTableElement deleteTFoot]):
        (-[HTMLTableElement createCaption]):
        (-[HTMLTableElement deleteCaption]):
        (-[HTMLTableElement deleteRow:]):
        (-[HTMLTableColElement align]):
        (-[HTMLTableColElement setAlign:]):
        (-[HTMLTableColElement ch]):
        (-[HTMLTableColElement setCh:]):
        (-[HTMLTableColElement chOff]):
        (-[HTMLTableColElement setChOff:]):
        (-[HTMLTableColElement span]):
        (-[HTMLTableColElement setSpan:]):
        (-[HTMLTableColElement vAlign]):
        (-[HTMLTableColElement setVAlign:]):
        (-[HTMLTableColElement width]):
        (-[HTMLTableColElement setWidth:]):
        (-[HTMLTableRowElement rowIndex]):
        (-[HTMLTableRowElement setRowIndex:]):
        (-[HTMLTableRowElement sectionRowIndex]):
        (-[HTMLTableRowElement setSectionRowIndex:]):
        (-[HTMLTableRowElement cells]):
        (-[HTMLTableRowElement setCells:]):
        (-[HTMLTableRowElement align]):
        (-[HTMLTableRowElement setAlign:]):
        (-[HTMLTableRowElement bgColor]):
        (-[HTMLTableRowElement setBgColor:]):
        (-[HTMLTableRowElement ch]):
        (-[HTMLTableRowElement setCh:]):
        (-[HTMLTableRowElement chOff]):
        (-[HTMLTableRowElement setChOff:]):
        (-[HTMLTableRowElement vAlign]):
        (-[HTMLTableRowElement setVAlign:]):
        (-[HTMLTableRowElement insertCell:]):
        (-[HTMLTableRowElement deleteCell:]):
        (-[HTMLTableCellElement cellIndex]):
        (-[HTMLTableCellElement setCellIndex:]):
        (-[HTMLTableCellElement abbr]):
        (-[HTMLTableCellElement setAbbr:]):
        (-[HTMLTableCellElement align]):
        (-[HTMLTableCellElement setAlign:]):
        (-[HTMLTableCellElement axis]):
        (-[HTMLTableCellElement setAxis:]):
        (-[HTMLTableCellElement bgColor]):
        (-[HTMLTableCellElement setBgColor:]):
        (-[HTMLTableCellElement ch]):
        (-[HTMLTableCellElement setCh:]):
        (-[HTMLTableCellElement chOff]):
        (-[HTMLTableCellElement setChOff:]):
        (-[HTMLTableCellElement colSpan]):
        (-[HTMLTableCellElement setColSpan:]):
        (-[HTMLTableCellElement headers]):
        (-[HTMLTableCellElement setHeaders:]):
        (-[HTMLTableCellElement height]):
        (-[HTMLTableCellElement setHeight:]):
        (-[HTMLTableCellElement noWrap]):
        (-[HTMLTableCellElement setNoWrap:]):
        (-[HTMLTableCellElement rowSpan]):
        (-[HTMLTableCellElement setRowSpan:]):
        (-[HTMLTableCellElement scope]):
        (-[HTMLTableCellElement setScope:]):
        (-[HTMLTableCellElement vAlign]):
        (-[HTMLTableCellElement setVAlign:]):
        (-[HTMLTableCellElement width]):
        (-[HTMLTableCellElement setWidth:]):
        (-[HTMLFrameSetElement cols]):
        (-[HTMLFrameSetElement setCols:]):
        (-[HTMLFrameSetElement rows]):
        (-[HTMLFrameSetElement setRows:]):
        (-[HTMLFrameElement frameBorder]):
        (-[HTMLFrameElement setFrameBorder:]):
        (-[HTMLFrameElement longDesc]):
        (-[HTMLFrameElement setLongDesc:]):
        (-[HTMLFrameElement marginHeight]):
        (-[HTMLFrameElement setMarginHeight:]):
        (-[HTMLFrameElement marginWidth]):
        (-[HTMLFrameElement setMarginWidth:]):
        (-[HTMLFrameElement name]):
        (-[HTMLFrameElement setName:]):
        (-[HTMLFrameElement noResize]):
        (-[HTMLFrameElement setNoResize:]):
        (-[HTMLFrameElement scrolling]):
        (-[HTMLFrameElement setScrolling:]):
        (-[HTMLFrameElement src]):
        (-[HTMLFrameElement setSrc:]):
        (-[HTMLIFrameElement align]):
        (-[HTMLIFrameElement setAlign:]):
        (-[HTMLIFrameElement frameBorder]):
        (-[HTMLIFrameElement setFrameBorder:]):
        (-[HTMLIFrameElement height]):
        (-[HTMLIFrameElement setHeight:]):
        (-[HTMLIFrameElement longDesc]):
        (-[HTMLIFrameElement setLongDesc:]):
        (-[HTMLIFrameElement marginHeight]):
        (-[HTMLIFrameElement setMarginHeight:]):
        (-[HTMLIFrameElement marginWidth]):
        (-[HTMLIFrameElement setMarginWidth:]):
        (-[HTMLIFrameElement name]):
        (-[HTMLIFrameElement setName:]):
        (-[HTMLIFrameElement scrolling]):
        (-[HTMLIFrameElement setScrolling:]):
        (-[HTMLIFrameElement src]):
        (-[HTMLIFrameElement setSrc:]):
        (-[HTMLIFrameElement width]):
        (-[HTMLIFrameElement setWidth:]):

2004-03-11  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave

        I have clarified the concept (at least in my head) 
        that each edit command has an obligation to put the
        selection in the right place after it is applied, 
        unapplied, or reapplied. Right now, each edit command 
        calls setStartingSelection and setEndingSelection to do
        this, I made these function move the selection on 
        setting.

        * khtml/editing/htmlediting_impl.cpp:
        (EditCommandImpl::setStartingSelection)
        (EditCommandImpl::setEndingSelection)
        (InputTextCommandImpl::coalesce)
        (InputTextCommandImpl::deleteCharacter)
        (InputTextCommandImpl::execute)
        * khtml/editing/htmlediting_impl.h:

2004-03-11  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave
    
        Various changes to move us forward on editing.
        
        1. I reorganized the concrete EditCommand interface and
        implementation classes alphabetically in their 
        respective files, to make it easier to find things.
        
        2. I added a TypingCommand composite class to gang 
        up all keystrokes and make it possible to pass a 
        single command over to the Cocoa undo system in all cases.
        
        3. I now send all keystrokes back over to WebKit
        to be interpreted by the text input system. In concert
        with the many new NSResponder method implementations I
        added to WebView, we now respond to keystrokes in a much
        more Cocoa-like way that sets us down the path to
        integrating with the Cocoa text input system some day.

        4. I fixed up our integration with the Cocoa undo
        system. I also removed much of the undo support code
        from the KHTMPart class. As a replacement, I implemented
        reporting of undoable commands to KHTMLPart so that 
        a KDE hookup is quite feasible. As a result, undo 
        should "just work" in Blot (Chris has reported that 
        it has been busted).

        5. I added the DOM CSS bindings for Objective-C. This
        required some rearranging of the existing DOM bindings
        code, and while I was there, I did various cleanups in the
        existing DOM bindings.

        * About 400 lines of changed files and functions elided.
        
2004-03-11  Chris Blumenberg  <cblu@apple.com>

	Fixed some spacing issues in reconstructed source and web archives that were caused by a malformed doc type string that we were constructing.

        Reviewed by darin.

        * khtml/html/html_documentimpl.cpp:
        (HTMLDocumentImpl::determineParseMode): set the public ID and system ID on the doc type
        * khtml/xml/dom_docimpl.cpp:
        (DocumentTypeImpl::toString): put a space between DOCTYPE and the name
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentTypeImpl::setPublicId): new
        (DOM::DocumentTypeImpl::setSystemId): new

2004-03-10  David Hyatt  <hyatt@apple.com>

	Fix for 3584646, AxWebArea should encompass all children (its AxSize should).
	
        Reviewed by mjs

        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::absoluteRects):
        * khtml/rendering/render_canvas.h:

2004-03-10  Chris Blumenberg  <cblu@apple.com>

	Fixed: INPUT images are not part of web archives.

        Reviewed by rjw.

        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::isSubresourceURLAttribute):
        * khtml/html/html_formimpl.h:

2004-03-09  Chris Blumenberg  <cblu@apple.com>

	Implemented WebCore side of: <rdar://problem/3577508>: API: web archive related API's

        Reviewed by rjw.

        * WebCore-combined.exp:
        * WebCore.exp:
        * kwq/DOM.mm:
        (+[DOMRange _rangeWithImpl:]): made internally accessible
        (-[DOMRange _rangeImpl]): ditto
        * kwq/DOMInternal.h:
        * kwq/KWQStringList.h:
        * kwq/KWQStringList.mm:
        (QStringList::getNSArray): new
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge pasteMarkupString:]): renamed from pasteHTMLString since XML pasting may be possible
        (-[WebCoreBridge selectedRange]): new
        (-[WebCoreBridge _documentTypeString]): new
        (-[WebCoreBridge _stringWithDocumentTypeStringAndMarkupString:]): new
        (-[WebCoreBridge markupStringFromNode:subresourceURLStrings:]): new, needed for WebKit API's
        (-[WebCoreBridge markupStringFromRange:subresourceURLStrings:]): new, needed for WebKit API's

2004-03-09  David Hyatt  <hyatt@apple.com>

	Make the AXLinkUIElements attribute always return an array (never return nil).
	
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject accessibilityAttributeValue:]):

2004-03-09  David Hyatt  <hyatt@apple.com>

	(1) Change root element in a document to have a role of AXWebArea.
	(2) Add support for AXURL to links and children of links.
	(3) Add support for AXLinkUIElements to the AXWebArea
	
        Reviewed by john

        * khtml/dom/html_misc.h:
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject role]):
        (-[KWQAccObject roleDescription]):
        (-[KWQAccObject accessibilityAttributeNames]):
        (-[KWQAccObject accessibilityAttributeValue:]):

2004-03-09  John Sullivan  <sullivan@apple.com>

        Reviewed by nobody.

        * kwq/KWQKURL.mm:
        (KURL::KURL):
        Fixed broken build by removing wayward "break" statement.

2004-03-08  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed <rdar://problem/3554876>: REGRESSION (100-125): cannot upload file if path contains non-ASCII characters

        * kwq/KWQKURL.mm: Remove Colon constant so we can fit in 8 bits again.
        (KURL::KURL): Rewrite so we don't need isSchemeCharOrColon.

=== Safari-131 ===

2004-03-08  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        * WebCore.pbproj/project.pbxproj: Added CFBundleName to Info.plist.

2004-03-05  David Hyatt  <hyatt@apple.com>

	Fix for first-line inheritance problem caused by incorrectly inheriting first-line into floating
	blocks.
	
        Reviewed by kocienda

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::firstLineBlock):

2004-03-05  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me.

	Forgot to add this when I checked in last time.

        * ForwardingHeaders/css/css_computedstyle.h: Added.

2004-03-05  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Dave.

        Added initial support for retrieving the computed 
        style of document elements.

        * WebCore.pbproj/project.pbxproj:
        * khtml/css/css_computedstyle.cpp: Added.
        (DOM::valueForLength): Helper to turn a khtml::Length into a computed value string.
        (DOM::stringForBorderStyle): Helper to turn an EBorderStyle into a computed value string.
        (DOM::stringForTextAlign): Helper to turn an ETextAlign into a computed value string.
        (DOM::CSSComputedStyleDeclarationImpl::CSSComputedStyleDeclarationImpl): New function.
        (DOM::CSSComputedStyleDeclarationImpl::~CSSComputedStyleDeclarationImpl): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::cssText): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::setCssText): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::getPropertyValue): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::getPropertyPriority): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::removeProperty): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::setProperty): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::setLengthProperty): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::item): Ditto.
        (DOM::CSSComputedStyleDeclarationImpl::property): Ditto.
        * khtml/css/css_computedstyle.h: Added.
        * khtml/css/css_valueimpl.cpp:
        (CSSPrimitiveValueImpl::cssText): Fixed some formatting of Rect. Added
        suppoprt for rgba colors.
        * khtml/css/css_valueimpl.h:
        (DOM::CSSStyleDeclarationImpl::node):
        * khtml/ecma/kjs_css.cpp:
        (KJS::getDOMCSSStyleDeclaration):
        * khtml/ecma/kjs_dom.cpp:
        (DOMDocument::getValueProperty): defaultView is a property, used to be a function, 
        which was wrong. Fixed.
        (DOMDocumentProtoFunc::tryCall): Ditto.
        * khtml/ecma/kjs_dom.lut.h:
        (KJS::): Regenerated file.
        * khtml/misc/khtmllayout.h:
        (khtml::Length::length): Added an accessor to the value, to promote better coding
        style, rather than peeking and poking the value directly.
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::borderLeftWidth): BHIDDEN also should be treated like BNONE when it comes
        to returning a zero value. Now it is.
        (khtml::RenderStyle::borderRightWidth): Ditto.
        (khtml::RenderStyle::borderTopWidth): Ditto.
        (khtml::RenderStyle::borderBottomWidth): Ditto.
        (khtml::RenderStyle::outlineWidth): Ditto.
        (khtml::RenderStyle::outlineOffset): Ditto.
        * khtml/xml/dom2_viewsimpl.cpp:
        (AbstractViewImpl::getComputedStyle): Added an implementation for this formerly stubbed out function.

2004-03-05  Ken Kocienda  <kocienda@apple.com>

        Change by Darin. Reviewed by me.

        * kwq/DOM.mm: Fixed the following functions to deal with
        casting objects derived from NodeImpl back and forth to
        NodeImpl given that the derived classes use multiple
        inheritance.
        (-[DOMDocument _documentImpl]):
        (-[DOMCharacterData _characterDataImpl]):
        (-[DOMAttr _attrImpl]):
        (-[DOMElement _elementImpl]):
        (-[DOMText _textImpl]):
        (-[DOMDocumentType _documentTypeImpl]):
        (-[DOMNotation _notationImpl]):
        (-[DOMEntity _entityImpl]):
        (-[DOMProcessingInstruction _processingInstructionImpl]):

2004-03-03  Darin Adler  <darin@apple.com>

        Reviewed by Vicki.

        * English.lproj/InfoPlist.strings: Removed. No need to localize the version and
        copyright string, and that's all that was in here.
        * WebCore.pbproj/project.pbxproj: Removed InfoPlist.strings from build.

2004-03-03  David Hyatt  <hyatt@apple.com>

	Speed up access to the children arrays of accessibility objects by caching mutable arrays of children
	and nulling them out only when the children change.
	
        Reviewed by john

        * khtml/rendering/render_container.cpp:
        (RenderContainer::removeChildNode):
        (RenderContainer::appendChildNode):
        (RenderContainer::insertChildNode):
        * kwq/KWQAccObject.h:
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject detach]):
        (-[KWQAccObject accessibilityAttributeValue:]):
        (-[KWQAccObject childrenChanged]):
        (-[KWQAccObject clearChildren]):
        * kwq/KWQAccObjectCache.h:
        * kwq/KWQAccObjectCache.mm:
        (KWQAccObjectCache::childrenChanged):

2004-03-02  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin and me. Coding by Darin and me.
        
        1) Fix some places that were calling [self class], in at
        least one case calling a method not defined on the class
        (not gonna work).
        2) Add underscore prefix for all non-API method names.
        3) Make DOMObject refuse to init, which might prevent
        problems where people get confused and think they can
        subclass or instantiate it or its subclasses.
        4) Use some C+mojo to replace NSStringToDOMString and
        DOMStringToNSString with type conversions built into the
        DOMString class.
        5) Removed NSError out parameters from the API. Methods
        now throw NSExceptions.
        6) Exception code local variables now initialized before
        passing to khtml DOM impl calls.
        7) Various other cleanups and tweaks.

        * khtml/dom/dom_string.h
        * khtml/xml/dom_atomicstring.h
        * kwq/DOM.h
        * kwq/DOM.mm
        * kwq/DOMInternal.h
        * kwq/KWQKHTMLPart.mm
        * kwq/WebCoreBridge.mm

2004-03-02  Richard Williamson   <rjw@apple.com>

	Added NP_SAP API.  This API includes the new entry points
	used to bind native interfaces to JavaScript.  It's final location
	may change.

	Made changes to KWQKHTMLPart.mm to reflect changes in names
	on RootObject.
	
        Reviewed by Chris.

        * WebCore.pbproj/project.pbxproj:
        * khtml/ecma/NP_SAP.h: Added.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::cleanupPluginRootObjects):
        * kwq/WebCoreBridge.mm:

2004-03-01  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3549201>: repro crash in KHTMLPart::begin inside JavaScript code (gmpartsdirect.com)

	Added some null checks. I am not sure why this page attaches a
	document that has no view, but these changes make it work
	perfectly.
        
	* khtml/khtml_part.cpp:
        (KHTMLPart::begin): Add check for null view before use.  *
	khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::close): ditto
        (DocumentImpl::recalcStyle): Add check for null paint device.

=== Safari-130 ===

2004-03-01  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me
        
        Rollout last night's checkin. The tree was closed.

        * kwq/DOM.h
        * kwq/DOM.mm
        * kwq/DOMInternal.h
        * kwq/KWQKHTMLPart.mm
        * kwq/WebCoreBridge.mm

2004-03-01  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me, changes by Darin.
        
        Yet another pass at the DOM API, this one by 
        Darin to simplify the internal structure of the
        implementation. Little has changed in the API;
        much has changed in the implementation, particularly
        with regard to object creation and data storage and
        the class hierarchy.

        * kwq/DOM.h
        * kwq/DOM.mm
        * kwq/DOMInternal.h
        * kwq/KWQKHTMLPart.mm
        * kwq/WebCoreBridge.mm

2004-03-01  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by NOBODY (OOPS!).

	- fixed <rdar://problem/3567047>: REGRESSION: repro crash inside KJS (dispatchToBoolean) at www.thedonnas.com
	- fixed <rdar://problem/3550461>: REGRESSION: repro crash in JavaScript at www.alaska.com
        
	* khtml/ecma/kjs_window.cpp:
        (Window::getListener): Return Null() when the listener object is
	null, indicating the code failed to parse. Otherwise we return a
	bad value which can later crash the JS interpreter.

2004-03-01  Darin Adler  <darin@apple.com>

        Reviewed by Vicki.

        - fixed Tiger build

        * kwq/KWQXmlSimpleReader.mm: (QXmlSimpleReader::parse):
        Changed SAX structure initialization code so it compiles with both the newer
        and older libxml. Not sure this will work right with namespaces with the new
        libxml; we'll have to test.

2004-03-01  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me, as suggested by Darin

        * khtml/misc/htmlattrs.c:
        (getAttrName): Generated code no longer has extraneous semicolon.
        * khtml/misc/htmltags.c: Generated code no longer has extraneous semicolon.
        (getTagName):
        * khtml/misc/makeattrs: Removed extraneous semicolon from end of file.
        * khtml/misc/maketags: Ditto.

2004-03-01  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me

        * kwq/DOMInternal.h: Replaced tabs with spaces.

2004-03-01  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

        Changed all Objective-C DOM classes from protocols to classes, using
        a class cluster-like approach.

        * WebCore.pbproj/project.pbxproj:
        * khtml/dom/html_object.cpp: Put code in DOM namespace.
        * khtml/html/html_headimpl.cpp: Pull in entire DOM namespace in using directive to
        make up for the removal of it from htmlattrs.
        * khtml/html/htmltokenizer.cpp: Add using directives for the DOM classes used.
        * khtml/misc/htmlattrs.c:
        (getAttrName):
        * khtml/misc/htmlattrs.h: 
        * khtml/misc/htmltags.c:
        (getTagName):
        * khtml/misc/makeattrs: Some changes here to avoid pulling in the entire DOM namespace.
        Explicitly use DOM namespace scoping for DOMString.
        * khtml/misc/maketags: Explicitly use DOM namespace scoping for DOMString.
        * khtml/rendering/render_form.cpp: Pull in entire DOM namespace in using directive to
        make up for the removal of it from htmlattrs.
        * kwq/DOM-compat.h:
        * kwq/DOM.h:
        * kwq/DOM.mm: Added.
        * kwq/WebCoreDOM.h: Removed.
        * kwq/WebCoreDOM.mm: Removed.

2004-02-26  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	<rdar://problem/3514733>: nil-deref in createHTMLEventListener at skiset.com
	<rdar://problem/3510676>: nil-deref of view in DocumentImpl::createHTMLEventListener at kirotv.com
	
	* khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::createHTMLEventListener): Don't create the listener if there is no
	part. Also, get the part when going through the view. This prevents problems when
	handlers are set or removed from the onUnload handler.

2004-02-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	- fixed <rdar://problem/3571356>: REGRESSION: Crash in isPointInsideSelection clicking on link in Apple web directory frame
	
        * khtml/khtml_part.cpp:
        (KHTMLPart::isPointInsideSelection): Don't crash if innerNode is
	NULL, as this can happen mousing over a frame that's in the
	process of loading and currently empty. Since such a frame
	obviously can't be inside the selection, this seems like a good
	enough fix.
	
2004-02-26  David Hyatt  <hyatt@apple.com>

	Fix for 3528839, wide table cut off because of shorts being used instead of ints.
	
        Reviewed by darin

        * khtml/rendering/render_table.cpp:
        (RenderTableSection::layoutRows):
        (RenderTableCell::setWidth):
        * khtml/rendering/table_layout.cpp:
        (FixedTableLayout::calcWidthArray):
        (FixedTableLayout::calcMinMaxWidth):
        (AutoTableLayout::calcMinMaxWidth):

2004-02-26  Chris Blumenberg  <cblu@apple.com>

	Fixed a few problems I found with reconstructed source while on my way to implementing "Mail Page".

        Reviewed by hyatt.

        * khtml/html/html_headimpl.cpp:
        (HTMLLinkElementImpl::isSubresourceURLAttribute): only true for stylesheet and icon
        * khtml/html/html_imageimpl.cpp:
        (HTMLAreaElementImpl::isURLAttribute): implement isURLAttribute not isSubresourceURLAttribute
        * khtml/html/html_imageimpl.h:
        * khtml/rendering/render_box.cpp:
        (RenderBox::dirtyLineBoxes): crasher fix that I found using libgmalloc
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::recursive_toHTMLWithOptions): don't escape SCRIPT and TEXTAREA text, write close tags for tags that need them instead of relying on the children check 
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge HTMLString:]): call recursive_toHTMLWithOptions on the first child of the document so <#document /> isn't part of the source

2004-02-26  David Hyatt  <hyatt@apple.com>

	Convert render object widths from short to int.  There was a bug on this, but I can't find it in Radar.
	
        Reviewed by john

        * khtml/rendering/render_applet.cpp:
        (RenderApplet::intrinsicWidth):
        (RenderEmptyApplet::intrinsicWidth):
        * khtml/rendering/render_applet.h:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::calcMinMaxWidth):
        (khtml::RenderBlock::calcInlineMinMaxWidth):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_box.cpp:
        (RenderBox::contentWidth):
        (RenderBox::width):
        (RenderBox::containingBlockWidth):
        (RenderBox::calcReplacedWidth):
        (RenderBox::setStaticX):
        * khtml/rendering/render_box.h:
        (khtml::RenderBox::minWidth):
        (khtml::RenderBox::maxWidth):
        * khtml/rendering/render_br.h:
        (khtml::RenderBR::minWidth):
        (khtml::RenderBR::maxWidth):
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::layout):
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::calcMinMaxWidth):
        * khtml/rendering/render_frames.cpp:
        (RenderPart::intrinsicWidth):
        (RenderPartObject::layout):
        * khtml/rendering/render_frames.h:
        * khtml/rendering/render_image.cpp:
        (RenderImage::layout):
        (RenderImage::calcReplacedWidth):
        * khtml/rendering/render_image.h:
        * khtml/rendering/render_inline.cpp:
        (RenderInline::width):
        * khtml/rendering/render_inline.h:
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::scrollWidth):
        * khtml/rendering/render_layer.h:
        (khtml::RenderLayer::width):
        (khtml::RenderLayer::setWidth):
        (khtml::RenderLayer::scrollXOffset):
        * khtml/rendering/render_line.h:
        (khtml::InlineBox::setWidth):
        (khtml::InlineBox::width):
        (khtml::InlineBox::setXPos):
        (khtml::InlineBox::xPos):
        * khtml/rendering/render_object.cpp:
        (RenderObject::containingBlockWidth):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::setStaticX):
        (khtml::RenderObject::contentWidth):
        (khtml::RenderObject::intrinsicWidth):
        (khtml::RenderObject::width):
        (khtml::RenderObject::offsetWidth):
        (khtml::RenderObject::minWidth):
        (khtml::RenderObject::maxWidth):
        * khtml/rendering/render_replaced.h:
        (khtml::RenderReplaced::intrinsicWidth):
        * khtml/rendering/render_table.cpp:
        (RenderTable::calcWidth):
        * khtml/rendering/render_table.h:
        * khtml/rendering/render_text.cpp:
        (RenderText::trimmedMinMaxWidth):
        (RenderText::width):
        * khtml/rendering/render_text.h:
        (khtml::RenderText::minWidth):
        (khtml::RenderText::maxWidth):
        * khtml/rendering/table_layout.cpp:

2004-02-26  Trey Matteson  <trey@apple.com>

	3566668 - REGRESSION (125-128): autofill of popup lists is broken
	3571271 - autofill parsing of field names should treat _ as a word separator

        Reviewed by Chris, Darin

        * kwq/KWQComboBox.h:
        * kwq/KWQComboBox.mm:
        (QComboBox::populate):   New virtual method to force any lazy field population to happen.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::matchLabelsAgainstElement):  Change _ to ' ', to make it a word separator.
        * kwq/KWQWidget.h:
        (QWidget::populate):  Implement populate to fill out the menu's data.
        * kwq/WebCoreBridge.mm:
        (viewForElement):    Make sure widget is populated before handing it out.

2004-02-26  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Chris

        * WebCore.pbproj/project.pbxproj:
        * khtml/xml/dom2_rangeimpl.h: Now includes createInstance glue function as do the other
        khtml DOM objects that we reflect into ObjC.
        * kwq/DOM-compat.h: Added. Compatibility declarations for DOM SPI. Note that this file 
        is copied into WebKit by the build system as needed.
        * kwq/DOM.h: Added. New home for DOM SPI. Note that this file is copied into WebKit by the build 
        system as needed.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::recordFormValue): Updated usage to new DOM SPI.
        * kwq/WebCoreBridge.h: Updated usage to new DOM SPI.
        * kwq/WebCoreBridge.mm: Updated usage to new DOM SPI. Needed to add DOM range impl include since
        includes jiggered around and this needed header was no longer included indirectly.
        (-[WebCoreBridge elementForView:]): Ditto.
        (inputElementFromDOMElement): Ditto.
        (formElementFromDOMElement): Ditto.
        (-[WebCoreBridge elementWithName:inForm:]): Ditto.
        (-[WebCoreBridge elementDoesAutoComplete:]): Ditto.
        (-[WebCoreBridge elementIsPassword:]): Ditto.
        (-[WebCoreBridge currentForm]): Ditto.
        (-[WebCoreBridge controlsInForm:]): Ditto.
        (-[WebCoreBridge searchForLabels:beforeElement:]): Ditto.
        (-[WebCoreBridge matchLabels:againstElement:]): Ditto.
        (-[WebCoreBridge elementAtPoint:]): Ditto.
        (-[WebCoreBridge DOMDocument]): Ditto.
        (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]): Ditto.
        (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]): Ditto.
        (-[WebCoreBridge selectionStart]): Ditto.
        (-[WebCoreBridge selectionEnd]): Ditto.
        * kwq/WebCoreDOM.h: New home for all private declarations needed for reflecting DOM into ObjC.
        * kwq/WebCoreDOM.mm: Added. New home for all implementations needed for reflecting DOM into ObjC.
        * kwq/WebCoreDOMDocument.mm: Removed. All ObjC DOM implementation now in WebCoreDOM.mm.
        * kwq/WebCoreDOMNode.mm: Removed. All ObjC DOM implementation now in WebCoreDOM.mm.
        * kwq/WebCoreDOMPrivate.h: Removed.
        * kwq/WebDOMDocument.h: Removed.
        * kwq/WebDOMElement.h: Removed.
        * kwq/WebDOMNode.h: Removed.

2004-02-25  John Sullivan  <sullivan@apple.com>

        WebCore part of fix for <rdar://problem/3546370>: add a way to tab to menus, 
        checkmarks, and buttons without turning on Full Keyboard Acceess

        Reviewed by Ken.

        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::tabsToAllControls):
        now checks for option-tab like tabsToLinks
        (KWQKHTMLPart::partForWidget):
        new method, extracted from bridgeForWidget
        (KWQKHTMLPart::bridgeForWidget):
        now calls extracted method

        * kwq/KWQButton.mm:
        (-[KWQButton canBecomeKeyView]):
        overridden to handle our rules about full keyboard access, different
        than NSView's rules
        * kwq/KWQComboBox.mm:
        (-[KWQPopUpButton canBecomeKeyView]):
        ditto
        * kwq/KWQListBox.mm:
        (-[KWQTableView canBecomeKeyView]):
        ditto
        
2004-02-24  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        * kwq/KWQString.mm: (QString::endsWith): Fixed broken end of string test, to get rid
        of false positives.

        * WebCore-tests.exp: Added endsWith so it can be tested.
        * WebCore-combined.exp: Regenerated.

2004-02-23  David Hyatt  <hyatt@apple.com>

	Fix for 3549772, hangs on border collapsing.
	
        Reviewed by darin

        * khtml/rendering/render_object.cpp:
        (RenderObject::collectBorders):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_table.cpp:
        (RenderTable::paint):
        (compareBorders):
        (RenderTableCell::paint):
        (addBorderStyle):
        (RenderTableCell::collectBorders):
        * khtml/rendering/render_table.h:

2004-02-23  David Hyatt  <hyatt@apple.com>

	Fix for 3558717, make sure that form elements that are removed from a document also remove themselves
	from the form.

	Reviewed by darin.
	
        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::removedFromDocument):
        * khtml/html/html_formimpl.h:
        * khtml/xml/dom_nodeimpl.cpp:
        * khtml/xml/dom_nodeimpl.h:

	Implement smarter line layout for faster typing and repainting when individual lines change.

	Reviewed by kocienda.
	
	* khtml/khtmlview.cpp:
        (KHTMLViewPrivate::KHTMLViewPrivate):
        (KHTMLViewPrivate::~KHTMLViewPrivate):
        (KHTMLViewPrivate::reset):
        (KHTMLView::addRepaintInfo):
        (KHTMLView::layout):
        * khtml/khtmlview.h:
        * khtml/rendering/bidi.cpp:
        (khtml::Bidinext):
        (khtml::appendRun):
        (khtml::embed):
        (khtml::RenderBlock::constructLine):
        (khtml::RenderBlock::computeHorizontalPositionsForLine):
        (khtml::RenderBlock::computeVerticalPositionsForLine):
        (khtml::RenderBlock::bidiReorderLine):
        (khtml::buildCompactRuns):
        (khtml::RenderBlock::layoutInlineChildren):
        (khtml::RenderBlock::determineStartPosition):
        (khtml::RenderBlock::determineEndPosition):
        (khtml::RenderBlock::matchedEndLine):
        (khtml::RenderBlock::findNextLineBreak):
        * khtml/rendering/render_block.cpp:
        (khtml:::RenderFlow):
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::layoutBlockChildren):
        (khtml::RenderBlock::positionNewFloats):
        (khtml::RenderBlock::lowestPosition):
        (khtml::RenderBlock::rightmostPosition):
        (khtml::RenderBlock::leftmostPosition):
        * khtml/rendering/render_block.h:
        (khtml::RenderBlock::firstRootBox):
        (khtml::RenderBlock::lastRootBox):
        (khtml::RenderBlock::setLinesAppended):
        (khtml::RenderBlock::linesAppended):
        * khtml/rendering/render_box.cpp:
        (RenderBox::dirtyLineBoxes):
        (RenderBox::deleteLineBoxWrapper):
        (RenderBox::setInlineBoxWrapper):
        * khtml/rendering/render_box.h:
        * khtml/rendering/render_br.cpp:
        (RenderBR::createInlineBox):
        (RenderBR::position):
        * khtml/rendering/render_br.h:
        * khtml/rendering/render_container.cpp:
        (RenderContainer::appendChildNode):
        (RenderContainer::insertChildNode):
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::placeChild):
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::extractLineBox):
        (RenderFlow::attachLineBox):
        (RenderFlow::removeLineBox):
        (RenderFlow::dirtyLinesFromChangedChild):
        (RenderFlow::dirtyLineBoxes):
        (RenderFlow::createInlineBox):
        * khtml/rendering/render_flow.h:
        * khtml/rendering/render_line.cpp:
        (InlineBox::dirtyLineBoxes):
        (InlineBox::deleteLine):
        (InlineBox::extractLine):
        (InlineBox::attachLine):
        (InlineBox::adjustVerticalPosition):
        (InlineBox::root):
        (InlineBox::nextOnLineExists):
        (InlineBox::prevOnLineExists):
        (InlineFlowBox::removeChild):
        (InlineFlowBox::deleteLine):
        (InlineFlowBox::extractLine):
        (InlineFlowBox::attachLine):
        (InlineFlowBox::adjustVerticalPosition):
        (InlineFlowBox::verticallyAlignBoxes):
        (InlineFlowBox::adjustMaxAscentAndDescent):
        (RootInlineBox::adjustVerticalPosition):
        (RootInlineBox::childRemoved):
        * khtml/rendering/render_line.h:
        (khtml::InlineBox::m_extracted):
        (khtml::InlineBox::setExtracted):
        (khtml::InlineBox::object):
        (khtml::InlineBox::parent):
        (khtml::InlineBox::isDirty):
        (khtml::InlineBox::markDirty):
        (khtml::InlineFlowBox::prevFlowBox):
        (khtml::InlineFlowBox::nextFlowBox):
        (khtml::RootInlineBox::RootInlineBox):
        (khtml::RootInlineBox::nextRootBox):
        (khtml::RootInlineBox::prevRootBox):
        (khtml::RootInlineBox::setLineBreakInfo):
        (khtml::RootInlineBox::setLineBreakPos):
        (khtml::RootInlineBox::setBlockHeight):
        (khtml::RootInlineBox::setEndsWithBreak):
        (khtml::RootInlineBox::blockHeight):
        (khtml::RootInlineBox::endsWithBreak):
        (khtml::RootInlineBox::lineBreakObj):
        (khtml::RootInlineBox::lineBreakPos):
        * khtml/rendering/render_object.cpp:
        (RenderObject::repaintAfterLayoutIfNeeded):
        (RenderObject::repaintObjectsBeforeLayout):
        (RenderObject::dirtyLinesFromChangedChild):
        (RenderObject::createInlineBox):
        (RenderObject::dirtyLineBoxes):
        (RenderObject::setInlineBoxWrapper):
        (RenderObject::deleteLineBoxWrapper):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::RepaintInfo::m_repaintRect):
        * khtml/rendering/render_table.cpp:
        (RenderTableSection::layoutRows):
        * khtml/rendering/render_text.cpp:
        (InlineTextBox::deleteLine):
        (InlineTextBox::extractLine):
        (InlineTextBox::attachLine):
        (RenderText::RenderText):
        (RenderText::detach):
        (RenderText::extractTextBox):
        (RenderText::attachTextBox):
        (RenderText::removeTextBox):
        (RenderText::setTextWithOffset):
        (RenderText::setText):
        (RenderText::dirtyLineBoxes):
        (RenderText::createInlineBox):
        * khtml/rendering/render_text.h:
        (khtml::InlineTextBox::start):
        (khtml::InlineTextBox::end):
        (khtml::InlineTextBox::offsetRun):
        * khtml/xml/dom_textimpl.cpp:
        (CharacterDataImpl::setData):
        (CharacterDataImpl::appendData):
        (CharacterDataImpl::insertData):
        (CharacterDataImpl::deleteData):
        (CharacterDataImpl::replaceData):
        (TextImpl::splitText):
        * kwq/KWQRenderTreeDebug.cpp:
        (write):

	RenderBlock contains two other fixes.  The first is a fix to rightmost/lowestPosition to properly add in
	margins to floats.

	Reviewed by mjs

	The second fix is to repair a bug in block-level replaced elements with margins.  If the floats they moved to
	dodge can fit in their margins, then they don't technically have to move at all.

	Reviewed by john

2004-02-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3552346>: REGRESSION 100-125: nil-dereference in KHTMLPart::isPointInsideSelection (progz.ru, many other sites)
	
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::nodeAtPointForLayer): To cover the case of
	positioned generated content, make sure to find an element if we
	don't have one yet when we get to the layer level.

=== Safari-129 ===

2004-02-19  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3563402>: when copying HTML, relative URLs should be made absolute

	- Added isSubresourceURLAttribute to ElementImpl which is overridden by subclasses determine if an attribute refers to a subresource.
	- Added isURLAttribute to ElementImpl which is overridden by subclasses determine if an attribute refers to any kind of URL.

        Reviewed by Dave.

        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::isSubresourceURLAttribute):
        (HTMLFrameElementImpl::isSubresourceURLAttribute):
        (HTMLIFrameElementImpl::openURL):
        (HTMLIFrameElementImpl::isSubresourceURLAttribute):
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_formimpl.cpp:
        (HTMLFormElementImpl::isURLAttribute):
        * khtml/html/html_formimpl.h:
        * khtml/html/html_headimpl.cpp:
        (HTMLLinkElementImpl::isSubresourceURLAttribute):
        (HTMLScriptElementImpl::id):
        (HTMLScriptElementImpl::isSubresourceURLAttribute):
        * khtml/html/html_headimpl.h:
        * khtml/html/html_imageimpl.cpp:
        (HTMLImageElementImpl::isSubresourceURLAttribute):
        (HTMLAreaElementImpl::getRegion):
        (HTMLAreaElementImpl::isSubresourceURLAttribute):
        * khtml/html/html_imageimpl.h:
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::isURLAttribute):
        * khtml/html/html_inlineimpl.h:
        * khtml/html/html_objectimpl.cpp:
        (HTMLEmbedElementImpl::isSubresourceURLAttribute):
        (HTMLObjectElementImpl::isSubresourceURLAttribute):
        (HTMLParamElementImpl::parseHTMLAttribute):
        (HTMLParamElementImpl::isSubresourceURLAttribute):
        * khtml/html/html_objectimpl.h:
        * khtml/html/html_tableimpl.cpp:
        (HTMLTableElementImpl::isSubresourceURLAttribute):
        (HTMLTableCellElementImpl::attach):
        (HTMLTableCellElementImpl::isSubresourceURLAttribute):
        * khtml/html/html_tableimpl.h:
        * khtml/xml/dom2_rangeimpl.cpp:
        (RangeImpl::toHTMLWithOptions): take completeURLs and subresourceURLs arguments
        (RangeImpl::toHTML): call toHTMLWithOptions with default options
        * khtml/xml/dom2_rangeimpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::isURLAttribute):
        (ElementImpl::isSubresourceURLAttribute):
        * khtml/xml/dom_elementimpl.h:
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::recursive_toHTMLWithOptions): take completeURLs and subresourceURLs arguments
        (NodeImpl::recursive_toHTML): call recursive_toHTML with default options
        * khtml/xml/dom_nodeimpl.h:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge selectedHTML:]): renamed to return subresource URL strings

2004-02-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3537397>: REGRESSION (100-114): Return doesn't work in Japanese input method for some HomePage fields
        
        * kwq/KWQTextArea.mm:
        (-[KWQTextAreaTextView keyDown:]): Don't send events through DOM when there is marked
	text.
        (-[KWQTextAreaTextView keyUp:]): Ditto.
        * kwq/KWQTextField.mm:
        (-[KWQTextField textView:shouldHandleEvent:]): Ditto.
        (-[KWQSecureTextField textView:shouldHandleEvent:]): Ditto.
	* khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::defaultEventHandler): No need to check for
	marked text on "return" any more, because we won't send key events
	through the DOM at all when there is marked text.
        * kwq/KWQLineEdit.h:
        * kwq/KWQLineEdit.mm: Removed haveMarkedText method, no longer
	used by anything.

2004-02-16  Chris Blumenberg  <cblu@apple.com>

	WebCore side of pasting image data.

        Reviewed by kocienda.

        * khtml/editing/htmlediting.cpp:
        (PasteImageCommand::PasteImageCommand): new
        (PasteImageCommand::~PasteImageCommand): new
        (PasteImageCommand::impl): new
        * khtml/editing/htmlediting.h:
        (khtml::):
        * khtml/editing/htmlediting_impl.cpp:
        (EditCommandImpl::name): added support for PasteImageCommandID
        (CompositeEditCommandImpl::insertNodeAt): new, factored out from PasteHTMLCommandImpl::apply
        (PasteHTMLCommandImpl::apply): call insertNodeAt
        (PasteImageCommandImpl::PasteImageCommandImpl): new
        (PasteImageCommandImpl::~PasteImageCommandImpl): new
        (PasteImageCommandImpl::apply): new
        * khtml/editing/htmlediting_impl.h:
        * khtml/khtml_part.cpp:
        (KHTMLPart::pasteHTMLString): unchanged
        (KHTMLPart::pasteImage): new
        * khtml/khtml_part.h:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge pasteImageWithURL:]): new

2004-02-16  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - Fixed some dynamic casts that Dirk complained about to use virtual functions instead.
          Since the virtual functions were already there, this is faster and better in most
          ways anyway.

        * khtml/dom/dom2_events.cpp:
        (UIEvent::keyCode): Use virtual function instead of dynamic_cast.
        (UIEvent::charCode): Ditto.
        (UIEvent::pageX): Ditto.
        (UIEvent::pageY): Ditto.
        (UIEvent::layerX): Ditto.
        (UIEvent::layerY): Ditto.
        (UIEvent::which): Ditto.

2004-02-15  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        * WebCore.pbproj/project.pbxproj: Tweak build styles a bit, fixing OptimizedWithSymbols,
        and removing redundant settings of things that match defaults in other build styles.

2004-02-15  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed 3548533: crash in XMLHttpRequest::slotData using Orkut's rating system

        * khtml/ecma/xmlhttprequest.cpp: (KJS::XMLHttpRequest::~XMLHttpRequest):
        Delete the QObject side, which has a side effect of disconnecting the
        signals which seem to be firing after the request is gone. There may be
        another way of addressing the crash by correcting some other problem with
        killing the job, but this demonstrably works and fixes a storage leak.

2004-02-12  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- redo visited link history checking for a 2% speed improvement

        * kwq/KWQKHistoryProvider.mm:
        (KParts::HistoryProvider::contains): Don't make a KURL or an
	NSString. Punt on canonicalization and directly pass the internal
	Latin1 or unicode buffer.
        * kwq/KWQString.h:
        * kwq/KWQString.mm:
        (QString::hasFastLatin1): New method to check whether getting the
	latin1 buffer is fast (doesn't allocate).
        * kwq/WebCoreHistory.h: add new methods to look up by raw latin1
	or unicode buffer instead of NSString.

=== Safari-128 ===

2004-02-12  David Hyatt  <hyatt@apple.com>

	Fix for 3557850 and 3557607.  Make sure to setParent(0) on the body's link declaration, so that TreeShared
	will delete it.
	
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::~HTMLBodyElementImpl):

2004-02-12  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

	Refactored object design for edit commands into something that's
	starting to feel more solid. Added some accessors to edit 
	commands.

        * WebCore.pbproj/project.pbxproj:
        * khtml/editing/htmlediting_impl.h: Added.
        * khtml/editing/htmlediting_impl.m: Added.

2004-02-11  David Hyatt  <hyatt@apple.com>

	Fix for 3550005, 936 leaks when loading checkbox page of pain.  Make sure to nuke the inline box
	wrapper when detaching the RenderWidget.

        * khtml/rendering/render_replaced.cpp:
        (RenderWidget::detach):

2004-02-11  David Hyatt  <hyatt@apple.com>

	Add some more polish to ensure the ypos estimate is right.  Correct the clearing of images so that
	their top margins do not get added in when they clear the float because of having a large width.
	
        Reviewed by kocienda

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlockChildren):
        * layout-tests/fast/block/margin-collapse/101-expected.txt: Added.
        * layout-tests/fast/block/margin-collapse/101.html: Added.
        * layout-tests/fast/block/margin-collapse/102-expected.txt: Added.
        * layout-tests/fast/block/margin-collapse/102.html: Added.

2004-02-11  David Hyatt  <hyatt@apple.com>

	Fix for 3556702, margin collapsing gets disabled when images spill out of the containing block.
	
        Reviewed by kocienda

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlockChildren):

2004-02-11  David Hyatt  <hyatt@apple.com>

	Fix the .rows and .cells arrays on tables by merging with the KHTML trunk.  TH was being included
	as a row instead of as a cell.
	
        Reviewed by kocienda

        * khtml/html/html_miscimpl.cpp:
        (HTMLCollectionImpl::calcLength):
        (HTMLCollectionImpl::getItem):
        (HTMLCollectionImpl::getNamedItem):

2004-02-11  David Hyatt  <hyatt@apple.com>

	Remove my bogus refs of the elementSheet.  Fixes 3554213 and 3555467.
	
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::createLinkDecl):
        * khtml/html/html_tableimpl.cpp:
        (HTMLTableElementImpl::additionalAttributeStyleDecl):
        (HTMLTableElementImpl::getSharedCellDecl):

2004-02-11  David Hyatt  <hyatt@apple.com>

	Fix for 3556037, regression where display:block generated content didn't work.
	
        Reviewed by kocienda

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::setStyle):
        (khtml::RenderBlock::addChildToFlow):
        (khtml::RenderBlock::removeChild):
        (khtml::RenderBlock::renderName):
        * khtml/rendering/render_container.cpp:
        (RenderContainer::insertChildNode):
        (RenderContainer::removeLeftoverAnonymousBoxes):
        * khtml/rendering/render_inline.cpp:
        (RenderInline::splitFlow):
        (RenderInline::renderName):
        * khtml/rendering/render_list.cpp:
        (RenderListItem::updateMarkerLocation):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::isAnonymousBlock):
        * layout-tests/css1/pseudo/firstletter-expected.txt:
        * layout-tests/css1/pseudo/multiple_pseudo_elements-expected.txt:
        * layout-tests/fast/css-generated-content/002-expected.txt:
        * layout-tests/fast/css-generated-content/004-expected.txt:
        * layout-tests/fast/css-generated-content/005-expected.txt:
        * layout-tests/fast/css-generated-content/006-expected.txt:
        * layout-tests/fast/css-generated-content/007-expected.txt:
        * layout-tests/fast/css-generated-content/009-expected.txt:
        * layout-tests/fast/css-generated-content/010-expected.txt:
        * layout-tests/fast/selectors/039-expected.txt:
        * layout-tests/fast/selectors/039b-expected.txt:
        * layout-tests/fast/selectors/041-expected.txt:
        * layout-tests/fast/selectors/042-expected.txt:
        * layout-tests/fast/selectors/166a-expected.txt:
        * layout-tests/fast/selectors/168-expected.txt:
        * layout-tests/fast/selectors/168a-expected.txt:
        * layout-tests/fast/selectors/169-expected.txt:
        * layout-tests/fast/selectors/169a-expected.txt:
        * layout-tests/fast/text/firstline/002-expected.txt:
        * layout-tests/fast/text/firstline/003-expected.txt:

2004-02-11  Darin Adler   <darin@apple.com>

        Reviewed by Richard.

        * kwq/KWQTextCodec.mm:
        (KWQTextDecoder::convertLatin1):
	Fix off by one error.

2004-02-11  David Hyatt  <hyatt@apple.com>

	Convert paint methods over to use a new PaintInfo struct.  Eliminate the paintObject method.
	
        Reviewed by kocienda

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paint):
        (khtml::RenderBlock::paintObject):
        (khtml::RenderBlock::paintFloats):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_box.cpp:
        (RenderBox::paint):
        (RenderBox::paintRootBoxDecorations):
        (RenderBox::paintBoxDecorations):
        * khtml/rendering/render_box.h:
        * khtml/rendering/render_br.h:
        (khtml::RenderBR::paint):
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::paint):
        (RenderCanvas::paintBoxDecorations):
        * khtml/rendering/render_canvas.h:
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::paintLineBoxBackgroundBorder):
        (RenderFlow::paintLineBoxDecorations):
        * khtml/rendering/render_flow.h:
        * khtml/rendering/render_form.cpp:
        (RenderFieldset::paintBoxDecorations):
        * khtml/rendering/render_form.h:
        * khtml/rendering/render_image.cpp:
        (RenderImage::paint):
        (RenderImage::updateFromElement):
        * khtml/rendering/render_image.h:
        * khtml/rendering/render_inline.cpp:
        (RenderInline::paint):
        * khtml/rendering/render_inline.h:
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::paintLayer):
        * khtml/rendering/render_line.cpp:
        (InlineFlowBox::paintBackgroundAndBorder):
        (InlineFlowBox::paintDecorations):
        * khtml/rendering/render_line.h:
        (khtml::InlineRunBox::paintBackgroundAndBorder):
        (khtml::InlineRunBox::paintDecorations):
        * khtml/rendering/render_list.cpp:
        (RenderListItem::paint):
        (RenderListMarker::paint):
        * khtml/rendering/render_list.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::paint):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::PaintInfo::PaintInfo):
        (khtml::RenderObject::paintBoxDecorations):
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::shouldPaint):
        (RenderWidget::paint):
        * khtml/rendering/render_replaced.h:
        * khtml/rendering/render_table.cpp:
        (RenderTable::paint):
        (RenderTable::paintBoxDecorations):
        (RenderTableSection::paint):
        (RenderTableCell::paint):
        (RenderTableCell::paintBoxDecorations):
        * khtml/rendering/render_table.h:
        * khtml/rendering/render_text.cpp:
        (RenderText::paint):
        * khtml/rendering/render_text.h:

2004-02-11  Ken Kocienda  <kocienda@apple.com>

        Reviewed by me

		Removed include file I was considering checking, but 
		decided against. Of course, this dangling include
		broke the build.
		
        * kwq/KWQKHTMLPart.mm
        * kwq/WebCoreBridge.mm

2004-02-10  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt
        
        Several big changes.
        
        EditSteps are now all EditCommands.
        Smart pointer for Shared classes added to shared.h.
		Some events, like text input events, are now coalesced.
		"Undo typing" now implemented, even though the name is not in the menu yet.
		Integer id's added to EditCommand and its subclasses.
		A bunch of cleanup in the EditCommand classes.

        * khtml/editing/htmlediting.cpp:
        (EditCommand::EditCommand):
        (EditCommand::~EditCommand):
        (EditCommand::commandID):
        (EditCommand::reapply):
        (EditCommand::beginApply):
        (EditCommand::endApply):
        (EditCommand::beginUnapply):
        (EditCommand::endUnapply):
        (EditCommand::beginReapply):
        (EditCommand::endReapply):
        (EditCommand::currentSelection):
        (EditCommand::coalesce):
        (EditCommand::groupForUndo):
        (EditCommand::groupForRedo):
        (EditCommand::moveToStartingSelection):
        (EditCommand::moveToEndingSelection):
        (EditCommand::name):
        (CompositeEditCommand::CompositeEditCommand):
        (CompositeEditCommand::~CompositeEditCommand):
        (CompositeEditCommand::unapply):
        (CompositeEditCommand::reapply):
        (CompositeEditCommand::applyCommand):
        (CompositeEditCommand::insertNodeBefore):
        (CompositeEditCommand::insertNodeAfter):
        (CompositeEditCommand::appendNode):
        (CompositeEditCommand::removeNode):
        (CompositeEditCommand::splitTextNode):
        (CompositeEditCommand::joinTextNodes):
        (CompositeEditCommand::insertText):
        (CompositeEditCommand::deleteText):
        (CompositeEditCommand::moveSelectionTo):
        (CompositeEditCommand::deleteSelection):
        (InsertNodeBeforeCommand::InsertNodeBeforeCommand):
        (InsertNodeBeforeCommand::~InsertNodeBeforeCommand):
        (InsertNodeBeforeCommand::apply):
        (InsertNodeBeforeCommand::unapply):
        (AppendNodeCommand::AppendNodeCommand):
        (AppendNodeCommand::~AppendNodeCommand):
        (AppendNodeCommand::apply):
        (AppendNodeCommand::unapply):
        (RemoveNodeCommand::RemoveNodeCommand):
        (RemoveNodeCommand::~RemoveNodeCommand):
        (RemoveNodeCommand::apply):
        (RemoveNodeCommand::unapply):
        (ModifyTextNodeCommand::ModifyTextNodeCommand):
        (ModifyTextNodeCommand::~ModifyTextNodeCommand):
        (ModifyTextNodeCommand::splitTextNode):
        (ModifyTextNodeCommand::joinTextNodes):
        (SplitTextNodeCommand::SplitTextNodeCommand):
        (SplitTextNodeCommand::~SplitTextNodeCommand):
        (SplitTextNodeCommand::apply):
        (SplitTextNodeCommand::unapply):
        (JoinTextNodesCommand::JoinTextNodesCommand):
        (JoinTextNodesCommand::~JoinTextNodesCommand):
        (JoinTextNodesCommand::apply):
        (JoinTextNodesCommand::unapply):
        (InsertTextCommand::InsertTextCommand):
        (InsertTextCommand::~InsertTextCommand):
        (InsertTextCommand::apply):
        (InsertTextCommand::unapply):
        (DeleteTextCommand::DeleteTextCommand):
        (DeleteTextCommand::~DeleteTextCommand):
        (DeleteTextCommand::apply):
        (DeleteTextCommand::unapply):
        (MoveSelectionToCommand::MoveSelectionToCommand):
        (MoveSelectionToCommand::~MoveSelectionToCommand):
        (MoveSelectionToCommand::commandID):
        (MoveSelectionToCommand::apply):
        (MoveSelectionToCommand::unapply):
        (DeleteSelectionCommand::DeleteSelectionCommand):
        (DeleteSelectionCommand::~DeleteSelectionCommand):
        (DeleteSelectionCommand::apply):
        (InputTextCommand::InputTextCommand):
        (InputTextCommand::~InputTextCommand):
        (InputTextCommand::commandID):
        (InputTextCommand::isLineBreak):
        (InputTextCommand::isSpace):
        (InputTextCommand::apply):
        (InputTextCommand::coalesce):
        (InputTextCommand::groupForUndo):
        (InputTextCommand::groupForRedo):
        (InputTextCommand::execute):
        (DeleteKeyCommand::DeleteKeyCommand):
        (DeleteKeyCommand::~DeleteKeyCommand):
        (DeleteKeyCommand::commandID):
        (DeleteKeyCommand::apply):
        (DeleteKeyCommand::groupForUndo):
        (DeleteKeyCommand::groupForRedo):
        (PasteHTMLCommand::PasteHTMLCommand):
        (PasteHTMLCommand::~PasteHTMLCommand):
        (PasteHTMLCommand::apply):
        * khtml/editing/htmlediting.h:
        (khtml::):
        (khtml::EditCommand::):
        (khtml::EditCommand::document):
        (khtml::EditCommand::state):
        (khtml::EditCommand::setState):
        (khtml::SplitTextNodeCommand::joinState):
        (khtml::SplitTextNodeCommand::splitState):
        (khtml::JoinTextNodesCommand::joinState):
        (khtml::JoinTextNodesCommand::splitState):
        * khtml/khtml_part.cpp:
        (KHTMLPart::openURL):
        (KHTMLPart::deleteSelection):
        (KHTMLPart::applyCommand):
        (KHTMLPart::undoEditing):
        (KHTMLPart::redoEditing):
        (KHTMLPart::pasteHTMLString):
        * khtml/khtml_part.h:
        * khtml/khtmlpart_p.h:
        (KHTMLPartPrivate::~KHTMLPartPrivate):
        * khtml/misc/shared.h:
        (khtml::SharedPtr::SharedPtr):
        (khtml::SharedPtr::~SharedPtr):
        (khtml::SharedPtr::isEmpty):
        (khtml::SharedPtr::get):
        (khtml::SharedPtr::operator*):
        (khtml::SharedPtr::operator->):
        (khtml::SharedPtr::operator!):
        (khtml::SharedPtr::operator==):
        (khtml::::operator):
        (khtml::operator!=):
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::defaultEventHandler):
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::registerCommandForUndo):
        (KWQKHTMLPart::registerCommandForRedo):
        (KWQKHTMLPart::clearUndoRedoOperations):
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge undoEditing:]):
        (-[WebCoreBridge redoEditing:]):

2004-02-10  David Hyatt  <hyatt@apple.com>

	Eliminate the double-completion and double-parsing of KURLs for every single image request.
	
        * khtml/misc/loader.cpp:
        (DocLoader::requestImage):
        (Cache::requestImage):
        * khtml/misc/loader.h:

2004-02-10  David Hyatt  <hyatt@apple.com>

	Merged patch that fixes clear:both for floats.  This patch comes from the KHTML tree.
	
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::positionNewFloats):
        * layout-tests/fast/block/float/029-expected.txt: Added.
        * layout-tests/fast/block/float/029.html: Added.

2004-02-10  David Hyatt  <hyatt@apple.com>

	Fix crasher in list code caused by incorrect style deallocation.  Regression from the
	arena changes for RenderStyles.
	
        Reviewed by darin

        * khtml/rendering/render_object.cpp:
        (RenderObject::remove):
        (RenderObject::arenaDelete):

2004-02-10  David Hyatt  <hyatt@apple.com>

	Fix for osnews.com's wacky layout problem.  Put back in the check for isEmpty.
	
        Reviewed by darin

        * khtml/html/htmltokenizer.cpp:
        (khtml::HTMLTokenizer::scriptHandler):

2004-02-10  David Hyatt  <hyatt@apple.com>

	Fix for the bad background color on abcnews.com.  Make cloning optionally drop the style declarations.

        * khtml/html/html_elementimpl.cpp:
        (HTMLAttributeImpl::clone):
        * khtml/html/html_elementimpl.h:
        * khtml/html/htmlparser.cpp:
        (KHTMLParser::insertNode):
        * khtml/xml/dom_elementimpl.cpp:
        (AttributeImpl::clone):
        * khtml/xml/dom_elementimpl.h:

2004-02-10  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3552545>: Cut, Paste and Delete must support Undo and Redo

        Reviewed by kocienda.

        * khtml/editing/htmlediting.cpp:
        (ModifyTextNodeStep::splitTextNode): ken's fix that fixes a problem with unapply
        (ModifyTextNodeStep::joinTextNodes): my fix that fixes a problem with unapply
        (PasteHTMLCommand::PasteHTMLCommand): new
        (PasteHTMLCommand::apply): moved from dom_docimpl.cpp and improved
        * khtml/editing/htmlediting.h:
        (khtml::PasteHTMLCommand::~PasteHTMLCommand):
        * khtml/khtml_part.cpp:
        (KHTMLPart::deleteSelection): new, create and applies a DeleteTextCommand
        (KHTMLPart::pasteHTMLString): new, create and applies a PasteHTMLCommand
        * khtml/khtml_part.h:
        * khtml/xml/dom_docimpl.cpp: moved paste code to htmlediting.cpp
        * khtml/xml/dom_docimpl.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge pasteHTMLString:]): call pasteHTMLString on the part instead of the bridge
        (-[WebCoreBridge deleteSelection]): call deleteSelection on the part instead of the bridge

2004-02-10  David Hyatt  <hyatt@apple.com>

	Fix crash on abcnews.com by adding isEmpty checks before dereferencing.
	
        * khtml/html/htmltokenizer.cpp:
        (khtml::HTMLTokenizer::parseTag):

2004-02-10  David Hyatt  <hyatt@apple.com>

	Improve attribute parsing of mapped attributes (that map to CSS properties) so that they can pull the
	style declarations from a global cache.

	Made RenderStyles be arena allocated as well.
	
        Reviewed by darin

        * khtml/css/css_valueimpl.cpp:
        (CSSImageValueImpl::CSSImageValueImpl):
        (CSSImageValueImpl::image):
        * khtml/css/css_valueimpl.h:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::initForStyleResolve):
        (khtml::CSSStyleSelector::styleForElement):
        (khtml::CSSStyleSelector::pseudoStyleForElement):
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/css/cssstyleselector.h:
        * khtml/css/html4.css:
        * khtml/css/quirks.css:
        * khtml/dom/dom_element.cpp:
        (Element::style):
        * khtml/dom/html_element.cpp:
        * khtml/dom/html_element.h:
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::HTMLBodyElementImpl):
        (HTMLBodyElementImpl::mapToEntry):
        (HTMLBodyElementImpl::parseHTMLAttribute):
        (HTMLBodyElementImpl::insertedIntoDocument):
        (HTMLFrameElementImpl::parseHTMLAttribute):
        (HTMLFrameSetElementImpl::parseHTMLAttribute):
        (HTMLIFrameElementImpl::mapToEntry):
        (HTMLIFrameElementImpl::parseHTMLAttribute):
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_blockimpl.cpp:
        (HTMLDivElementImpl::mapToEntry):
        (HTMLDivElementImpl::parseHTMLAttribute):
        (HTMLHRElementImpl::mapToEntry):
        (HTMLHRElementImpl::parseHTMLAttribute):
        (HTMLParagraphElementImpl::mapToEntry):
        (HTMLParagraphElementImpl::parseHTMLAttribute):
        (HTMLMarqueeElementImpl::mapToEntry):
        (HTMLMarqueeElementImpl::parseHTMLAttribute):
        (HTMLLayerElementImpl::HTMLLayerElementImpl):
        (HTMLLayerElementImpl::id):
        * khtml/html/html_blockimpl.h:
        * khtml/html/html_documentimpl.cpp:
        (HTMLDocumentImpl::determineParseMode):
        * khtml/html/html_documentimpl.h:
        * khtml/html/html_elementimpl.cpp:
        (CSSMappedAttributeDeclarationImpl::~CSSMappedAttributeDeclarationImpl):
        (HTMLElementImpl::getMappedAttributeDecl):
        (HTMLElementImpl::setMappedAttributeDecl):
        (HTMLElementImpl::removeMappedAttributeDecl):
        (HTMLAttributeImpl::~HTMLAttributeImpl):
        (HTMLAttributeImpl::clone):
        (m_mappedAttributeCount):
        (HTMLNamedAttrMapImpl::clearAttributes):
        (HTMLElementImpl::HTMLElementImpl):
        (HTMLElementImpl::~HTMLElementImpl):
        (HTMLElementImpl::createAttribute):
        (HTMLElementImpl::createInlineStyleDecl):
        (HTMLElementImpl::attributeChanged):
        (HTMLElementImpl::mapToEntry):
        (HTMLElementImpl::parseHTMLAttribute):
        (HTMLElementImpl::additionalAttributeStyleDecl):
        (isHexDigit):
        (toHex):
        (HTMLElementImpl::addCSSProperty):
        (HTMLElementImpl::addCSSStringProperty):
        (HTMLElementImpl::addCSSImageProperty):
        (HTMLElementImpl::addCSSLength):
        (HTMLElementImpl::addHTMLColor):
        (HTMLElementImpl::createMappedDecl):
        (HTMLElementImpl::addHTMLAlignment):
        (HTMLElementImpl::setContentEditable):
        * khtml/html/html_elementimpl.h:
        (DOM::):
        (DOM::CSSMappedAttributeDeclarationImpl::CSSMappedAttributeDeclarationImpl):
        (DOM::CSSMappedAttributeDeclarationImpl::setMappedState):
        (DOM::HTMLAttributeImpl::HTMLAttributeImpl):
        (DOM::HTMLAttributeImpl::decl):
        (DOM::HTMLAttributeImpl::setDecl):
        (DOM::HTMLNamedAttrMapImpl::hasMappedAttributes):
        (DOM::HTMLNamedAttrMapImpl::declRemoved):
        (DOM::HTMLNamedAttrMapImpl::declAdded):
        (DOM::HTMLNamedAttrMapImpl::attributeItem):
        (DOM::HTMLElementImpl::hasMappedAttributes):
        (DOM::HTMLElementImpl::htmlAttributes):
        (DOM::HTMLElementImpl::inlineStyleDecl):
        * khtml/html/html_formimpl.cpp:
        (HTMLFormElementImpl::parseHTMLAttribute):
        (HTMLGenericFormElementImpl::parseHTMLAttribute):
        (HTMLButtonElementImpl::parseHTMLAttribute):
        (HTMLInputElementImpl::setType):
        (HTMLInputElementImpl::mapToEntry):
        (HTMLInputElementImpl::parseHTMLAttribute):
        (HTMLInputElementImpl::attach):
        (HTMLLabelElementImpl::parseHTMLAttribute):
        (HTMLSelectElementImpl::parseHTMLAttribute):
        (HTMLKeygenElementImpl::parseHTMLAttribute):
        (HTMLOptGroupElementImpl::parseHTMLAttribute):
        (HTMLOptionElementImpl::parseHTMLAttribute):
        (HTMLTextAreaElementImpl::parseHTMLAttribute):
        (HTMLIsIndexElementImpl::parseHTMLAttribute):
        * khtml/html/html_formimpl.h:
        * khtml/html/html_headimpl.cpp:
        (HTMLBaseElementImpl::parseHTMLAttribute):
        (HTMLLinkElementImpl::parseHTMLAttribute):
        (HTMLMetaElementImpl::parseHTMLAttribute):
        (HTMLStyleElementImpl::parseHTMLAttribute):
        * khtml/html/html_headimpl.h:
        * khtml/html/html_imageimpl.cpp:
        (HTMLImageElementImpl::mapToEntry):
        (HTMLImageElementImpl::parseHTMLAttribute):
        (HTMLMapElementImpl::parseHTMLAttribute):
        (HTMLAreaElementImpl::parseHTMLAttribute):
        * khtml/html/html_imageimpl.h:
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::parseHTMLAttribute):
        (HTMLBRElementImpl::mapToEntry):
        (HTMLBRElementImpl::parseHTMLAttribute):
        (HTMLFontElementImpl::mapToEntry):
        (HTMLFontElementImpl::parseHTMLAttribute):
        * khtml/html/html_inlineimpl.h:
        * khtml/html/html_listimpl.cpp:
        (HTMLUListElementImpl::mapToEntry):
        (HTMLUListElementImpl::parseHTMLAttribute):
        (HTMLOListElementImpl::mapToEntry):
        (HTMLOListElementImpl::parseHTMLAttribute):
        (HTMLLIElementImpl::mapToEntry):
        (HTMLLIElementImpl::parseHTMLAttribute):
        * khtml/html/html_listimpl.h:
        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::mapToEntry):
        (HTMLAppletElementImpl::parseHTMLAttribute):
        (HTMLEmbedElementImpl::HTMLEmbedElementImpl):
        (HTMLEmbedElementImpl::mapToEntry):
        (HTMLEmbedElementImpl::parseHTMLAttribute):
        (HTMLEmbedElementImpl::attach):
        (HTMLObjectElementImpl::mapToEntry):
        (HTMLObjectElementImpl::parseHTMLAttribute):
        (HTMLParamElementImpl::parseHTMLAttribute):
        * khtml/html/html_objectimpl.h:
        * khtml/html/html_tableimpl.cpp:
        (HTMLTableElementImpl::HTMLTableElementImpl):
        (HTMLTableElementImpl::~HTMLTableElementImpl):
        (HTMLTableElementImpl::mapToEntry):
        (HTMLTableElementImpl::parseHTMLAttribute):
        (HTMLTableElementImpl::additionalAttributeStyleDecl):
        (HTMLTableElementImpl::getSharedCellDecl):
        (HTMLTableElementImpl::attach):
        (HTMLTablePartElementImpl::mapToEntry):
        (HTMLTablePartElementImpl::parseHTMLAttribute):
        (HTMLTableCellElementImpl::mapToEntry):
        (HTMLTableCellElementImpl::parseHTMLAttribute):
        (HTMLTableCellElementImpl::additionalAttributeStyleDecl):
        (HTMLTableCellElementImpl::attach):
        (HTMLTableColElementImpl::mapToEntry):
        (HTMLTableColElementImpl::parseHTMLAttribute):
        (HTMLTableCaptionElementImpl::mapToEntry):
        (HTMLTableCaptionElementImpl::parseHTMLAttribute):
        * khtml/html/html_tableimpl.h:
        * khtml/html/htmlparser.cpp:
        (KHTMLParser::insertNode):
        (KHTMLParser::getElement):
        * khtml/html/htmltokenizer.h:
        (khtml::Token::addAttribute):
        * khtml/misc/htmlattrs.c:
        (hash_attr):
        (findAttr):
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::setStyle):
        (khtml::RenderBlock::updateFirstLetter):
        * khtml/rendering/render_container.cpp:
        (RenderContainer::addChild):
        (RenderContainer::updatePseudoChild):
        * khtml/rendering/render_frames.cpp:
        (RenderPartObject::updateWidget):
        * khtml/rendering/render_inline.cpp:
        (RenderInline::addChildToFlow):
        * khtml/rendering/render_list.cpp:
        (RenderListItem::setStyle):
        * khtml/rendering/render_object.cpp:
        (RenderObject::~RenderObject):
        (RenderObject::createAnonymousBlock):
        (RenderObject::setStyle):
        (RenderObject::remove):
        * khtml/rendering/render_style.cpp:
        (throw):
        (RenderStyle::operator delete):
        (RenderStyle::arenaDelete):
        (RenderStyle::RenderStyle):
        (RenderStyle::~RenderStyle):
        (RenderStyle::addPseudoStyle):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::ref):
        (khtml::RenderStyle::deref):
        (khtml::RenderStyle::hasOneRef):
        (khtml::RenderStyle::refCount):
        * khtml/rendering/render_table.cpp:
        (RenderTable::addChild):
        (RenderTableSection::addChild):
        (RenderTableRow::addChild):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::createAttribute):
        (DocumentImpl::recalcStyle):
        * khtml/xml/dom_docimpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (AttributeImpl::clone):
        (AttrImpl::setValue):
        (AttrImpl::cloneNode):
        (ElementImpl::setAttribute):
        (ElementImpl::createAttribute):
        (ElementImpl::setAttributeMap):
        (ElementImpl::recalcStyle):
        (NamedAttrMapImpl::~NamedAttrMapImpl):
        (NamedAttrMapImpl::operator=):
        (NamedAttrMapImpl::addAttribute):
        (NamedAttrMapImpl::removeAttribute):
        * khtml/xml/dom_elementimpl.h:
        (DOM::AttributeImpl::~AttributeImpl):
        (DOM::ElementImpl::attributeChanged):
        (DOM::NamedAttrMapImpl::length):
        * khtml/xml/dom_nodeimpl.cpp:

2004-02-09  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        * khtml/html/html_formimpl.cpp: (HTMLGenericFormElementImpl::defaultEventHandler):
        Removed bogus extra setActive/focus code. Dave says this is no longer needed for
        the active state handling, and the focus call caused a problem, although I can't
        find the bug report at the moment.

2004-02-08  Darin Adler  <darin@apple.com>

        Reviewed by Don.

        - fixed an assertion failure when putting up Java applets caused by my last change

        * kwq/KWQKJavaAppletWidget.mm: (KJavaAppletWidget::KJavaAppletWidget):
        Don't try to get x() and y(). They are always zero because the widget is just being
        created at this point and has not yet been positioned; trying to get them
        leads to an assertion because there is no NSView until we call setView().
        Before my change, there was a KWQView object at 0,0 that was released when we called
        setView, which is why the problem is new.

2004-02-08  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed things seen in the profile, for a total speedup of 4% on cvs-base
        - fixed some layout regressions from my last speedup due to text measurement inconsistencies

        * WebCorePrefix.h: Add a workaround for a bug in our system headers that prevents the <ctype.h>
        macros from working right in C+code that uses the <cctype> header.

        * khtml/css/cssstyleselector.cpp:
        (khtml::checkPseudoState): Use prepend instead of operator here. Will probably be obviated if
        someone fixes the checkPseudoState problem.
        (khtml::colorForCSSValue): Get rid of all the code that uses QPalette; it wasn't doing any good
        in Safari. Instead, hardcode the UI colors.

        * kwq/KWQChar.mm:
        (QChar::isDigitNonASCII): Non-inline part. The ASCII case is handled with an inline now.
        (QChar::isLetterNonASCII): Ditto.
        (QChar::isNumberNonASCII): Ditto.
        (QChar::isLetterOrNumberNonASCII): Ditto.
        (QChar::lowerNonASCII): Ditto.
        (QChar::upperNonASCII): Ditto.
        (QChar::digitValueNonASCII): Ditto.

        * kwq/KWQColorGroup.mm: Put all roles base inside #if, since we don't need them, and copying
        the color group and palette was making things slow.

        * kwq/KWQComboBox.h: Remove KWQComboBoxAdapter, not needed any more.
        * kwq/KWQComboBox.mm:
        (QComboBox::QComboBox): Remove KWQComboBoxAdapter, not needed any more.
        (QComboBox::~QComboBox): Ditto.
        (QComboBox::sizeHint): Turn off rounding; we use that in web text, but not in widgets.
        (-[KWQPopUpButton action:]): Moved the action method here.

        * kwq/KWQLineEdit.mm: (QLineEdit::sizeForCharacterWidth): Turn off rounding. We use it in web
        page text, but not in widgets.
        * kwq/KWQListBox.mm:
        (QListBox::sizeForNumberOfLines): Ditto.
        (-[KWQTableView drawRow:clipRect:]): Ditto.

        * kwq/KWQKURL.mm:
        (KURL::KURL): Added code to put the "file:" in front of a path without making a QString.
        (hasSlashDotOrDotDot): Added. Faster than two calls to strstr.
        (matchLetter): Added. Faster than tolower calls on each letter.
        (KURL::parse): Changed to use matchLetter and hasSlashDotOrDotDot.

        * kwq/KWQPalette.h: Remove all roles except base, and all groups except active, since we don't
        need them, and copying the color group and palette was making things slow.
        * kwq/KWQPalette.mm: Ditto.

        * kwq/KWQRegExp.mm: (QRegExp::match): Fixed logic so we don't create and destroy a QCString
        in the fast case. Also avoid UTF-8/UTF-16 offset mapping.

        * kwq/KWQString.h:
        (QChar::isDigit): Add inline section for ASCII.
        (QChar::isLetter): Ditto.
        (QChar::isNumber): Ditto.
        (QChar::isLetterOrNumber): Ditto.
        (QChar::digitValue): Ditto.
        (QChar::lower): Ditto.
        (QChar::upper): Ditto.
        (QString::utf8): Add a new version that returns the length; used by QRegExp.
        (QString::operator+=): Call a new append function.
        * kwq/KWQString.mm:
        (ucstrcmp): Made this function inline.
        (equal): Added, replacing various strcmp functions.
        (equalCaseInsensitive): Ditto.
        (ok_in_base): Changed to use <ctype.h> isdigit and isalpha instead of QChar functions.
        (QString::detachInternal): Moved up so it will be inlined.
        (QString::~QString): Streamlined a little.
        (QString::utf8): Changed to return the length.
        (QString::find): Use unicode() instead of cell() in various places. Also refined a faster
        version of the one that takes a char *.
        (QString::contains): Changed all of the overloads to have structure that's more similar,
        and made them slightly faster too.
        (QString::isAllLatin1): Added.
        (QString::copyLatin1): Added. Lets you get the string as a char * buffer without changing
        the string itself into that format.
        (QString::toLong): Changed to use <ctype.h> isdigit instead of QChar function.
        (QString::toULong): Ditto.
        (QString::setUnicode): Call the new detachAndDiscardCharacters; not implemented yet.
        (QString::setLatin1): Call the new detachAndDiscardCharacters; not implemented yet.
        (QString::sprintf): Call the new detachAndDiscardCharacters; not implemented yet.
        (QString::insert): Remove one memmove call for the case that appends at the end.
        (QString::detach): Change code to use the internal data if we can; saves at destructor time.
        (QString::detachAndDiscardCharacters): Added. Placeholder for now that just calls detach().
        (QString::setLength): Optimize the setLength(0) case.
        (QString::fill): Call the new detachAndDiscardCharacters; not implemented yet.
        (QString::append): Renamed from operator+=, which now simply calls append().
        (QString::reserve): Added. Useful when building up a string, like in QTextCodec.

        * WebCore-tests.exp: Added new function names for QChar.
        * WebCore-combined.exp: Updated.

        * kwq/KWQTextCodec.mm:
        (KWQTextDecoder::convertLatin1): Added. Since this is the most common encoding, and very
        easy to decode (built into QString, in fact), best to do it as a special case, not with TEC.
        (KWQTextDecoder::convertUTF16): Added a reserve() call for better performance and made the
        stack buffer larger.
        (KWQTextDecoder::convertUsingTEC): Added a reserve() call for better performance and made the
        stack buffer larger.
        (KWQTextDecoder::convert): Added a switch statement and convertLatin1 case.

        * kwq/KWQView.h: Removed the KWQView class.
        * kwq/KWQView.mm: Removed.
        * WebCore.pbproj/project.pbxproj: Removed KWQView.mm.

        * kwq/KWQWidget.h: Changed name of QWidgetPrivate to KWQWidgetPrivate.
        * kwq/KWQWidget.mm:
        (QWidget::QWidget): Got rid of code that makes a KWQView when no view is passed in. We were
        creating and destroying extra views because of this.
        (QWidget::setFrameGeometry): Only call getOuterView() once, not three times. Also, don't do
        any work at all if the frame is already correct.
        * khtml/khtmlview.cpp: (KHTMLView::init): Removed a call that will hit an assertion due to the
        way a new KHTMLView does not yet have an NSView.

        * kwq/WebCoreTextRenderer.h: Broke applyRounding into applyRunRounding and applyWordRounding.
        * kwq/WebCoreTextRendererFactory.m: (WebCoreInitializeEmptyTextStyle): Initialize both rounding
        flags on.

2004-02-07  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - switched KWQComboBox, KWQListBox, and KWQLineEdit to use WebKit text measuring/rendering instead of AppKit
        - fixed width calculation for KWQListBox that made them too wide (the computation used the width of standard scroll
          bars rather than the small scroll bars they actually use)

        Speeds up cvs-base by 5%!

        * khtml/rendering/render_form.cpp: (RenderSelect::updateFromElement):
        Get rid of beginBatchInsert, and rename endBatchInsert. Use our own "append" calls instead of "insert" calls.

        * kwq/KWQComboBox.h: Replace insertItem with appendItem. Add a new populateMenu call (for internal use,
        but public). Change width member to be int instead of float. Remove updateCurrentItem(), and add a
        menuPopulated boolean and a QStringList containing the items.
        * kwq/KWQComboBox.mm:
        (QComboBox::QComboBox): Initialize currentItem directly instead of calling updateCurrentItem. Also initialize
        menuPopulated to true.
        (QComboBox::appendItem): Replaces insertItem. Put items in a string list. Don't keep the menu populated unless
        the button is highlighted (which indicates the menu is showing).
        (QComboBox::sizeHint): Compute widths using WebCoreTextRenderer, and the string list.
        (QComboBox::baselinePosition): Change ceil to ceilf, since we are dealing with floats, not doubles.
        (QComboBox::clear): Clear the items list. Also reset the currentItem field directly instead of using updateCurrentItem().
        (QComboBox::setCurrentItem): If the menu is not populated, then keep a single item with the appropriate title.
        If the menu is populated, then select the appropriate item.
        (QComboBox::itemSelected): Moved the logic from updateCurrentItem in here for simplicity.
        (QComboBox::focusPolicy): Tweaked the comment.
        (QComboBox::populateMenu): Added.
        (-[KWQPopUpButtonCell setHighlighted:]): Populate the menu when the cell is highlighted.

        * kwq/KWQLineEdit.mm:
        (QLineEdit::sizeForCharacterWidth): Put an empty string in the cell, and add in a separately-computed width
        for the string.
        (QLineEdit::baselinePosition): Use ceilf instead of ceil since we are doing floats, not doubles.

        * kwq/KWQListBox.h: Changed the items list from an NSArray to a QValueList.
        (KWQListBoxItem::KWQListBoxItem): Added a new class to keep the string and the "is label" boolean.
        (QListBox::count): Now inline.
        (QListBox::appendItem): Replaced insertItem with this.
        (QListBox::appendGroupLabel): Replaced insertGroupLabel with this.
        (QListBox::itemAtIndex): Replaced itemIsGroupLabel with this.
        * kwq/KWQListBox.mm:
        (itemTextRenderer): Replaced itemFont with this, which returns a WebCoreTextRenderer.
        (groupLabelTextRenderer): Ditto.
        (QListBox::QListBox): Removed the _insertingItems boolean, and handling of the _items list.
        (QListBox::~QListBox): Ditto.
        (QListBox::clear): Now clears the items list. Doesn't both with reloadData, since doneAppendingItems
        handles that.
        (QListBox::appendItem): Replaced insertItem. Just adds to the list. No need to construct attributed
        strings any more.
        (QListBox::doneAppendingItems): Replaced endBatchInsert. No need to clear the obsolete _insertingItems
        boolean.
        (QListBox::setEnabled): Added a call to reloadData.
        (QListBox::sizeForNumberOfLines): Compute widths using WebCoreTextRenderer, and the string list.
        Also adjust for the difference in widths between small and default scrollers and add in margins.
        (QListBox::setWritingDirection): Remove code that updates the direction in attributed strings.
        (-[KWQTableView initWithListBox:]): Compute height from font, not cell.
        (-[KWQTableView numberOfRowsInTableView:]): Get count from QListBox instead of items array.
        (-[KWQTableView tableView:objectValueForTableColumn:row:]): Return nil becase we don't want to
        create an NSString for each cell. We'll draw the appropriate thing.
        (-[KWQTableView tableView:shouldSelectRow:]): Update for change to QComboBox function.
        (-[KWQTableView drawRow:clipRect:]): Added. Draws the text in the cell, with the appropriate color
        and position, using WebCoreTextRenderer for speed.
        (-[KWQTableView _accessibilityTableCell:tableColumn:]): Set up cell with a string in this case,
        because we need the string to be seen by the accessibilty framework.

        * kwq/WebCoreTextRenderer.h: Fixed typo in comment.
        * kwq/WebCoreTextRendererFactory.m: Removed bogus inline specifiers.

        * khtml/rendering/render_layer.cpp: Fixed a couple of cases of RenderLayer::RenderLayer that just
        should have said RenderLayer.

2004-02-07  Darin Adler  <darin@apple.com>

        * WebCore.pbproj/project.pbxproj: Get rid of the DEPLOYMENT_LOCATION and DEPLOYMENT_POSTPROCESSING
        flags that were in the Deployment build style. These were causing the need to chmod all the time
        after building WebCore successfully, and were doing us no good.

2004-02-07  Darin Adler  <darin@apple.com>

        * kwq/can-convert.mm: Added test program to see which conversions are actually supported by TEC.

2004-02-06  David Hyatt  <hyatt@apple.com>

        Implemented a TokenizerString that can walk a list of substrings, so that data can be enqueued
        in the list without having to do a copy.  Speeds up voodooextreme by 20% or so, giving the overall
        page-load tests get a 2% boost.
        
        Reviewed by darin

        * WebCore.pbproj/project.pbxproj:
        * khtml/html/html_documentimpl.h:
        * khtml/html/htmltokenizer.cpp:
        (khtml::HTMLTokenizer::begin):
        (khtml::HTMLTokenizer::processListing):
        (khtml::HTMLTokenizer::parseSpecial):
        (khtml::HTMLTokenizer::scriptHandler):
        (khtml::HTMLTokenizer::parseComment):
        (khtml::HTMLTokenizer::parseServer):
        (khtml::HTMLTokenizer::parseProcessingInstruction):
        (khtml::HTMLTokenizer::parseText):
        (khtml::HTMLTokenizer::parseEntity):
        (khtml::HTMLTokenizer::parseTag):
        (khtml::HTMLTokenizer::write):
        (khtml::HTMLTokenizer::notifyFinished):
        (khtml::HTMLTokenizer::setSrc):
        (khtml::HTMLTokenizer::setOnHold):
        * khtml/html/htmltokenizer.h:
        (khtml::Token::Token):
        (khtml::Token::~Token):
        (khtml::Token::addAttribute):
        (khtml::Token::reset):
        * khtml/khtml_part.cpp:
        (KHTMLPart::handleMousePressEventDoubleClick):
        * khtml/khtml_part.h:
        * khtml/misc/stringit.cpp: Added.
        (khtml::TokenizerString::length):
        (khtml::TokenizerString::clear):
        (khtml::TokenizerString::append):
        (khtml::TokenizerString::prepend):
        (khtml::TokenizerString::advanceSubstring):
        (khtml::TokenizerString::toString):
        * khtml/misc/stringit.h:
        (khtml::TokenizerSubstring::TokenizerSubstring):
        (khtml::TokenizerSubstring::clear):
        (khtml::TokenizerSubstring::appendTo):
        (khtml::TokenizerString::TokenizerString):
        (khtml::TokenizerString::push):
        (khtml::TokenizerString::isEmpty):
        (khtml::TokenizerString::advance):
        (khtml::TokenizerString::escaped):
        (khtml::TokenizerString::lineCount):
        (khtml::TokenizerString::resetLineCount):
        (khtml::TokenizerString::operator++):
        (khtml::TokenizerString::operator*):
        (khtml::TokenizerString::operator->):
        (khtml::TokenizerString::current):
        * khtml/xbl/xbl_docimpl.cpp:
        * khtml/xbl/xbl_docimpl.h:
        (XBL::):
        * khtml/xbl/xbl_tokenizer.h:
        (XBL::):
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentImpl::tokenizer):
        * khtml/xml/xml_tokenizer.cpp:
        (khtml::XMLTokenizer::write):
        * khtml/xml/xml_tokenizer.h:
        * kwq/KWQSignalStubs.mm:
        * kwq/KWQValueList.h:
        (QValueList::insert):
        (QValueList::fromLast):
        * kwq/KWQValueListImpl.h:
        * kwq/KWQValueListImpl.mm:
        (KWQValueListImpl::clear):
        (KWQValueListImpl::insert):
        (KWQValueListImpl::fromLast):

=== Safari-127 ===

2004-02-06  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Chris

	Steps no longer return int error codes. Steps are operations
	that should succeed. (When was the last time that typing in
	a text editor failed for reasons which could not have been
	figured out ahead of time...like file permissions?).
	If this does not work for the future, perhaps we can change 
	some or all of the many asserts in the code to throw C+
	exceptions instead, which can be caught and handled at a
	suitable level.

	I also made some nice convenience functions to create and apply
	EditStep objects, and moved the command code to use the new
	functions.

        * khtml/editing/htmlediting.cpp:
        (EditStep::EditStep):
        (EditStep::~EditStep):
        (EditStep::reapply):
        (EditStep::beginApply):
        (EditStep::endApply):
        (EditStep::beginUnapply):
        (EditStep::endUnapply):
        (EditStep::beginReapply):
        (EditStep::endReapply):
        (CompositeEditStep::unapply):
        (CompositeEditStep::reapply):
        (CompositeEditStep::applyStep):
        (CompositeEditStep::insertNodeBefore):
        (CompositeEditStep::insertNodeAfter):
        (CompositeEditStep::appendNode):
        (CompositeEditStep::removeNode):
        (CompositeEditStep::splitTextNode):
        (CompositeEditStep::joinTextNodes):
        (CompositeEditStep::insertText):
        (CompositeEditStep::deleteText):
        (CompositeEditStep::moveSelectionTo):
        (CompositeEditStep::deleteSelection):
        (InsertNodeBeforeStep::InsertNodeBeforeStep):
        (InsertNodeBeforeStep::apply):
        (InsertNodeBeforeStep::unapply):
        (AppendNodeStep::AppendNodeStep):
        (AppendNodeStep::apply):
        (AppendNodeStep::unapply):
        (RemoveNodeStep::RemoveNodeStep):
        (RemoveNodeStep::apply):
        (RemoveNodeStep::unapply):
        (ModifyTextNodeStep::ModifyTextNodeStep):
        (ModifyTextNodeStep::splitTextNode):
        (ModifyTextNodeStep::joinTextNodes):
        (SplitTextNodeStep::apply):
        (SplitTextNodeStep::unapply):
        (JoinTextNodesStep::apply):
        (JoinTextNodesStep::unapply):
        (InsertTextStep::InsertTextStep):
        (InsertTextStep::apply):
        (InsertTextStep::unapply):
        (DeleteTextStep::DeleteTextStep):
        (DeleteTextStep::apply):
        (DeleteTextStep::unapply):
        (MoveSelectionToStep::MoveSelectionToStep):
        (MoveSelectionToStep::apply):
        (MoveSelectionToStep::unapply):
        (DeleteSelectionStep::apply):
        (EditCommand::EditCommand):
        (EditCommand::~EditCommand):
        (EditCommand::currentSelection):
        (InputTextCommand::apply):
        (DeleteTextCommand::apply):
        * khtml/editing/htmlediting.h:
        (khtml::MoveSelectionToStep::~MoveSelectionToStep):
        (khtml::EditCommand::cookie):
        * khtml/khtml_part.cpp:
        (KHTMLPart::applyCommand):
        (KHTMLPart::undoRedoEditing):
        (KHTMLPart::undoEditing):
        (KHTMLPart::redoEditing):
        * khtml/khtml_part.h:
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::defaultEventHandler):

2004-02-05  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt
        
        This patch includes two major pieces of work.
        
        1. The KHTMLSelection object has been reworked to be a value object.
        Part-related state has been moved out to KHTMLPart. This change makes
        it much easier to program with these objects, since they can now be
        treating unambigously like built-in types. As part of this work, I
        did a pass over the API and improved some function names. A related
        part of work was to clean up the relationship between KHTMLSelection, 
        KHTMLPart and DOMDocumentImpl, and cleared up how to change the selection
        when that is necessary. (There is now a small set of functions on KHTMLPart). 
        
        2. Implemented undo/redo, and hooked into the Cocoa undo architecture. The
        notion of EditCommands has been enhanced by the addition of EditSteps, which
        are primitive operations out of which edit commands are built. Most of the
        existing operations have been updated to use this new design. The last couple
        will be updated soon, so that all supported editing operations will be undoable.

        * khtml/editing/htmlediting.cpp:
        * khtml/editing/htmlediting.h:
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::isFocusable): Prevents children of content editable parents
        from receiving focus.
        * khtml/khtml_part.cpp: Modified to work with new KHTMLSelection class design.
        Also added some new code to work with new edit command architecture. 
        * khtml/khtml_part.h:
        * khtml/khtml_selection.cpp: Reworked as a value class. Too much state was
        being stored in this object for it to be convenient to use as a value. That
        has been fixed.
        * khtml/khtml_selection.h:
        * khtml/khtmlpart_p.h:
        (KHTMLPartPrivate::KHTMLPartPrivate):
        (KHTMLPartPrivate::~KHTMLPartPrivate):
        * khtml/khtmlview.cpp: Modified to work with new KHTMLSelection class design.
        * khtml/rendering/render_block.cpp: Modified to work with new KHTMLSelection class design.
        (khtml::RenderBlock::paintObject):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::updateSelection):
        (DocumentImpl::deleteSelection):
        (DocumentImpl::pasteHTMLString):
        * khtml/xml/dom_docimpl.h:
        * khtml/xml/dom_elementimpl.cpp: 
        (ElementImpl::defaultEventHandler): Modified to work with new edit command architecture.
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::registerCommandForUndo): Added hook to Cocoa undo/redo architecture.
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge isSelectionEditable]): Modified to work with new edit command architecture.
        (-[WebCoreBridge moveCaretToPoint:]): Ditto
        (-[WebCoreBridge haveSelection]): Ditto
        (-[WebCoreBridge selectedHTML]): Ditto
        (-[WebCoreBridge setSelectionFrom:startOffset:to:endOffset:]): Ditto
        (-[WebCoreBridge reconstructedSource]): Ditto
        (-[WebCoreBridge undoRedoEditing:]): Added hook to Cocoa undo/redo architecture.

2004-02-04  David Hyatt  <hyatt@apple.com>

	Improve rule matching in the style system.  Filter out most rules up front, so that only a small
	number of rules need to be walked for any given element.  Yields a ~4-5% improvement on the PLT.
	
        Reviewed by kocienda

        * khtml/css/css_base.cpp:
        (StyleBaseImpl::setParsedValue):
        (CSSSelector::specificity):
        (CSSSelector::extractPseudoType):
        (CSSSelector::operator == ):
        * khtml/css/css_base.h:
        (DOM::CSSSelector::CSSSelector):
        (DOM::CSSSelector::~CSSSelector):
        (DOM::CSSSelector::append):
        (DOM::CSSSelector::next):
        (DOM::CSSSelector::):
        (DOM::StyleBaseImpl::StyleBaseImpl):
        * khtml/css/css_ruleimpl.cpp:
        (CSSStyleRuleImpl::selectorText):
        (CSSRuleListImpl::insertRule):
        * khtml/css/css_ruleimpl.h:
        (DOM::CSSStyleRuleImpl::setSelector):
        (DOM::CSSStyleRuleImpl::selector):
        * khtml/css/css_stylesheetimpl.cpp:
        * khtml/css/css_stylesheetimpl.h:
        * khtml/css/css_valueimpl.cpp:
        (CSSStyleDeclarationImpl::getPropertyCSSValue):
        (CSSStyleDeclarationImpl::removeProperty):
        (CSSStyleDeclarationImpl::setProperty):
        (CSSStyleDeclarationImpl::setStringProperty):
        (CSSStyleDeclarationImpl::setImageProperty):
        (CSSStyleDeclarationImpl::setLengthProperty):
        (CSSStyleDeclarationImpl::cssText):
        (CSSStyleDeclarationImpl::setCssText):
        * khtml/css/css_valueimpl.h:
        (DOM::CSSStyleDeclarationImpl::node):
        (DOM::CSSProperty::CSSProperty):
        (DOM::CSSProperty::id):
        (DOM::CSSProperty::isImportant):
        * khtml/css/cssparser.cpp:
        (CSSParser::CSSParser):
        (ParseString::lower):
        (CSSParser::parseValue):
        (CSSParser::parseDeclaration):
        (CSSParser::addProperty):
        (CSSParser::parseShadow):
        * khtml/css/cssparser.h:
        * khtml/css/cssstyleselector.cpp:
        (khtml::):
        (khtml::CSSStyleSelector::CSSStyleSelector):
        (khtml::CSSStyleSelector::init):
        (khtml::CSSStyleSelector::~CSSStyleSelector):
        (khtml::CSSStyleSelector::loadDefaultStyle):
        (khtml::CSSStyleSelector::addMatchedRule):
        (khtml::CSSStyleSelector::addMatchedDeclaration):
        (khtml::CSSStyleSelector::matchRules):
        (khtml::CSSStyleSelector::matchRulesForList):
        (khtml::operator >):
        (khtml::operator <=):
        (khtml::CSSStyleSelector::sortMatchedRules):
        (khtml::CSSStyleSelector::initForStyleResolve):
        (khtml::CSSStyleSelector::styleForElement):
        (khtml::CSSStyleSelector::pseudoStyleForElement):
        (khtml::checkPseudoState):
        (khtml::CSSStyleSelector::checkSelector):
        (khtml::CSSStyleSelector::checkOneSelector):
        (khtml::CSSRuleSet::CSSRuleSet):
        (khtml::CSSRuleSet::addToRuleSet):
        (khtml::CSSRuleSet::addRule):
        (khtml::CSSRuleSet::addRulesFromSheet):
        (khtml::CSSStyleSelector::applyDeclarations):
        (khtml::CSSStyleSelector::applyProperty):
        (khtml::CSSStyleSelector::smallerFontSize):
        (khtml::CSSStyleSelector::getColorFromPrimitiveValue):
        * khtml/css/cssstyleselector.h:
        (khtml::):
        (khtml::CSSRuleData::m_next):
        (khtml::CSSRuleData::~CSSRuleData):
        (khtml::CSSRuleData::position):
        (khtml::CSSRuleData::rule):
        (khtml::CSSRuleData::selector):
        (khtml::CSSRuleData::next):
        (khtml::CSSRuleDataList::CSSRuleDataList):
        (khtml::CSSRuleDataList::~CSSRuleDataList):
        (khtml::CSSRuleDataList::first):
        (khtml::CSSRuleDataList::last):
        (khtml::CSSRuleDataList::append):
        (khtml::CSSRuleSet::~CSSRuleSet):
        (khtml::CSSRuleSet::getIDRules):
        (khtml::CSSRuleSet::getClassRules):
        (khtml::CSSRuleSet::getTagRules):
        (khtml::CSSRuleSet::getUniversalRules):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/css/html4.css:
        * khtml/css/parser.cpp:
        * khtml/css/parser.h:
        * khtml/css/parser.y:
        * khtml/dom/dom_element.cpp:
        (Element::style):
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::HTMLBodyElementImpl):
        (HTMLBodyElementImpl::~HTMLBodyElementImpl):
        (HTMLBodyElementImpl::createLinkDecl):
        (HTMLBodyElementImpl::parseAttribute):
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_elementimpl.cpp:
        (HTMLNamedAttrMapImpl::parseClassAttribute):
        (HTMLElementImpl::HTMLElementImpl):
        (HTMLElementImpl::~HTMLElementImpl):
        (HTMLElementImpl::createInlineStyleDecl):
        (HTMLElementImpl::createMappedAttributeDecl):
        (HTMLElementImpl::parseAttribute):
        (HTMLElementImpl::getClassList):
        (HTMLElementImpl::addCSSProperty):
        (HTMLElementImpl::addCSSStringProperty):
        (HTMLElementImpl::addCSSImageProperty):
        (HTMLElementImpl::addCSSLength):
        (HTMLElementImpl::addHTMLColor):
        (HTMLElementImpl::removeCSSProperty):
        * khtml/html/html_elementimpl.h:
        (DOM::HTMLNamedAttrMapImpl::getClassList):
        (DOM::HTMLElementImpl::inlineStyleDecl):
        (DOM::HTMLElementImpl::attributeStyleDecl):
        (DOM::HTMLElementImpl::getInlineStyleDecl):
        * khtml/html/html_tableimpl.cpp:
        (HTMLTableElementImpl::createSharedCellDecls):
        (HTMLTableCellElementImpl::additionalAttributeStyleDecl):
        * khtml/html/html_tableimpl.h:
        * khtml/xml/dom_atomicstring.cpp:
        (DOM::AtomicString::add):
        (DOM::AtomicString::remove):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::resetLinkColor):
        (DocumentImpl::resetVisitedLinkColor):
        (DocumentImpl::resetActiveLinkColor):
        (DocumentImpl::recalcStyleSelector):
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentImpl::linkColor):
        (DOM::DocumentImpl::visitedLinkColor):
        (DOM::DocumentImpl::activeLinkColor):
        (DOM::DocumentImpl::setLinkColor):
        (DOM::DocumentImpl::setVisitedLinkColor):
        (DOM::DocumentImpl::setActiveLinkColor):
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::ElementImpl):
        (ElementImpl::~ElementImpl):
        (ElementImpl::getClassList):
        (ElementImpl::getIDAttribute):
        (ElementImpl::cloneNode):
        (XMLElementImpl::cloneNode):
        * khtml/xml/dom_elementimpl.h:
        (DOM::ElementImpl::inlineStyleDecl):
        (DOM::ElementImpl::attributeStyleDecl):
        (DOM::ElementImpl::getInlineStyleDecl):
        (DOM::ElementImpl::additionalAttributeStyleDecl):
        (DOM::NamedAttrMapImpl::id):
        (DOM::NamedAttrMapImpl::setID):
        * khtml/xml/dom_stringimpl.cpp:
        (DOM::DOMStringImpl::DOMStringImpl):
        (DOM::DOMStringImpl::~DOMStringImpl):
        (DOM::DOMStringImpl::append):
        (DOM::DOMStringImpl::insert):
        (DOM::DOMStringImpl::truncate):
        (DOM::DOMStringImpl::remove):
        (DOM::DOMStringImpl::split):
        * khtml/xml/dom_stringimpl.h:
        (DOM::DOMStringImpl::DOMStringImpl):

2004-02-04  David Hyatt  <hyatt@apple.com>

	Fix line-height regression on altavista.

        * khtml/rendering/render_br.cpp:
        (RenderBR::RenderBR):
        (RenderBR::position):
        (RenderBR::lineHeight):
        (RenderBR::setStyle):
        * khtml/rendering/render_br.h:
        * khtml/rendering/render_flow.h:
        (khtml::RenderFlow::RenderFlow):

2004-02-04  David Hyatt  <hyatt@apple.com>

	Fix a regression in the line-height of first-lines and inline-blocks.
	
        Reviewed by darin

        * khtml/rendering/render_flow.cpp:
        (RenderFlow::lineHeight):
        * khtml/rendering/render_text.cpp:
        (RenderText::lineHeight):

2004-02-02  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3546924>: REGRESSION: dragging text or images over a WebView is jerky


        Reviewed by mjs.

        * WebCore-combined.exp:
        * WebCore.exp:
        * kwq/WebCoreBridge.h: added the DOM node element key constant (SPI for now)
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge elementAtPoint:]): instead of calling toHTML for every node, put the node on the element so the caller can get the HTML string representation when it needs to.
        * kwq/WebCoreDOMNode.mm:
        (-[WebCoreDOMNode HTMLString]): new

2004-02-02  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - use toInt32 where we really need an int, rather than toInteger,
          because toInteger needs to return an integral number as a double,
          not as an int

        * khtml/ecma/kjs_css.cpp:
        (DOMCSSStyleDeclarationProtoFunc::tryCall): Call toInt32 intead of toInteger.
        (DOMStyleSheetListFunc::tryCall): Ditto.
        (KJS::DOMMediaListProtoFunc::tryCall): Ditto.
        (DOMCSSStyleSheetProtoFunc::tryCall): Ditto.
        (DOMCSSRuleListFunc::tryCall): Ditto.
        (DOMCSSRuleFunc::tryCall): Ditto.
        (DOMCSSPrimitiveValueProtoFunc::tryCall): Ditto.
        (DOMCSSValueListFunc::tryCall): Ditto.
        * khtml/ecma/kjs_dom.cpp:
        (DOMCharacterDataProtoFunc::tryCall): Ditto.
        (DOMTextProtoFunc::tryCall): Ditto.
        * khtml/ecma/kjs_events.cpp:
        (DOMUIEventProtoFunc::tryCall): Ditto.
        (DOMMouseEventProtoFunc::tryCall): Ditto.
        (DOMKeyboardEventProtoFunc::tryCall): Ditto.
        (DOMMutationEventProtoFunc::tryCall): Ditto.
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElementFunction::tryCall): Ditto.
        (KJS::HTMLElement::putValue): Ditto.
        (KJS::HTMLSelectCollection::tryPut): Ditto.
        * khtml/ecma/kjs_range.cpp:
        (DOMRangeProtoFunc::tryCall): Ditto.
        * khtml/ecma/kjs_traversal.cpp: (JSNodeFilter::acceptNode): Ditto.
        * khtml/ecma/kjs_window.cpp:
        (WindowFunc::tryCall): Ditto.
        (HistoryFunc::tryCall): Ditto.

2004-02-02  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fix at least some of <rdar://problem/3546393>: 10,000 leaks, many of DOM::AtomicString::add, after one run of cvs-base

        * khtml/xml/dom_atomicstring.cpp: (DOM::AtomicString::add): Remove extra allocation of strings.
        This should speed things up a bit as well as fixing one big leak.

2004-02-02  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3546379>: support for editing via drag & drop

        Reviewed by kocienda.

        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::deleteSelection): fixed a crash I encountered while attempting to delete and empty selection
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge isSelectionEditable]): renamed from isEditable
        (-[WebCoreBridge moveCaretToPoint:]): new
        (-[WebCoreBridge elementAtPoint:]): added support for WebCoreElementHTMLStringKey and WebCoreElementIsEditableKey

2004-01-30  David Hyatt  <hyatt@apple.com>

	Fix for 3522497, <br>s should not get AXObjects created.
	
        Reviewed by mjs

        * kwq/KWQAccObject.mm:
        (-[KWQAccObject accessibilityIsIgnored]):

=== Safari-126 ===

2004-01-30  David Hyatt  <hyatt@apple.com>

	Fix a regression I introduced in my atomicstring patch.  I meant to say !attr->isNull() in the contentedtiable
	attribute parsing code.
	
        Reviewed by cblu

        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseAttribute):

2004-01-30  David Hyatt  <hyatt@apple.com>

	Make m_lineHeight be cached on RenderFlow instead of RenderText and avoid recomputing it so much when it
	is not set by CSS (since calls to fontMetrics().lineSpacing() are expensive).

	Yields ~1.5% performance improvement.
	
        Reviewed by darin

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::setStyle):
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::lineHeight):
        * khtml/rendering/render_flow.h:
        * khtml/rendering/render_inline.cpp:
        (RenderInline::setStyle):
        * khtml/rendering/render_object.cpp:
        (RenderObject::verticalPositionHint):
        (RenderObject::lineHeight):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_text.cpp:
        (RenderText::setStyle):
        (RenderText::checkSelectionPointIgnoringContinuations):
        (RenderText::height):
        (RenderText::lineHeight):
        * khtml/rendering/render_text.h:

2004-01-30  David Hyatt  <hyatt@apple.com>

	Disable XBL.  The loadBindings call was taking 0.1-0.25%.  While I know how to get rid of this overhead,
	it's easier for now to just disable all of XBL.

        * WebCorePrefix.h:
        * khtml/misc/loader.h:
        * khtml/xbl/xbl_binding.cpp:
        * khtml/xbl/xbl_binding_manager.cpp:
        * khtml/xbl/xbl_docimpl.cpp:
        * khtml/xbl/xbl_protobinding.cpp:
        * khtml/xbl/xbl_protohandler.cpp:
        * khtml/xbl/xbl_protoimplementation.cpp:
        * khtml/xbl/xbl_tokenizer.cpp:

2004-01-29  David Hyatt  <hyatt@apple.com>

	Atomize font families (KWQFontFamily) and all attribute values.  Move atomic string into separate files.

	In my testing, this patch yields the same score as Safari-125 in tests and recovers all lost performance
	(mostly from excess copying of AtomicStrings where DOMStringImpl* used to be returned).
	
        Reviewed by darin

        * ForwardingHeaders/xml/dom_atomicstring.h: Added.
        * WebCore.pbproj/project.pbxproj:
        * khtml/css/css_base.cpp:
        (CSSSelector::print):
        (CSSSelector::extractPseudoType):
        (CSSSelector::selectorText):
        * khtml/css/css_valueimpl.cpp:
        (FontFamilyValueImpl::FontFamilyValueImpl):
        * khtml/css/cssparser.cpp:
        (CSSParser::parseFontFamily):
        * khtml/css/cssparser.h:
        * khtml/css/cssstyleselector.cpp:
        (khtml::checkPseudoState):
        (khtml::CSSStyleSelector::checkOneSelector):
        (khtml::CSSStyleSelector::applyRule):
        * khtml/dom/dom_element.cpp:
        (Element::getAttributeNS):
        * khtml/dom/dom_string.cpp:
        (DOMString::toInt):
        (DOMString::toLengthArray):
        (DOM::operator==):
        * khtml/dom/dom_string.h:
        (DOM::operator==):
        (DOM::operator!=):
        * khtml/ecma/kjs_navigator.cpp:
        (Plugins::get):
        (MimeTypes::get):
        (Plugin::get):
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::parseAttribute):
        (HTMLFrameElementImpl::isURLAllowed):
        (HTMLFrameElementImpl::openURL):
        (HTMLFrameElementImpl::parseAttribute):
        (HTMLFrameElementImpl::attach):
        (HTMLFrameElementImpl::setLocation):
        (HTMLFrameSetElementImpl::parseAttribute):
        (HTMLIFrameElementImpl::attach):
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_blockimpl.cpp:
        (HTMLHRElementImpl::parseAttribute):
        (HTMLHRElementImpl::attach):
        (HTMLMarqueeElementImpl::parseAttribute):
        * khtml/html/html_documentimpl.cpp:
        (HTMLDocumentImpl::documentElement):
        * khtml/html/html_documentimpl.h:
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseAttribute):
        (HTMLElementImpl::addCSSLength):
        (HTMLElementImpl::addHTMLAlignment):
        * khtml/html/html_elementimpl.h:
        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::parseAttribute):
        (HTMLInputElementImpl::parseAttribute):
        (HTMLInputElementImpl::attach):
        (HTMLSelectElementImpl::parseAttribute):
        (HTMLKeygenElementImpl::parseAttribute):
        (HTMLKeygenElementImpl::encoding):
        (HTMLOptionElementImpl::parseAttribute):
        (HTMLTextAreaElementImpl::parseAttribute):
        * khtml/html/html_formimpl.h:
        * khtml/html/html_headimpl.cpp:
        (HTMLLinkElementImpl::parseAttribute):
        (HTMLStyleElementImpl::parseAttribute):
        * khtml/html/html_imageimpl.cpp:
        (HTMLImageElementImpl::parseAttribute):
        (HTMLAreaElementImpl::parseAttribute):
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::parseAttribute):
        * khtml/html/html_listimpl.cpp:
        (HTMLOListElementImpl::parseAttribute):
        (HTMLLIElementImpl::parseAttribute):
        * khtml/html/html_miscimpl.cpp:
        (HTMLCollectionImpl::getNamedItem):
        (HTMLFormCollectionImpl::getNamedFormItem):
        (HTMLFormCollectionImpl::getNamedImgItem):
        * khtml/html/html_objectimpl.cpp:
        (HTMLEmbedElementImpl::parseAttribute):
        (HTMLObjectElementImpl::parseAttribute):
        (HTMLParamElementImpl::HTMLParamElementImpl):
        (HTMLParamElementImpl::~HTMLParamElementImpl):
        (HTMLParamElementImpl::parseAttribute):
        * khtml/html/html_objectimpl.h:
        (DOM::HTMLParamElementImpl::name):
        (DOM::HTMLParamElementImpl::value):
        * khtml/html/html_tableimpl.cpp:
        (HTMLTableElementImpl::parseAttribute):
        (HTMLTablePartElementImpl::parseAttribute):
        (HTMLTableCellElementImpl::parseAttribute):
        (HTMLTableColElementImpl::parseAttribute):
        * khtml/html/htmlparser.cpp:
        (KHTMLParser::insertNode):
        (KHTMLParser::handleIsindex):
        * khtml/html/htmltokenizer.cpp:
        (HTMLTokenizer::parseTag):
        * khtml/html/htmltokenizer.h:
        (khtml::Token::addAttribute):
        * khtml/khtml_part.cpp:
        (KHTMLPart::init):
        * khtml/khtmlview.cpp:
        (KHTMLToolTip::maybeTip):
        * khtml/xml/dom_atomicstring.cpp: Added.
        (DOM::AtomicStringStatisticsExitLogger::~AtomicStringStatisticsExitLogger):
        (DOM::AtomicString::equal):
        (DOM::AtomicString::add):
        (DOM::AtomicString::insert):
        (DOM::AtomicString::remove):
        (DOM::AtomicString::expand):
        (DOM::AtomicString::shrink):
        (DOM::AtomicString::rehash):
        (DOM::AtomicString::init):
        (DOM::operator==):
        (DOM::equalsIgnoreCase):
        * khtml/xml/dom_atomicstring.h: Added.
        (DOM::AtomicString::AtomicString):
        (DOM::AtomicString:::m_string):
        (DOM::AtomicString::operator const DOMString&):
        (DOM::AtomicString::domString):
        (DOM::AtomicString::string):
        (DOM::AtomicString::implementation):
        (DOM::AtomicString::unicode):
        (DOM::AtomicString::length):
        (DOM::AtomicString::ascii):
        (DOM::AtomicString::find):
        (DOM::AtomicString::toInt):
        (DOM::AtomicString::percentage):
        (DOM::AtomicString::toLengthArray):
        (DOM::AtomicString::isNull):
        (DOM::AtomicString::isEmpty):
        (DOM::AtomicString::equal):
        (DOM::operator==):
        (DOM::operator!=):
        * khtml/xml/dom_atomicstringlist.h: Added.
        (DOM::AtomicStringList:::m_next):
        (DOM::AtomicStringList::m_next):
        (DOM::AtomicStringList::~AtomicStringList):
        (DOM::AtomicStringList::next):
        (DOM::AtomicStringList::setNext):
        (DOM::AtomicStringList::string):
        (DOM::AtomicStringList::setString):
        (DOM::AtomicStringList::clone):
        (DOM::AtomicStringList::clear):
        * khtml/xml/dom_docimpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (AttrImpl::nodeValue):
        (AttrImpl::cloneNode):
        (ElementImpl::getAttribute):
        (ElementImpl::getAttributeNS):
        (ElementImpl::setAttribute):
        (ElementImpl::setAttributeMap):
        (ElementImpl::attach):
        (ElementImpl::detach):
        (ElementImpl::updateId):
        (NamedAttrMapImpl::setNamedItem):
        (NamedAttrMapImpl::removeNamedItem):
        (NamedAttrMapImpl::getAttributeItem):
        (NamedAttrMapImpl::operator=):
        (NamedAttrMapImpl::removeAttribute):
        * khtml/xml/dom_elementimpl.h:
        (DOM::AttributeImpl::AttributeImpl):
        (DOM::AttributeImpl::value):
        (DOM::AttributeImpl::prefix):
        (DOM::AttributeImpl::isNull):
        (DOM::AttributeImpl::isEmpty):
        (DOM::AttributeImpl::setValue):
        (DOM::AttributeImpl::setPrefix):
        (DOM::ElementImpl::getAttribute):
        * khtml/xml/dom_nameimpl.cpp: Removed.
        * khtml/xml/dom_nameimpl.h:
        (DOM::Name::namespaceURI):
        (DOM::Name::localName):
        * khtml/xml/dom_nodeimpl.h:
        * khtml/xml/dom_stringimpl.cpp:
        * kwq/KWQFont.mm:
        (QFont::family):
        * kwq/KWQFontFamily.h:
        (KWQFontFamily::family):
        * kwq/KWQFontFamily.mm:
        (retainDOMStringImpl):
        (releaseDOMStringImpl):
        (KWQFontFamily::getNSFamily):
        (KWQFontFamily::setFamily):
        (KWQFontFamily::operator==):
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::fileWrapperForElement):
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge elementAtPoint:]):

2004-01-29  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3543619>: copied HTML is strangely formatted, random whitespace and return characters

        Reviewed by dave.

        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::recursive_toHTMLWithRange): remove all code that tries to format the HTML since we can rely on the existing white space to preserve the original formatting

2004-01-28  John Sullivan  <sullivan@apple.com>

        Reviewed by Dave.

        * khtml/rendering/render_text.cpp:
        (RenderText::paintObject):
        Increment s in the while() clause so it is incremented even
        after a continue statement. This fixes an infinite loop I ran
        into in the printing code path at certain scaled print sizes
        on certain pages.

2004-01-28  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3543041>: when pasting an image, cursor should be after the image, not before

        Reviewed by rjw.

        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::pasteHTMLString): when the last node of the paste is non-text, use 1 instead of 0 as the start offset of the caret

2004-01-28  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

	A small collection of fixes and improvements to editing.

	Added a forwarding header for dom_position.h
	Added some debugging output to KHTMLSelection
	Added support for left arrow navigation.
	Greatly improved support for right arrow navigation.
	Added include guards to dom_position.h. Oops!
	Removed pruneEmptyNodes() function from htmlediting.cpp. That was crack.
	Improved the text insert command so that it splits the text node being
	    operated on only when necessary.
	Added support for placing the caret in and arrowing into BR elements.
	Moved precedesLineBreak/followsLineBreak from RenderText to RenderObject.	

        * ForwardingHeaders/dom/dom_position.h: Added.
        * khtml/dom/dom_position.h:
        * khtml/editing/htmlediting.cpp:
        (InputTextCommand::apply):
        (DeleteTextCommand::apply):
        * khtml/khtml_selection.cpp:
        (KHTMLSelection::setSelection):
        (KHTMLSelection::alterSelection):
        (KHTMLSelection::update):
        (KHTMLSelection::previousCharacterPosition):
        (KHTMLSelection::nextCharacterPosition):
        (startAndEndLineNodesIncludingNode):
        (KHTMLSelection::debugRenderer):
        (KHTMLSelection::debugPosition):
        * khtml/khtml_selection.h:
        * khtml/rendering/render_br.cpp:
        (RenderBR::RenderBR):
        (RenderBR::position):
        (RenderBR::caretMaxOffset):
        (RenderBR::caretPos):
        * khtml/rendering/render_br.h:
        (khtml::RenderBR::xPos):
        (khtml::RenderBR::yPos):
        (khtml::RenderBR::height):
        * khtml/rendering/render_object.cpp:
        (RenderObject::precedesLineBreak):
        (RenderObject::followsLineBreak):
        (RenderObject::isEditable):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_text.cpp:
        (RenderText::caretPos):
        (RenderText::position):
        (RenderText::caretMaxOffset):
        * khtml/rendering/render_text.h:
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::defaultEventHandler):

2004-01-28  David Hyatt  <hyatt@apple.com>

	Fix for 3537694, make blocks for parents of inline children be axobjects.
	
        Reviewed by kocienda

        * kwq/KWQAccObject.mm:
        (-[KWQAccObject role]):
        (-[KWQAccObject accessibilityIsIgnored]):

2004-01-28  David Hyatt  <hyatt@apple.com>

	Make AtomicString a new class that owns DOMStrings, instead of using KJS::Identifier.  One day when we
	convert DOMString and UString to have the same underlying rep, then these classes could possibly re-merge.
	For now this provides an easy migration path for all the code that is using DOMStringImpl*.

	Also fixed a bug with float clearing in the style cascade.
	
        Reviewed by darin

        * khtml/css/cssparser.h:
        (DOM::atomicString):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::checkOneSelector):
        (khtml::CSSStyleSelector::applyRule):
        * khtml/dom/dom_string.cpp:
        (DOMString::DOMString):
        * khtml/xml/dom_nameimpl.cpp:
        (DOM::AtomicStringStatisticsExitLogger::~AtomicStringStatisticsExitLogger):
        (DOM::AtomicString::equal):
        (DOM::AtomicString::add):
        (DOM::AtomicString::insert):
        (DOM::AtomicString::remove):
        (DOM::AtomicString::expand):
        (DOM::AtomicString::shrink):
        (DOM::AtomicString::rehash):
        (DOM::AtomicString::null):
        (DOM::AtomicString::init):
        (DOM::operator==):
        (DOM::equalsIgnoreCase):
        * khtml/xml/dom_nameimpl.h:
        (DOM::AtomicString::AtomicString):
        (DOM::AtomicString:::m_string):
        (DOM::AtomicString::string):
        (DOM::AtomicString::qstring):
        (DOM::AtomicString::implementation):
        (DOM::AtomicString::unicode):
        (DOM::AtomicString::length):
        (DOM::AtomicString::ascii):
        (DOM::AtomicString::find):
        (DOM::AtomicString::isNull):
        (DOM::AtomicString::isEmpty):
        (DOM::AtomicString::equal):
        (DOM::operator==):
        (DOM::operator!=):
        * khtml/xml/dom_stringimpl.cpp:
        (DOM::DOMStringImpl::empty):
        (DOM::DOMStringImpl::DOMStringImpl):
        (DOM::DOMStringImpl::~DOMStringImpl):
        (DOM::DOMStringImpl::append):
        (DOM::DOMStringImpl::insert):
        (DOM::DOMStringImpl::truncate):
        (DOM::DOMStringImpl::remove):
        (DOM::DOMStringImpl::split):
        (DOM::DOMStringImpl::substring):
        (DOM::DOMStringImpl::replace):
        (DOM::DOMStringImpl::computeHash):
        * khtml/xml/dom_stringimpl.h:
        (DOM::DOMStringImpl::DOMStringImpl):
        (DOM::DOMStringImpl::hash):
        * khtml/xml/dom_textimpl.cpp:
        (CharacterDataImpl::CharacterDataImpl):

2004-01-27  Chris Blumenberg  <cblu@apple.com>

	Fixed:
	<rdar://problem/3541812>: Implement Paste menu item
	<rdar://problem/3541814>: Implement Delete menu item
	<rdar://problem/3541811>: Implement Cut menu item

        Reviewed by dave.

        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::deleteSelection): new
        (DocumentImpl::pasteHTMLString): new
        * khtml/xml/dom_docimpl.h:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge isEditable]): new
        (-[WebCoreBridge pasteHTMLString:]): new
        (-[WebCoreBridge deleteSelection]): new
        (-[WebCoreBridge haveSelection]): new

2004-01-27  David Hyatt  <hyatt@apple.com>

	Add a new AtomicString type (that is really just a KJS::Identifier).  Define a Name class that will eventually
	be used for element and attribute names.

	Atomize the CSS selector's "value" field, used to hold class names, identifier names, attribute values, and
	pseudo-element names.
	
        Reviewed by rjw

        * ForwardingHeaders/kjs/identifier.h: Added.
        * WebCore.pbproj/project.pbxproj:
        * khtml/css/css_base.cpp:
        (CSSSelector::print):
        (CSSSelector::specificity):
        (CSSSelector::extractPseudoType):
        (CSSSelector::selectorText):
        * khtml/css/css_base.h:
        (DOM::CSSSelector::):
        * khtml/css/cssparser.cpp:
        (ParseString::lower):
        * khtml/css/cssparser.h:
        (DOM::atomicString):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::checkOneSelector):
        * khtml/css/parser.cpp:
        * khtml/css/parser.y:
        * khtml/html/html_elementimpl.cpp:
        (:NamedAttrMapImpl):
        (HTMLNamedAttrMapImpl::clearAttributes):
        (HTMLNamedAttrMapImpl::isHTMLAttributeMap):
        (HTMLNamedAttrMapImpl::parseClassAttribute):
        (HTMLNamedAttrMapImpl::matchesCSSClass):
        (HTMLElementImpl::parseAttribute):
        (HTMLElementImpl::createAttributeMap):
        (HTMLElementImpl::matchesCSSClass):
        * khtml/html/html_elementimpl.h:
        * khtml/html/html_objectimpl.cpp:
        (HTMLObjectElementImpl::recalcStyle):
        * khtml/html/htmltokenizer.h:
        (khtml::Token::addAttribute):
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::matchesCSSClass):
        (NamedAttrMapImpl::isHTMLAttributeMap):
        (NamedAttrMapImpl::operator=):
        * khtml/xml/dom_elementimpl.h:
        * khtml/xml/dom_nameimpl.cpp: Added.
        (DOM::AtomicStringList::clone):
        (DOM::operator==):
        (DOM::equalsIgnoreCase):
        * khtml/xml/dom_nameimpl.h: Added.
        (DOM::AtomicStringList:::m_next):
        (DOM::AtomicStringList::m_next):
        (DOM::AtomicStringList::~AtomicStringList):
        (DOM::AtomicStringList::next):
        (DOM::AtomicStringList::setNext):
        (DOM::AtomicStringList::string):
        (DOM::AtomicStringList::setString):
        (DOM::AtomicStringList::clear):
        (DOM::Name::Name):
        (DOM::Name::m_localName):
        (DOM::Name::namespaceURI):
        (DOM::Name::localName):
        (DOM::operator==):
        (DOM::operator!=):
        * khtml/xml/dom_nodeimpl.h:

2004-01-27  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed <rdar://problem/3526056>: W3C says that DEL key identifier should be U+00007F, we give ForwardDelete instead

        * kwq/KWQEvent.mm: (keyIdentifierForKeyEvent): Correct the key identifiers for the Delete, Insert,
        Menu, Scroll Lock, and Select keys, as well as some obscure F25 and higher keys. Also add some
        explicit constants for the keys defined in NSEvent.h that we map to a key identifier using the
        vendor-area Unicode values (which are probably not appropriate).

2004-01-27  David Hyatt  <hyatt@apple.com>

	Make a change suggested by kocienda to add a remove() method to InlineBoxes.
	
        Reviewed by kocienda

        * khtml/rendering/render_box.cpp:
        (RenderBox::detach):
        (RenderBox::position):
        * khtml/rendering/render_line.cpp:
        (InlineBox::remove):
        * khtml/rendering/render_line.h:
        * khtml/rendering/render_text.cpp:
        (RenderText::detach):
        (RenderText::position):

2004-01-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - follow-on to the text-align change I did earlier today

        * khtml/css/html4.css: Set input and textarea so they do not inherit text-align
        from their parent by doing "text-align: -khtml-auto". This fixes google.com among others.

2004-01-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed <rdar://problem/3539414>: pop-up windows appear very narrow because of bogus width (carad.com/ebaymotors)

        * khtml/ecma/kjs_window.cpp: (WindowFunc::tryCall): Check the "OK" result from toFloat in
        window.open, and omit any parameters that can't be parsed.

2004-01-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed <rdar://problem/3537371>: REGRESSION (100-125): optgroup labels are no longer indented as they were before

        * khtml/rendering/render_form.cpp: (RenderSelect::updateFromElement):
        Move code that adds spaces after code that strips whitespace. Also simplify
        the code a bit by using DOMString::string().

2004-01-26  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed <rdar://problem/3539286>: text with a transparent background color pastes as black on black

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::attributedString): Don't put color in the mutable
        string if it's entirely transparent.
        * kwq/KWQColor.mm: (QColor::getNSColor): Fix bug where we would return nil for RGBA of 0.

2004-01-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed <rdar://problem/3529120>: text-align style property not respected on input fields

        * khtml/rendering/render_form.h: Added textAlignment function.
        * khtml/rendering/render_form.cpp:
        (RenderFormElement::textAlignment): Added. Converts style alignment to Qt alignment.
        (RenderLineEdit::setStyle): Call textAlignment intead of using direction from style.
        (RenderTextArea::setStyle): Call textAlignment intead of using direction from style.

        * kwq/KWQLineEdit.h: Added KWQNSTextAlignmentForAlignmentFlags function.
        * kwq/KWQLineEdit.mm:
        (QLineEdit::setAlignment): Use KWQNSTextAlignmentForAlignmentFlags instead of code
        that handles only left and right alignment.
        (KWQNSTextAlignmentForAlignmentFlags): Added. Converts Qt alignment to NS alignment.
        * kwq/KWQTextEdit.mm: (QTextEdit::setAlignment): Use KWQNSTextAlignmentForAlignmentFlags
        instead of code that handles only left and right alignment.

2004-01-26  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed <rdar://problem/3477707>: background image with apostrophe in name missing at http://www.nbc.com

        * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::parseAttribute): Use addCSSImageProperty
        instead of addCSSProperty, obviating the need for the "url()" syntax (and fixing quoting issues).

        * khtml/html/html_tableimpl.cpp:
        (HTMLTableElementImpl::parseAttribute): Ditto.
        (HTMLTablePartElementImpl::parseAttribute): Ditto.

        * khtml/html/html_elementimpl.h: Added addCSSStringProperty and addCSSImageProperty.
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::addCSSStringProperty): Added. Calls setStringProperty. Not used yet.
        (HTMLElementImpl::addCSSImageProperty): Added. Calls setImageProperty.

        * khtml/css/css_valueimpl.h: Added setStringProperty and setImageProperty.
        * khtml/css/css_valueimpl.cpp:
        (CSSStyleDeclarationImpl::setStringProperty): Added. Sets a property without parsing.
        (CSSStyleDeclarationImpl::setImageProperty): Added. Sets a property without parsing.
        You'd think we'd be able to just use setStringProperty, but that's not how the image
        properties work.

2004-01-26  Darin Adler  <darin@apple.com>

        * Makefile.am: Switch from pbxbuild to xcodebuild.

2004-01-26  David Hyatt  <hyatt@apple.com>

	Add CSS3 @namespace support.  The whole way namespaces, element, and attribute names are being handled
	right now is temporary.  This code gives us a baseline of functionality (for regression testing) that we
	can use when we implement namespaces "the right way."
	
        Reviewed by darin

        * WebCore.pbproj/project.pbxproj:
        * khtml/css/css_base.cpp:
        (CSSSelector::specificity):
        (CSSSelector::selectorText):
        * khtml/css/css_base.h:
        (DOM::CSSNamespace::m_parent):
        (DOM::CSSNamespace::~CSSNamespace):
        (DOM::CSSNamespace::uri):
        (DOM::CSSNamespace::prefix):
        (DOM::CSSNamespace::namespaceForPrefix):
        (DOM::CSSSelector::CSSSelector):
        * khtml/css/css_stylesheetimpl.cpp:
        (CSSStyleSheetImpl::CSSStyleSheetImpl):
        (CSSStyleSheetImpl::addNamespace):
        (CSSStyleSheetImpl::determineNamespace):
        * khtml/css/css_stylesheetimpl.h:
        (DOM::CSSStyleSheetImpl::~CSSStyleSheetImpl):
        * khtml/css/cssparser.cpp:
        (CSSParser::CSSParser):
        (CSSParser::parseSheet):
        * khtml/css/cssparser.h:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::styleForElement):
        (khtml::CSSStyleSelector::pseudoStyleForElement):
        (khtml::CSSStyleSelector::checkSelector):
        (khtml::CSSStyleSelector::checkOneSelector):
        (khtml::CSSStyleSelector::buildLists):
        * khtml/css/html4.css:
        * khtml/css/parser.cpp:
        * khtml/css/parser.y:
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::~DocumentImpl):
        (DocumentImpl::attrId):
        (DocumentImpl::attrName):
        (DocumentImpl::tagId):
        (DocumentImpl::tagName):
        (DocumentImpl::namespaceURI):
        * khtml/xml/dom_elementimpl.cpp:
        (NamedAttrMapImpl::getAttributeItem):
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::checkSetPrefix):
        * khtml/xml/dom_nodeimpl.h:
        (DOM::namespacePart):
        (DOM::localNamePart):
        (DOM::makeId):
        * khtml/xml/dom_xmlimpl.cpp:
        (ProcessingInstructionImpl::checkStyleSheet):
        * khtml/xml/xml_namespace_table.cpp: Added.
        (DOM::XmlNamespaceTable::getNamespaceID):
        (DOM::XmlNamespaceTable::getNamespaceURI):
        * khtml/xml/xml_namespace_table.h: Added.
        (DOM::XmlNamespaceEntry::m_uri):

2004-01-26  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed <rdar://problem/3532519>: <select> menus show label property instead of tag contents (ups.com time and cost site)

        * khtml/html/html_formimpl.cpp: (HTMLOptionElementImpl::text): Ignore the label property as
        a quirk. Neither WinIE nor Mozilla implement the label property, so neither shall we (except
        on strict pages, where we just go crazy and do everything "right").

2004-01-26  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

        * khtml/rendering/render_line.h:
        (khtml::InlineBox::isFirstLineStyle): Helper to return whether
	the line box has the first line style bit set.
        * khtml/rendering/render_text.cpp:
        (RenderText::caretPos): Noe correctly accounts for white space
	which can precede an inline text box.

2004-01-26  David Hyatt  <hyatt@apple.com>

	Remove incremental repainting ifdef.

        * khtml/khtmlview.h:
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::layoutBlockChildren):
        (khtml::RenderBlock::repaintObjectsBeforeLayout):
        (khtml::RenderBlock::positionNewFloats):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_box.cpp:
        (RenderBox::computeAbsoluteRepaintRect):
        (RenderBox::repaintDuringLayoutIfMoved):
        * khtml/rendering/render_box.h:
        * khtml/rendering/render_container.cpp:
        (RenderContainer::removeChildNode):
        * khtml/rendering/render_flexbox.cpp:
        (khtml::RenderFlexibleBox::layoutBlock):
        (khtml::RenderFlexibleBox::placeChild):
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::getAbsoluteRepaintRect):
        * khtml/rendering/render_image.cpp:
        (RenderImage::layout):
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::RenderLayer):
        (RenderLayer::computeRepaintRects):
        (RenderLayer::updateLayerPositions):
        (RenderLayer::updateLayerPosition):
        (RenderLayer::paintLayer):
        * khtml/rendering/render_layer.h:
        (khtml::RenderLayer::relativePositionOffset):
        * khtml/rendering/render_object.cpp:
        (RenderObject::setNeedsLayout):
        (RenderObject::setChildNeedsLayout):
        (RenderObject::markContainingBlocksForLayout):
        (RenderObject::getAbsoluteRepaintRectIncludingFloats):
        (RenderObject::detach):
        (RenderObject::scheduleRelayout):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_table.cpp:
        (RenderTable::layout):
        (RenderTableSection::layoutRows):

2004-01-26  David Hyatt  <hyatt@apple.com>

	Preserve the integrity of the line box tree when elements get removed.  Change RenderText over to using
	the same data structures as inlines and blocks for maintaining its list of line boxes.
	
        Reviewed by kocienda

        * khtml/khtml_part.cpp:
        (KHTMLPart::text):
        (KHTMLPart::customEvent):
        * khtml/khtml_selection.cpp:
        (KHTMLSelection::nextCharacterPosition):
        (firstRunAt):
        (lastRunAt):
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::removeChild):
        * khtml/rendering/render_box.cpp:
        (RenderBox::RenderBox):
        (RenderBox::detach):
        (RenderBox::position):
        (RenderBox::inlineBoxWrapper):
        (RenderBox::deleteLineBoxWrapper):
        * khtml/rendering/render_box.h:
        * khtml/rendering/render_container.cpp:
        (RenderContainer::removeChildNode):
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::detach):
        * khtml/rendering/render_line.cpp:
        (InlineFlowBox::removeChild):
        * khtml/rendering/render_line.h:
        (khtml::InlineBox::nextOnLine):
        (khtml::InlineBox::prevOnLine):
        (khtml::InlineBox::setNextOnLine):
        (khtml::InlineBox::setPrevOnLine):
        (khtml::InlineRunBox::prevLineBox):
        (khtml::InlineRunBox::nextLineBox):
        * khtml/rendering/render_object.cpp:
        (RenderObject::isEditable):
        (RenderObject::inlineBoxWrapper):
        (RenderObject::deleteLineBoxWrapper):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::documentBeingDestroyed):
        * khtml/rendering/render_text.cpp:
        (RenderText::RenderText):
        (RenderText::detach):
        (RenderText::deleteTextBoxes):
        (RenderText::absoluteRects):
        (RenderText::findNextInlineTextBox):
        (RenderText::nodeAtPoint):
        (RenderText::checkSelectionPointIgnoringContinuations):
        (RenderText::caretPos):
        (RenderText::paintObject):
        (RenderText::paint):
        (RenderText::minXPos):
        (RenderText::xPos):
        (RenderText::yPos):
        (RenderText::height):
        (RenderText::createInlineBox):
        (RenderText::position):
        (RenderText::width):
        (RenderText::caretMinOffset):
        (RenderText::caretMaxOffset):
        * khtml/rendering/render_text.h:
        (khtml::InlineTextBox:::InlineRunBox):
        (khtml::InlineTextBox::nextTextBox):
        (khtml::InlineTextBox::prevTextBox):
        (khtml::RenderText::firstTextBox):
        (khtml::RenderText::lastTextBox):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject accessibilityIsIgnored]):
        * kwq/KWQDef.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::attributedString):
        * kwq/KWQRenderTreeDebug.cpp:
        (write):

2004-01-24  David Hyatt  <hyatt@apple.com>

	Polish the error message from the xml tokenizer.

        * khtml/xml/xml_tokenizer.cpp:
        (XMLTokenizer::finish):

2004-01-23  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Richard

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::setShowsFirstResponder): Now adjusts caret visibility
	apprpropriately.

2004-01-23  David Hyatt  <hyatt@apple.com>

	Stub out @namespace support.  Implement the callbacks into the stylesheet that will enable us to
	store namespace information for simple selectors.

	Basically with this patch we no longer bomb when we encounter namespaced stylesheets, but we don't handle
	them properly yet either.
	
        Reviewed by kocienda

        * khtml/css/css_stylesheetimpl.cpp:
        (CSSStyleSheetImpl::addNamespace):
        (CSSStyleSheetImpl::determineNamespace):
        * khtml/css/css_stylesheetimpl.h:
        * khtml/css/cssparser.cpp:
        (DOM::CSSParser::lex):
        * khtml/css/cssparser.h:
        * khtml/css/parser.cpp:
        * khtml/css/parser.h:
        * khtml/css/parser.y:
        * khtml/css/tokenizer.cpp:
        * khtml/css/tokenizer.flex:

2004-01-23  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

	Merged HTML editing progress to TOT from the branch
	I have been maintaining.

        * khtml/dom/dom_position.cpp: Added.
        * khtml/dom/dom_position.h: Added.
        * khtml/editing/htmlediting.cpp: Added.
        * khtml/editing/htmlediting.h: Added.
        * khtml/khtml_selection.cpp: Added.
        * khtml/khtml_selection.h: Added.

2004-01-22  David Hyatt  <hyatt@apple.com>

	Fix a bug I accidentally introduced in static positioned elements.  Add more margin collapsing tests.
	
        * ChangeLog:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlockChildren):
        * layout-tests/fast/block/margin-collapse/044-expected.txt: Added.
        * layout-tests/fast/block/margin-collapse/044.html: Added.
        * layout-tests/fast/block/margin-collapse/045-expected.txt: Added.
        * layout-tests/fast/block/margin-collapse/045.html: Added.
        * layout-tests/fast/block/margin-collapse/062-expected.txt: Added.
        * layout-tests/fast/block/margin-collapse/062.html: Added.
        * layout-tests/fast/block/margin-collapse/063-expected.txt: Added.
        * layout-tests/fast/block/margin-collapse/063.html: Added.
        * layout-tests/fast/block/positioning/007-expected.txt:

2004-01-22  David Hyatt  <hyatt@apple.com>

        Reviewed by NOBODY (OOPS!).

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlockChildren):
        * layout-tests/fast/block/margin-collapse/062-expected.txt: Added.
        * layout-tests/fast/block/margin-collapse/062.html: Added.
        * layout-tests/fast/block/margin-collapse/063-expected.txt: Added.
        * layout-tests/fast/block/margin-collapse/063.html: Added.
        * layout-tests/fast/block/positioning/007-expected.txt:

2004-01-22  David Hyatt  <hyatt@apple.com>

	(1) Implement better XML error handling.
	(2) Fix a minor z-index bug with the 'initial' value.
	(3) Initial landing of XBL support.  Code is all ifnef KHTML_NO_XBL so that it can be turned off easily if
	XBL never comes to fruition.
	
        Reviewed by darin

        * ForwardingHeaders/xbl/xbl_binding_manager.h: Added.
        * ForwardingHeaders/xbl/xbl_docimpl.h: Added.
        * WebCore.pbproj/project.pbxproj:
        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/dom/dom_element.cpp:
        (Element::getAttributeNS):
        * khtml/misc/loader.cpp:
        (CachedXBLDocument::CachedXBLDocument):
        (CachedXBLDocument::~CachedXBLDocument):
        (CachedXBLDocument::ref):
        (CachedXBLDocument::deref):
        (CachedXBLDocument::data):
        (CachedXBLDocument::checkNotify):
        (CachedXBLDocument::error):
        (DocLoader::requestXBLDocument):
        (Cache::requestXBLDocument):
        (CachedObjectClient::setXBLDocument):
        (Cache::getStatistics):
        * khtml/misc/loader.h:
        (khtml::CachedObject::):
        (khtml::CachedXBLDocument::document):
        (khtml::CachedXBLDocument::schedule):
        * khtml/misc/loader_client.h:
        * khtml/rendering/render_style.cpp:
        (bindingURI):
        (marquee):
        (StyleCSS3NonInheritedData::~StyleCSS3NonInheritedData):
        (StyleCSS3NonInheritedData::bindingsEquivalent):
        (StyleCSS3NonInheritedData::operator==):
        (:m_next):
        (BindingURI::~BindingURI):
        (BindingURI::copy):
        (BindingURI::operator==):
        (RenderStyle::addBindingURI):
        * khtml/rendering/render_style.h:
        (khtml::BindingURI::operator!=):
        (khtml::BindingURI::next):
        (khtml::BindingURI::setNext):
        (khtml::BindingURI::uri):
        (khtml::RenderStyle::bindingURIs):
        (khtml::RenderStyle::setHasAutoZIndex):
        (khtml::RenderStyle::setZIndex):
        (khtml::RenderStyle::deleteBindingURIs):
        (khtml::RenderStyle::inheritBindingURIs):
        * khtml/xbl/xbl_binding.cpp: Added.
        (XBL::m_markedForDeath):
        (XBL::XBLBindingChain::~XBLBindingChain):
        (XBL::XBLBindingChain::firstStyleBindingChain):
        (XBL::XBLBindingChain::lastBindingChain):
        (XBL::XBLBindingChain::insertBindingChain):
        (XBL::XBLBindingChain::markForDeath):
        (XBL::XBLBindingChain::loaded):
        (XBL::XBLBindingChain::hasStylesheets):
        (XBL::XBLBindingChain::failed):
        (XBL::m_nextBinding):
        (XBL::XBLBinding::~XBLBinding):
        (XBL::XBLBinding::loaded):
        (XBL::XBLBinding::setXBLDocument):
        * khtml/xbl/xbl_binding.h: Added.
        (XBL::):
        (XBL::XBLBindingChain::uri):
        (XBL::XBLBindingChain::nextChain):
        (XBL::XBLBindingChain::previousChain):
        (XBL::XBLBindingChain::setNextBindingChain):
        (XBL::XBLBindingChain::setPreviousBindingChain):
        (XBL::XBLBindingChain::markedForDeath):
        (XBL::XBLBindingChain::element):
        * khtml/xbl/xbl_binding_manager.cpp: Added.
        (XBL::m_bindingChainTable):
        (XBL::XBLBindingManager::~XBLBindingManager):
        (XBL::XBLBindingManager::getBindingChain):
        (XBL::XBLBindingManager::setBindingChain):
        (XBL::XBLBindingManager::loadBindings):
        (XBL::XBLBindingManager::checkLoadState):
        * khtml/xbl/xbl_binding_manager.h: Added.
        * khtml/xbl/xbl_docimpl.cpp: Added.
        (XBL:::DocumentImpl):
        (XBL::XBLDocumentImpl::~XBLDocumentImpl):
        (XBL::XBLDocumentImpl::createTokenHandler):
        (XBL::XBLDocumentImpl::setPrototypeBinding):
        (XBL::XBLDocumentImpl::prototypeBinding):
        * khtml/xbl/xbl_docimpl.h: Added.
        (XBL::):
        * khtml/xbl/xbl_protobinding.cpp: Added.
        (XBL::m_handler):
        (XBL::XBLPrototypeBinding::initialize):
        (XBL::XBLPrototypeBinding::document):
        (XBL::XBLPrototypeBinding::addResource):
        * khtml/xbl/xbl_protobinding.h: Added.
        (XBL::XBLPrototypeBinding::element):
        (XBL::XBLPrototypeBinding::setHandler):
        (XBL::XBLPrototypeBinding::handler):
        * khtml/xbl/xbl_protohandler.cpp: Added.
        (XBL::m_unused):
        (XBL::XBLPrototypeHandler::~XBLPrototypeHandler):
        (XBL::XBLPrototypeHandler::appendData):
        * khtml/xbl/xbl_protohandler.h: Added.
        (XBL::XBLPrototypeHandler::setNext):
        (XBL::XBLPrototypeHandler::next):
        * khtml/xbl/xbl_protoimplementation.cpp: Added.
        (XBL::m_compiled):
        (XBL::m_next):
        (XBL::XBLPrototypeMember::appendData):
        (XBL:::XBLPrototypeMember):
        (XBL::XBLPrototypeMethod::isConstructor):
        (XBL::XBLPrototypeMethod::isDestructor):
        (XBL::XBLPrototypeMethod::addParameter):
        (XBL:::XBLPrototypeMethod):
        (XBL::XBLPrototypeConstructor::isConstructor):
        (XBL::XBLPrototypeDestructor::isDestructor):
        (XBL::m_readonly):
        (XBL::XBLPrototypeProperty::appendGetterText):
        (XBL::XBLPrototypeProperty::appendSetterText):
        * khtml/xbl/xbl_protoimplementation.h: Added.
        (XBL::XBLPrototypeMember::~XBLPrototypeMember):
        (XBL::XBLPrototypeMember::setNext):
        (XBL::XBLPrototypeMember::next):
        (XBL::XBLPrototypeImplementation::~XBLPrototypeImplementation):
        (XBL::XBLPrototypeImplementation::setMember):
        (XBL::XBLPrototypeParameter::m_next):
        (XBL::XBLPrototypeParameter::~XBLPrototypeParameter):
        (XBL::XBLPrototypeParameter::next):
        (XBL::XBLPrototypeParameter::setNext):
        (XBL::):
        * khtml/xbl/xbl_tokenizer.cpp: Added.
        (XBL::XBLTokenHandler::XBLTokenHandler):
        (XBL::XBLTokenHandler::~XBLTokenHandler):
        (XBL::XBLTokenHandler::xblDocument):
        (XBL::XBLTokenHandler::startElement):
        (XBL::XBLTokenHandler::endElement):
        (XBL::XBLTokenHandler::characters):
        (XBL::XBLTokenHandler::createBinding):
        (XBL::XBLTokenHandler::createHandler):
        (XBL::XBLTokenHandler::createResource):
        (XBL::XBLTokenHandler::createImplementation):
        (XBL::XBLTokenHandler::addMember):
        (XBL::XBLTokenHandler::createConstructor):
        (XBL::XBLTokenHandler::createDestructor):
        (XBL::XBLTokenHandler::createField):
        (XBL::XBLTokenHandler::createProperty):
        (XBL::XBLTokenHandler::createMethod):
        (XBL::XBLTokenHandler::createParameter):
        * khtml/xbl/xbl_tokenizer.h: Added.
        (XBL::):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::~DocumentImpl):
        (DocumentImpl::createTokenHandler):
        (DocumentTypeImpl::DocumentTypeImpl):
        (DocumentTypeImpl::~DocumentTypeImpl):
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentImpl::bindingManager):
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::getAttributeNS):
        (ElementImpl::childAllowed):
        * khtml/xml/dom_elementimpl.h:
        (DOM::ElementImpl::getAttribute):
        * khtml/xml/dom_nodeimpl.cpp:
        * khtml/xml/xml_tokenizer.cpp:
        (XMLHandler::XMLHandler):
        (XMLHandler::startDocument):
        (XMLHandler::startElement):
        (XMLHandler::endElement):
        (XMLHandler::startCDATA):
        (XMLHandler::endCDATA):
        (XMLHandler::characters):
        (XMLHandler::comment):
        (XMLHandler::processingInstruction):
        (XMLHandler::warning):
        (XMLHandler::error):
        (XMLHandler::fatalError):
        (XMLTokenizer::finish):
        * khtml/xml/xml_tokenizer.h:
        * kwq/KWQXmlSimpleReader.h:
        (QXmlSimpleReader::sawError):
        (QXmlSimpleReader::recordError):
        * kwq/KWQXmlSimpleReader.mm:
        (warningHandler):
        (fatalErrorHandler):
        (normalErrorHandler):
        (QXmlSimpleReader::parse):

2004-01-22  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3537542>: support for copying HTML

        Reviewed by dave.

        * khtml/xml/dom2_rangeimpl.cpp:
        (RangeImpl::toHTML): implemented
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::recursive_toHTMLWithRange): new
        * khtml/xml/dom_nodeimpl.h:
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge selectedHTML]): new
        (-[WebCoreBridge reconstructedSource]): new

2004-01-21  David Hyatt  <hyatt@apple.com>

	Fix for two margin collapsing edge cases.
	
        Reviewed by darin

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlockChildren):

2004-01-21  David Hyatt  <hyatt@apple.com>

	Switch from expat to libxml and implement namespace support in the simplereader.
	
        Reviewed by darin

        * ChangeLog:
        * expat/Changes: Removed.
        * expat/MANIFEST: Removed.
        * expat/README: Removed.
        * expat/expat_config.h: Removed.
        * expat/lib/ascii.h: Removed.
        * expat/lib/asciitab.h: Removed.
        * expat/lib/expat.h: Removed.
        * expat/lib/iasciitab.h: Removed.
        * expat/lib/internal.h: Removed.
        * expat/lib/latin1tab.h: Removed.
        * expat/lib/nametab.h: Removed.
        * expat/lib/utf8tab.h: Removed.
        * expat/lib/xmlparse.c: Removed.
        * expat/lib/xmlrole.c: Removed.
        * expat/lib/xmlrole.h: Removed.
        * expat/lib/xmltok.c: Removed.
        * expat/lib/xmltok.h: Removed.
        * expat/lib/xmltok_impl.c: Removed.
        * expat/lib/xmltok_impl.h: Removed.
        * expat/lib/xmltok_ns.c: Removed.
        * kwq/KWQXmlAttributes.h:
        (QXmlAttributes::QXmlAttributes):
        (QXmlAttributes::qName):
        (QXmlAttributes::uri):
        * kwq/KWQXmlAttributes.mm:
        (QXmlAttributes::QXmlAttributes):
        (QXmlAttributes::~QXmlAttributes):
        (QXmlAttributes::operator=):
        (QXmlAttributes::localName):
        (QXmlAttributes::split):
        * kwq/KWQXmlSimpleReader.h:
        (KWQXmlNamespace::m_ref):
        (KWQXmlNamespace::uriForPrefix):
        (KWQXmlNamespace::ref):
        (KWQXmlNamespace::deref):
        (QXmlParseException::QXmlParseException):
        (QXmlParseException::message):
        (QXmlParseException::columnNumber):
        (QXmlParseException::lineNumber):
        (QXmlSimpleReader::errorHandler):
        (QXmlSimpleReader::xmlNamespace):
        (QXmlSimpleReader::parserStopped):
        * kwq/KWQXmlSimpleReader.mm:
        (startElementHandler):
        (endElementHandler):
        (charactersHandler):
        (processingInstructionHandler):
        (cdataBlockHandler):
        (commentHandler):
        (warningHandler):
        (fatalErrorHandler):
        (QXmlSimpleReader::pushNamespaces):
        (QXmlSimpleReader::popNamespaces):
        (QXmlSimpleReader::parse):
        (QXmlSimpleReader::stopParsing):
        (QXmlSimpleReader::lineNumber):
        (QXmlSimpleReader::columnNumber):

2004-01-21  David Hyatt  <hyatt@apple.com>

        Reviewed by NOBODY (OOPS!).

        * ForwardingHeaders/xbl/xbl_binding_manager.h: Added.
        * ForwardingHeaders/xbl/xbl_docimpl.h: Added.
        * WebCore.pbproj/project.pbxproj:
        * expat/COPYING: Removed.
        * expat/Changes: Removed.
        * expat/MANIFEST: Removed.
        * expat/README: Removed.
        * expat/expat_config.h: Removed.
        * expat/lib/ascii.h: Removed.
        * expat/lib/asciitab.h: Removed.
        * expat/lib/expat.h: Removed.
        * expat/lib/iasciitab.h: Removed.
        * expat/lib/internal.h: Removed.
        * expat/lib/latin1tab.h: Removed.
        * expat/lib/nametab.h: Removed.
        * expat/lib/utf8tab.h: Removed.
        * expat/lib/xmlparse.c: Removed.
        * expat/lib/xmlrole.c: Removed.
        * expat/lib/xmlrole.h: Removed.
        * expat/lib/xmltok.c: Removed.
        * expat/lib/xmltok.h: Removed.
        * expat/lib/xmltok_impl.c: Removed.
        * expat/lib/xmltok_impl.h: Removed.
        * expat/lib/xmltok_ns.c: Removed.
        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/dom/dom_element.cpp:
        (Element::getAttributeNS):
        * khtml/misc/loader.cpp:
        (CachedXBLDocument::CachedXBLDocument):
        (CachedXBLDocument::~CachedXBLDocument):
        (CachedXBLDocument::ref):
        (CachedXBLDocument::deref):
        (CachedXBLDocument::data):
        (CachedXBLDocument::checkNotify):
        (CachedXBLDocument::error):
        (DocLoader::requestXBLDocument):
        (Cache::requestXBLDocument):
        (CachedObjectClient::setXBLDocument):
        (Cache::getStatistics):
        * khtml/misc/loader.h:
        (khtml::CachedObject::):
        (khtml::CachedXBLDocument::document):
        (khtml::CachedXBLDocument::schedule):
        * khtml/misc/loader_client.h:
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlockChildren):
        * khtml/rendering/render_style.cpp:
        (bindingURI):
        (marquee):
        (StyleCSS3NonInheritedData::~StyleCSS3NonInheritedData):
        (StyleCSS3NonInheritedData::bindingsEquivalent):
        (StyleCSS3NonInheritedData::operator==):
        (:m_next):
        (BindingURI::~BindingURI):
        (BindingURI::copy):
        (BindingURI::operator==):
        (RenderStyle::addBindingURI):
        * khtml/rendering/render_style.h:
        (khtml::BindingURI::operator!=):
        (khtml::BindingURI::next):
        (khtml::BindingURI::setNext):
        (khtml::BindingURI::uri):
        (khtml::RenderStyle::bindingURIs):
        (khtml::RenderStyle::setHasAutoZIndex):
        (khtml::RenderStyle::setZIndex):
        (khtml::RenderStyle::deleteBindingURIs):
        (khtml::RenderStyle::inheritBindingURIs):
        * khtml/xbl/xbl_binding.cpp: Added.
        (XBL::m_markedForDeath):
        (XBL::XBLBindingChain::~XBLBindingChain):
        (XBL::XBLBindingChain::firstStyleBindingChain):
        (XBL::XBLBindingChain::lastBindingChain):
        (XBL::XBLBindingChain::insertBindingChain):
        (XBL::XBLBindingChain::markForDeath):
        (XBL::XBLBindingChain::loaded):
        (XBL::XBLBindingChain::hasStylesheets):
        (XBL::XBLBindingChain::failed):
        (XBL::m_nextBinding):
        (XBL::XBLBinding::~XBLBinding):
        (XBL::XBLBinding::loaded):
        (XBL::XBLBinding::setXBLDocument):
        * khtml/xbl/xbl_binding.h: Added.
        (XBL::):
        (XBL::XBLBindingChain::uri):
        (XBL::XBLBindingChain::nextChain):
        (XBL::XBLBindingChain::previousChain):
        (XBL::XBLBindingChain::setNextBindingChain):
        (XBL::XBLBindingChain::setPreviousBindingChain):
        (XBL::XBLBindingChain::markedForDeath):
        (XBL::XBLBindingChain::element):
        * khtml/xbl/xbl_binding_manager.cpp: Added.
        (XBL::m_bindingChainTable):
        (XBL::XBLBindingManager::~XBLBindingManager):
        (XBL::XBLBindingManager::getBindingChain):
        (XBL::XBLBindingManager::setBindingChain):
        (XBL::XBLBindingManager::loadBindings):
        (XBL::XBLBindingManager::checkLoadState):
        * khtml/xbl/xbl_binding_manager.h: Added.
        * khtml/xbl/xbl_docimpl.cpp: Added.
        (XBL:::DocumentImpl):
        (XBL::XBLDocumentImpl::~XBLDocumentImpl):
        (XBL::XBLDocumentImpl::createTokenHandler):
        (XBL::XBLDocumentImpl::setPrototypeBinding):
        (XBL::XBLDocumentImpl::prototypeBinding):
        * khtml/xbl/xbl_docimpl.h: Added.
        (XBL::):
        * khtml/xbl/xbl_protobinding.cpp: Added.
        (XBL::m_handler):
        (XBL::XBLPrototypeBinding::initialize):
        (XBL::XBLPrototypeBinding::document):
        (XBL::XBLPrototypeBinding::addResource):
        * khtml/xbl/xbl_protobinding.h: Added.
        (XBL::XBLPrototypeBinding::element):
        (XBL::XBLPrototypeBinding::setHandler):
        (XBL::XBLPrototypeBinding::handler):
        * khtml/xbl/xbl_protohandler.cpp: Added.
        (XBL::m_unused):
        (XBL::XBLPrototypeHandler::~XBLPrototypeHandler):
        (XBL::XBLPrototypeHandler::appendData):
        * khtml/xbl/xbl_protohandler.h: Added.
        (XBL::XBLPrototypeHandler::setNext):
        (XBL::XBLPrototypeHandler::next):
        * khtml/xbl/xbl_protoimplementation.cpp: Added.
        (XBL::m_compiled):
        (XBL::m_next):
        (XBL::XBLPrototypeMember::appendData):
        (XBL:::XBLPrototypeMember):
        (XBL::XBLPrototypeMethod::isConstructor):
        (XBL::XBLPrototypeMethod::isDestructor):
        (XBL::XBLPrototypeMethod::addParameter):
        (XBL:::XBLPrototypeMethod):
        (XBL::XBLPrototypeConstructor::isConstructor):
        (XBL::XBLPrototypeDestructor::isDestructor):
        (XBL::m_readonly):
        (XBL::XBLPrototypeProperty::appendGetterText):
        (XBL::XBLPrototypeProperty::appendSetterText):
        * khtml/xbl/xbl_protoimplementation.h: Added.
        (XBL::XBLPrototypeMember::~XBLPrototypeMember):
        (XBL::XBLPrototypeMember::setNext):
        (XBL::XBLPrototypeMember::next):
        (XBL::XBLPrototypeImplementation::~XBLPrototypeImplementation):
        (XBL::XBLPrototypeImplementation::setMember):
        (XBL::XBLPrototypeParameter::m_next):
        (XBL::XBLPrototypeParameter::~XBLPrototypeParameter):
        (XBL::XBLPrototypeParameter::next):
        (XBL::XBLPrototypeParameter::setNext):
        (XBL::):
        * khtml/xbl/xbl_tokenizer.cpp: Added.
        (XBL::XBLTokenHandler::XBLTokenHandler):
        (XBL::XBLTokenHandler::~XBLTokenHandler):
        (XBL::XBLTokenHandler::xblDocument):
        (XBL::XBLTokenHandler::startElement):
        (XBL::XBLTokenHandler::endElement):
        (XBL::XBLTokenHandler::characters):
        (XBL::XBLTokenHandler::createBinding):
        (XBL::XBLTokenHandler::createHandler):
        (XBL::XBLTokenHandler::createResource):
        (XBL::XBLTokenHandler::createImplementation):
        (XBL::XBLTokenHandler::addMember):
        (XBL::XBLTokenHandler::createConstructor):
        (XBL::XBLTokenHandler::createDestructor):
        (XBL::XBLTokenHandler::createField):
        (XBL::XBLTokenHandler::createProperty):
        (XBL::XBLTokenHandler::createMethod):
        (XBL::XBLTokenHandler::createParameter):
        * khtml/xbl/xbl_tokenizer.h: Added.
        (XBL::):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::~DocumentImpl):
        (DocumentImpl::createTokenHandler):
        (DocumentTypeImpl::DocumentTypeImpl):
        (DocumentTypeImpl::~DocumentTypeImpl):
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentImpl::bindingManager):
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::getAttributeNS):
        * khtml/xml/dom_elementimpl.h:
        (DOM::ElementImpl::getAttribute):
        * khtml/xml/dom_nodeimpl.cpp:
        * khtml/xml/xml_tokenizer.cpp:
        (XMLHandler::startElement):
        (XMLTokenizer::finish):
        * khtml/xml/xml_tokenizer.h:
        * kwq/KWQXmlAttributes.h:
        (QXmlAttributes::QXmlAttributes):
        (QXmlAttributes::qName):
        (QXmlAttributes::uri):
        * kwq/KWQXmlAttributes.mm:
        (QXmlAttributes::QXmlAttributes):
        (QXmlAttributes::~QXmlAttributes):
        (QXmlAttributes::operator=):
        (QXmlAttributes::localName):
        (QXmlAttributes::split):
        * kwq/KWQXmlSimpleReader.h:
        (XmlNamespace::m_ref):
        (XmlNamespace::uriForPrefix):
        (XmlNamespace::ref):
        (XmlNamespace::deref):
        (QXmlParseException::QXmlParseException):
        (QXmlParseException::message):
        (QXmlParseException::columnNumber):
        (QXmlParseException::lineNumber):
        (QXmlSimpleReader::errorHandler):
        (QXmlSimpleReader::xmlNamespace):
        (QXmlSimpleReader::parserStopped):
        * kwq/KWQXmlSimpleReader.mm:
        (startElementHandler):
        (endElementHandler):
        (charactersHandler):
        (processingInstructionHandler):
        (cdataBlockHandler):
        (commentHandler):
        (warningHandler):
        (fatalErrorHandler):
        (QXmlSimpleReader::pushNamespaces):
        (QXmlSimpleReader::popNamespaces):
        (QXmlSimpleReader::parse):
        (QXmlSimpleReader::stopParsing):
        (QXmlSimpleReader::lineNumber):
        (QXmlSimpleReader::columnNumber):
        * layout-tests/fast/overflow/003.xml:

2004-01-21  David Hyatt  <hyatt@apple.com>

	Add some methods to dicts and stacks that exist in Qt.
	
        Reviewed by darin

        * kwq/KWQDict.h:
        (QDict::replace):
        * kwq/KWQPtrDict.h:
        (QPtrDict::replace):
        (QPtrDict::find):
        * kwq/KWQPtrStack.h:
        (QPtrStack::current):
        (QPtrStack::setAutoDelete):

2004-01-19  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John, Ken, Dave.

	<rdar://problem/3533319>: Safari allows upload of arbitrary local files w/o user's knowledge or permission
        
	* khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::value): Don't fall back to the value
	attribute for file inputs, since that way malicious HTML could
	force the user to upload files unexpectedly.

2004-01-18  David Hyatt  <hyatt@apple.com>

	Fix for 3532569, bugzilla patch viewer doesn't work.  My previous fix for 3531983 caused moves to happen
	when they should not have, due to childX and childY not being implemented at all on KWQScrollView.

        Reviewed by darin
	
        * kwq/KWQScrollView.mm:
        (QScrollView::childX):
        (QScrollView::childY):

=== Safari-124 ===

2004-01-16  David Hyatt  <hyatt@apple.com>

	Fix for 3531983, fixed positioning not working for widgets.  Make sure to move widgets at paint time
	if necessary.
	
        Reviewed by darin
	
        * khtml/rendering/render_replaced.cpp:
        (RenderWidget::paintObject):

2004-01-15  David Hyatt  <hyatt@apple.com>

	Fix for 3530734, many java applets don't show up.  Go ahead and just use the width/height from the style
	system as the initial size when the width/height are fixed.
	
        Reviewed by rjw

        * khtml/rendering/render_applet.cpp:
        (RenderApplet::createWidgetIfNecessary):

2004-01-15  Richard Williamson   <rjw@apple.com>

	Fixed 3529426.  Exclude pages that contain Java applets from 
	the page cache.  The means applets get the normal stop/destroy
	messages that they expect when a user leaves a page.

        Reviewed by John.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::canCachePage):

2004-01-15  Vicki Murley  <vicki@apple.com>

        Reviewed by Darin.

        * WebCore.pbproj/project.pbxproj: Update copyright date to 2004.

2004-01-15  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed 3529943: REGRESSION (119-120): nil-deref in KHTMLPart::javaEnabled when hitting back button

        * khtml/html/html_objectimpl.cpp: (HTMLAppletElementImpl::getAppletInstance):
        Add missing nil check that the other call to javaEnabled has.

=== Safari-122 ===

2004-01-14  David Hyatt  <hyatt@apple.com>

	Fix for 3527819, marquee makes page layout too wide.  Make sure marquees have a minimum width of 0.
	
        Reviewed by john

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::calcMinMaxWidth):
        (khtml::RenderBlock::calcInlineMinMaxWidth):

2004-01-13  David Hyatt  <hyatt@apple.com>

	Fix for 3527707, crash on w3c css page.  Make sure height isn't allowed to be negative when computing
	positioned elements' heights.  Also bulletproof the crash in case there are other negative height code
	paths.
	
        Reviewed by john

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::getAbsoluteRepaintRectIncludingFloats):
        * khtml/rendering/render_box.cpp:
        (RenderBox::calcAbsoluteVertical):

2004-01-13  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3527853>: REGRESSION (119-120): Peoplesoft menus do not work
	
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::scrollToAnchor): Right before calling checkCompleted(), set
	m_bComplete to false, so it can get set right back to true if we're actually done
	loading and fire all the right signals.

2004-01-13  David Hyatt  <hyatt@apple.com>

	Fix for 3526710, applets need to have the correct initial size after a layout has been done, since our
	Java applets can't yet resize.
	
        Reviewed by john

        * khtml/rendering/render_applet.cpp:
        (RenderApplet::createWidgetIfNecessary):
        (RenderApplet::layout):
        (RenderEmptyApplet::layout):

=== Safari-121 ===

2004-01-11  Darin Adler  <darin@apple.com>

        - fixed Dave's check-in so it compiles; I assume he forgot to land one source file

        * khtml/khtmlview.h: Add RenderPart to the friends of KHTMLView.

2004-01-11  David Hyatt  <hyatt@apple.com>

	Fix for frame repainting bugs (3510669, 3515442).  This is a narrower fix than the previous attempt.
	
        Reviewed by darin

        * khtml/rendering/render_frames.cpp:
        (RenderPart::updateWidgetPositions):
        * khtml/rendering/render_frames.h:
        * khtml/rendering/render_replaced.cpp:
        (RenderWidget::updateWidgetPositions):

2004-01-10  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3525468: REGRESSION (114-115): HOMEPAGE: after hitting textarea limit, backspace key is ignored

        * kwq/KWQEvent.mm:
        (keyIdentifierForKeyEvent): Treat 7F as 08; matches other browsers.
        (QKeyEvent::QKeyEvent): Ditto.

2004-01-09  David Hyatt  <hyatt@apple.com>

	Fixes for 3510669 and 3515442, blank frame problems caused by WebKit's use of a separate needsLayout boolean.
	
        Reviewed by darin

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge setNeedsLayout]):

2004-01-08  David Hyatt  <hyatt@apple.com>

	Fix for 3524118, floats don't repaint when moved.
	
        Reviewed by darin

         * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::positionNewFloats):
 
2004-01-08  David Hyatt  <hyatt@apple.com>

	Fix for 3519003, crash in mail because <dir> and <menu> don't allow the same children as <ul> and <ol>.
	
        Reviewed by darin

        * khtml/html/dtd.cpp:
        (DOM::checkChild):

2004-01-08  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3524359>: REGRESSSION (119-120): 
        Double click to select text in form broken

        Reviewed by Dave and Darin.

        * khtml/khtmlview.cpp:
        (KHTMLView::dispatchMouseEvent):
        Don't blur the focused node if that's the one you clicked on.

2004-01-07  Richard Williamson   <rjw@apple.com>

	Fixed 3517550.  Named array lookup of applet failed, i.e.:
	var appletobj = document.applets['myapplet']

        Reviewed by Chris.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLCollection::getNamedItems):

=== Safari-120 ===

2004-01-06  David Hyatt  <hyatt@apple.com>

	Possible fix for table bugs 3510005 and 3492945, repainting glitches that occurred when table cells moved.

	Fix for 33522497, empty AXElements appear in AXBrowser.
	
        Reviewed by darin

        * khtml/rendering/render_table.cpp:
        (RenderTableSection::layoutRows):
        (RenderTableCell::setWidth):
        * khtml/rendering/render_table.h:

        * kwq/KWQAccObject.mm:
        (-[KWQAccObject accessibilityIsIgnored]):

2004-01-06  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3484465>: REGRESSION (118): button click does 
        not take focus away from <textarea>; breaks Outlook Web Access

        Reviewed by Dave.

        * khtml/khtmlview.cpp:
        (KHTMLView::dispatchMouseEvent):
        Removed nodeimpl == nil test that was preventing button/link clicks
        from blurring previously-focused text field.

2004-01-06  David Hyatt  <hyatt@apple.com>

	Fix for 3520636, infinite loop in page breaking code when printing.
	
        Reviewed by darin

        * khtml/rendering/render_text.cpp:
        (RenderText::paintObject):
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge computePageRectsWithPrintWidth:printHeight:]):

2004-01-05  David Hyatt  <hyatt@apple.com>

	Fix for 3521466, generated image content should not try to calcWidth/height when it isn't yet rooted in
	the rendering tree.
	
        Reviewed by john

        * khtml/rendering/render_image.cpp:
        (RenderImage::setPixmap):

2003-12-26  Darin Adler  <darin@apple.com>

        - one more small step to make -[KWQPageState dealloc] safer

        * kwq/KWQPageState.mm: (-[KWQPageState dealloc]): Only do the real detach() if the
        document is already in the detached state; we don't want to detach prematurely.

2003-12-23  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3451306>: address book search fails at Airborne 
        Express Corporate site (Apple Shipping wants to use it)

        Reviewed by Darin.

        * khtml/ecma/kjs_html.cpp:
        commented out definition of document.all; now sites like this one that
        set document.all to a value will work.
        * khtml/ecma/kjs_html.lut.h: regenerated this file

2003-12-23  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - another try at fixing the -[KWQPageState dealloc] bug, even though we don't fully understand it
        
        This change saves the renderer inside the document rather than in the KWQPageState to
        try to eliminate the possibility that multiple KWQPageState objects could restore the
        same renderer multiple times, resulting in multiple detaches of the same renderer.

        * khtml/xml/dom_docimpl.h: Add a m_savedRenderer field.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl): Initialize m_savedRenderer to 0.
        (DocumentImpl::~DocumentImpl): Added some asserts to make sure we don't get destroyed
        while we are in the page cache.
        (DocumentImpl::attach): Added an assert.
        (DocumentImpl::setInPageCache): Save the renderer when setting the flag, and restore
        the renderer when clearing it.

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::openURLFromPageCache): Instead of doing a restoreRenderer
        call, just do setInPageCache(NO), which will restore the renderer as a side effect.

        * kwq/KWQPageState.h: Removed the renderer method and field.
        * kwq/KWQPageState.mm:
        (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:]):
        Don't store a pointer to the renderer.
        (-[KWQPageState clear]): New method, shared by invalidate and dealloc.
        (-[KWQPageState invalidate]): Removed code relating to "relinquishing object ownership";
        just deallocate everything here without doing a detach().
        (-[KWQPageState dealloc]): Removed restoreRenderer now that setInPageCache(NO) handles that.
        Added some assertions. Share code with invalidate by calling clear.

2003-12-22  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3508798>: ACCESSIBILITY: role/description/value strings not defined

        Reviewed by Darin.

        * kwq/KWQAccObject.mm:
        (-[KWQAccObject roleDescription]):
        provide not-yet-localized strings for all the role descriptions that this class uses.
        (-[KWQAccObject value]):
        return nil string rather than dummy string for the cases where we don't have a value attribute.
        (-[KWQAccObject accessibilityActionDescription:]):
        changed comment passed to UI_STRING bogus macro so it won't have to change if/when macro
        loses its bogosity

2003-12-22  John Sullivan  <sullivan@apple.com>

	- WebCore part of fix for <rdar://problem/3515706>: 
	REGRESSION (100-118): Web Kit printing does not honor Page Setup scale factor

        Reviewed by Darin.

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge computePageRectsWithPrintWidth:printHeight:]):
	renamed method for clarity; now iterates over pages horizontally as well 
	as vertically; assume x starts at 0 as we were already assuming that y
	starts at 0; now returns autoreleased result

2003-12-22  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - follow-on to my fix for 3467919: handle collapsed spaces at the starts of runs too, not just at the
          end, and make sure that a space inherits style from the run it was collapsed from rather than always
          from the run it precedes

        * khtml/khtml_part.cpp: (KHTMLPart::text): Add code to deal with collapsed spaces at the start of runs.
        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::attributedString): Change code to keep the style of a space that
        was collapsed at the end of the run, and use that styled space if necessary. Also add the code to deal
        with collapsed spaces at the start of runs. Also remove comment that refers to long-since-deleted code.

2003-12-21  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3467919: REGRESSION (91-92): space missing when copying text with link at start or end of line

        * khtml/khtml_part.cpp: (KHTMLPart::text):
        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::attributedString):
        Changed both "turn HTML into text" code paths to generate spaces in a different way.
        First, corrected the logic so it notices spaces left out at the end of a RenderText object.
        Second, don't emit the space until we are emitting more text, to prevent emitting trailing
        spaces. To get this completely right for the attributed string case, I had to add code to
        adjust the offset used to mark links.

2003-12-21  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3477453: nowrap in a fixed-width TD is ignored on screen but not when printed (Williams-Sonoma)

        * khtml/rendering/render_table.cpp: (RenderTableCell::setStyle):
        Compute the proper whitespace mode before calling the base class setStyle,
        since the base class setStyle may create styles that inherit from our style,
        and we want them to inherit the computed whitespace mode.

        * WebCore.pbproj/project.pbxproj: Let Xcode be 1.1, as it was meant to be.

2003-12-21  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed a storage leak

        * khtml/rendering/render_style.h: Added a destructor and a private unimplemented assignment
        operator to StyleCSS3InheritedData, since the textShadow field that needs to be allocated
        and deallocated and the default destructor and assignment operator don't do that.
        * khtml/rendering/render_style.cpp: (StyleCSS3InheritedData::~StyleCSS3InheritedData):
        Added destructor that deletes the textShadow object.

        - fixed locking for JavaScript debugging tools in Caches window

        * kwq/WebCoreJavaScript.mm:
        (+[WebCoreJavaScript rootObjectClasses]): Lock and unlock around call to JavaScriptCore.
        (+[WebCoreJavaScript garbageCollect]): Ditto.

2003-12-19  David Hyatt  <hyatt@apple.com>

	Fix for 3483130, repaint doesn't occur when font is decreased dynamically when at the bottom of
	amazon.com.
	
        Reviewed by john

        * khtml/khtml_part.cpp:
        (KHTMLPart::setZoomFactor):
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge setTextSizeMultiplier:]):

2003-12-19  Richard Williamson   <rjw@apple.com>

	Fixed 3515590.  Return Undefined to JS for applet if
	Java is disabled.

        Reviewed by Chris.

        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::getAppletInstance):

2003-12-19  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Chris.

	<rdar://problem/3512545>: reproducible assertion failure in KWQKHTMLPart::addData scrolling to anchor while page loads
        
	* kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::scrollToAnchor): Don't pretend we finished loading,
	because we don't actually make anchor scrolling stop the current
	page load.

=== Safari-119 ===

2003-12-18  Richard Williamson   <rjw@apple.com>

	Fixed 3511415.  We have to un-visually order visually ordered text
	before passing to ATSU.

        Reviewed by John.

        * khtml/rendering/font.cpp:
        (Font::drawHighlightForText):
        (Font::drawText):
        * khtml/rendering/font.h:
        * khtml/rendering/render_text.cpp:
        (InlineTextBox::paintSelection):
        (RenderText::paintObject):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::drawText):
        (QPainter::drawHighlightForText):
        * kwq/WebCoreTextRenderer.h:
        * kwq/WebCoreTextRendererFactory.m:
        (WebCoreInitializeEmptyTextStyle):

2003-12-17  Richard Williamson   <rjw@apple.com>

        Reviewed by NOBODY (OOPS!).

        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::getAppletInstance):
        * khtml/html/html_objectimpl.h:
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::getAppletInstanceForView):
        (KWQKHTMLPart::addPluginRootObject):
        (KWQKHTMLPart::cleanupPluginRootObjects):
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge init]):

2003-12-17  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed 3469085: can't tab to all links on aintitcool.com

        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::isFocusable): Re-implemented this to check width and height of
        all continuations, not just the main render object. Also, check the absoluteRects after
        checking all the render objects to catch things like floats.
        (HTMLAnchorElementImpl::isMouseFocusable): Clean up the code here a bit.

        * khtml/rendering/render_inline.h:
        * khtml/rendering/render_inline.cpp: (RenderInline::absoluteRects):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_object.cpp: (RenderObject::absoluteRects):
        * khtml/rendering/render_text.h:
        * khtml/rendering/render_text.cpp: (RenderText::absoluteRects):
        * kwq/KWQAccObject.mm: (boundingBoxRect):
        Use QValueList instead of QPtrList for clarity and to fix storage leaks.

=== Safari-118 ===

2003-12-16  David Hyatt  <hyatt@apple.com>

	Fix for 3510956, crash on mezzoblue.com.  Relax the float-list searching code that runs when
	a float is removed.
	
        Reviewed by darin

        * khtml/rendering/render_object.cpp:
        (checkFloats):
        (RenderObject::removeFromObjectLists):

2003-12-16  John Sullivan  <sullivan@apple.com>

        fixed <rdar://problem/3482852>: oft-seen, non-repro, nil-deref in 
        HTMLTokenizer::notifyFinished (snapfish.com, etc.)
        
        At least one of the dupes of this bug is a separate (still reproducible) issue;
        I'll clone it back to life and test the others.

        Reviewed by Darin.

        * khtml/html/htmltokenizer.cpp:
        (HTMLTokenizer::notifyFinished):
        Move check of cachedScript.isEmpty() until after scriptExecution()
        call, because cachedScript.isEmpty() value can be changed by that call.

2003-12-15  David Hyatt  <hyatt@apple.com>

	Fix for 3508807, positions/sizes wrong for text elts and multi-line elts for accessibility.
	
        Reviewed by john

        * khtml/rendering/render_inline.cpp:
        (RenderInline::absoluteRects):
        * khtml/rendering/render_inline.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::absoluteRects):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_text.cpp:
        (RenderText::absoluteRects):
        * khtml/rendering/render_text.h:
        * kwq/KWQAccObject.mm:
        (boundingBoxRect):
        (-[KWQAccObject position]):
        (-[KWQAccObject size]):

2003-12-15  Richard Williamson   <rjw@apple.com>

	Return 0 if the view doesn't have a bridge.

        Reviewed by John.

        * kwq/WebCoreBridge.mm:
        (rootForView):

2003-12-15  David Hyatt  <hyatt@apple.com>

	Fix for 3508792.  Remove tables and cells as AxObjects.
	
        Reviewed by john

        * kwq/KWQAccObject.mm:
        (-[KWQAccObject role]):
        (-[KWQAccObject accessibilityIsIgnored]):

2003-12-15  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3510459>: REGRESSION (100-113): Pressing button at google.com 
        removes focus from text field

        Reviewed by Dave.

        * khtml/khtmlview.cpp:
        (KHTMLView::dispatchMouseEvent):
        Don't clear the focused widget when a mousedown occurs on a widget that is focusable
        in the abstract sense but is not mouse focusable or currently keyboard focusable. This
        matches the behavior of older Safaris (clicking in background or page text will make the
        webview itself be first responder, but clicking on a button won't).

2003-12-14  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3458937: nil-deref in timed layout

        * khtml/khtmlview.cpp: (KHTMLView::layout): Add a nil check for m_part.

2003-12-14  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3311205: click() on a file input type form element does not work bring up the file chooser as it does in IE

        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::click): Add a case for FILE that calls RenderFileButton's click() function.
        Get rid of the default case and list more cases explicitly.
        (HTMLInputElementImpl::accessKeyAction): Change FILE from just focus to focus/click.

        * khtml/rendering/render_form.h: Added a click() function to RenderFileButton.
        * khtml/rendering/render_form.cpp:
        (RenderFileButton::slotTextChanged): Added call to onChange on the element to match text input
        fields; helpful for the test case Adobe supplied.
        (RenderFileButton::click): Added. Calls click() on KWQFileButton.

        * kwq/KWQFileButton.h: Added a click function.
        * kwq/KWQFileButton.mm: (KWQFileButton::click): Added. Calls performClick on the file button.

        * kwq/WebCoreBridge.h: Add a performClick method to WebCoreFileButton.

2003-12-13  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3269212>: FILEMAKER: can't use Option objects created in a different window

        * khtml/ecma/kjs_binding.cpp:
        (ScriptInterpreter::updateDOMObjectDocument): Update per-document
	caching for the DOM object - let it be protected by both the old
	and the new document.
        * khtml/ecma/kjs_binding.h: Prototype new method.
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::setDocument): New method to change a node's document pointer.
        (NodeImpl::checkAddChild): If the new child node is owned by the
	wrong document but not actually in it, change its document (using
	the two aforementioned methods) instead of throwing an exception.
	* khtml/xml/dom_nodeimpl.h: Prototype new method.

2003-12-14  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3332280: REGRESSION (74-85): setting src of iframe results in two GETs

        * khtml/html/html_baseimpl.h: Added openURL virtual function.
        * khtml/html/html_baseimpl.cpp:
        (HTMLFrameElementImpl::updateForNewURL): Call openURL to do the meat of the work,
        since it's different for frames and iframes.
        (HTMLFrameElementImpl::openURL): Move the part that's different for frames in here.
        (HTMLFrameElementImpl::parseAttribute): Call setLocation to share code.
        (HTMLFrameElementImpl::setLocation): Do nothing if the location is not changing.
        Not needed to fix this bug, but could eliminate other cases of extra GETs.
        (HTMLIFrameElementImpl::parseAttribute): Remove special handling of SRC, because now
        we will end up calling openURL, which will do the right thing for iframes.
        (HTMLIFrameElementImpl::openURL): Instead of doing the change to the frame directly,
        use updateWidget, since that's what we do for other changes to iframes. To trigger a
        call to updateWidget(), set needWidgetUpdate and mark the node changed.

2003-12-13  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3507885>: REGRESSION (100-116): frames missing due to cross-domain check (derstandard.at)
        
	* khtml/ecma/kjs_window.cpp:
        (Window::isSafeScript): Loosen the frame access rules a bit. We already allowed access to
	a document loaded as empty from the parent or opener. Now also allow access from any document
	in the same domain as the parent or opener, so that, for instance, a sibling frame can access it
	so long as it is in the same domain as the parent.

2003-12-13  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3506204: homepage.mac slide show window is wrong size on 2nd monitor

        * kwq/KWQApplication.mm: (QDesktopWidget::screenGeometry): Add code to flip the Y coordinate.
        This has no effect on the main screen, but a big effect on others. I used the same code to
        flip Y screen coordinates that is used KWQWindowWidget.mm and KWQKHTMLPartBrowserExtension.mm.
        * kwq/KWQKWinModule.mm: (KWinModule::workArea): Replaced the incorrect code to flip the Y
        coordinate here with correct code. The code flipped based on the frame of the main screen,
        but it needs to flip based on the frame of screen 0.

2003-12-12  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3505208>: keys added to keychain from KEYGEN need better UI names

        Reviewed by rjw.

        * khtml/html/html_formimpl.cpp:
        (HTMLKeygenElementImpl::encoding): pass the page URL to signedPublicKeyAndChallengeString
        * kwq/KWQKSSLKeyGen.h:
        * kwq/KWQKSSLKeyGen.mm:
        (KSSLKeyGen::signedPublicKeyAndChallengeString): take a URL
        * kwq/WebCoreKeyGenerator.h:
        * kwq/WebCoreKeyGenerator.m:
        (-[WebCoreKeyGenerator signedPublicKeyAndChallengeStringWithStrengthIndex:challenge:pageURL:]): take a URL

2003-12-12  David Hyatt  <hyatt@apple.com>

	Fix for 3254534, CSS background-image style should be loaded lazily only when used.
	
        Reviewed by rjw

        * ChangeLog:
        * khtml/css/css_valueimpl.cpp:
        (CSSImageValueImpl::CSSImageValueImpl):
        (CSSImageValueImpl::~CSSImageValueImpl):
        (CSSImageValueImpl::image):
        * khtml/css/css_valueimpl.h:
        
2003-12-11  David Hyatt  <hyatt@apple.com>

	WebCore part of 3453214.  This ensures that all outline styles except for auto (which has a CG bug) will
	be displayed properly during the PaintActionOutline phase.
	
        Reviewed by john and darin

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paint):
        * khtml/rendering/render_box.cpp:
        (RenderBox::setStyle):
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::RenderCanvas):
        * khtml/rendering/render_canvas.h:
        (khtml::RenderCanvas::setMaximalOutlineSize):
        (khtml::RenderCanvas::maximalOutlineSize):
        * khtml/rendering/render_object.cpp:
        (RenderObject::maximalOutlineSize):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::paint):
        * khtml/rendering/render_table.cpp:
        (RenderTable::paint):
        (RenderTableSection::paint):
        (RenderTableCell::paint):

2003-12-12  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3508825>: REGRESSION (100-116): crash in 
        HTMLGenericFormElementImpl::attach at sonyericsson.com

        Reviewed by Maciej.

        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::attach):
        Move a few lines inside an existing nil check to prevent nil dereference.

2003-12-12  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3508760>: tabbing to out-of-sight link behaves 
        differently than tabbing to out-of-sight form control

        Reviewed by Dave.

        * kwq/KWQScrollView.h:
        * kwq/KWQScrollView.mm:
        (QScrollView::ensureVisible):
        added comments and changed parameter names to reveal differences between
        what we've implemented and what QScrollView was intended to do.
        (QScrollView::ensureRectVisibleCentered):
        New method that calls _KWQ_scrollRectToVisible, which is the method
        we use when scrolling to reveal form controls.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::nextKeyViewInFrame):
        call ensureRectVisibleCentered so tabbing to a link will use the
        same scroll-to-reveal code as tabbing to a form control
        
2003-12-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	<rdar://problem/3507856>: XMLHttpRequest xhtml test displays but doesn't load

        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequestProtoFunc::tryCall): complete the URL using the document,
	not the htmlDocument.

2003-12-12  Richard Williamson   <rjw@apple.com>

	Replace call to global functions with static member functions.

        Reviewed by Ken.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::cleanupPluginRootObjects):
        * kwq/WebCoreBridge.mm:
        (rootForView):
        (-[WebCoreBridge init]):

2003-12-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3464315>: createDocument creates document with initial child element, unlike other browsers
	
        * khtml/xml/dom_docimpl.cpp:
        (DOMImplementationImpl::createDocument): Don;t add initial element.

2003-12-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin. 

	<rdar://problem/3507863>: XMLHttpRequest should not parse response if HTML
        
	* khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::getValueProperty):

2003-12-11  Richard Williamson   <rjw@apple.com>

	Cleaned up and verified reference counting scheme, and
	dereferencing of vended JavaScript objects when applet is
	destroyed (actually when part is destroyed).

        Reviewed by Ken.

        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::~KWQKHTMLPart):
        (KWQKHTMLPart::getAppletInstanceForView):
        (KWQKHTMLPart::addPluginRootObject):
        (KWQKHTMLPart::cleanupPluginRootObjects):
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (rootForView):
        (-[WebCoreBridge init]):

2003-12-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	<rdar://problem/3507862>: XMLHttpRequest documents that reference external resources (e.g. stylesheets) cause crash

        * khtml/html/html_headimpl.cpp:
        (HTMLLinkElementImpl::process):
        * khtml/html/htmltokenizer.cpp:
        (HTMLTokenizer::scriptHandler):
        * khtml/xml/dom_xmlimpl.cpp:
        (ProcessingInstructionImpl::checkStyleSheet):
        * khtml/xml/xml_tokenizer.cpp:
        (XMLHandler::processingInstruction):
        (XMLTokenizer::executeScripts):

2003-12-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Chris.

	<rdar://problem/3507859>: Status text should only include "OK", not full "HTTP/1.0 200 OK" status line
	
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::getStatusText): Include only the status
	text, not the full status line.

=== Safari-117 ===

2003-12-11  David Hyatt  <hyatt@apple.com>

	Fix for 3507164, scrolling really slow on hixie's web forms spec page.  Hixie has 12 little transparent layers
        at various points on this page, and beginning/ending transparency on only those 12 layers as you scroll
        is enough to kill scrolling performance.

	This patch works around the issue by lazily beginning transparency layers only when we determine that
	we're actually painting a descendant layer of a transparent ancestor or a transparent layer.

	Also fixing QColor's comparison operator.  It was broken and not comparing the "valid" bit, so invalid and
	valid colors were being assumed to be the same.

	Also fixed the render dumper to not dump transparent and invalid background colors and fixed it do dump the
	alpha for colors with an alpha < 0xFF.
	
	Reviewed by mjs (opacity changes), darin (color changes) and john (render tree dumper changes)

        * ChangeLog:
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::RenderLayer):
        (RenderLayer::beginTransparencyLayers):
        (RenderLayer::paint):
        (RenderLayer::paintLayer):
        * khtml/rendering/render_layer.h:
        * kwq/KWQColor.h:
        (operator==):
        (operator!=):
        * kwq/KWQColor.mm:
        (QColor::name):
        * kwq/KWQRenderTreeDebug.cpp:
        (operator<<):

2003-12-11  Ken Kocienda  <kocienda@apple.com>

        * kwq/KWQLoader.mm:
        (KWQCacheObjectExpiresTime): Fixed deployment build bustage.

2003-12-09  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin
        
        <rdar://problem/3505444>: WebCore cache does not use expiration dates on cache items
        
        * khtml/misc/loader.cpp:
        (Loader::slotFinished): Don't reset expiration date. We set this once in
        slotReceivedResponse.
        (Loader::slotReceivedResponse): Call new KWQ function to get a cache object's
        expiration date using its NSURLResponse data.
        (Cache::requestImage): Don't reset expiration date. We set this once in
        slotReceivedResponse, and we do not want the value from the DocLoader
	anyway.
        (Cache::requestStyleSheet): Ditto.
        (Cache::requestScript): Ditto.
        * kwq/KWQLoader.h:
        * kwq/KWQLoader.mm:
        (KWQCacheObjectExpiresTime): New function. Call over bridge to get access
        to SPI in NSURLResponse to calculate expiration time.
        * kwq/WebCoreBridge.h: Declare bridge method.

2003-12-10  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3504156>: XMLHttpRequest reuse test fails
	<rdar://problem/3505158>: XMLHttpRequest "abort with open" test fails

        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::open):
        (KJS::XMLHttpRequest::abort):
        (KJS::XMLHttpRequestProtoFunc::tryCall):

2003-12-10  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3507175>: Setting timeout function can allocate JS objects without lock

        * khtml/ecma/kjs_window.cpp:
        (ScheduledAction::execute): Lock interpreter around code that
	might allocate JS objects.

2003-12-10  David Hyatt  <hyatt@apple.com>

	Fix for 3507097, overflow:auto should include the height of the horizontal scrollbar when the height
	of the block is auto.
	
        Reviewed by darin

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::layoutBlockChildren):

2003-12-10  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3506739: nil-deref in DocumentImpl::setSelection triple clicking (generated content)

        * khtml/khtml_part.cpp: (KHTMLPart::khtmlMousePressEvent): Check for the case where
        m_selectionEnd is 0. This doesn't fix the behavior completely, but it does prevent a crash.

2003-12-10  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Richard.

	<rdar://problem/3487160>: Implement synchronous loading for XMLHttpRequest
        
	* khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::XMLHttpRequest):
        (KJS::XMLHttpRequest::send):
        (KJS::XMLHttpRequest::abort):
        (KJS::XMLHttpRequest::processSyncLoadResults):
        (KJS::XMLHttpRequest::slotRedirection):
        (KJS::XMLHttpRequest::slotData):
        * khtml/ecma/xmlhttprequest.h:
        * kwq/KWQLoader.h:
        * kwq/KWQLoader.mm:
        (KWQHeaderStringFromDictionary):
        (KWQServeSynchronousRequest):
        (KWQResponseHeaderString):
        * kwq/WebCoreBridge.h:

2003-12-10  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3506706: REGRESSION (100-115): onkeyup handlers called twice for active input fields

        * kwq/KWQTextArea.mm: (-[KWQTextAreaTextView keyUp:]): Don't call super because we
        don't want to pass the event down the responder chain.
        * kwq/KWQTextField.mm: (-[KWQTextField textView:shouldHandleEvent:]): Return NO for
        key up events because we don't want to pass the event down the responder chain.

2003-12-10  Richard Williamson   <rjw@apple.com>

	Added method to get to the bridge from a view.  This is
	used to ultimately get the part and KJS::Window for a
	particular applet.

        Reviewed by Hyatt.

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (rootForView):
        (-[WebCoreBridge init]):
        * kwq/WebCoreViewFactory.h:
        * kwq/WebCoreViewFactory.m:

2003-12-10  John Sullivan  <sullivan@apple.com>

        - WebCore part of fix for:
        <rdar://problem/3505231>: REGRESSION (100-114): Some sites autoscroll to bottom of page when loading

        Reviewed by Darin.

        * kwq/KWQNSViewExtras.h:
        * kwq/KWQNSViewExtras.m:
        (-[NSView _KWQ_scrollPointRecursive:]):
        (-[NSView _KWQ_scrollPointRecursive:inView:]):
        new methods, similar to existing scrollRect methods
        except that the preferred position for the point is
        the top-left corner rather than centered in the visible area
        
        * kwq/KWQScrollView.h:
        * kwq/KWQScrollView.mm:
        (QScrollView::setContentsPosRecursive):
        new method, calls _KWQ_scrollPointRecursive:

        * khtml/khtml_part.cpp:
        (KHTMLPart::gotoAnchor):
        call setContentsPosRecursive instead of setContentsPos; also remove
        the 50 pixel offset that upset Hyatt so.
        

2003-12-10  Chris Blumenberg  <cblu@apple.com>

        * kwq/KWQKSSLKeyGen.mm:
        (KSSLKeyGen::signedPublicKeyAndChallengeString): removed unnecessary includes

2003-12-10  David Hyatt  <hyatt@apple.com>

	Fix for 3505846, overflow:auto region doesn't update when scrolled.  The child layers inside an overflow:auto
	block were not updating their positions.
	
        Reviewed by john

        * khtml/khtmlview.cpp:
        (KHTMLView::layout):
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::updateLayerPositions):
        (RenderLayer::scrollToOffset):
        * khtml/rendering/render_layer.h:

2003-12-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	<rdar://problem/3505795>: loading invalid XML document crashes trying to create h1 element
	<rdar://problem/3504158>: XMLHttpRequest xhtml test totally fails
        
	* khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::isValidName): include "0123456789" instead of
	"0-9", it's not a regexp it's just a list of characters.

2003-12-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	<rdar://problem/3504155>: Safari fails XMLHttpRequest abort test
        
	* khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequestProtoFunc::tryCall): Avoid throwing an
	exception after send().

2003-12-09  David Hyatt  <hyatt@apple.com>

	Rename -apple-aqua to auto for outline styles.
	
        Reviewed by darin

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/css/html4.css:
        * khtml/rendering/render_inline.cpp:
        (RenderInline::paintObject):
        * khtml/rendering/render_object.cpp:
        (RenderObject::drawBorder):
        (RenderObject::paintOutline):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::OutlineValue::OutlineValue):
        (khtml::RenderStyle::outlineStyleIsAuto):
        (khtml::RenderStyle::outlineOffset):
        (khtml::RenderStyle::setOutlineStyle):
        (khtml::RenderStyle::setOutlineOffset):
        * kwq/KWQRenderTreeDebug.cpp:
        (printBorderStyle):

2003-12-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	<rdar://problem/3487195>: Implement responseXML property for XMLHttpRequest
        
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::getValueProperty): Implemented responseXML by parsing the
	document and returning it.
        (KJS::XMLHttpRequest::XMLHttpRequest): Initialize new field
        * khtml/ecma/xmlhttprequest.h:

        * khtml/ecma/kjs_window.cpp: 
	(Windw::get): Forgot this in last commit; add XMLSerializer
	constructor.
        * khtml/ecma/kjs_window.lut.h:
	* khtml/ecma/Makefile.am: Forgot to include this in the last commit.

2003-12-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Richard.

	<rdar://problem/3504049>: XMLSerializer object and serializeToString method needed for XMLHttpRequest testing

	Also fixed some lasst-minute mistakes in the DOM serialization
	code that was already there.
	
        * WebCore.pbproj/project.pbxproj:
        * khtml/dom/dom_doc.h:
        * khtml/ecma/Makefile.am:
        * khtml/ecma/kjs_window.cpp:
        (Window::get):
        * khtml/ecma/kjs_window.h:
        (KJS::Window::):
        * khtml/ecma/kjs_window.lut.h:
        (KJS::):
        * khtml/ecma/xmlserializer.cpp: Added.
        (KJS::XMLSerializerConstructorImp::XMLSerializerConstructorImp):
        (KJS::XMLSerializerConstructorImp::implementsConstruct):
        (KJS::XMLSerializerConstructorImp::construct):
        (KJS::):
        (KJS::XMLSerializer::XMLSerializer):
        (KJS::XMLSerializerProtoFunc::tryCall):
        * khtml/ecma/xmlserializer.h: Added.
        (KJS::XMLSerializer::toBoolean):
        (KJS::XMLSerializer::classInfo):
        (KJS::XMLSerializer::):
        * khtml/ecma/xmlserializer.lut.h: Added.
        (KJS::):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::toString):
        (DocumentFragmentImpl::toString):
        * khtml/xml/dom_elementimpl.cpp:
        (AttrImpl::toString):
        (ElementImpl::toString):

2003-12-09  David Hyatt  <hyatt@apple.com>

	Implement start() and stop() for marquees.
	
        Reviewed by darin

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::classInfo):
        (KJS::HTMLElementFunction::tryCall):
        * khtml/ecma/kjs_html.h:
        (KJS::HTMLElement::):
        * khtml/ecma/kjs_html.lut.h:
        (KJS::):

2003-12-09  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3505277: nil-deref in ownerElement after choosing item from menu at projectnissan.com

        * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::dispatchWindowEvent): Add check for nil.

2003-12-09  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::saveLocationProperties): Add locking around the call to get the location
        since it can allocate.
        (KWQKHTMLPart::restoreLocationProperties): Ditto.

2003-12-09  David Hyatt  <hyatt@apple.com>

	Fix for mojibake bg painting problem on bofa.com.  The bug # is 3487144.  Transparent colors were not
	being handled properly when specified on the body.
	
        Reviewed by darin

        * khtml/rendering/render_box.cpp:
        (RenderBox::paintRootBoxDecorations):
        (RenderBox::paintBackgroundExtended):

2003-12-09  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed 3505391: REGRESSION (100-116): pages that move cells around don't repaint correctly

        * khtml/rendering/render_table.cpp: (RenderTableSection::layoutRows): Added code
        similar to the code in RenderBlock::layoutBlock, but for table cells.

2003-12-09  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        * khtml/ecma/kjs_events.cpp: (JSEventListener::handleEvent): Add locking around the call to
        push event handler scope. Without this, we hit the "allocated without locking" assertion.

2003-12-09  David Hyatt  <hyatt@apple.com>

	Fix the dirty rect checks on various render_objects to be more accurate so that page-break properties don't
	have mojibake when printing.
	
        Reviewed by john

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paint):
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::paintLineBoxBackgroundBorder):
        (RenderFlow::paintLineBoxDecorations):
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::paint):
        * khtml/rendering/render_table.cpp:
        (RenderTable::paint):

2003-12-09  Darin Adler  <darin@apple.com>

        Reviewed by Richard.

        - fixed 3500408: Web Kit should pass the MAYSCRIPT attribute from the APPLET tag to the Java plug-in

        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::parseAttribute): Allow the "mayscript" attribute.
        (HTMLAppletElementImpl::createRenderer): Pass the value of the "mayscript" attribute
        as an argument named "mayScript".

        * khtml/misc/htmlattrs.in: Added "mayscript".
        * khtml/misc/htmlattrs.c: Regenerated.
        * khtml/misc/htmlattrs.h: Regenerated.

2003-12-09  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	<rdar://problem/3501030>: JavaScript sites crash when a PAC file is in place (WebCore,Safari 1.2)
	
        * khtml/ecma/kjs_events.cpp:
        (JSEventListener::handleEvent): Lock interpreter when needed.
        (JSLazyEventListener::parseCode): Likewise.
        (KJS::getDOMEvent): Likewise.
        * khtml/ecma/kjs_proxy.cpp:
        (KJSProxyImpl::evaluate): Likewise.
        (KJSProxyImpl::initScript): Likewise.

2003-12-09  David Hyatt  <hyatt@apple.com>

	Fix for 3491235, really make <script src="..."/> work in HTML.  My original attempt to fix this only made
	the tag flat, but did not ensure that the script got processed.
	
        Reviewed by john

        * khtml/html/htmltokenizer.cpp:
        (HTMLTokenizer::parseTag):

2003-12-08  David Hyatt  <hyatt@apple.com>

	Fix for 3503652, news.com misrenders badly (footer is out of position).  My fix to 3495748 caused this
	regression.  I made the tag priority of <nobr> too high.  It needed to be the same as <div>, and I
	accidentally made it higher.  I intended for it to be the same as <div>.

	I also had to make a fix (now that <nobr> has a higher priority) to ensure <nobr> can't be nested inside
	other <nobr>.  

	Both fixes were required to make news.com render correctly again.
	
        Reviewed by darin

        * khtml/html/dtd.cpp:
        * khtml/html/htmlparser.cpp:
        (KHTMLParser::getElement):

2003-12-08  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3234676>: Support for KEYGEN tag (ie 509 email certificates from www.thawte.com)

        Reviewed by mjs.

        * WebCore-combined.exp:
        * WebCore.exp:
        * WebCore.pbproj/project.pbxproj:
        * khtml/html/html_formimpl.cpp:
        (HTMLKeygenElementImpl::parseAttribute): store the KEYTYPE attribute
        (HTMLKeygenElementImpl::encoding): call KSSLKeyGen::signedPublicKeyAndChallengeString
        * khtml/html/html_formimpl.h: remove 2 declared but unimplemented methods
        * khtml/misc/htmlattrs.c: generated changes
        (hash_attr):
        (findAttr):
        * khtml/misc/htmlattrs.h: generated change
        * khtml/misc/htmlattrs.in: added KEYTYPE
        * kwq/KWQKSSLKeyGen.h:
        * kwq/KWQKSSLKeyGen.mm:
        (KSSLKeyGen::supportedKeySizes): call renamed strengthMenuItemTitles
        (KSSLKeyGen::signedPublicKeyAndChallengeString): new, calls [WebCoreKeyGenerationFactory signedPublicKeyAndChallengeStringWithStrengthIndex:challenge:] 
        * kwq/WebCoreKeyGenerationFactory.h: Added.
        * kwq/WebCoreKeyGenerationFactory.m: Added.
        (+[WebCoreKeyGenerationFactory sharedFactory]):
        (-[WebCoreKeyGenerationFactory init]):
        (-[WebCoreKeyGenerationFactory strengthMenuItemTitles]):
        (-[WebCoreKeyGenerationFactory signedPublicKeyAndChallengeStringWithStrengthIndex:challenge:]):
        * kwq/WebCoreLocalizedStringFactory.h: Removed.
        * kwq/WebCoreLocalizedStringFactory.m: Removed.

2003-12-08  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken.

	<rdar://problem/3504047>: XMLHttpRequest object needs onload event
        
	* khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::getValueProperty): Implemented onload property.
        (KJS::XMLHttpRequest::putValue): Ditto.
        (KJS::XMLHttpRequest::XMLHttpRequest): Ditto.
        (KJS::XMLHttpRequest::changeState): Ditto.
        * khtml/ecma/xmlhttprequest.h:
        * khtml/ecma/xmlhttprequest.lut.h: Regenerated.

2003-12-08  David Hyatt  <hyatt@apple.com>

	Fix for 3503022, asahi.com is too wide.  Bugs in line breaking of breakable Japanese characters caused
	the breaks to be ignored.
	
        Reviewed by john

        * khtml/rendering/render_text.cpp:
        (RenderText::calcMinMaxWidth):

2003-12-05  David Hyatt  <hyatt@apple.com>

	Fix the position method to return screen coords like it should and to use the lower left corner instead of
	the upper left.
	
        Reviewed by john

        * kwq/KWQAccObject.h:
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject position]):
        (-[KWQAccObject size]):

2003-12-07  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3502347: REGRESSION (100-116): bottom of login window sometimes missing (TR background image)

        * khtml/rendering/render_object.h: Added setPixmap.
        * khtml/rendering/render_object.cpp: (RenderObject::setPixmap): Moved this
        function here from RenderBox. This code is needed for the table row class and
        similar classes that supply a background image that is drawn by the table cell,
        and those are not RenderBox subclasses.

        * khtml/rendering/render_box.cpp: Removed setPixmap.
        * khtml/rendering/render_box.h: Removed setPixmap.

2003-12-06  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3502655>: REGRESSION: Repro crash at espn.com

        Reviewed by Darin.

        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::getAppletInstance):
        Check for nil RenderApplet before dereferencing rather than after.

2003-12-05  David Hyatt  <hyatt@apple.com>

	Add support for link clicking as an accessibility action.
	
        Reviewed by john

        * kwq/KWQAccObject.mm:
        (-[KWQAccObject anchorElement]):
        (-[KWQAccObject role]):
        (-[KWQAccObject accessibilityAttributeNames]):
        (-[KWQAccObject accessibilityActionNames]):
        (-[KWQAccObject accessibilityActionDescription:]):
        (-[KWQAccObject accessibilityPerformAction:]):

2003-12-05  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	<rdar://problem/3487222>: Add ability to create working fully standalone document object
	
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::CSSStyleSelector):
        (khtml::CSSStyleSelector::addSheet):
        (khtml::CSSStyleSelector::initForStyleResolve):
        (khtml::CSSStyleSelector::applyRule):
        * khtml/dom/dom_doc.cpp:
        (DOM::Document::part):
        * khtml/dom/dom_doc.h:
        * khtml/ecma/kjs_dom.cpp:
        (DOMDocument::getValueProperty):
        (KJS::checkNodeSecurity):
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocFunction::tryCall):
        (KJS::HTMLDocument::tryGet):
        (KJS::HTMLDocument::putValue):
        (KJS::HTMLElement::tryGet):
        (Image::notifyFinished):
        * khtml/ecma/kjs_traversal.cpp:
        (JSNodeFilter::acceptNode):
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::changeState):
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::insertedIntoDocument):
        (HTMLFrameElementImpl::isURLAllowed):
        (HTMLFrameElementImpl::attach):
        (HTMLFrameElementImpl::detach):
        (HTMLFrameElementImpl::contentDocument):
        (HTMLIFrameElementImpl::attach):
        * khtml/html/html_documentimpl.cpp:
        (HTMLDocumentImpl::referrer):
        (HTMLDocumentImpl::lastModified):
        * khtml/html/html_formimpl.cpp:
        (HTMLFormElementImpl::formData):
        (HTMLFormElementImpl::prepareSubmit):
        (HTMLFormElementImpl::submit):
        (HTMLFormElementImpl::reset):
        (HTMLGenericFormElementImpl::isKeyboardFocusable):
        (HTMLGenericFormElementImpl::defaultEventHandler):
        * khtml/html/html_headimpl.cpp:
        (HTMLBaseElementImpl::process):
        (HTMLLinkElementImpl::process):
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::isKeyboardFocusable):
        (HTMLAnchorElementImpl::defaultEventHandler):
        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::createRenderer):
        (HTMLAppletElementImpl::getAppletInstance):
        (HTMLEmbedElementImpl::rendererIsNeeded):
        (HTMLObjectElementImpl::rendererIsNeeded):
        * khtml/html/htmltokenizer.cpp:
        (HTMLTokenizer::scriptExecution):
        (HTMLTokenizer::parseTag):
        * khtml/rendering/render_applet.cpp:
        (RenderApplet::RenderApplet):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::setTitle):
        (DocumentImpl::part):
        (DocumentImpl::close):
        (DocumentImpl::processHttpEquiv):
        * khtml/xml/dom_docimpl.h:
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::dispatchEvent):
        * kwq/KWQAccObject.mm:
        (-[KWQAccObject textUnderElement]):
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::partForNode):
        (KWQKHTMLPart::attributedString):

2003-12-05  Richard Williamson   <rjw@apple.com>

	Fixed 3501885.  Added null test to returned node from collection.

        Reviewed by John.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLCollection::tryGet):

2003-12-04  Richard Williamson   <rjw@apple.com>

	Added support for named applet access from document node.
	Factored creation of KJS::Values from RuntimeObjectImps.

        Reviewed by Chris.

        * khtml/ecma/kjs_dom.cpp:
        (KJS::getDOMNamedNodeMap):
        (KJS::getRuntimeObject):
        * khtml/ecma/kjs_dom.h:
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLDocument::tryGet):
        (KJS::HTMLElement::tryGet):
        (KJS::HTMLCollection::tryGet):

2003-12-04  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3498712: REGRESSION (100-115): Safari aborts at http://www11.dht.dk/~blangstrup_org/

        This was an uncaught exception thrown by DocumentImpl. But the design of KHTML DOM is that
        "impl" classes return exception codes; they don't throw exceptions.

        * khtml/dom/dom_doc.cpp:
        (DOM::Document::createElement): Throw exception if necessary. The impl function now returns
        an exception code.
        (DOM::Document::createElementNS): Ditto.

        * khtml/html/html_documentimpl.h: Add exception code parameter to createElement.
        * khtml/html/html_documentimpl.cpp: (HTMLDocumentImpl::createElement): Pass along the
        exception code from the lower level.

        * khtml/xml/dom_docimpl.h: Add exception code parameters to createElement, createElementNS,
        and createHTMLElement.
        * khtml/xml/dom_docimpl.cpp:
        (DOMImplementationImpl::createDocument): Handle exception code from createElementNS.
        (DocumentImpl::createElement): Add exception code parameter, not set since there is
        no exception.
        (DocumentImpl::importNode): Handle exception code from createElementNS.
        (DocumentImpl::createElementNS): Add exception code parameter. Propagate the exception
        codes that we get from createHTMLElement and setPrefix.
        (DocumentImpl::createHTMLElement): Add exception code parameter. Use an exception code
        rather than a C+exception for INVALID_CHARACTER_ERR.

        * khtml/xml/dom_elementimpl.cpp: (ElementImpl::cloneNode): Pass exception code parameter to
        createElement.

        * khtml/xml/xml_tokenizer.cpp:
        (XMLHandler::startElement): Pass exception code parameter to createElementNS, and return false
        if it is not zero. This is where the bug happened. Before we would get an exception from
        createElementNS, but "impl" functions are not supposed to throw in KHTML's DOM.
        (XMLTokenizer::finish): Add various exception code parameters to compile, but we know we won't
        get any exceptions.

        * kwq/WebCoreDOMDocument.mm:
        (-[WebCoreDOMDocument createElement:]): Pass an (ignored) exception code parameter.
        (-[WebCoreDOMDocument createElementNS::]): Pass an (ignored) exception code parameter.

=== Safari-116 ===

2003-12-03  Richard Williamson   <rjw@apple.com>

	LiveConnect:  Removed some debugging.

        Reviewed by Chris.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLCollection::tryGet):

2003-12-03  David Hyatt  <hyatt@apple.com>

	Fix for 3475761, list bullets mislayout after text zooming.
	
        Reviewed by kocienda

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::setStyle):

2003-12-03  David Hyatt  <hyatt@apple.com>

	Fix for 3493356, table cells didn't repaint properly.
	
        Reviewed by kocienda

        * khtml/rendering/render_object.cpp:
        (RenderObject::repaintObjectsBeforeLayout):
        * khtml/rendering/render_table.cpp:
        (RenderTableCell::getAbsoluteRepaintRect):
        * khtml/rendering/render_table.h:

2003-12-03  David Hyatt  <hyatt@apple.com>

	Fix for 3495748, hang in parser at ocelot.ca.  <nobr> needs to have very high priority (equal to the
	priority of blocks like h1-6, p, and div), so that unclosed <nobr>s will close divs and ps.
	
        Reviewed by gramps

        * khtml/html/dtd.cpp:

2003-12-03  David Hyatt  <hyatt@apple.com>

	Fix for 3475767, hang at saabnet.com.  Fix h1-h6 to be more tolerant regarding allowed child elements, to avoid
	deeply nested pages.
	
        Reviewed by darin

        * khtml/html/dtd.cpp:
        (DOM::checkChild):

2003-12-03  John Sullivan  <sullivan@apple.com>

        - fixed these two design issues after Dave and I talked to HI:
        <rdar://problem/3497072>: There shouldn't be a focus ring around clicked regions
        <rdar://problem/3499315>: Focus ring should use aqua color always

        Reviewed by Dave.

        * khtml/css/html4.css:

2003-12-03  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken.

	<rdar://problem/3395759>: results of parent.document.getElementsByTagName can't be added to string
        
	* khtml/ecma/kjs_dom.cpp:
        (DOMNodeList::toPrimitive): Always convert to string instead of trying to convert
	to number and failing, as is done for DOMNode.
        * khtml/ecma/kjs_dom.h: Prototype new method.

2003-12-02  Richard Williamson   <rjw@apple.com>

	Return a value that is backed by RuntimeObjectImpl, instead
	of a DOM object for applet[0].  This is better than having
	the DOM object redirect to the RuntimeObjectImpl.

        Reviewed by Chris.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLCollection::tryGet):

2003-12-02  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	<rdar://problem/3488220>: namespaces test from David Faure causes Safari to crash in DOM::DocumentImpl::createElementNS
	
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::createElementNS): Check if new element is NULL
	before messing with it, to avoid a crash.

2003-12-02  David Hyatt  <hyatt@apple.com>

	Fix for 3497999, null check the text() of RenderTexts to avoid a crash in current().
	
        Reviewed by kocienda

        * khtml/rendering/bidi.cpp:
        (khtml::BidiIterator::current):

2003-12-02  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	Implemented a simple form of document serialization, enough to take care of:

	<rdar://problem/3487190>: implement send of DOMDocument for XMLHttpRequest

        * khtml/dom/dom_doc.cpp:
        (DOM::Document::toString):
        * khtml/dom/dom_doc.h:
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::urlMatchesDocumentDomain):
        (KJS::XMLHttpRequestProtoFunc::tryCall):
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::toString):
        * khtml/html/html_elementimpl.h:
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::toString):
        (DocumentFragmentImpl::toString):
        (DocumentTypeImpl::copyFrom):
        (DocumentTypeImpl::toString):
        * khtml/xml/dom_docimpl.h:
        * khtml/xml/dom_elementimpl.cpp:
        (AttrImpl::toString):
        (ElementImpl::openTagStartToString):
        (ElementImpl::toString):
        * khtml/xml/dom_elementimpl.h:
        * khtml/xml/dom_nodeimpl.h:
        * khtml/xml/dom_textimpl.cpp:
        (CommentImpl::toString):
        (TextImpl::toString):
        (CDATASectionImpl::toString):
        * khtml/xml/dom_textimpl.h:
        * khtml/xml/dom_xmlimpl.cpp:
        (EntityImpl::toString):
        (EntityReferenceImpl::toString):
        (ProcessingInstructionImpl::setStyleSheet):
        (ProcessingInstructionImpl::toString):
        * khtml/xml/dom_xmlimpl.h:

2003-12-02  David Hyatt  <hyatt@apple.com>

	Fix for 3493677, containingBlock() null because we tried to support position:relative on table rows.  Fix
	is to disallow this.
	
        Reviewed by kocienda

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::adjustRenderStyle):

2003-12-02  David Hyatt  <hyatt@apple.com>

	Fix for 3493697, nil-deref in bidi code.  Need to null-check strings with no length.
	
        Reviewed by john

        * khtml/rendering/bidi.cpp:
        (khtml::addRun):

2003-12-02  David Hyatt  <hyatt@apple.com>

	Fix for 3495746, nil deref of containing block (frame inside frameset).
	
        Reviewed by kocienda

        * khtml/rendering/render_box.cpp:
        (RenderBox::containingBlockWidth):

2003-12-02  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        * kwq/KWQRect.h:
        * kwq/KWQRect.mm:
        (QRect::bottomRight): Added helper.

2003-12-02  Maciej Stachowiak  <mjs@apple.com>

	Merged the following patch from David Faure to fix:

	<rdar://problem/3497663>: Can't look up frames by number using windw[i] notation

    2003-11-25  David Faure  <faure@kde.org>

        * ecma/kjs_window.cpp: Implement hasProperty and get for frames by number in Window,
        to fix window[0] and parent[1] etc. (#56983)

2003-11-21  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Richard.

	<rdar://problem/3487185>: implement security checks for XMLHttpRequest
	
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::open): Refuse to start if the URL is not one
	this document is allowed to access.
        (KJS::XMLHttpRequest::slotRedirection): Stop the job if we redirect
	to a URL the home document is not allowed to access.
        * kwq/KWQResourceLoader.mm:
        (-[KWQResourceLoader redirectedToURL:]): emit the right signal
        * kwq/WebCoreResourceLoader.h: Prototype new method

2003-12-01  Richard Williamson   <rjw@apple.com>

Fixed parameter passing to applet.  Child elements are NOT valid in setStyle().  So we now either create the widget before needed with createWidgetIfNecessary.  This either happens when doing the first layout, or when JavaScript first references the applet element.

Fixed early delete of the the main applet instance.  When the JS collector cleaned up the last JS object referring to the applet instance we were deleting the java instance.  This caused the applet instance cached on the applet element to be invalid.  The applet instance is the only Java object not to be cleaned up by the JS collector.

Added support for getting at Java object fields.

        Reviewed by Chris.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::tryGet):
        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::createRenderer):
        (HTMLAppletElementImpl::getAppletInstance):
        * khtml/html/html_objectimpl.h:
        * khtml/rendering/render_applet.cpp:
        (RenderApplet::createWidgetIfNecessary):
        (RenderApplet::layout):
        * khtml/rendering/render_applet.h:
        (khtml::RenderApplet::renderName):

2003-12-01  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed 3496960: nil-deref in idFromNode inside elementDoesAutoComplete:

        * kwq/WebCoreBridge.mm:
        (inputElementFromDOMElement): Added nil check.
        (formElementFromDOMElement): Added nil check.

2003-12-01  David Hyatt  <hyatt@apple.com>

	Fix for 3490959, collapsed border tables don't paint backgrounds.
	
        Reviewed by darin

        * khtml/rendering/render_table.cpp:
        (RenderTable::setStyle):
        (RenderTable::paint):
        (RenderTable::paintBoxDecorations):
        * khtml/rendering/render_table.h:

2003-12-01  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed 3493939: ordered lists with type="A" roll over to A' after X rather than after Z

        * khtml/rendering/render_list.cpp: (toLetter): Change 24 to 26.

=== Safari-115 ===

2003-11-21  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken.

	WebCore part of fix for:
	
	<rdar://problem/3487134>: Implement http request/response status and headers for XMLHttpRequest

        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::getValueProperty): Call appropriate methods for
	status and statusText.
        (KJS::XMLHttpRequest::send): Set request headers as "customHeaders"
	metadata property.
        (KJS::XMLHttpRequest::setRequestHeader): Simply append to header
	string.
        (KJS::XMLHttpRequest::getAllResponseHeaders): Return the header string
	except for the first line.
	(KJS::XMLHttpRequest::getResponseHeader): Scan the response header
	string for the header field. Not sure if it's worth being more
	efficient.
        (KJS::XMLHttpRequest::getStatus): Try to pull a code out
	of the status line.
        (KJS::XMLHttpRequest::getStatusText): Pull the first line
	off the headers (if any), otherwise return undefined.
        (KJS::XMLHttpRequest::slotData): The first time through, save
	the response headers, retrieved from "HTTP-Headers" metadata
	property.
        (KJS::XMLHttpRequestProtoFunc::tryCall): Make setRequestHeader,
	getResponseHeader, getAllResponseHeaders call the right thing.
        * khtml/ecma/xmlhttprequest.h:
        * kwq/KWQKJobClasses.h:
        * kwq/KWQKJobClasses.mm:
        (KIO::TransferJobPrivate::TransferJobPrivate): Added header
	support.
        (KIO::TransferJobPrivate::~TransferJobPrivate):
        (KIO::TransferJob::assembleResponseHeaders): Get a header string
	out of the response if needed.
        (KIO::TransferJob::queryMetaData): Special-case "HTTP-Headers".
        (KIO::TransferJob::emitReceivedResponse): Save response.
        * kwq/KWQLoader.h:
        * kwq/KWQLoader.mm:
        (-[NSDictionary _webcore_initWithHeaderString:]): Helper method to
	turn a string of header fields into a dictionary.
        (KWQServeRequest): Pass custom headers through.
        (KWQResponseMIMEType): Admit it's an NSURLResponse *.
        (KWQResponseHeaderString): Assembled status code and response
	header fields into response header. Cheat a little on the status
	line.
        * kwq/KWQResourceLoader.mm:
        (-[KWQResourceLoader receivedResponse:]): Admit it's an
	NSURLResponse *.
        * kwq/WebCoreResourceLoader.h: Ditto.
	* kwq/WebCoreBridge.h: Add customHeader: arguments.

2003-11-21  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3491907>: When viewing applet, view hierarchy was an empty KWQView

        Reviewed by rjw.

        * WebCore.pbproj/project.pbxproj:
        * khtml/html/html_objectimpl.cpp: removed setupApplet because that work is done when the applet widget is created
        (HTMLAppletElementImpl::createRenderer): pass the PARAM args to the render object
        (HTMLAppletElementImpl::getAppletInstance): don't call setupApplet
        * khtml/rendering/render_applet.cpp:
        (RenderApplet::RenderApplet): store args and context, don't call setQWidget here 
        (RenderApplet::setStyle): call setQWidget here
        (RenderApplet::layout): don't parse args here, that is done in HTMLAppletElementImpl::createRenderer
        * khtml/rendering/render_applet.h:
        * kwq/KWQKJavaAppletWidget.h:
        (KJavaApplet::KJavaApplet): turned into a stub, this work is no longer needed
        (KJavaApplet::setAppletClass): ditto
        (KJavaApplet::setAppletName): ditto
        (KJavaApplet::setArchives): ditto
        (KJavaApplet::setBaseURL): ditto
        (KJavaApplet::setCodeBase): ditto
        (KJavaApplet::setParameter): ditto
        (KJavaAppletWidget::~KJavaAppletWidget): ditto
        (KJavaAppletWidget::applet): ditto
        (KJavaAppletWidget::setBaseURL): ditto
        (KJavaAppletWidget::setParameter): ditto
        (KJavaAppletWidget::showApplet): ditto 
        * kwq/KWQKJavaAppletWidget.mm:
        (KJavaAppletWidget::KJavaAppletWidget): create the java here instead of doing it later

2003-11-21  John Sullivan  <sullivan@apple.com>

        - WebCore part of fix for <rdar://problem/3333744>: Safari prints page with 
        very, very long line very, very small

        Reviewed by Ken.

        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::forceLayoutWithPageWidthRange):
        Changed method name from forceLayoutForPageWidth; now takes min and max
        page width values. Use max page width value to limit how wide page will
        get when there's a very long line.
        
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge forceLayoutWithMinimumPageWidth:maximumPageWidth:adjustingViewSize:]):
        changed pageWidth parameter into min and max parameters; pass them along to KWQKHTMLPart.

2003-11-21  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed 3490260: allow &sup1 to be misspelled &supl (lowercase l instead of numeral 1) because WinIE does

        * khtml/html/kentities.gperf: Added supl to the list. Maps to U+00B9, just as sup1 does.
        * khtml/html/kentities.c: Regenerated.

2003-11-20  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3487201 - Implement abort for XMLHttpRequest async loads
	
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequest::abort): Kill and clear job.
        (KJS::XMLHttpRequest::slotData): Avoid moving to state 3 on early abort.
        (KJS::XMLHttpRequestProtoFunc::tryCall): Call abort when appropriate.
        * khtml/ecma/xmlhttprequest.h:

2003-11-20  John Sullivan  <sullivan@apple.com>

        - WebCore part of <rdar://problem/3183124>: Support page-break-before/after with a value of "always"

        Dave wrote this part and we reviewed it together.

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paintObject):
        if printing, check for CSS page break locations
        (khtml::RenderBlock::inRootBlockContext):
        new method, used to check whether we're in a context for which
        CSS page breaks are legal.
        
        * khtml/rendering/render_block.h:
        prototype for inRootBlockContext; this might be useful for
        other code later.
        
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::setBestTruncatedAt):
        now takes a forcedBreak parameter which overrides others.
        
        * khtml/rendering/render_canvas.h:
        (khtml::RenderCanvas::setTruncatedAt):
        set default value for m_forcedPageBreak
        
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge computePageRects:withPageHeight:]):
        do the real work of pagination here

2003-11-20  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3491225>: Need UI and localized strings for <KEYGEN> support

        Reviewed by john.

        * WebCore-combined.exp:
        * WebCore.exp:
        * WebCore.pbproj/project.pbxproj:
        * kwq/KWQKSSLKeyGen.h:
        * kwq/KWQKSSLKeyGen.mm: Added.
        (KSSLKeyGen::supportedKeySizes): implemented, calls [WebCoreLocalizedStringFactory keyGenerationMenuItemTitles]
        * kwq/WebCoreLocalizedStringFactory.h: Added.
        * kwq/WebCoreLocalizedStringFactory.m: Added.
        (+[WebCoreLocalizedStringFactory sharedFactory]): new
        (-[WebCoreLocalizedStringFactory init]): new
        (-[WebCoreLocalizedStringFactory keyGenerationMenuItemTitles]): new

2003-11-19  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken.

	- fixed 3490086 - support http post for XMLHttpRequest
	
        * kwq/KWQKJobClasses.h:
        * kwq/KWQKJobClasses.mm:
        (KIO::TransferJobPrivate::TransferJobPrivate):
        (KIO::TransferJob::TransferJob):

2003-11-20  Richard Williamson   <rjw@apple.com>

	Cleaned up synchronous applet lookup and initialization.
	We need to further cleanup applet instantiation.  It doesn't
	need to be lazy with my modified Java Plugin.

        Reviewed by Chris.

        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::tryGet):
        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::setupApplet):
        (HTMLAppletElementImpl::getAppletInstance):
        * khtml/html/html_objectimpl.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::getAppletInstanceForView):
        * kwq/KWQKJavaAppletWidget.h:
        * kwq/KWQKJavaAppletWidget.mm:
        (KJavaAppletWidget::showApplet):

2003-11-20  Ken Kocienda  <kocienda@apple.com>

        Reviewed by David

	Fix for this bug:

	<rdar://problem/3487421>: crash/exception when tabbing to a link without text

        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::isFocusable): A link is also not focusable 
	if it has zero width or height, if it has no children, or if it is 
	is not a continuation.
        * kwq/KWQPainter.mm:
        (QPainter::drawFocusRing): Put in a guard against trying to draw a focus
        ring with no control points. Log this as an error.

2003-11-19  David Hyatt  <hyatt@apple.com>

	Fix for 3486963, crash because generated content was referencing a deleted object.  Fix is to update the
	variable to a sane value after deleting old generated content.
	
        Reviewed by darin

        * khtml/rendering/render_container.cpp:
        (RenderContainer::updatePseudoChild):

2003-11-19  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed 3486998 - Implement asynchronous http loading for XMLHttpRequest
	
        * khtml/ecma/xmlhttprequest.cpp:
        (KJS::XMLHttpRequestQObject::XMLHttpRequestQObject): New QObject to use to
	connect to signals.
        (KJS::XMLHttpRequestQObject::slotData): Call XMLHttpRequest.
        (KJS::XMLHttpRequestQObject::slotFinished): Ditto.
        (KJS::XMLHttpRequestQObject::slotRedirection): Ditto.
        (KJS::XMLHttpRequest::getValueProperty): Implemented, onrequeststatechange,
	readyState and responseText.
        (KJS::XMLHttpRequest::putValue): Implemented onrequeststatechange.
        (KJS::XMLHttpRequest::XMLHttpRequest): Initialize new fields.
        (KJS::XMLHttpRequest::~XMLHttpRequest): Delete decoder.
        (KJS::XMLHttpRequest::changeState): Update state, and send event if needed.
        (KJS::XMLHttpRequest::open): Save the parameters.
        (KJS::XMLHttpRequest::send): Fire up a post or get job.
        (KJS::XMLHttpRequest::slotFinished): go to final state.
        (KJS::XMLHttpRequest::slotRedirection): Just stub for now.
        (KJS::XMLHttpRequest::slotData): Update state; decode & save data.
        (KJS::XMLHttpRequestProtoFunc::tryCall): Implemented open and send.
        * khtml/ecma/xmlhttprequest.h: Prototyped new stuff.
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::typeToId): Added "readystatechange" event.
        (EventImpl::idToType): Ditto.
        * khtml/xml/dom2_eventsimpl.h: Ditto.
        * kwq/KWQLoader.h:
        * kwq/KWQLoader.mm:
        (KWQServeRequest): New variant that doesn't need a Request.
        * kwq/KWQSlot.mm:
        (KWQSlot::KWQSlot): Handle XMLHttpRequestQObject's slots.
        (KWQSlot::call): Ditto.

2003-11-19  Richard Williamson   <rjw@apple.com>

	More LiveConnect stuff.  With that patch we make the applet
	visible to JavaScript in an Bindings::Instance.  Next step
	it to flush out implementation of RuntimeObjectImp and
	RuntimeFunctionImp.

        Reviewed by Ken.

        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::HTMLAppletElementImpl):
        (HTMLAppletElementImpl::~HTMLAppletElementImpl):
        (HTMLAppletElementImpl::getAppletInstance):
        * khtml/html/html_objectimpl.h:
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::getAppletInstanceForView):
        * kwq/WebCoreBridge.h:

2003-11-19  David Hyatt  <hyatt@apple.com>

	Fix for 3488888, about:blank in iframes doesn't repaint properly.  Fix for 3485478, refreshing a remote
	page often causes a white flash.  Fix for 3488827, XML/XHTML documents don't fire load events on bodies/framesets.
	
        Reviewed by darin
	
        * khtml/html/html_documentimpl.cpp:
        (HTMLDocumentImpl::HTMLDocumentImpl):
        * khtml/html/html_documentimpl.h:
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::RenderCanvas):
        (RenderCanvas::layout):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::body):
        (DocumentImpl::close):
        * khtml/xml/dom_docimpl.h:

2003-11-18  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3488883 - KIO::TransferJob needs to really use signals instead of calling loader directly
        
	* khtml/khtml_part.cpp:
        (KHTMLPart::openURL):
        * khtml/misc/loader.cpp:
        (Loader::servePendingRequests):
        (Loader::slotReceivedResponse):
        * khtml/misc/loader.h:
        * kwq/KWQKJobClasses.h:
        * kwq/KWQKJobClasses.mm:
        (KIO::TransferJob::TransferJob):
        (KIO::TransferJob::url):
        (KIO::TransferJob::emitData):
        (KIO::TransferJob::emitRedirection):
        (KIO::TransferJob::emitResult):
        (KIO::TransferJob::emitReceivedResponse):
        * kwq/KWQLoader.mm:
        (KWQServeRequest):
        * kwq/KWQObject.mm:
        (QObject::connect):
        * kwq/KWQResourceLoader.h:
        * kwq/KWQResourceLoader.mm:
        (-[KWQResourceLoader receivedResponse:]):
        (-[KWQResourceLoader addData:]):
        (-[KWQResourceLoader finishJobAndHandle]):
        * kwq/KWQSignal.h:
        * kwq/KWQSignal.mm:
        (KWQSignal::call):
        * kwq/KWQSlot.h:
        * kwq/KWQSlot.mm:
        (KWQSlot::KWQSlot):
        (KWQSlot::call):

2003-11-18  David Hyatt  <hyatt@apple.com>

	Fix for 3488244, marquee-increments with percentage values not handled correctly.  Also added a tweak to ensure
	that 1% of a small value ends up being at least an increment of 1.  Also added an optimization to not even
	bother kicking off the marquee timer if the increment's initial value is 0 (matches WinIE).

        * khtml/rendering/render_layer.cpp:
        (Marquee::start):
        (Marquee::timerEvent):

2003-11-18  Richard Williamson   <rjw@apple.com>

	More live connect stuff.  We're getting close.

        Reviewed by Chris.

        * WebCore.pbproj/project.pbxproj:
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::tryGet):
        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::parseAttribute):
        (HTMLAppletElementImpl::getAppletInstance):
        * khtml/html/html_objectimpl.h:

2003-11-18  David Hyatt  <hyatt@apple.com>

	Fix for 3478122, crash using first-letter and zooming, and also the fix for 3478078, generated content
	does not get removed properly on w3c site.  The root cause of these two bugs was the same, namely my
	change to meld the concept of generated anonymous content and anonymous blocks created by the layout
	engine together.  RenderBlock's setStyle method was incorrectly updating before/after/first-letter content
	and wiping out its style in random (and bad) ways.
	
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::setStyle):

2003-11-18  David Hyatt  <hyatt@apple.com>

	Fix for 3487424, images not painting because of dropped layouts.  When replaced elements dirtied
	themselves during line layout, they only needed to do a local dirty and not walk up the parent chain.
	
        Reviewed by mjs

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):

2003-11-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	- fixed 3486991 - Add XMLHttpRequest object and stub methods

        * khtml/ecma/kjs_window.cpp:
        (Window::get): Handle XMLHttpRequest constructor like Option and Image.
        * khtml/ecma/kjs_window.h: Ditto.
        * khtml/ecma/kjs_window.lut.h: Regenerated.
        * khtml/ecma/xmlhttprequest.cpp: Added. Stub implementations of everything.
        (KJS::XMLHttpRequestConstructorImp::XMLHttpRequestConstructorImp):
        (KJS::XMLHttpRequestConstructorImp::implementsConstruct):
        (KJS::XMLHttpRequestConstructorImp::construct):
        (KJS::XMLHttpRequest::tryGet):
        (KJS::XMLHttpRequest::getValueProperty):
        (KJS::XMLHttpRequest::tryPut):
        (KJS::XMLHttpRequest::putValue):
        (KJS::XMLHttpRequest::notifyFinished):
        (KJS::XMLHttpRequest::XMLHttpRequest):
        (KJS::XMLHttpRequest::~XMLHttpRequest):
        (KJS::XMLHttpRequestProtoFunc::tryCall):
        * khtml/ecma/xmlhttprequest.h: Added. Stub implementations of everything.
        (KJS::XMLHttpRequest::toBoolean):
        (KJS::XMLHttpRequest::classInfo):
        * khtml/ecma/xmlhttprequest.lut.h: Added.
        * khtml/ecma/Makefile.am: Add new .lut.h file.
	* WebCore.pbproj/project.pbxproj: Add new files.

2003-11-17  David Hyatt  <hyatt@apple.com>

	Fix for 3487136, marquees reset when you return to a page in the b/f cache.  This patch makes
	marquees suspend and resume properly, so they pick up animating where they left off.
	
        Reviewed by mjs

        * khtml/rendering/render_layer.cpp:
        (RenderLayer::suspendMarquees):
        (m_direction):
        (Marquee::start):
        (Marquee::suspend):
        * khtml/rendering/render_layer.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::clearTimers):

2003-11-17  Maciej Stachowiak  <mjs@apple.com>

	Merged from khtml:
	
	- fixed 3487324 - CSS url values should be wrapped in "url()" for cssText purposes
	
    2003-11-07  Dirk Mueller  <mueller@kde.org>
	 
	* css/css_valueimpl.cpp (cssText): wrap uri's into url(). 
	Stephan Kulow noted that other browsers do that.
	

2003-11-17  David Hyatt  <hyatt@apple.com>

	Fix for 3472998, stop a crash on an insanely malformed page.  I had to change the concept of 
	"inStrayTableContent" to be a counter, since you could be nested and need to push/pop, and
	then I also had to stop from mistakenly popping when I didn't need to.
	
        Reviewed by rjw

        * khtml/html/htmlparser.cpp:
        (KHTMLParser::reset):
        (KHTMLParser::insertNode):
        (KHTMLParser::reopenResidualStyleTags):
        (KHTMLParser::popBlock):
        (KHTMLParser::popOneBlock):
        * khtml/html/htmlparser.h:

2003-11-17  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - did keyboard event cleanup to follow up on the keyCode work I did before
        - fixed 3485558: key identifers use lowercase hex, but the W3C document shows uppercase
        - fixed 3485564: key identifier for the Return key should be "Enter"
        - fixed 3485579: letter keys generate different key identifiers depending on whether the shift key is down
        - fixed 3485568: keyboard event modifier key bits are uninitialized; may have incorrect values
        - fixed 3481514: which attribute for DOM events reports incorrect value
        - fixed 3452569: charCode attribute for DOM events not supported

        * khtml/dom/dom2_events.h: Added charCode.
        * khtml/dom/dom2_events.cpp:
        (UIEvent::keyCode): Call through to KeyboardEventImpl instead of doing the work here;
        better factoring.
        (UIEvent::charCode): Added. Calls through to KeyboardEventImpl.
        (UIEvent::which): Call keyCode in KeyboardEventImpl to share code.

        * khtml/ecma/kjs_events.h: Added charCode property for DOMUIEvent.
        * khtml/ecma/kjs_events.cpp: (DOMUIEvent::getValueProperty): Added charCode.
        * khtml/ecma/kjs_events.lut.h: Regenerated.

        * khtml/html/html_formimpl.h:
        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::defaultEventHandler): Remove checks for "U+00000d" since we now use "Enter"
        for that key; also, we use capitalized hex, so it would have to change to "U+00000D" anyway.
        (HTMLSelectElementImpl::defaultEventHandler): Ditto.
        * khtml/html/html_inlineimpl.cpp: (HTMLAnchorElementImpl::defaultEventHandler): Ditto.

        * khtml/khtmlview.cpp: (KHTMLView::keyPressEvent): Put !APPLE_CHANGES around code we are not
        using. It was doing a switch based on Qt key codes, but the key value it was using to check
        was a Macintosh virtual key code, which could yield strange results when the codes happen to
        match. Safer and smaller code size not to do any of it at all.

        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::RenderLineEdit): Use a KLineEdit instead of LineEditWidget for APPLE_CHANGES.
        Allows us to put !APPLE_CHANGES around more Qt key code stuff.
        (RenderLineEdit::select): Cast to KLineEdit instead of LineEditWidget.
        (ComboBoxWidget::event): Put !APPLE_CHANGES around more unneeded Qt key code stuff.
        (TextAreaWidget::event): Put !APPLE_CHANGES around more unneeded Qt key code stuff.

        * khtml/xml/dom2_eventsimpl.h: Made id() const and added keyCode() and charCode().
        * khtml/xml/dom2_eventsimpl.cpp:
        (KeyboardEventImpl::KeyboardEventImpl): Initialize all fields in the empty constructor.
        Initialize all the modifier bits in the main constructor; the old code assumed they started
        off false, which is not a safe assumption. Also set m_altGraphKey false. Eliminated the
        unneeded check of text() before calling identifier(). Also adapted for the name change from
        identifier() to keyIdentifier().
        (KeyboardEventImpl::keyCode): Added. Returns the Windows virtual key code for keydown and
        keyup events, and the Unicode character for all other events.
        (KeyboardEventImpl::charCode): Added. Returns the Unicode character.

        * kwq/KWQEvent.h: Changed QCustomEvent to be a typedef for QEvent.
        (QEvent::QEvent): Removed AccelAvailable, and added KParts, so I could remove some ugly
        constants from the KParts code.
        (QMouseEvent::button): Use a cast here since the field is now int.
        (QMouseEvent::state): Use a cast here since the field is now int.
        (QMouseEvent::stateAfter): Use a cast here since the field is now int, and use the new
        _stateAfter field.
        (QTimerEvent::QTimerEvent): Moved the constructor to be inline since it's so simple.
        (QKeyEvent::QKeyEvent): Removed type and button state parameters, now unneeded.
        Also removed now-unused _key, _ascii, and _count fields, and key(), ascii(),
        and count() functions.
        (QKeyEvent::state): Made inline.
        (QKeyEvent::isAccepted): Made inline.
        (QKeyEvent::text): Made inline.
        (QKeyEvent::isAutoRepeat): Made inline.
        (QKeyEvent::accept): Made inline.
        (QKeyEvent::ignore): Made inline.
        (QKeyEvent::unmodifiedText): Made inline.
        (QKeyEvent::keyIdentifier): Made inline and chnaged name from identifier().
        * kwq/KWQEvent.mm:
        (keyIdentifierForKeyEvent): Renamed from identifierForKeyText and changed parameter
        to be the event. Cleaned up the code a little bit, and wrote a comment or two.
        Changed from lowercase hex to uppercase, and called toupper on the key so that
        letter a-z would work properly. (A non-Unicode toupper is just the ticket here,
        because I am only sure we want to do this for a-z, not other lowercase characters.)
        (isKeypadEvent): Added. Uses virtual key codes to decide if a key event is a keypad
        event, so we can set the state flag correctly.
        (WindowsKeyCodeForKeyEvent): Added Clear key to the switch statement; it was missing.
        Changed to no longe use the characterCode helper function since this was the only
        place it was needed.
        (mouseButtonForEvent): Added. Similar logic to what was in KWQKHTMLPart before; better
        factoring to have it in here.
        (nonMouseButtonsForEvent): Ditto.
        (QMouseEvent::QMouseEvent): Rewrote constructors. One matches the one from Qt that's
        used in some places in KHTML code. The other takes an NSEvent and uses the new functions
        above to compute the button and state.
        (QKeyEvent::QKeyEvent): Computer type based on the passed-in NSEvent. Compute the
        auto-repeat flag based on the event and also the "forceAutoRepeat" parameter. Compute
        the button state based on the event too.

        * kwq/KWQKHTMLPart.h: Remove buttonForCurrentEvent and stateForCurrentEvent. Both
        are now in KWQEvent.mm.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::keyEvent): Remove extra parameters in code that creates QKeyEvent, now
        that QKeyEvent can handle everything itself.
        (KWQKHTMLPart::mouseDown): Same thing as above, only for QMouseEvent.
        (KWQKHTMLPart::mouseDragged): Ditto.
        (KWQKHTMLPart::mouseUp): Ditto.
        (KWQKHTMLPart::mouseMoved): Ditto.
        (KWQKHTMLPart::sendContextMenuEvent): Ditto.

        * kwq/KWQKPartsEvent.h: Tweaked the class around a little so it can work without
        taking advantage of QCustomEvent's data pointer.
        * kwq/KWQKPartsEvent.mm:
        (KParts::Event::Event): Changed so it does a strdup on the event name and uses the
        new event type pre-allocated in KWQEvent.h for us.
        (KParts::Event::~Event): Free the event name.
        (KParts::Event::test): Reimplemented this.

        * kwq/KWQKPartsPart.h: (KParts::Part::event): Removed now-unnecessary cast to change
        a QCustomEvent into a QEvent.

        * kwq/KWQNamespace.h: Removed the Qt::Key enum. All the code that used it was already
        broken because of the mixup between Qt and Macintosh key codes.

2003-11-17  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Maciej

	<rdar://problem/3487079>: Some scheme checks in KURL do not verify 
	first char is a legal first char for a scheme

        * kwq/KWQKURL.mm:
        (KURL::KURL): Added some additional checks when looking through
	strings looking for schemes. Now the first character is checked
	for validity as a first character in a scheme.

2003-11-17  David Hyatt  <hyatt@apple.com>

	Fix for 3486441, don't use the visibleWidth when computing the containingBlockWidth().  No need to
	query the view, since the canvas's width has been set to the proper size (when printing).
	
        Reviewed by john

        * khtml/rendering/render_box.cpp:
        (RenderBox::containingBlockWidth):

2003-11-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3413713 - iframe forms posting fails without initial src attribute value

        * khtml/rendering/render_frames.cpp:
        (RenderPartObject::updateWidget): If the new part is for "about:blank",
	set the document base URL to parent's base URL.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::createEmptyDocument): If this part is an
	iframe, set the document base URL to the parent's base URL.

2003-11-17  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3485925: Safari does not correctly parse eight-digit hex character entities

        * khtml/html/htmltokenizer.cpp: (HTMLTokenizer::parseEntity): Replaced puzzling variable limit
        on number of hexadecimal characters to parse with an 8-character limit.

2003-11-17  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3485572 -- secure form check in KHTML uses case-sensitive comparison with "https"

        * khtml/html/html_formimpl.h:
        * khtml/html/html_formimpl.cpp: (HTMLFormElementImpl::formWouldHaveSecureSubmission):
        Changed to take a DOMString reference for slightly better efficiency, and to use startsWith
        so the prefix check is not case sensitive and for slightly better efficiency and clarity
        than calling latin1() and using strncmp.

2003-11-17  Maciej Stachowiak  <mjs@apple.com>

	- commit updated .lut.h file that I forgot to commit before

        * khtml/ecma/kjs_window.lut.h:

2003-11-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3382829 - Safari won't load script src javascript if done by a document.write followed by document.close
	
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::closeInternal): Don't delete the tokenizer if it's
	waiting for scripts. It will get destroyed later when the part
	gets all subresources and closes the document.
        * khtml/html/htmltokenizer.cpp:
        (HTMLTokenizer::isWaitingForScripts): Added.
        * khtml/html/htmltokenizer.h: Prototyped.
        * khtml/xml/xml_tokenizer.cpp:
        (XMLTokenizer::isWaitingForScripts): Added.
        * khtml/xml/xml_tokenizer.h: Prototyped.

2003-11-17  David Hyatt  <hyatt@apple.com>

	Fix for 3480108, crash because of the wrong malformedTableParent when stray content is placed inside
	a <tr>.
	
        Reviewed by john

        * khtml/html/htmlparser.cpp:
        (KHTMLParser::popBlock):

2003-11-17  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	- fixed 3397494 - FileMaker: Setting option object text fails if created without text
	
        * khtml/html/html_formimpl.cpp:
        (HTMLOptionElementImpl::childrenChanged): Update the select element.
	This ends up getting called when you add a text node to an option that
	didn't used to have one.
        * khtml/html/html_formimpl.h: Prototype it.

2003-11-17  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Maciej

	Fix for this bug:

	<rdar://problem/3480023>: Links don't work if there's a colon in the URL

	The colon in the URL was confusing KURL. I modified some checks in
	KURL so that its search for schemes stops when a non-scheme 
	character is found rather than when a path end segment character
	is found.

        * kwq/KWQKURL.mm: Added a new Colon class to the table of characters.
        (isSchemeCharOrColon): New helper.
        (KURL::KURL): Call on new helper when looking for a scheme.
        (KURL::findHostnameInHierarchicalURL): Ditto.

2003-11-17  David Hyatt  <hyatt@apple.com>

	Fix for 2931829, lines with hyphens should break on the hyphens.  Match WinIE's behavior of
	breaking on - and ?.
	
        Reviewed by john

        * khtml/rendering/break_lines.cpp:
        (khtml::isBreakable):

2003-11-17  David Hyatt  <hyatt@apple.com>

	Fix for 3415771, Safari should use mini form controls when necessary.  This patch adds heuristics for
	swapping in mini form controls and also drops intrinsic margins when mini form controls are used.

	Fix for 3486454, options/optgroups should strip leading/trailing space.
	
	Together these two fixes solve 3486581, travelocity misrenders because form controls are too large.

	Reviewed by Darin

	Also fixing 3474994, alink needs to be restricted to actual links and not all <a> tags.

	Reviewed by John

	Finally, adding :active outlines around <input type=image> (covered by the old bug 3141767).

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::CSSStyleSelector):
        (khtml::CSSStyleSelector::applyRule):
        (khtml::CSSStyleSelector::checkForGenericFamilyChange):
        (khtml::CSSStyleSelector::getComputedSizeFromSpecifiedSize):
        (khtml::):
        (khtml::CSSStyleSelector::fontSizeForKeyword):
        (khtml::CSSStyleSelector::largerFontSize):
        (khtml::CSSStyleSelector::smallerFontSize):
        * khtml/css/cssstyleselector.h:
        * khtml/css/html4.css:
        * khtml/html/html_baseimpl.cpp:
        (HTMLBodyElementImpl::parseAttribute):
        * khtml/khtml_part.cpp:
        (KHTMLPart::setZoomFactor):
        * khtml/rendering/render_form.cpp:
        (RenderFormElement::addIntrinsicMarginsIfAllowed):
        (RenderSelect::updateFromElement):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::recalcStyle):
        (DocumentImpl::attach):
        * kwq/KWQButton.mm:
        (KWQNSControlSizeForFont):

2003-11-17  David Hyatt  <hyatt@apple.com>

	Back out my change to exclude text runs from getting a relayout on a style change.  I totally forgot about
	text zooming.
	
        * khtml/rendering/render_object.cpp:
        (RenderObject::setStyle):

2003-11-16  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	<rdar://problem/3131664>: add support for the window.print() command used for "print this page" buttons
        
	* khtml/ecma/kjs_window.cpp:
        (Window::get): add support for window.print (Apple-only)
        (WindowFunc::tryCall): ditto
        * khtml/ecma/kjs_window.h: Add Print to enum
        * khtml/ecma/kjs_window.lut.h: Regenerated
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::print): Call bridge.
        * kwq/KWQKHTMLPart.h: Declare above.
        * kwq/WebCoreBridge.h: prototype print method for other side of bridge.

2003-11-16  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

        * kwq/KWQKHTMLPartBrowserExtension.mm:
        (KHTMLPartBrowserExtension::createNewWindow): Check for the
	returned part being NULL, not the out value pointer.

2003-11-16  David Hyatt  <hyatt@apple.com>

	Fix for 3485779, <input type=image> and <button> should not be mouse focusable.

	Fix for 3485795, <input type=image> and <button> are being treated like links when they should not be.

	Fix for 3485817, <input type=image> and <button> should obey full keyboard access mode.

	Fix for 3485802, fieldset/legend/option/optgroup/label should not be focusable at all.
	
        Reviewed by kocienda

        * ChangeLog:
        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::isKeyboardFocusable):
        (HTMLGenericFormElementImpl::isMouseFocusable):
        (HTMLFieldSetElementImpl::isFocusable):
        (HTMLLabelElementImpl::isFocusable):
        (HTMLLegendElementImpl::isFocusable):
        (HTMLOptGroupElementImpl::isFocusable):
        (HTMLOptionElementImpl::HTMLOptionElementImpl):
        (HTMLOptionElementImpl::isFocusable):
        * khtml/html/html_formimpl.h:
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::isMouseFocusable):
        (HTMLAnchorElementImpl::isKeyboardFocusable):
        * khtml/html/html_inlineimpl.h:
        * khtml/khtml_part.cpp:
        (KHTMLPart::tabsToLinks):
        (KHTMLPart::tabsToAllControls):
        * khtml/khtml_part.h:
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::nextKeyViewInFrame):
        (KWQKHTMLPart::tabsToLinks):
        (KWQKHTMLPart::tabsToAllControls):

2003-11-16  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	- fixed 3484723 - name property of window reference from window.open call is always empty
	
        * kwq/KWQKHTMLPartBrowserExtension.mm:
        (KHTMLPartBrowserExtension::createNewWindow): Set the part name on the khtml side when
	making a new window.

2003-11-16  David Hyatt  <hyatt@apple.com>

	Fix for 3485766.
	
	Make sure DOM elements that are programmatically focused at a time when they have no render objects restore the
	focus to their widgets when render objects get built.
	
        Reviewed by darin

        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::attach):

2003-11-16  David Hyatt  <hyatt@apple.com>

	Add border info to the render tree dumper.

        * khtml/rendering/render_style.h:
        (khtml::BorderValue::operator!=):
        * kwq/KWQRenderTreeDebug.cpp:
        (printBorderStyle):
        (operator<<):
        * layout-tests/apple-only/base/bugzilla.mozilla.org/index-expected.txt:
        * layout-tests/apple-only/base/home.netscape.com/index-expected.txt:
        * layout-tests/apple-only/base/lxr.mozilla.org/index-expected.txt:
        * layout-tests/apple-only/base/my.netscape.com/index-expected.txt:
        * layout-tests/apple-only/base/news.cnet.com/index-expected.txt:
        * layout-tests/apple-only/base/web.icq.com/index-expected.txt:
        * layout-tests/apple-only/base/www.altavista.com/index-expected.txt:
        * layout-tests/apple-only/base/www.amazon.com/index-expected.txt:
        * layout-tests/apple-only/base/www.cnn.com/index-expected.txt:
        * layout-tests/apple-only/base/www.digitalcity.com/index-expected.txt:
        * layout-tests/apple-only/base/www.ebay.com/index-expected.txt:
        * layout-tests/apple-only/base/www.excite.com/index-expected.txt:
        * layout-tests/apple-only/base/www.expedia.com/index-expected.txt:
        * layout-tests/apple-only/base/www.iplanet.com/index-expected.txt:
        * layout-tests/apple-only/base/www.mapquest.com/index-expected.txt:
        * layout-tests/apple-only/base/www.microsoft.com/index-expected.txt:
        * layout-tests/apple-only/base/www.moviefone.com/index-expected.txt:
        * layout-tests/apple-only/base/www.msn.com/index-expected.txt:
        * layout-tests/apple-only/base/www.msnbc.com/index-expected.txt:
        * layout-tests/apple-only/base/www.nytimes.com/index-expected.txt:
        * layout-tests/apple-only/base/www.nytimes.com_Table/index-expected.txt:
        * layout-tests/apple-only/base/www.quicken.com/index-expected.txt:
        * layout-tests/apple-only/base/www.sun.com/index-expected.txt:
        * layout-tests/apple-only/base/www.time.com/index-expected.txt:
        * layout-tests/apple-only/base/www.travelocity.com/index-expected.txt:
        * layout-tests/apple-only/base/www.w3.org_DOML2Core/index-expected.txt:
        * layout-tests/apple-only/base/www.yahoo.com/index-expected.txt:
        * layout-tests/apple-only/base/www.zdnet.com/index-expected.txt:
        * layout-tests/apple-only/base/www.zdnet.com_Gamespot.com/index-expected.txt:
        * layout-tests/css1/basic/class_as_selector-expected.txt:
        * layout-tests/css1/basic/comments-expected.txt:
        * layout-tests/css1/basic/containment-expected.txt:
        * layout-tests/css1/basic/contextual_selectors-expected.txt:
        * layout-tests/css1/basic/grouping-expected.txt:
        * layout-tests/css1/basic/id_as_selector-expected.txt:
        * layout-tests/css1/basic/inheritance-expected.txt:
        * layout-tests/css1/box_properties/acid_test-expected.txt:
        * layout-tests/css1/box_properties/border-expected.txt:
        * layout-tests/css1/box_properties/border_bottom-expected.txt:
        * layout-tests/css1/box_properties/border_bottom_inline-expected.txt:
        * layout-tests/css1/box_properties/border_bottom_width-expected.txt:
        * layout-tests/css1/box_properties/border_bottom_width_inline-expected.txt:
        * layout-tests/css1/box_properties/border_color-expected.txt:
        * layout-tests/css1/box_properties/border_color_inline-expected.txt:
        * layout-tests/css1/box_properties/border_inline-expected.txt:
        * layout-tests/css1/box_properties/border_left-expected.txt:
        * layout-tests/css1/box_properties/border_left_inline-expected.txt:
        * layout-tests/css1/box_properties/border_left_width-expected.txt:
        * layout-tests/css1/box_properties/border_left_width_inline-expected.txt:
        * layout-tests/css1/box_properties/border_right-expected.txt:
        * layout-tests/css1/box_properties/border_right_inline-expected.txt:
        * layout-tests/css1/box_properties/border_right_width-expected.txt:
        * layout-tests/css1/box_properties/border_right_width_inline-expected.txt:
        * layout-tests/css1/box_properties/border_style-expected.txt:
        * layout-tests/css1/box_properties/border_style_inline-expected.txt:
        * layout-tests/css1/box_properties/border_top-expected.txt:
        * layout-tests/css1/box_properties/border_top_inline-expected.txt:
        * layout-tests/css1/box_properties/border_top_width-expected.txt:
        * layout-tests/css1/box_properties/border_top_width_inline-expected.txt:
        * layout-tests/css1/box_properties/border_width-expected.txt:
        * layout-tests/css1/box_properties/border_width_inline-expected.txt:
        * layout-tests/css1/box_properties/clear-expected.txt:
        * layout-tests/css1/box_properties/clear_float-expected.txt:
        * layout-tests/css1/box_properties/float-expected.txt:
        * layout-tests/css1/box_properties/float_elements_in_series-expected.txt:
        * layout-tests/css1/box_properties/float_margin-expected.txt:
        * layout-tests/css1/box_properties/float_on_text_elements-expected.txt:
        * layout-tests/css1/box_properties/height-expected.txt:
        * layout-tests/css1/box_properties/margin-expected.txt:
        * layout-tests/css1/box_properties/margin_bottom-expected.txt:
        * layout-tests/css1/box_properties/margin_bottom_inline-expected.txt:
        * layout-tests/css1/box_properties/margin_inline-expected.txt:
        * layout-tests/css1/box_properties/margin_left-expected.txt:
        * layout-tests/css1/box_properties/margin_left_inline-expected.txt:
        * layout-tests/css1/box_properties/margin_right-expected.txt:
        * layout-tests/css1/box_properties/margin_right_inline-expected.txt:
        * layout-tests/css1/box_properties/margin_top-expected.txt:
        * layout-tests/css1/box_properties/margin_top_inline-expected.txt:
        * layout-tests/css1/box_properties/padding-expected.txt:
        * layout-tests/css1/box_properties/padding_bottom-expected.txt:
        * layout-tests/css1/box_properties/padding_bottom_inline-expected.txt:
        * layout-tests/css1/box_properties/padding_inline-expected.txt:
        * layout-tests/css1/box_properties/padding_left-expected.txt:
        * layout-tests/css1/box_properties/padding_left_inline-expected.txt:
        * layout-tests/css1/box_properties/padding_right-expected.txt:
        * layout-tests/css1/box_properties/padding_right_inline-expected.txt:
        * layout-tests/css1/box_properties/padding_top-expected.txt:
        * layout-tests/css1/box_properties/padding_top_inline-expected.txt:
        * layout-tests/css1/box_properties/width-expected.txt:
        * layout-tests/css1/cascade/cascade_order-expected.txt:
        * layout-tests/css1/cascade/important-expected.txt:
        * layout-tests/css1/classification/display-expected.txt:
        * layout-tests/css1/classification/list_style-expected.txt:
        * layout-tests/css1/classification/list_style_image-expected.txt:
        * layout-tests/css1/classification/list_style_position-expected.txt:
        * layout-tests/css1/classification/list_style_type-expected.txt:
        * layout-tests/css1/classification/white_space-expected.txt:
        * layout-tests/css1/color_and_background/background-expected.txt:
        * layout-tests/css1/color_and_background/background_attachment-expected.txt:
        * layout-tests/css1/color_and_background/background_color-expected.txt:
        * layout-tests/css1/color_and_background/background_image-expected.txt:
        * layout-tests/css1/color_and_background/background_position-expected.txt:
        * layout-tests/css1/color_and_background/background_repeat-expected.txt:
        * layout-tests/css1/color_and_background/color-expected.txt:
        * layout-tests/css1/conformance/forward_compatible_parsing-expected.txt:
        * layout-tests/css1/font_properties/font-expected.txt:
        * layout-tests/css1/font_properties/font_family-expected.txt:
        * layout-tests/css1/font_properties/font_size-expected.txt:
        * layout-tests/css1/font_properties/font_style-expected.txt:
        * layout-tests/css1/font_properties/font_variant-expected.txt:
        * layout-tests/css1/font_properties/font_weight-expected.txt:
        * layout-tests/css1/formatting_model/canvas-expected.txt:
        * layout-tests/css1/formatting_model/floating_elements-expected.txt:
        * layout-tests/css1/formatting_model/height_of_lines-expected.txt:
        * layout-tests/css1/formatting_model/inline_elements-expected.txt:
        * layout-tests/css1/formatting_model/replaced_elements-expected.txt:
        * layout-tests/css1/formatting_model/vertical_formatting-expected.txt:
        * layout-tests/css1/pseudo/anchor-expected.txt:
        * layout-tests/css1/pseudo/firstletter-expected.txt:
        * layout-tests/css1/pseudo/firstline-expected.txt:
        * layout-tests/css1/pseudo/multiple_pseudo_elements-expected.txt:
        * layout-tests/css1/pseudo/pseudo_elements_in_selectors-expected.txt:
        * layout-tests/css1/text_properties/letter_spacing-expected.txt:
        * layout-tests/css1/text_properties/line_height-expected.txt:
        * layout-tests/css1/text_properties/text-transform-expected.txt:
        * layout-tests/css1/text_properties/text_align-expected.txt:
        * layout-tests/css1/text_properties/text_decoration-expected.txt:
        * layout-tests/css1/text_properties/text_indent-expected.txt:
        * layout-tests/css1/text_properties/text_transform-expected.txt:
        * layout-tests/css1/text_properties/vertical_align-expected.txt:
        * layout-tests/css1/text_properties/word_spacing-expected.txt:
        * layout-tests/css1/units/color_units-expected.txt:
        * layout-tests/css1/units/length_units-expected.txt:
        * layout-tests/css1/units/percentage_units-expected.txt:
        * layout-tests/css1/units/urls-expected.txt:
        * layout-tests/fast/block/basic/001-expected.txt:
        * layout-tests/fast/block/basic/002-expected.txt:
        * layout-tests/fast/block/basic/003-expected.txt:
        * layout-tests/fast/block/basic/004-expected.txt:
        * layout-tests/fast/block/basic/007-expected.txt:
        * layout-tests/fast/block/basic/011-expected.txt:
        * layout-tests/fast/block/basic/015-expected.txt:
        * layout-tests/fast/block/basic/016-expected.txt:
        * layout-tests/fast/block/basic/017-expected.txt:
        * layout-tests/fast/block/basic/018-expected.txt:
        * layout-tests/fast/block/basic/019-expected.txt:
        * layout-tests/fast/block/float/004-expected.txt:
        * layout-tests/fast/block/float/005-expected.txt:
        * layout-tests/fast/block/float/006-expected.txt:
        * layout-tests/fast/block/float/007-expected.txt:
        * layout-tests/fast/block/float/012-expected.txt:
        * layout-tests/fast/block/float/013-expected.txt:
        * layout-tests/fast/block/float/015-expected.txt:
        * layout-tests/fast/block/float/016-expected.txt:
        * layout-tests/fast/block/float/017-expected.txt:
        * layout-tests/fast/block/float/019-expected.txt:
        * layout-tests/fast/block/float/021-expected.txt:
        * layout-tests/fast/block/float/022-expected.txt:
        * layout-tests/fast/block/float/024-expected.txt:
        * layout-tests/fast/block/float/025-expected.txt:
        * layout-tests/fast/block/float/026-expected.txt:
        * layout-tests/fast/block/float/027-expected.txt:
        * layout-tests/fast/block/float/028-expected.txt:
        * layout-tests/fast/block/margin-collapse/001-expected.txt:
        * layout-tests/fast/block/margin-collapse/005-expected.txt:
        * layout-tests/fast/block/margin-collapse/006-expected.txt:
        * layout-tests/fast/block/margin-collapse/010-expected.txt:
        * layout-tests/fast/block/margin-collapse/011-expected.txt:
        * layout-tests/fast/block/margin-collapse/012-expected.txt:
        * layout-tests/fast/block/margin-collapse/015-expected.txt:
        * layout-tests/fast/block/margin-collapse/016-expected.txt:
        * layout-tests/fast/block/margin-collapse/017-expected.txt:
        * layout-tests/fast/block/margin-collapse/018-expected.txt:
        * layout-tests/fast/block/margin-collapse/019-expected.txt:
        * layout-tests/fast/block/margin-collapse/020-expected.txt:
        * layout-tests/fast/block/margin-collapse/021-expected.txt:
        * layout-tests/fast/block/margin-collapse/022-expected.txt:
        * layout-tests/fast/block/margin-collapse/024-expected.txt:
        * layout-tests/fast/block/margin-collapse/025-expected.txt:
        * layout-tests/fast/block/margin-collapse/026-expected.txt:
        * layout-tests/fast/block/margin-collapse/027-expected.txt:
        * layout-tests/fast/block/margin-collapse/028-expected.txt:
        * layout-tests/fast/block/margin-collapse/029-expected.txt:
        * layout-tests/fast/block/margin-collapse/030-expected.txt:
        * layout-tests/fast/block/margin-collapse/032-expected.txt:
        * layout-tests/fast/block/margin-collapse/033-expected.txt:
        * layout-tests/fast/block/margin-collapse/034-expected.txt:
        * layout-tests/fast/block/margin-collapse/035-expected.txt:
        * layout-tests/fast/block/margin-collapse/041-expected.txt:
        * layout-tests/fast/block/margin-collapse/042-expected.txt:
        * layout-tests/fast/block/margin-collapse/043-expected.txt:
        * layout-tests/fast/block/positioning/048-expected.txt:
        * layout-tests/fast/block/positioning/049-expected.txt:
        * layout-tests/fast/block/positioning/050-expected.txt:
        * layout-tests/fast/block/positioning/051-expected.txt:
        * layout-tests/fast/block/positioning/056-expected.txt:
        * layout-tests/fast/block/positioning/057-expected.txt:
        * layout-tests/fast/block/positioning/058-expected.txt:
        * layout-tests/fast/block/positioning/auto/001-expected.txt:
        * layout-tests/fast/block/positioning/auto/002-expected.txt:
        * layout-tests/fast/block/positioning/auto/003-expected.txt:
        * layout-tests/fast/block/positioning/auto/004-expected.txt:
        * layout-tests/fast/block/positioning/auto/005-expected.txt:
        * layout-tests/fast/block/positioning/auto/006-expected.txt:
        * layout-tests/fast/clip/013-expected.txt:
        * layout-tests/fast/clip/014-expected.txt:
        * layout-tests/fast/css-generated-content/006-expected.txt:
        * layout-tests/fast/css/003-expected.txt:
        * layout-tests/fast/css/004-expected.txt:
        * layout-tests/fast/css/005-expected.txt:
        * layout-tests/fast/dynamic/002-expected.txt:
        * layout-tests/fast/dynamic/004-expected.txt:
        * layout-tests/fast/encoding/utf-16-big-endian-expected.txt:
        * layout-tests/fast/encoding/utf-16-little-endian-expected.txt:
        * layout-tests/fast/flexbox/007-expected.txt:
        * layout-tests/fast/flexbox/008-expected.txt:
        * layout-tests/fast/flexbox/009-expected.txt:
        * layout-tests/fast/flexbox/011-expected.txt:
        * layout-tests/fast/flexbox/016-expected.txt:
        * layout-tests/fast/flexbox/017-expected.txt:
        * layout-tests/fast/flexbox/018-expected.txt:
        * layout-tests/fast/flexbox/019-expected.txt:
        * layout-tests/fast/flexbox/022-expected.txt:
        * layout-tests/fast/flexbox/025-expected.txt:
        * layout-tests/fast/forms/001-expected.txt:
        * layout-tests/fast/forms/002-expected.txt:
        * layout-tests/fast/forms/006-expected.txt:
        * layout-tests/fast/forms/007-expected.txt:
        * layout-tests/fast/forms/form-element-geometry-expected.txt:
        * layout-tests/fast/frames/001-expected.txt:
        * layout-tests/fast/inline-block/001-expected.txt:
        * layout-tests/fast/inline-block/002-expected.txt:
        * layout-tests/fast/inline-block/003-expected.txt:
        * layout-tests/fast/inline/001-expected.txt:
        * layout-tests/fast/invalid/008-expected.txt:
        * layout-tests/fast/invalid/014-expected.txt:
        * layout-tests/fast/invalid/016-expected.txt:
        * layout-tests/fast/lists/001-expected.txt:
        * layout-tests/fast/lists/004-expected.txt:
        * layout-tests/fast/lists/007-expected.txt:
        * layout-tests/fast/overflow/001-expected.txt:
        * layout-tests/fast/overflow/002-expected.txt:
        * layout-tests/fast/overflow/004-expected.txt:
        * layout-tests/fast/replaced/005-expected.txt:
        * layout-tests/fast/replaced/006-expected.txt:
        * layout-tests/fast/replaced/008-expected.txt:
        * layout-tests/fast/selectors/009-expected.txt:
        * layout-tests/fast/selectors/014-expected.txt:
        * layout-tests/fast/selectors/032-expected.txt:
        * layout-tests/fast/selectors/033-expected.txt:
        * layout-tests/fast/selectors/039-expected.txt:
        * layout-tests/fast/selectors/039b-expected.txt:
        * layout-tests/fast/selectors/064-expected.txt:
        * layout-tests/fast/selectors/077-expected.txt:
        * layout-tests/fast/selectors/077b-expected.txt:
        * layout-tests/fast/selectors/078-expected.txt:
        * layout-tests/fast/selectors/078b-expected.txt:
        * layout-tests/fast/selectors/166a-expected.txt:
        * layout-tests/fast/table/003-expected.txt:
        * layout-tests/fast/table/004-expected.txt:
        * layout-tests/fast/table/005-expected.txt:
        * layout-tests/fast/table/006-expected.txt:
        * layout-tests/fast/table/007-expected.txt:
        * layout-tests/fast/table/008-expected.txt:
        * layout-tests/fast/table/009-expected.txt:
        * layout-tests/fast/table/015-expected.txt:
        * layout-tests/fast/table/017-expected.txt:
        * layout-tests/fast/table/018-expected.txt:
        * layout-tests/fast/table/020-expected.txt:
        * layout-tests/fast/table/023-expected.txt:
        * layout-tests/fast/table/025-expected.txt:
        * layout-tests/fast/table/027-expected.txt:
        * layout-tests/fast/table/028-expected.txt:
        * layout-tests/fast/table/029-expected.txt:
        * layout-tests/fast/table/030-expected.txt:
        * layout-tests/fast/table/035-expected.txt:
        * layout-tests/fast/table/036-expected.txt:
        * layout-tests/fast/table/038-expected.txt:
        * layout-tests/fast/table/border-collapsing/001-expected.txt:
        * layout-tests/fast/table/border-collapsing/002-expected.txt:
        * layout-tests/fast/table/border-collapsing/003-expected.txt:
        * layout-tests/fast/table/border-collapsing/004-expected.txt:
        * layout-tests/fast/table/large-width-expected.txt:
        * layout-tests/fast/table/nobr-expected.txt:
        * layout-tests/fast/text/basic/001-expected.txt:
        * layout-tests/fast/text/basic/003-expected.txt:
        * layout-tests/fast/text/basic/004-expected.txt:
        * layout-tests/fast/text/basic/005-expected.txt:
        * layout-tests/fast/text/basic/006-expected.txt:
        * layout-tests/fast/text/basic/007-expected.txt:
        * layout-tests/fast/text/basic/012-expected.txt:
        * layout-tests/fast/text/firstline/002-expected.txt:
        * layout-tests/fast/text/whitespace/002-expected.txt:
        * layout-tests/fast/text/whitespace/003-expected.txt:
        * layout-tests/fast/text/whitespace/020-expected.txt:
        * layout-tests/fast/text/whitespace/023-expected.txt:
        * layout-tests/fast/text/whitespace/024-expected.txt:
        * layout-tests/fast/text/whitespace/025-expected.txt:
        * layout-tests/fast/text/whitespace/027-expected.txt:

2003-11-16  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed 3362841 - javascript History Object length property is always 0

        * kwq/KWQKPartsBrowserInterface.mm:
        (KParts::BrowserInterface::property): For the historyLength property,
	retturn a UInt variant, not Int, because that's what the kjs_window code
	expects.

2003-11-14  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken and Dave.

	- fixed 3471925 - getting and setting cssText not implemented

        * khtml/css/css_valueimpl.cpp:
        (CSSStyleDeclarationImpl::cssText): Implemented by gathering text of all
	properties (that are not non-CSS hints), separated with semicolons.
        (CSSStyleDeclarationImpl::setCssText): Implemented by clearing all existing
	properties (that are not non-CSS hints) and invoking css parser.
        (CSSValueListImpl::cssText): Implemented.
        (FontValueImpl::cssText): Implemented.
        (ShadowValueImpl::cssText): Implemented.
        (CSSProperty::cssText): Implemented.
        * khtml/css/css_valueimpl.h: Declared new methods; made
	CSSValueImpl::cssText() pure virtual; removed CSSValueImpl::setCssText().

2003-11-16  David Hyatt  <hyatt@apple.com>

	3485717, Cleanup of the float code.  Eliminated the -khtml-flow-mode style property in favor of two simple methods,
	avoidsFloats() and usesLineWidth().  avoidsFloats can be called to tell whether an object does not want
	floats to intrude into its space (and that it should also move to avoid floats).  usesLineWidth is called
	to find out if an object's containing block width is the line width or the content width, and has all the
	right smarts to emulate WinIE's behaviors in both quirks and strict mode.

	Also fixed a bug (3485718) where overflow:scroll blocks with auto height did not factor in the horizontal scrollbar's
	height (thus causing it to paint on top of content).
	
        Reviewed by darin

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/css/html4.css:
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::layoutBlockChildren):
        (khtml::RenderBlock::clearFloats):
        * khtml/rendering/render_box.cpp:
        (RenderBox::containingBlockWidth):
        (RenderBox::calcWidth):
        * khtml/rendering/render_object.cpp:
        (RenderObject::isHR):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::avoidsFloats):
        (khtml::RenderObject::usesLineWidth):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::NonInheritedFlags::operator==):
        (khtml::RenderStyle::setBitDefaults):
        (khtml::RenderStyle::initialTextDecoration):
        * khtml/rendering/render_table.cpp:
        (RenderTable::calcWidth):

2003-11-14  David Hyatt  <hyatt@apple.com>

	Fix for 3485260, regression on Uniview site from incremental repainting.  When appending/inserting child
	nodes into the render tree, we need to always mark them as needing layout themselves (and not just as
	having children needing layout).  This ensures that the incremental repainting code will know to repaint the
	enclosing container (even though that container's size may not change).

	Fix for 3411960, block-level replaced elements should avoid floats.

	Fix for 3463234, floats should not intrude into overflow blocks (even when siblings happen to get in
	between the float and the overflow block).

	Fix for 3485576, the containing block for text runs is incorrect.

	Fix for 3485577, text runs should not trigger layout when style is re-resolved.
	
        Reviewed by darin

        * khtml/rendering/render_container.cpp:
        (RenderContainer::appendChildNode):
        (RenderContainer::insertChildNode):
        * khtml/rendering/render_box.cpp
	* khtml/rendering/render_object.cpp
	
2003-11-14  David Hyatt  <hyatt@apple.com>

	Fix for 3473707, 100% height positioned divs are too tall.  The padding box wasn't being used like it was
	supposed to be when calcing percentage heights.
	
        Reviewed by kocienda

        * khtml/rendering/render_box.cpp:
        (RenderBox::calcAbsoluteVertical):

=== Safari-114 ===

2003-11-14  Maciej Stachowiak  <mjs@apple.com>

        - backed out changes unintentionally commited while the tree was closed

        * khtml/css/css_valueimpl.cpp:
        * khtml/css/css_valueimpl.h:
        * kwq/KWQKPartsBrowserInterface.mm:

2003-11-14  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken.

	- fixed 3471925 - getting and setting cssText not implemented

        * khtml/css/css_valueimpl.cpp:
        (CSSStyleDeclarationImpl::cssText): Implemented by gathering text of all
	properties, separated with semicolons.
        (CSSStyleDeclarationImpl::setCssText): Implemented by clearing all existing
	properties and invoking css parser.
        (CSSValueListImpl::cssText): Implemented.
        (FontValueImpl::cssText): Implemented.
        (ShadowValueImpl::cssText): Implemented.
        (CSSProperty::cssText): Implemented.
        * khtml/css/css_valueimpl.h: Declared new methods; made
	CSSValueImpl::cssText() pure virtual; removed
	CSSValueImpl::setCssText().

2003-11-14  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - first half of fix for 3457162 -- selecting text during a page load that blows the text field
          away causes a crash

        The WebCore part of this fix is to generalize the "defers loading" feature to all mouse clicks,
        rather than just doing it for mouse clicks on the combo box.

        * kwq/KWQComboBox.mm: (-[KWQPopUpButtonCell trackMouse:inRect:ofView:untilMouseUp:]):
        Remove code to defer loading.
        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::passWidgetMouseDownEventToWidget): Put the code here
        instead.

2003-11-14  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3483585>: Option-tab in a text field inputs 
        a character rather than tabbing to the next widget

        Reviewed by Ken.

        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::handleKeyboardOptionTabInView):
        New method. If current event is option-tab or option-shift-tab, do
        keyboard navigation and return YES.
        
        * kwq/KWQTextArea.mm:
        (-[KWQTextArea textDidChange:]):
        Bail out if KWQKHTMLPart::handleKeyboardOptionTabInView returns YES.
        
        * kwq/KWQTextField.mm:
        (-[KWQTextField controlTextDidChange:]):
        Bail out if KWQKHTMLPart::handleKeyboardOptionTabInView returns YES.

2003-11-13  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed 3472875 -- REGRESSION (109-110): insertion point does not blink in a nonempty textarea
        - fixed 3484002 -- disabling, then enabling a read-only <textarea> will make it editable

        * kwq/KWQTextArea.mm:
        (-[KWQTextArea setText:]): Call updateTextColor after setting the text.
        (-[KWQTextArea setEditable:]): Don't set the NSTextView editable property directly,
        because we don't want to make a disabled text view editable right away, but we need
        to later if it's enabled.
        (-[KWQTextArea isEditable]): Don't get the NSTextView editable property directly,
        because it can be appropriate to return YES even if the text view happens to be disabled.
        (-[KWQTextAreaTextView initWithFrame:textContainer:]): Initialize editableIfEnabled to YES.
        (-[KWQTextAreaTextView setEnabled:]): Don't set the editable state to true if
        editableIfEnabled is NO. The old code would make a read-only field editable if you
        changed it to be enabled. Also update the color of the text here.
        (-[KWQTextAreaTextView setEditableIfEnabled:]): Store the editableIfEnabled state in a
        field, and then alter the state of the editable flag to match if we're currently enabled.
        (-[KWQTextAreaTextView isEditableIfEnabled]): Return the editableIfEnabled state.
        (-[KWQTextAreaTextView updateTextColor]): Update the color of the text. This was done in
        drawRect: before, which was the cause of the lack of insertion point.

2003-11-13  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed 3474330 -- tooltips do not work for <area> elements

        * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): When looking for a title, start
        with innerNode (which can be an <area> inside a <map>). This matches what Mozilla does.

2003-11-13  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed - 3479285 - hang at www.saccourt.com
	- fixed - 3477088 - (85-112) Safari frozen loading a page at Postal Service site of Taiwan
	
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLSelectCollection::tryPut): Use the range-checking
	version of the number-conversion function to avoid negative
	numbers and NaN.

2003-11-13  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John
	
	Fix for this bug:

	<rdar://problem/3483284>: Tabbing to links needs to honor new 
	WebKit tab-to-links preference

	In addition to fixing the bug, I also did a bit of cleanup
	in the code which helps to determine tab order.

	Biggest change is to modify the keyboard UI mode function so
	that it is a set of flags, rather than a straight-up value.

	I also tweaked the names on the keyboard UI mode constants
	to make them read better.

        * kwq/KWQButton.mm:
        (QButton::focusPolicy): Tweaks to make more readable and use 
	new model for keyboard UI mode.
        * kwq/KWQComboBox.mm:
        (QComboBox::focusPolicy): Ditto. Plus, this function was not
	blocking exceptions.
        * kwq/KWQFileButton.mm:
        (KWQFileButton::focusPolicy): Tweaks to make more readable and use 
        new model for keyboard UI mode.
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::nextKeyViewInFrame): Now checks new tabsToLinks
	function to determine if links can be tabbed to.
        (KWQKHTMLPart::currentEventIsKeyboardOptionTab): New function
	checks for option-tab keyboard event.
        (KWQKHTMLPart::tabsToLinks): New helper to take keyboard UI mode
	and option-tab into account.
        (KWQKHTMLPart::keyboardUIMode): Name tweak.
        * kwq/KWQListBox.mm: Tweaks to make more readable and use 
        new model for keyboard UI mode.
        (QListBox::focusPolicy):
        * kwq/WebCoreKeyboardAccess.h: Tweaked names. Added WebCoreKeyboardAccessTabsToLinks.

2003-11-13  David Hyatt  <hyatt@apple.com>

	Implement a custom unfurl marquee style.
	
        Reviewed by john

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/rendering/render_box.cpp:
        (RenderBox::calcHeight):
        * khtml/rendering/render_layer.cpp:
        (m_direction):
        (Marquee::isUnfurlMarquee):
        (Marquee::start):
        (Marquee::updateMarqueePosition):
        (Marquee::updateMarqueeStyle):
        (Marquee::timerEvent):
        * khtml/rendering/render_layer.h:
        (khtml::):
        * khtml/rendering/render_style.h:
        (khtml::):

2003-11-13  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

	Fix for this bug:

	<rdar://problem/3480761>: event object type attribute returns 
	khtml_keypress instead of keypress

	Fixed string so that it returns keypress instead of khtml_keypress.
	While I was at it, I changed the constant used for this event from
	KHTML_KEYPRESS_EVENT to KEYPRESS_EVENT.

        * khtml/ecma/kjs_binding.cpp:
        (ScriptInterpreter::wasRunByUserGesture): Constant name fixup.
        * khtml/ecma/kjs_dom.cpp: Ditto.
        (DOMNode::getValueProperty): Ditto.
        (DOMNode::putValue): Ditto.
        * khtml/ecma/kjs_window.cpp:
        (Window::get): Ditto.
        (Window::put): Ditto.
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseAttribute): Ditto.
        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::defaultEventHandler): Ditto.
        (HTMLSelectElementImpl::defaultEventHandler): Ditto.
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::idToType): This is the change that fixes the bug.
        (KeyboardEventImpl::KeyboardEventImpl): Constant name fixup.
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::): Ditto.

2003-11-13  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed 3452554 -- keyCode attribute for DOM events reports incorrect value

        * khtml/dom/dom2_events.cpp:
        (UIEvent::keyCode): Return the Windows key code for keydown and keyup events.
        But for other events, return the character code. This matches IE.
        (UIEvent::which): Same behavior for now; may need further refinement.

        * kwq/KWQEvent.h: Change QEvent to allow copying. The Qt version probably doesn't
        allow it, but for us it's no big deal. Our event objects are just data holders.
        (QKeyEvent::QKeyEvent): Change parameters; take an NSEvent and figure the rest out
        here. Except for now get the type, button state, and auto repeat flag from the caller
        because that's a smaller change from how things are done now. I'll take this the next
        step later.
        * kwq/KWQEvent.mm:
        (characterCode): Added. Extracts the character code from the string if it's exactly
        1 character long.
        (WindowsKeyCode): Added. Given an event, figures out the Windows key code. 
        (QKeyEvent::QKeyEvent): Changed to get things from the NSEvent rather than having them
        passed individually. One change is that _ascii is now the Unicode value of the first
        character in the string. This causes us to return the Unicode value from keyCode for
        keypress events. Another change is that we now compute the Windows key code.

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::keyEvent): Change to use the new QKeyEvent
        constructor, passing in the NSEvent.

        * khtml/xml/dom2_eventsimpl.cpp: (KeyboardEventImpl::KeyboardEventImpl):
        In APPLE_CHANGES, copy the QKeyEvent using the copy constructor rather than
        listing the fields. This is easier to maintain when the list of fields changes.

        * khtml/rendering/render_form.cpp: (ComboBoxWidget::eventFilter): Put #if
        !APPLE_CHANGES around code that constructs a QKeyEvent. We don't ever run this
        code, but now we can't compile it either so we need the #if.

2003-11-12  David Hyatt  <hyatt@apple.com>

	Fix for 3482132, incremental repainting for layout, i.e., only repaint areas that change when
	doing a layout.
	
        Reviewed by kocienda

        * khtml/khtmlview.h:
        * khtml/rendering/render_canvas.cpp:
        (RenderCanvas::repaintViewRectangle):
        * khtml/rendering/render_layer.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::setNeedsLayout):
        (RenderObject::setChildNeedsLayout):
        * khtml/rendering/render_object.h:
        * khtml/rendering/render_table.cpp:
        (RenderTableSection::layoutRows):

2003-11-12  Ken Kocienda  <kocienda@apple.com>

	I am an idiot for just assuming that these elements implement a focus()
	function, without actually compiling and testing. I will have to add 
	this function to these elements so I can make this work.

        * khtml/html/html_formimpl.cpp:
        (HTMLButtonElementImpl::accessKeyAction): These elements do not implement focus().
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::accessKeyAction): Ditto.

2003-11-12  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Richard

        * khtml/html/html_formimpl.cpp:
        (HTMLButtonElementImpl::click): Implemented. Missed this in my earlier patch.
        (HTMLButtonElementImpl::accessKeyAction): Added. Focus and click.
        (HTMLInputElementImpl::accessKeyAction): Added. Focus the element.
        (HTMLSelectElementImpl::accessKeyAction): Added. Focus the element.
        (HTMLTextAreaElementImpl::accessKeyAction): Added. Focus the element.
        * khtml/html/html_formimpl.h:
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::accessKeyAction): Added. Focus and click.
        * khtml/html/html_inlineimpl.h:
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl):
        (DocumentImpl::addElementById): Dirty the accesskey dictionary.
        (DocumentImpl::removeElementById): Ditto.
        (DocumentImpl::getElementByAccessKey): Function to look up an element
	based on the key provided.
        (DocumentImpl::setDocumentChanged): Dirty the accesskey dictionary.
        (DocumentImpl::defaultEventHandler): Check the accesskey dictionary
	to see if some element wants to handle a key event.
        * khtml/xml/dom_docimpl.h:
        * khtml/xml/dom_elementimpl.h:
        (DOM::ElementImpl::accessKeyAction): Added. Send a click to the element.

2003-11-12  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Richard

	Fix for this bug:

	<rdar://problem/3481600>: key event objects do not preserve unmodified keys

        * khtml/xml/dom2_eventsimpl.cpp: Modified constructor call to include
	unmodifiedText.
        (KeyboardEventImpl::KeyboardEventImpl):
        * kwq/KWQEvent.h: Added unmodifiedText accessor and variable to QKeyEvent.
        * kwq/KWQEvent.mm:
        (QKeyEvent::QKeyEvent): Modified constructor to include unmodifiedText.
        (QKeyEvent::unmodifiedText): Added accessor.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::keyEvent): Modified constructor call to include
        unmodifiedText.

2003-11-12  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Maciej

        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::click): Implemented a programmatic click function for
	elements.
        * khtml/html/html_elementimpl.h:
        * khtml/html/html_formimpl.cpp:
        (HTMLFormElementImpl::submitClick): Implemented a programmatic click function for
	elements.
        (HTMLInputElementImpl::click): This implementation calls through
	to Cocoa button programmatic click function to get user interface
	feedback for button elements, and calls through to the superclass
	for other elements.
        * khtml/html/html_formimpl.h:
        * khtml/html/html_inlineimpl.cpp: Removed click() function for anchors.
	No longer needed.
        * khtml/html/html_inlineimpl.h: Ditto.

2003-11-12  David Hyatt  <hyatt@apple.com>

	Fix build bustage in deployment builds.

        * kwq/KWQLineEdit.mm:
        (QLineEdit::hasMarkedText):

2003-11-11  David Hyatt  <hyatt@apple.com>

	Fix for 3481134, shorthand parsing in CSS does not fill in omitted values.  The fix is to implement
	the CSS3 'initial' value for all properties (covered by 3481323), and then to fill in the omitted 
	values with the 'initial' value.

	This patch also fixes two bugs in the style system: 3481324, collapsed borders with border-style: none
	should always return a width of 0, and 3481322, 'clip' not inheriting properly in CSS when explicit
	inheritance is used.
	
        Reviewed by mjs

        * khtml/css/css_valueimpl.cpp:
        (CSSInitialValueImpl::cssText):
        * khtml/css/css_valueimpl.h:
        (DOM::CSSInitialValueImpl::cssValueType):
        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        (CSSParser::parseShortHand):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/dom/css_value.h:
        (DOM::CSSValue::):
        * khtml/rendering/render_style.cpp:
        (StyleBoxData::StyleBoxData):
        (StyleVisualData::StyleVisualData):
        (StyleBackgroundData::StyleBackgroundData):
        (StyleMarqueeData::StyleMarqueeData):
        (StyleFlexibleBoxData::StyleFlexibleBoxData):
        (opacity):
        (StyleInheritedData::StyleInheritedData):
        (RenderStyle::diff):
        * khtml/rendering/render_style.h:
        (khtml::BorderValue::BorderValue):
        (khtml::CollapsedBorderValue::width):
        (khtml::RenderStyle::InheritedFlags::operator==):
        (khtml::RenderStyle::setBitDefaults):
        (khtml::RenderStyle::resetBorderTop):
        (khtml::RenderStyle::resetBorderRight):
        (khtml::RenderStyle::resetBorderBottom):
        (khtml::RenderStyle::resetBorderLeft):
        (khtml::RenderStyle::resetOutline):
        (khtml::RenderStyle::setHasClip):
        (khtml::RenderStyle::resetMargin):
        (khtml::RenderStyle::resetPadding):
        (khtml::RenderStyle::setCursor):

2003-11-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed 3479537 - reproducible crash in KJS::WindowFunc::tryCall
	
        * khtml/ecma/kjs_window.cpp:
        (WindowFunc::tryCall): Check part and doc impl for null.

2003-11-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken.

	- fixed 3472330 -  REGRESSION: onKeyPress handler not called when hitting keys in <input type=password> field

        * kwq/KWQTextField.mm:
        (-[KWQSecureTextField initWithQLineEdit:]): New initializer, so
	the secure text field knows about the widget.
        (-[KWQTextField setPasswordMode:]): Use new initializer for
	KWQSecureTextField.
        (-[KWQSecureTextField textView:shouldHandleEvent:]): New method,
	do the same thing as the non-secure text field to pass the event on.
        (-[KWQSecureTextField textView:didHandleEvent:]): Ditto.

2003-11-11  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Maciej

	Fix for this bug:

	<rdar://problem/3480173>: Too many names for programmatic click functions

	Changed all instances of performClick() and simulateClick() to click().
	Changed all instances of performSubmitClick() to submitClick().

	Additionally, KWQButton had a simulateClick method, which was redundant
	given that its superclass has a performClick: method.

        * khtml/html/html_formimpl.cpp:
        (HTMLFormElementImpl::submitClick):
        (HTMLInputElementImpl::defaultEventHandler):
        (HTMLSelectElementImpl::defaultEventHandler):
        * khtml/html/html_formimpl.h:
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::defaultEventHandler):
        (HTMLAnchorElementImpl::click):
        * khtml/html/html_inlineimpl.h:
        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::slotReturnPressed):
        * kwq/KWQButton.h:
        * kwq/KWQButton.mm:
        (QButton::click):

2003-11-11  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed 3475272 - custom property on CSSStyleObject won't hold a value

        * khtml/ecma/kjs_css.cpp:
        (DOMCSSStyleDeclaration::tryPut): If the property is not a css property,
	save it as a custom object property in the normal way.

2003-11-11  John Sullivan  <sullivan@apple.com>

        - fixed <rdar://problem/3480421>: Focus rings around links are too thick, 
        should use 3 px instead of 5 px

        Reviewed by Don and Ken.

        * khtml/css/html4.css:
        use 3px instead of 5 px for :active, :focus

2003-11-11  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

	In the DOM Level 3 Events specification, keydown and keyup are 
	standard events. We can remove the KHTML component in the names 
	of these constants. Note that the keypress event is still 
	nonstandard and will retain the KHTML name component.

        * khtml/ecma/kjs_binding.cpp:
        (ScriptInterpreter::wasRunByUserGesture)
        * khtml/ecma/kjs_dom.cpp:
        (DOMNode::getValueProperty)
        (DOMNode::putValue)
        * khtml/ecma/kjs_window.cpp:
        (Window::get)
        (Window::put)
        * khtml/html/html_elementimpl.cpp:
        (HTMLElementImpl::parseAttribute)
        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::defaultEventHandler)
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::defaultEventHandler)
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::typeToId)
        (EventImpl::idToType)
        (KeyboardEventImpl::KeyboardEventImpl)
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::)

2003-11-11  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3480281>: drag image of selected text and images include broken images
	
        Reviewed by dave.

        * khtml/rendering/render_image.cpp:
        (RenderImage::paintObject): when drawing the drag image, don't draw the broken image

2003-11-11  Vicki Murley  <vicki@apple.com>

        Reviewed by sullivan.

	- rolled Merlot build fix onto the trunk

        * WebCorePrefix.h: added #include <sys/types.h>

2003-11-10  David Hyatt  <hyatt@apple.com>

	Fix for 3473531, text nested in hr inside h3 did not get the h3's style.
	
        Reviewed by darin

        * khtml/html/dtd.cpp:
        (DOM::checkChild):

2003-11-10  David Hyatt  <hyatt@apple.com>

	Fix for 3478435, <hr> tags should be centered by default.  Ditched the 1px margin as well.

	Fix for 3479441, <h1>-<h6> tags should *not* be centered by default.  They should also use bold instead of
	bolder.
	
        Reviewed by darin

        * khtml/css/html4.css:
        * khtml/html/html_blockimpl.cpp:
        (HTMLHRElementImpl::parseAttribute):
        * layout-tests/apple-only/base/bugzilla.mozilla.org/index-expected.txt:
        * layout-tests/apple-only/base/home.netscape.com/index-expected.txt:
        * layout-tests/apple-only/base/www.altavista.com/index-expected.txt:
        * layout-tests/apple-only/base/www.cnn.com/index-expected.txt:
        * layout-tests/apple-only/base/www.digitalcity.com/index-expected.txt:
        * layout-tests/apple-only/base/www.ebay.com/index-expected.txt:
        * layout-tests/apple-only/base/www.excite.com/index-expected.txt:
        * layout-tests/apple-only/base/www.mapquest.com/index-expected.txt:
        * layout-tests/apple-only/base/www.microsoft.com/index-expected.txt:
        * layout-tests/apple-only/base/www.msnbc.com/index-expected.txt:
        * layout-tests/apple-only/base/www.nytimes.com/index-expected.txt:
        * layout-tests/apple-only/base/www.nytimes.com_Table/index-expected.txt:
        * layout-tests/apple-only/base/www.quicken.com/index-expected.txt:
        * layout-tests/apple-only/base/www.w3.org_DOML2Core/index-expected.txt:
        * layout-tests/css1/basic/class_as_selector-expected.txt:
        * layout-tests/css1/basic/comments-expected.txt:
        * layout-tests/css1/basic/containment-expected.txt:
        * layout-tests/css1/basic/contextual_selectors-expected.txt:
        * layout-tests/css1/basic/grouping-expected.txt:
        * layout-tests/css1/basic/id_as_selector-expected.txt:
        * layout-tests/css1/basic/inheritance-expected.txt:
        * layout-tests/css1/box_properties/border-expected.txt:
        * layout-tests/css1/box_properties/border_bottom-expected.txt:
        * layout-tests/css1/box_properties/border_bottom_inline-expected.txt:
        * layout-tests/css1/box_properties/border_bottom_width-expected.txt:
        * layout-tests/css1/box_properties/border_bottom_width_inline-expected.txt:
        * layout-tests/css1/box_properties/border_color-expected.txt:
        * layout-tests/css1/box_properties/border_color_inline-expected.txt:
        * layout-tests/css1/box_properties/border_inline-expected.txt:
        * layout-tests/css1/box_properties/border_left-expected.txt:
        * layout-tests/css1/box_properties/border_left_inline-expected.txt:
        * layout-tests/css1/box_properties/border_left_width-expected.txt:
        * layout-tests/css1/box_properties/border_left_width_inline-expected.txt:
        * layout-tests/css1/box_properties/border_right-expected.txt:
        * layout-tests/css1/box_properties/border_right_inline-expected.txt:
        * layout-tests/css1/box_properties/border_right_width-expected.txt:
        * layout-tests/css1/box_properties/border_right_width_inline-expected.txt:
        * layout-tests/css1/box_properties/border_style-expected.txt:
        * layout-tests/css1/box_properties/border_style_inline-expected.txt:
        * layout-tests/css1/box_properties/border_top-expected.txt:
        * layout-tests/css1/box_properties/border_top_inline-expected.txt:
        * layout-tests/css1/box_properties/border_top_width-expected.txt:
        * layout-tests/css1/box_properties/border_top_width_inline-expected.txt:
        * layout-tests/css1/box_properties/border_width-expected.txt:
        * layout-tests/css1/box_properties/border_width_inline-expected.txt:
        * layout-tests/css1/box_properties/clear-expected.txt:
        * layout-tests/css1/box_properties/clear_float-expected.txt:
        * layout-tests/css1/box_properties/float-expected.txt:
        * layout-tests/css1/box_properties/float_elements_in_series-expected.txt:
        * layout-tests/css1/box_properties/float_margin-expected.txt:
        * layout-tests/css1/box_properties/float_on_text_elements-expected.txt:
        * layout-tests/css1/box_properties/height-expected.txt:
        * layout-tests/css1/box_properties/margin-expected.txt:
        * layout-tests/css1/box_properties/margin_bottom-expected.txt:
        * layout-tests/css1/box_properties/margin_bottom_inline-expected.txt:
        * layout-tests/css1/box_properties/margin_inline-expected.txt:
        * layout-tests/css1/box_properties/margin_left-expected.txt:
        * layout-tests/css1/box_properties/margin_left_inline-expected.txt:
        * layout-tests/css1/box_properties/margin_right-expected.txt:
        * layout-tests/css1/box_properties/margin_right_inline-expected.txt:
        * layout-tests/css1/box_properties/margin_top-expected.txt:
        * layout-tests/css1/box_properties/margin_top_inline-expected.txt:
        * layout-tests/css1/box_properties/padding-expected.txt:
        * layout-tests/css1/box_properties/padding_bottom-expected.txt:
        * layout-tests/css1/box_properties/padding_bottom_inline-expected.txt:
        * layout-tests/css1/box_properties/padding_inline-expected.txt:
        * layout-tests/css1/box_properties/padding_left-expected.txt:
        * layout-tests/css1/box_properties/padding_left_inline-expected.txt:
        * layout-tests/css1/box_properties/padding_right-expected.txt:
        * layout-tests/css1/box_properties/padding_right_inline-expected.txt:
        * layout-tests/css1/box_properties/padding_top-expected.txt:
        * layout-tests/css1/box_properties/padding_top_inline-expected.txt:
        * layout-tests/css1/box_properties/width-expected.txt:
        * layout-tests/css1/cascade/cascade_order-expected.txt:
        * layout-tests/css1/cascade/important-expected.txt:
        * layout-tests/css1/classification/display-expected.txt:
        * layout-tests/css1/classification/list_style-expected.txt:
        * layout-tests/css1/classification/list_style_image-expected.txt:
        * layout-tests/css1/classification/list_style_position-expected.txt:
        * layout-tests/css1/classification/list_style_type-expected.txt:
        * layout-tests/css1/classification/white_space-expected.txt:
        * layout-tests/css1/color_and_background/background-expected.txt:
        * layout-tests/css1/color_and_background/background_attachment-expected.txt:
        * layout-tests/css1/color_and_background/background_color-expected.txt:
        * layout-tests/css1/color_and_background/background_image-expected.txt:
        * layout-tests/css1/color_and_background/background_position-expected.txt:
        * layout-tests/css1/color_and_background/background_repeat-expected.txt:
        * layout-tests/css1/color_and_background/color-expected.txt:
        * layout-tests/css1/conformance/forward_compatible_parsing-expected.txt:
        * layout-tests/css1/font_properties/font-expected.txt:
        * layout-tests/css1/font_properties/font_family-expected.txt:
        * layout-tests/css1/font_properties/font_size-expected.txt:
        * layout-tests/css1/font_properties/font_style-expected.txt:
        * layout-tests/css1/font_properties/font_variant-expected.txt:
        * layout-tests/css1/font_properties/font_weight-expected.txt:
        * layout-tests/css1/formatting_model/canvas-expected.txt:
        * layout-tests/css1/formatting_model/floating_elements-expected.txt:
        * layout-tests/css1/formatting_model/height_of_lines-expected.txt:
        * layout-tests/css1/formatting_model/inline_elements-expected.txt:
        * layout-tests/css1/formatting_model/replaced_elements-expected.txt:
        * layout-tests/css1/formatting_model/vertical_formatting-expected.txt:
        * layout-tests/css1/pseudo/anchor-expected.txt:
        * layout-tests/css1/pseudo/firstletter-expected.txt:
        * layout-tests/css1/pseudo/firstline-expected.txt:
        * layout-tests/css1/pseudo/multiple_pseudo_elements-expected.txt:
        * layout-tests/css1/pseudo/pseudo_elements_in_selectors-expected.txt:
        * layout-tests/css1/text_properties/letter_spacing-expected.txt:
        * layout-tests/css1/text_properties/line_height-expected.txt:
        * layout-tests/css1/text_properties/text-transform-expected.txt:
        * layout-tests/css1/text_properties/text_align-expected.txt:
        * layout-tests/css1/text_properties/text_decoration-expected.txt:
        * layout-tests/css1/text_properties/text_indent-expected.txt:
        * layout-tests/css1/text_properties/text_transform-expected.txt:
        * layout-tests/css1/text_properties/vertical_align-expected.txt:
        * layout-tests/css1/text_properties/word_spacing-expected.txt:
        * layout-tests/css1/units/color_units-expected.txt:
        * layout-tests/css1/units/length_units-expected.txt:
        * layout-tests/css1/units/percentage_units-expected.txt:
        * layout-tests/css1/units/urls-expected.txt:
        * layout-tests/fast/encoding/utf-16-big-endian-expected.txt:
        * layout-tests/fast/encoding/utf-16-little-endian-expected.txt:

2003-11-10  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3479266>: selected images don't obey CSS3 selection background-color attribute
	
        Reviewed by dave.

        * khtml/rendering/render_image.cpp:
        (RenderImage::selectionTintColor): new, takes style into account
        (RenderImage::paintObject): use selectionTintColor
        * khtml/rendering/render_image.h:
        * kwq/KWQPainter.h: removed selectedImageTintColor
        * kwq/KWQPainter.mm:

2003-11-10  David Hyatt  <hyatt@apple.com>

	Fix for 3479287, macro-ize the handling of the CSS 'inherit' value.  This patch is preparation for
	adding support for the 'initial' value, which will be used to fix the CSS parser's shorthand parsing
	bugs.
	
        Reviewed by kocienda

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/khtmlview.cpp:
        (KHTMLView::layout):

2003-11-10  Chris Blumenberg  <cblu@apple.com>

	Fixed:
	<rdar://problem/3478883>: REGRESSION (113-114u): drag image for selected text includes unselected images
	<rdar://problem/3479204>: selected images don't look selected

        Reviewed by dave.

        * khtml/rendering/render_image.cpp:
        (RenderImage::RenderImage): init m_selectionState
        (RenderImage::paintObject): draw a tint over the image if selected, don't draw anything if not selected and the action is PaintActionSelection
        * khtml/rendering/render_image.h:
        (khtml::RenderImage::selectionState): new
        (khtml::RenderImage::setSelectionState): new
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainter::selectedImageTintColor): new

2003-11-10  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

	Fix for this bug:

	<rdar://problem/3477795>: REGRESSION: can't submit form without 
	submit button by hitting return (cocoadev.com)

	When I changed submitting forms using the return key in a text field
	to go through a search for the correct submit or image input 
	element to use when submitting, I neglected to cover the case of
	forms which have neither a submit or image input element. When
	I encounter a form such as this now, I submit it anyway after
	performing the submit or image input element and failing to find one.

        * khtml/html/html_formimpl.cpp:
        (HTMLFormElementImpl::performSubmitClick)

2003-11-10  Richard Williamson   <rjw@apple.com>

	Fixed 3478765.  Use ICU to access unicode properties.
	Fixed 3478831.  Unicode property/conversion functions should be 32 bit savvy.

        Reviewed by Darin.

        * WebCore-combined.exp:
        * WebCore.exp:
        * kwq/KWQChar.mm:
        (QChar::lower):
        (QChar::upper):
        (QChar::mirroredChar):
        * kwq/KWQString.h:
        (QChar::direction):
        * kwq/WebCoreUnicode.cpp:
        * kwq/WebCoreUnicode.h:

2003-11-10  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3478781>: drag image of selected text and images doesn't include images

        Reviewed by rjw.

        * khtml/rendering/render_image.cpp:
        (RenderImage::paintObject): paint when the paint action is PaintActionSelection
        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::paint): ditto

2003-11-10  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

	Fix for this bug:

	<rdar://problem/3477624>: REGRESSION (113): Using input method to 
	enter non-ascii text submits the form

	This regression has been in the tree for a couple of versions now, 
	since we improved the way key events are processed. The solution
	is to ask the text input manager if it has any marked text when
	the return key (or enter key) is pressed, because if it does, the key
	needs to work in the "accept" role for the input manager. Fixing
	in this way has the pleasant effect of making return/enter key
	behavior "do the right thing" based on context.

        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::defaultEventHandler): Add check to see
	if text input manager has marked text before submitting text
	and password fields. Broke out key handling for checkboxes and
	radios, since the old code for these widgets worked fine.
        * kwq/KWQLineEdit.h: Added hasMarkedText function.
        * kwq/KWQLineEdit.mm:
        (QLineEdit::hasMarkedText): Returns whether the current input
	manager has marked text or not.

2003-11-09  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed 3478173 -- REGRESSION (112-113): getElementById is failing for many types of elements

        The problem was that ElementImpl::attach was being skipped for many objects with classes
        derived from ElementImpl. By changing them all to call up to their base classes instead of
        skipping levels, the bug went away. This was possible (and easy to do) because of the
        rendererIsNeeded() change I made a while back.

        * khtml/html/html_baseimpl.cpp:
        (HTMLFrameElementImpl::attach): Call base class's attach() instead of creating renderer explicitly
        and then calling NodeBaseImpl::attach(). This was a remnant of the old way of changing the logic
        about when to create the renderer, not needed now that we have rendererIsNeeded().
        (HTMLFrameSetElementImpl::attach): Ditto.
        (HTMLIFrameElementImpl::attach): Ditto.

        * khtml/html/html_formimpl.h: Removed many unused attach() overrides.
        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::attach): Ditto.
        (HTMLButtonElementImpl::attach): Removed, because now the base class's attach does the right thing.
        (HTMLFieldSetElementImpl::attach): Ditto.
        (HTMLInputElementImpl::attach): Removed explicit createRendererIfNeeded call, not needed now that
        HTMLGenericFormElementImpl calls through to its base class.
        (HTMLLegendElementImpl::attach): Removed, because now the base class's attach does the right thing.
        (HTMLSelectElementImpl::attach): Ditto.
        (HTMLTextAreaElementImpl::attach): Ditto.

        * khtml/html/html_imageimpl.cpp:
        (HTMLImageElementImpl::attach): Call base class's attach() instead of creating renderer explicitly
        and then calling NodeBaseImpl::attach().
        (HTMLImageElementImpl::detach): Call base class's detach() instead of NodeBaseImpl::detach(). No
        need to skip the ElementImpl::detach() function, and important not to for the new "id" optimization.

        * khtml/html/html_inlineimpl.h: Removed HTMLBRElementImpl::attach override.
        * khtml/html/html_inlineimpl.cpp: (HTMLBRElementImpl::attach): Call base class's attach() instead
        of creating renderer explicitly and then calling NodeBaseImpl::attach().

        * khtml/html/html_objectimpl.h: Removed HTMLAppletElementImpl::attach override.
        * khtml/html/html_objectimpl.cpp:
        (HTMLAppletElementImpl::attach): Removed, because the base class's attach does the right thing.
        (HTMLEmbedElementImpl::attach): Call base class's attach() instead of creating renderer explicitly
        and then calling NodeBaseImpl::attach().
        (HTMLObjectElementImpl::attach): Ditto.

2003-11-09  David Hyatt  <hyatt@apple.com>

	Fix for 3478317, letter/word-spacing don't inherit properly through italic/bold elements.
	
        Reviewed by darin

        * khtml/rendering/font.h:
        (khtml::Font::Font):
        * khtml/rendering/render_style.h:
        (khtml::RenderStyle::setFontDef):

2003-11-09  David Hyatt  <hyatt@apple.com>

	Fix for 3478309, make sure backgrounds paint in the border box and not just in the padding box.
	
        Reviewed by darin

	Also making sure that <frame>s aren't transparent, since other browsers seem to only make <iframe>s/<object>s
	be transparent.
	
        * khtml/rendering/render_box.cpp:
        (RenderBox::paintRootBoxDecorations):
        (RenderBox::paintBackgroundExtended):

2003-11-08  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3478025 -- links with non-Latin-1 characters in the hostname are not getting IDN-encoded

        * kwq/KWQKURL.mm:
        (KURL::parse): Changed existing code to take advantage of the fact that a NUL character
        is classified as a path segment end character.
        (KURL::findHostnameInHierarchicalURL): Don't treat NUL characters as terminating characters
        for hostnames, because QChar::latin1() turns all non-Latin-1 characters into NUL characters.

2003-11-08  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3477509 -- REGRESSION (112-113): crash in KHTMLPart::processObjectRequest at espn.com, chosun.com

        * khtml/khtml_part.cpp: (KHTMLPart::processObjectRequest): Use a dynamic_cast to check the type of the
        part rather than assuming it's always a KHTMLPart. The crash was caused by casting a KWQPluginPart to
        KHTMLPart.

2003-11-08  Darin Adler  <darin@apple.com>

        Reviewed by Richard.

        - event cleanup motivated by questions on khtml-devel

        * khtml/dom/dom2_events.h: Removed eventModuleName.
        * khtml/dom/dom2_events.cpp: Removed eventModuleName.

        * khtml/xml/dom2_eventsimpl.h: Removed eventModuleName, made many trivially simple
        functions inline, made virtual functions no longer inline. Also made some functions const.
        (DOM::EventImpl::propagationStopped): Made this non-virtual; there was no reason for
        it to be virtual I could see.
        (DOM::EventImpl::defaultPrevented): Ditto.
        (DOM::EventImpl::setDefaultHandled): Ditto.
        (DOM::UIEventImpl::view): Made this inline.
        (DOM::UIEventImpl::detail): Ditto.
        (DOM::MouseEventImpl::screenX): Ditto.
        (DOM::MouseEventImpl::screenY): Ditto.
        (DOM::MouseEventImpl::clientX): Ditto.
        (DOM::MouseEventImpl::clientY): Ditto.
        (DOM::MouseEventImpl::layerX): Ditto.
        (DOM::MouseEventImpl::layerY): Ditto.
        (DOM::MouseEventImpl::ctrlKey): Ditto.
        (DOM::MouseEventImpl::shiftKey): Ditto.
        (DOM::MouseEventImpl::altKey): Ditto.
        (DOM::MouseEventImpl::metaKey): Ditto.
        (DOM::MouseEventImpl::button): Ditto.
        (DOM::MouseEventImpl::relatedTarget): Ditto.
        (DOM::MutationEventImpl::relatedNode): Ditto.
        (DOM::MutationEventImpl::prevValue): Ditto.
        (DOM::MutationEventImpl::newValue): Ditto.
        (DOM::MutationEventImpl::attrName): Ditto.
        (DOM::MutationEventImpl::attrChange): Ditto.

        * khtml/ecma/kjs_events.cpp: (KJS::getDOMEvent): Changed implementation to no longer
        require eventModuleName(), and removed some unneeded casts.

        * khtml/xml/dom2_eventsimpl.cpp: Made lots of functions inline.
        (EventImpl::isUIEvent): Since this is virtual, make it no longer inline.
        (EventImpl::isMouseEvent): Ditto.
        (EventImpl::isMutationEvent): Ditto.
        (EventImpl::isKeyboardEvent): Ditto.
        (UIEventImpl::isUIEvent): Ditto.
        (MouseEventImpl::isMouseEvent): Ditto.
        (KeyboardEventImpl::isKeyboardEvent): Ditto.
        (MutationEventImpl::isMutationEvent): Ditto.

2003-11-07  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3020196>: links with href="" don't show hand cursor when you mouse over them

        Reviewed by darin.

        * khtml/khtmlview.cpp:
        (KHTMLView::viewportMouseMoveEvent): check if the URL on the event is non-NULL, not if it is non-empty

2003-11-07  Richard Williamson   <rjw@apple.com>

	Fixed 3477067.  Use our case unicode conversion routines.

        Reviewed by Ken.

        * kwq/KWQChar.mm:
        (QChar::lower):
        (QChar::upper):

2003-11-06  David Hyatt  <hyatt@apple.com>

	Fixes for 3476717, inline blocks should expand to encompass floats; 3476718, inline blocks should not
	collapse margins with children; and 3476721, run-ins and compacts can flow into anonymous blocks, even
	ones that they caused to be created by failing to run in/compact in the first place.
	
        Reviewed by darin (inline block fixes only).

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::layoutBlock):
        (khtml::RenderBlock::layoutBlockChildren):

2003-11-06  Richard Williamson   <rjw@apple.com>

	Fixed 3476563.  Remove unnecessary call to set view position after load completes.
 
        Reviewed by Gramps.

        * khtml/khtml_part.cpp:
        (KHTMLPart::checkCompleted):

2003-11-06  Chris Blumenberg  <cblu@apple.com>

        * khtml/rendering/render_image.h:
        (khtml::RenderImage::isDisplayingError): forgot to remove the "virtual" part of the declaration

2003-11-06  Chris Blumenberg  <cblu@apple.com>

	Fixed:
	<rdar://problem/3275118>: Dragging from missing-image link stretches missing-image icon to size of missing image
	<rdar://problem/3476225>: assert dragging non-existant images

        Reviewed by rjw.

        * khtml/rendering/render_image.h:
        (khtml::RenderImage::isDisplayingError): new method, returns true for the broken image
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge elementAtPoint:]): only provide info if there is an image and the image is not broken

2003-11-06  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Richard

	Fixes for these bugs:

	<rdar://problem/3476006>: Form file input widgets do not scroll 
	to view when focused

	<rdar://problem/3476007>: Form file input widgets should only 
	focus when full keyboard access is on

        * kwq/KWQFileButton.h: Added focusPolicy declaration.
        * kwq/KWQFileButton.mm:
        (KWQFileButton::focusPolicy): Added. Now works like other buttons.
	Fixes 3476007.
        (KWQFileButton::focusChanged): Added. Code similar to text area
	widgets. Fixes 3476006.

2003-11-06  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3308609>: 6L60 Safari URL links with line-endings converted to hex by contextual menu

        Reviewed by rjw.

        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge elementAtPoint:]): use parseURL to go from an attribute string to a URL string

=== Safari-113 ===

2003-11-06  John Sullivan  <sullivan@apple.com>

        - fixed broken build

        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::completeURL):
        removed stray character

2003-11-06  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3475366 - 4.5% of time spent making html event listeners on slow intel page.

	6% speedup on intel page, 1% speedup on cvs-base PLT.
	
        * khtml/ecma/kjs_events.cpp:
        (JSEventListener::JSEventListener): Don't add self to hashtable if imp is null (which
	can now happen in the lazy listener case).
        (JSEventListener::~JSEventListener): Ditto on removing.
        (JSEventListener::listenerObj): Made this virtual.
        (JSLazyEventListener::JSLazyEventListener): New constructor.
	(JSLazyEventListener::handleEvent): call parseCode, then
	superclass if it appeared to succeed.
        (JSLazyEventListener::listenerObj): call parseCode, then superclass.
        (JSLazyEventListener::parseCode):
        (KJS::getNodeEventListener): Check for null listenerObjImp in case of
	lazy listener that failed to parse.
        * khtml/ecma/kjs_dom.cpp:
	(DOMNode::getListener): Ditto.
        * khtml/ecma/kjs_html.cpp:
        (Image::getValueProperty): Ditto.
        * khtml/ecma/kjs_events.h:
	(KJS::JSEventListener::listenerObjImp): call listenerObj() virtual
	method and get imp from the result.
        * khtml/ecma/kjs_proxy.cpp:
        (KJSProxyImpl::createHTMLEventHandler): Don't parse the code here, make a lazy
	listener.
        * khtml/ecma/kjs_window.cpp:
        (Window::getJSLazyEventListener): make a new JSLazyEventListener - no need
	to check the listeners hashtable cause a brand new lazy listener won't have
	a function anyway.
        * khtml/ecma/kjs_window.h: Prototype new method.

2003-11-06  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3475397 - REGRESSION: relative URLs on page load test sometimes contain garbage, leading to missing images
	
        * kwq/KWQKURL.mm:
        (KURL::KURL): When constructing from NSURL, null-terminate the raw
	bytes since KURL::parse expects a null-terminated C string. It
	might be even better to pass a length to parse, but this fix is
	simple and does the job.

2003-11-05  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3475109 -- support keyboard event object properties of altkey, ctrlKey, shiftKey

        We had the DOM Level 3 KeyboardEvent class already; I just had to add JavaScript bindings.

        * khtml/ecma/kjs_events.h: Added DOMKeyboardEvent class.
        * khtml/ecma/kjs_events.cpp:
        (KJS::getDOMEvent): Added code to make a DOMKeyboardEvent if the event is a DOM::KeyboardEvent.
        (DOMKeyboardEvent::~DOMKeyboardEvent): Added.
        (DOMKeyboardEvent::classInfo): Added.
        (DOMKeyboardEvent::tryGet): Added.
        (DOMKeyboardEvent::getValueProperty): Added.
        (DOMKeyboardEventProtoFunc::tryCall): Added.

        * khtml/dom/dom2_events.cpp:
        (KeyboardEvent::keyIdentifier): Added.
        (KeyboardEvent::keyLocation): Added.

        * khtml/ecma/kjs_events.lut.h: Regenerated.

2003-11-05  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed 3475092 - Notifying the bridge about duplicate images takes 13% of time on intel page

	Another 15% speedup on the intel page.

	This also results in a 3% speedup on cvs-base PLT! (or maybe that was my last change)
	
        * kwq/KWQLoader.mm:
        (KWQServeRequest): Note that we told the bridge about the load.
        (KWQCheckCacheObjectStatus): Don't tell the bridge about the load
	if we have alrady; if we do tell it, then note it down.
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::didTellBridgeAboutLoad): Helper method for the above.
        (KWQKHTMLPart::haveToldBridgeAboutLoad): Ditto.
        (KWQKHTMLPart::clear): Clear our idea of what URLs we told the bridge about.
        * khtml/khtml_part.h: make clear() virtual.

2003-11-05  Darin Adler  <darin@apple.com>

        * WebCore-combined.exp: Checked in generated file.

2003-11-05  Richard Williamson   <rjw@apple.com>

	Fixed 3474957.  Changed name of image rendering method to better reflect it's actual function.

	- (void)beginAnimationInRect:(NSRect)ir fromRect:(NSRect)fr;

	renamed to

	- (void)drawImageInRect:(NSRect)ir fromRect:(NSRect)fr;

        Reviewed by Chris.

        * kwq/KWQPainter.mm:
        (QPainter::drawPixmap):
        * kwq/WebCoreImageRenderer.h:

2003-11-05  Darin Adler  <darin@apple.com>

        * WebCore-tests.exp: Added missing symbol so tests will link.

2003-11-05  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken.

	- fixed 3474756 - Creating HTML event listeners takes 5% of time on particular slow intel page
	
        * khtml/ecma/kjs_window.h: Make jsEventListeners a hashtable keyed
	by listener object, not a list.
        * khtml/ecma/kjs_window.cpp:
        (Window::getJSEventListener): Do hashtable lookup for existing listener instead of
	walking list.
        * khtml/ecma/kjs_events.cpp:
        (JSEventListener::JSEventListener): Use hashtable insert instead of list append.
        (JSEventListener::~JSEventListener): Use hashtable remove instead of list removeRef.

2003-11-05  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3473872 -- encode domain names for IDN when creating URLs inside WebCore

        * kwq/KWQKURL.h: Added KWQIntegerPair type, a number of private functions.
        * kwq/KWQKURL.mm:
        (isSchemeFirstChar): Make inline function from macro.
        (isSchemeChar): Make inline function from macro.
        (isUserInfoChar): Make inline function from macro.
        (isHostnameChar): Make inline function from macro.
        (isIPv6Char): Make inline function from macro.
        (isPathSegmentEndChar): Make inline function from macro.
        (isBadChar): Make inline function from macro.
        (isHexDigit): Make inline function from macro.
        (KURL::KURL): Remove unneeded initializations of m_isValid, since parse sets it.
        Use CFURLGetBytes in one place a FIXME asked for it. Changed non-ASCII case to use
        a separate function instead of code in line.
        (KURL::encodeHostnames): Added. Finds host names and encodes them.
        (KURL::findHostnameInHierarchicalURL): Added. Finds host name in a hierarchical URL.
        (KURL::encodeHostname): Added. Encodes one host name.
        (KURL::findHostnamesInMailToURL): Added. Finds host names in a mailto URL.

        * kwq/KWQString.h: Added new overloads for startsWith.
        * kwq/KWQString.mm:
        (compareIgnoringCaseForASCIIOnly): Moved these functions up in the file so they can be
        used by more methods of QString.
        (QString::startsWith): Added new overloads.

        * WebCore.pbproj/project.pbxproj: Add libicucore.A.dylib library.

2003-11-05  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3473906 - getElementById takes about 44% of time on particular slow intel page

	I fixed this by adding a per-document id --> element hash
	table. This speeds up my local copy of the intel page by 60% (50
	sec to 20 sec!) and does not cause any PLT slowdown.
	
        * khtml/xml/dom_docimpl.h: New QDict field for id to element hash table.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::getElementById): Just look it up in the newly
	added hash table.
        (DocumentImpl::addElementById): New method. Add to hash table if
	no other element is set for that key (this lets the first element
	of several with matching ids win).
        (DocumentImpl::removeElementById): New method. Remove from hash
	table only if the key and value both match.

	These Element changes to keep the id --> element hashtable working
	seem needlessly tricky, due to lack of bottlenecks in attribute
	changing.
	
        * khtml/xml/dom_elementimpl.cpp:
        (ElementImpl::updateId): New method that removes element from
	hash table for old it
        (ElementImpl::setAttribute): If setting id, call updateId.
        (ElementImpl::setAttributeMap): If either the old or the new map
	includes id, call updateId.
        (ElementImpl::attach): If we have an id, call updateId to set it
	after attaching.
        (ElementImpl::detach): Newly added. If we have an id, call
	updateId to clear it before detaching.
	(NamedAttrMapImpl::setNamedItem): If the name is id, call updateId on
	our element.
        (NamedAttrMapImpl::removeNamedItem): If the name is id, call updateId on
	our element.
        (NamedAttrMapImpl::operator=): If old or new contents include id attribute,
	call updateId on our element.
	* khtml/xml/dom_elementimpl.h: Prototype new methods.

2003-11-05  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Maciej

	Fix for these bugs:

	<rdar://problem/3467558>: Cannot tab to form file input widgets
	<rdar://problem/3473631>: WebFileButton sends notifications to communicate with WebCore

	Tabbing now works for these widgets. While I was in the neighborhood,
	I improved the communication mechanism between the WebKit and WebCore
	sides of the file button implementation, replacing notifications
	with a callback object.

        * WebCore-combined.exp: Remove no-longer used WebCoreFileButtonClicked
    	and WebCoreFileButtonFilenameChanged notofication strings.
        * WebCore.exp: Ditto.
        * kwq/KWQFileButton.h: Changed declarations to match changes in
        callback functions.
        * kwq/KWQFileButton.mm:
        (KWQFileButton::KWQFileButton): Now sets the view after creating
        the delegate object.
        (KWQFileButton::filenameChanged): Now takes a QString argument
        which indicates the filename.
        (KWQFileButton::focusChanged): New function. Sends DOM focus and
        blur events.
        (-[KWQFileButtonAdapter initWithKWQFileButton:]): No longer needs
        to register for notifications.
        (-[KWQFileButtonAdapter dealloc]): No longer needs to remove itself
        from the notification center.
        (-[KWQFileButtonAdapter filenameChanged:]): No longer a notification
        callback. Now a WebCoreFileButtonCallback callback.
        (-[KWQFileButtonAdapter focusChanged:]): New WebCoreFileButtonCallback
        callback.
        (-[KWQFileButtonAdapter clicked]): No longer a notification
        callback. Now a WebCoreFileButtonCallback callback.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::nextKeyViewInFrame): Unrelated cleanup.
        * kwq/WebCoreBridge.h: Declared new WebCoreFileButtonDelegate protocol.

2003-11-05  Maciej Stachowiak  <mjs@apple.com>

	- fixed deployment build
	
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::fileWrapperForElement):

2003-11-04  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Ken.

        * khtml/ecma/kjs_window.cpp: Don't make event read-only, some
	sites want to set their own top-level function named "event" and
	will hang if they can't.
        * khtml/ecma/kjs_window.lut.h: Regenerated.

2003-11-03  David Hyatt  <hyatt@apple.com>

	Fix for 3472167, for shrink-to-fit style printing, grow the width of the initial containing block
	to be as large as the rightmost position after doing a layout to the page width.
	
        Reviewed by john

        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::forceLayoutForPageWidth):

2003-11-04  Chris Blumenberg  <cblu@apple.com>

	Fixed:
	<rdar://problem/3472403>: RTFD of copied text and images should use original image data not tiffs

        Reviewed by john.

        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::fileWrapperForElement): call [_bridge _fileWrapperForURL:] to get cached data
        * kwq/WebCoreBridge.h: added _fileWrapperForURL: to the bridge protocol
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge selectedAttributedString]): call the instance method attributedString 
        (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]): call the instance method attributedString 

2003-11-04  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Chris.

        - fixed 3472893 - Slow intel page takes 20% of its time in CachedObject::ref
        
	Speeds up loading of
	http://www.intel.com/cd/ids/developer/asmo-na/eng/index.htm by
	19%, no slowdown on PLT.
	
        * khtml/misc/loader.h: Use QPtrDict for m_clients instead of QPtrList.
	* khtml/misc/loader.cpp:
        (CachedObjectClientWalker::CachedObjectClientWalker): Ditto.
        (CachedObject::ref): Ditto.
        * kwq/KWQPtrDict.h:
        (QPtrDict::isEmpty): Implemented.

2003-11-03  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3370085 - new frames with javascript: URLs should be populated with the result of the JavaScript code
	
        * ChangeLog:
        * khtml/html/html_baseimpl.cpp:
        (HTMLFrameElementImpl::updateForNewURL): Skip special filtering of
	javascript:.
        (HTMLFrameElementImpl::attach): Ditto.
        * khtml/khtml_part.cpp:
        (KHTMLPart::replaceContentsWithScriptResult): New method to execute
	script and if the result is a string, set it as the new document contents.
	(KHTMLPart::requestFrame): Removed APPLE_CHANGES around
	javascript: handling. Use new
	replaceContentsWithScriptResult method. This executes the
	JS in the new child frame, not the parent frame, as in other
	browsers.
        * khtml/khtml_part.h: Prototype new method.
        * kwq/KWQKHTMLPartBrowserExtension.mm:
        (KHTMLPartBrowserExtension::openURLRequest): Use new part method.

2003-11-03  Vicki Murley  <vicki@apple.com>

        Reviewed by kocienda.

	- fixed <rdar://problem/3471096>: non-B&I builds should not use order files, because they cause false "regressions" in perf.

        * WebCore.pbproj/project.pbxproj: added empty SECTORDER_FLAGS variables to the Development and Deployment build styles

2003-11-03  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Maciej

	Fix for this bug:

	<rdar://problem/3470338>: onclick is not executing when you hit enter on focused links

	Now when we trap return or enter when a link is focused, we send
	a click event to the node.

        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::defaultEventHandler): Swallow key event when 
	return or enter and send a mouse event.
        (HTMLAnchorElementImpl::performClick): New function to send simulated
	click.
        * khtml/html/html_inlineimpl.h: Declare performClick function.

2003-11-03  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3392543 -- incorrect base writing direction in RTL form controls
        - fixed baseline for list box <select> elements
        - moved style code from updateFromElement to setStyle

        * khtml/rendering/render_form.h: Added setStyle function to RenderFormElement, RenderLineEdit,
        RenderSelect, and RenderTextArea. Removed some unused stuff.
        * khtml/rendering/render_form.cpp:
        (RenderFormElement::setStyle): Set the font based on the style.
        (RenderFormElement::updateFromElement): Remove font setting code; moved to setStyle.
        Also ifdef'd out the color-setting code, which belongs in setStyle and is irrelevant
        for KWQ anyway.
        (RenderSubmitButton::setStyle): Set the writing direction based on the style.
        (RenderSubmitButton::updateFromElement): Tiny code cleanup, using a local variable.
        (RenderLineEdit::setStyle): Set the alignment and writing direction based on the style.
        (RenderLineEdit::updateFromElement): Remove alignment setting code; moved to setStyle.
        (RenderFileButton::RenderFileButton): Remove code to set m_focus, a data member that was
        never used.
        (RenderSelect::setWidgetWritingDirection): Added. Helper function.
        (RenderSelect::setStyle): Call setWidgetWritingDirection.
        (RenderSelect::updateFromElement): Call setWidgetWritingDirection if a new widget is created.
        (RenderSelect::baselinePosition): Added a FIXME comment.
        (RenderTextArea::setStyle): Set the alignment and writing direction based on the style.
        (RenderTextArea::updateFromElement): Remove alignment setting code; moved to setStyle.

        * kwq/KWQButton.h: Added setWritingDirection function.
        * kwq/KWQButton.mm:
        (+[KWQButton cellClass]): Use KWQButtonCell.
        (-[KWQButtonCell baseWritingDirection:]): Return base writing direction.
        (-[KWQButtonCell setBaseWritingDirection:]): Store base writing direction.
        (-[KWQButtonCell _textAttributes]): Set the base writing direction in the paragraph
        style if it's not already right.
        (QButton::setWritingDirection): Call setBaseWritingDirection: on the cell and do
        setNeedsDisplay: as needed.

        * kwq/KWQComboBox.h: Added setWritingDirection function.
        * kwq/KWQComboBox.mm:
        (QComboBox::setWritingDirection): Call setBaseWritingDirection: on the cell and do
        setNeedsDisplay: as needed.
        (-[KWQPopUpButtonCell setBaseWritingDirection:]): Store base writing direction.
        (-[KWQPopUpButtonCell baseWritingDirection:]): Return base writing direction.
        (-[KWQPopUpButtonCell _textAttributes]): Set the base writing direction in the
        paragraph style if it's not already right.

        * kwq/KWQLineEdit.h: Added setWritingDirection function.
        * kwq/KWQLineEdit.mm:
        (QLineEdit::setAlignment): Tweaked to match new setWritingDirection in style.
        (QLineEdit::setWritingDirection): Call setBaseWritingDirection: on the KWQTextField.

        * kwq/KWQTextField.h: Added setBaseWritingDirection method.
        * kwq/KWQTextField.mm:
        (-[KWQTextField setPasswordMode:]): Set the base writing direction of the secure field's
        cell based on the base writing direction of the parent field's cell, when creating the
        secure field.
        (-[KWQTextField setBaseWritingDirection:]): Added. Sets the base writing direction of
        the field's cell and the secure field's cell, if it exists, and does setNeedsDisplay
        as needed.
        (-[KWQTextFieldCell setBaseWritingDirection:]): Added. Stores the base writing direction.
        (-[KWQTextFieldCell baseWritingDirection]): Added. Returns the base writing direction.
        (-[KWQTextFieldCell _textAttributes]): Set the base writing direction in the paragraph
        style if it's not already right.
        (-[KWQSecureTextFieldCell setBaseWritingDirection:]): Added. Stores the base writing
        direction.
        (-[KWQSecureTextFieldCell _textAttributes]): Set the base writing direction in the
        paragraph style if it's not already right.

        * kwq/KWQListBox.h: Added itemIsGroupLabel and setWritingDirection functions, and made
        the private insertItem function take a QString instead of an NSObject.
        (QListBox::insertItem): Changed parameter from unsigned to int to match Qt, and made it
        use an inlne to call the private insertItem function shared with insertGroupLabel.
        (QListBox::insertGroupLabel): Changed parameter from unsigned to int and made it use an
        inline to call the private insertItem function.
        * kwq/KWQListBox.mm:
        (itemFont): Added. Returns a suitable font for individual items.
        (groupLabelFont): Added. Returns a suitable font for group labels.
        (paragraphStyle): Added. Returns a suitable paragraph style for a given writing direction.
        (stringAttributes): Added. Returns a string attributes dictionary for a given writing direction for
        either individual items or group labels.
        (QListBox::insertItem): Use an attributed string to give the item the appropriate font and
        writing direction, calling stringAttributes to get the attributes dictionary, and getting
        the writing direction from the table view.
        (QListBox::endBatchInsert): Tweak for consistency with other nearby methods.
        (QListBox::setSelected): Add an assertion and tweak a bit.
        (QListBox::isSelected): Add an assertion and tweak a bit.
        (QListBox::setWritingDirection): Update the styles for all the attributed strings and call
        reloadData if the writing direction changes. Also store the direction in the table view.
        (QListBox::itemIsGroupLabel): Added. Returns true if a given item is a group label; works
        by checking the font in the attributed string.
        (-[KWQTableView initWithListBox:items:]): Use itemFont() instead of computing the font.
        (-[KWQTableView tableView:shouldSelectRow:]): Use itemIsGroupLabel function instead of
        checking for NSString vs. NSttributedString in the items array; we now use attributed
        strings for all the items.
        (-[KWQTableView setBaseWritingDirection:]): Added. Stores a base writing direction.
        (-[KWQTableView baseWritingDirection]): Added. Returns the stored base writing direction.

        * kwq/KWQTextEdit.h: Added setWritingDirection function.
        * kwq/KWQTextEdit.mm:
        (QTextEdit::setAlignment): Removed code to set base writing direction.
        (QTextEdit::setWritingDirection): Added. Sets base writing direction.

        * kwq/KWQTextArea.mm: (-[KWQTextArea setBaseWritingDirection:]): Call setNeedsDisplay:YES.

2003-11-03  David Hyatt  <hyatt@apple.com>

	Fix 3472200, media tests fail to parse correctly.  Merging a patch to handle exotic media types
	from the KHTML trunk.

        * khtml/css/parser.cpp:
        * khtml/css/parser.y:

2003-11-03  David Hyatt  <hyatt@apple.com>

	Fix for 3471314, make sure to check the outline phase before painting backgrounds of iframes.
	
        Reviewed by mjs

        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::paint):

2003-11-03  David Hyatt  <hyatt@apple.com>

	Fix for 3470855, links with script action stay focused when clicking.

	Fix for 3470858, clicking and dragging a link and then releasing doesn't clear the glow ring.

	Fix for 3472090, link should not be mouse focusable.
	
        Reviewed by mjs

        * khtml/css/html4.css:
        * khtml/html/html_inlineimpl.h:
        (DOM::HTMLAnchorElementImpl::isMouseFocusable):

2003-11-03  David Hyatt  <hyatt@apple.com>

	Fix for 3472030, line-height not properly reset in all cases when the font shorthand is used.
	
        Reviewed by mjs

        * khtml/css/cssparser.cpp:
        (CSSParser::parseFont):

2003-11-03  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3472023 - REGRESSION: assertion on layout tests
	
        * kwq/KWQTextCodec.mm:
        (KWQTextDecoder::convertUTF16): Remove assert that length is not
	0, since we can get zero length now when flushing.

2003-11-03  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

	Fix for this bug:

	<rdar://problem/3260780>: hitting return in a text field submits 
	form without running onclick handler for submit button

        * khtml/html/html_formimpl.cpp:
        (HTMLFormElementImpl::performSubmitClick): Refactored this function to
	be more generic, so that text fields can use it, too.
        (HTMLInputElementImpl::defaultEventHandler): Removed code to check
	for a submit button, and merged this code into new performSubmitClick.
        (HTMLSelectElementImpl::defaultEventHandler): Ditto.
        * khtml/html/html_formimpl.h: Removed declaration for simulateButtonClickForEvent.
	Added declaration for performSubmitClick.
        * khtml/rendering/render_form.cpp:
        (RenderLineEdit::slotReturnPressed): Now calls performSubmitClick rather
	than prepareSubmit on the form. This is the key piece for the bug fix.

2003-11-03  Ken Kocienda  <kocienda@apple.com>

        Reviewed by John

        Fix for this bug:

        <rdar://problem/3470342>: focus rings are shown for links in
        web pages even in non-frontmost windows

        * kwq/KWQKHTMLPart.h: Add setShowsFirstResponder, showsFirstResponder functions and
        _showsFirstResponder member variable.
        (KWQKHTMLPart::showsFirstResponder): Added.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::KWQKHTMLPart): Initialize _showsFirstResponder to true
        (KWQKHTMLPart::setShowsFirstResponder): Sets whether the painter draws focus rings.
        * kwq/KWQPainter.h: Add _drawsFocusRing member variable.
        (QPainter::setDrawsFocusRing): Sets whether the painter draws focus rings.
        * kwq/KWQPainter.mm:
        (QPainter::QPainter): Initialize _drawsFocusRing to true.
        (QPainter::initFocusRing): Check _drawsFocusRing flag. Return if set to false.
        (QPainter::addFocusRingRect): Ditto.
        (QPainter::drawFocusRing): Ditto.
        * kwq/WebCoreBridge.h: Add setShowsFirstResponder method.
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge drawRect:]): Sets the value for _drawsFocusRing on the
	painter using _showsFirstResponder value from the part.
        (-[WebCoreBridge setShowsFirstResponder:]): Set passed in value on the part.
	Redraw the focus ring if flag has changed.

2003-11-03  David Hyatt  <hyatt@apple.com>

	Remove unneeded style property additions for form controls.  In the KHTML trunk these moved into the UA
	sheet, but we don't even need them there, since we don't honor any of them.

        * khtml/html/html_formimpl.cpp:
        (HTMLInputElementImpl::attach):
        (HTMLSelectElementImpl::attach):
        (HTMLTextAreaElementImpl::attach):

2003-11-03  David Hyatt  <hyatt@apple.com>

	Patch from KHTML trunk.  Move frameset positioning reset into adjustRenderStyle so as not to
	pollute the render tree.

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::adjustRenderStyle):
        * khtml/rendering/render_box.cpp:
        (RenderBox::setStyle):

2003-11-03  David Hyatt  <hyatt@apple.com>

	Fix for 3471609, 'transparent' should be an acceptable named color value instead of a special
	keyword used only by background/border.
	
        Reviewed by kocienda

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssstyleselector.cpp:
        (khtml::):
        (khtml::CSSStyleSelector::applyRule):
        * khtml/css/cssvalues.c:
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/rendering/render_box.cpp:
        (RenderBox::paintBackgroundExtended):
        * khtml/rendering/render_object.cpp:
        (RenderObject::setStyle):
        * khtml/rendering/render_style.h:
        (khtml::BorderValue::BorderValue):
        (khtml::BorderValue::isTransparent):
        (khtml::BorderValue::operator==):
        (khtml::CollapsedBorderValue::isTransparent):
        (khtml::RenderStyle::setBorderLeftColor):
        (khtml::RenderStyle::setBorderRightColor):
        (khtml::RenderStyle::setBorderTopColor):
        (khtml::RenderStyle::setBorderBottomColor):

2003-11-02  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3471226 - HTML document that's less than 16 bytes comes out blank
	
        * kwq/KWQTextCodec.mm:
        (KWQTextDecoder::toUnicode): When flushing, don't bail out early
	if there are no new characters!

2003-11-02  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- don't resolve Null href or src attributes, since the distinction
	between empty and absent attribute is important.

        * khtml/dom/html_base.cpp:
        (HTMLIFrameElement::src):
        * khtml/dom/html_form.cpp:
        (HTMLInputElement::src):
        * khtml/dom/html_head.cpp:
        (HTMLBaseElement::href):
        (HTMLLinkElement::href):
        (HTMLScriptElement::src):
        * khtml/dom/html_image.cpp:
        (HTMLAreaElement::href):
        (HTMLImageElement::src):
        * khtml/dom/html_inline.cpp:
        (HTMLAnchorElement::href):

2003-11-01  David Hyatt  <hyatt@apple.com>

	Fix for 3468924, an implementation of outline-offset.  We also give :focus links a built-in offset of 
	outline-width/2  by default for the Apple Aqua style.

	Fix for 3470660, input type=image excluded from tab order.
	
        Reviewed by darin

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/css/html4.css:
        * khtml/rendering/render_box.cpp:
        (RenderBox::getAbsoluteRepaintRect):
        (RenderBox::computeAbsoluteRepaintRect):
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::getAbsoluteRepaintRect):
        * khtml/rendering/render_inline.cpp:
        (RenderInline::paintFocusRing):
        (RenderInline::paintOutlines):
        (RenderInline::paintOutline):
        * khtml/rendering/render_object.cpp:
        (RenderObject::paintOutline):
        * khtml/rendering/render_style.h:
        (khtml::OutlineValue::OutlineValue):
        (khtml::RenderStyle::outlineSize):
        (khtml::RenderStyle::outlineOffset):
        (khtml::RenderStyle::setOutlineOffset):
        * khtml/rendering/render_text.cpp:
        (RenderText::paintObject):
        * kwq/KWQPainter.h:
        * kwq/KWQPainter.mm:
        (QPainterPrivate::QPainterPrivate):
        (QPainter::initFocusRing):
        (QPainter::addFocusRingRect):

2003-11-01  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3469262 - REGRESSION (110-112): logitech page is very slow to load (due to style sheet updates?)
	
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::dispatchGenericEvent): Don't do default handling for
	events that don't bubble. Not 100% sure why this caused the big
	slowdown but it was a somewhat arbitrary change in my earlier
	patch.

2003-11-01  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3468870 -- REGRESSION (108-109): cannot upload files (<input type=file> is broken)

        * kwq/KWQFileButton.mm: (KWQFileButton::filenameChanged): Pass the filename to
        the textChanged signal. The one without a parameter is a different signal.

2003-11-01  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3466714 -- page with <object> tag with text subtype and no URL causes hang

        * khtml/khtml_part.cpp: (KHTMLPart::requestObject): Added a check so that an empty
        URL string doesn't get completed, and results in an empty KURL object. Also made the
        change to allow empty URLs unconditional, because I don't think it's a WebCore-specific
        thing on further reflection.

2003-10-31  David Hyatt  <hyatt@apple.com>

	Fix for 3470489, I just forgot to commit a piece of my patch.  This has actually even
	been reviewed by ken already.

	Reviewed by kocienda
	
        * khtml/rendering/render_replaced.cpp:
        (RenderWidget::eventFilter):

2003-10-31  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3457875 -- text disappears from fields in forms upon certain types of scrolling

        * kwq/KWQTextField.mm: (-[KWQTextField control:textShouldBeginEditing:]):
        Call releaseGState on the field editor and its clip view to prevent undesirable caching.

2003-10-31  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

	Fix for this bug:

	<rdar://problem/3440719>: Read-only text field form controls 
	do not keyboard focus and do not take part in tabbing

        * kwq/KWQTextField.mm:
        (-[KWQTextField acceptsFirstResponder]): We want our text fields
        to accept first responder even if not editable.

	Once this is fixed, this one comes along for free:

	<rdar://problem/3440710>: Read-only textarea form controls should select all text when focused

2003-10-31  Darin Adler  <darin@apple.com>

        Reviewed by Ken.

        - fixed 3469383 -- REGRESSION (100-111): if one line is selected on this page, too much gets copied (plain text)

        * khtml/khtml_part.cpp: (KHTMLPart::text): Range check the child node indices before using them
        to get at a child node. We don't want to set startNode or endNode to nil in any case. If the end
        node is set to nil, we end up copying the entire remainder of the page.

2003-10-31  David Hyatt  <hyatt@apple.com>

	Fix for 3470007, links don't get focus on mouse down.  Fix the focus check on mouse down to actually
	crawl up the content tree in order to find the nearest enclosing focusable node.  Also clean up and
	fix checks that improperly blurred the link after it got focused.

	Fix for 3450335, AppKit widgets not obeying their desired focus policies.  I renamed isSelectable to
	isFocusable and then also added isMouseFocusable and isKeyboardFocusable methods.
	
        Reviewed by kocienda

        * khtml/css/html4.css:
        * khtml/html/html_baseimpl.cpp:
        (HTMLFrameElementImpl::isFocusable):
        * khtml/html/html_baseimpl.h:
        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::isFocusable):
        (HTMLGenericFormElementImpl::isKeyboardFocusable):
        (HTMLGenericFormElementImpl::isMouseFocusable):
        * khtml/html/html_formimpl.h:
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::isFocusable):
        * khtml/html/html_inlineimpl.h:
        * khtml/khtmlview.cpp:
        (KHTMLView::dispatchMouseEvent):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::nextFocusNode):
        (DocumentImpl::previousFocusNode):
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::isFocusable):
        (NodeImpl::isKeyboardFocusable):
        (NodeImpl::isMouseFocusable):
        * khtml/xml/dom_nodeimpl.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::khtmlMousePressEvent):

2003-10-31  Ken Kocienda  <kocienda@apple.com>

        Reviewed by David

	Fix for this bug:

	<rdar://problem/3470233>: solid outlines drawing incorrectly

	The problem was that when I collected the array of line boxes for
	render inlines, I put a QRect() at the start and the end of the list.
	However, the border calculation code expected "invalid" rectangles
	(rects with 0 for all four dimentions) in the first and last
	positions, and the default constructor for QRect makes rects with 1,1
	for width/height.

        * khtml/rendering/render_inline.cpp:
        (RenderInline::paintOutlines)

2003-10-31  Darin Adler  <darin@apple.com>

        Reviewed by Dave.

        - fixed 3464759 -- REGRESSION (100-107): Pressing on link loses mouse-down feedback almost instantly

        * khtml/khtmlview.cpp: (KHTMLView::viewportMouseMoveEvent): Pass true for the "read-only"
        flag in prepareMoveEvent to prevent us from updating :hover and :active while the mouse is down.

2003-10-31  Ken Kocienda  <kocienda@apple.com>

        Reviewed by David

	<rdar://problem/3468910>: REGRESSION: other than focus rings, outlines styles are broken

	Outlines now draw like they used to.

        * khtml/rendering/render_inline.cpp:
        (RenderInline::paintObject): Now branches to call focus ring or "regular" outlines.
        (RenderInline::paintFocusRing): Broke out drawing aqua focus rings into its
	own function.
        (RenderInline::paintOutlines): New function to draw "regular outlines.
        (RenderInline::paintOutline): Removed code which special-cased aqua outlines.
        * khtml/rendering/render_inline.h: Added paintOutlines declaration.

2003-10-31  David Hyatt  <hyatt@apple.com>

	Fix for 3467419, highlighted text in "search in books" Amazon feature is obscured.  The
	site is using the CSS3 opacity property.  The CSS3 Color module is far enough along now
	that opacity can safely be used without the "-khtml-" in front of it.

	Fix for 3466542, the minimum font size bug.  I am introducing a new minimum font size pref that
	really is a hard override.
	
        Reviewed by gramps (opacity) and john (min font size)
	
        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):

2003-10-31  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Darin

	Fix for this bug:

	<rdar://problem/3469088>: focus not removed from text link 
	when user hits cmd-L or clicks in window chrome

        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge deselectAll]): Now clears the focus ring as well.
        (-[WebCoreBridge deselectText]): Just clears text selection.

2003-10-31  David Hyatt  <hyatt@apple.com>

	Three simple fixes:
	
	(1) Fix for 3463777, crash on CSS3 box model draft.  This was just a situation where a simple null-check
	was needed for generated content.

	(2) Added a != check when the old and new hover obj are the same to avoid a little bit of extra work.

	(3) Removed the m_pressed member from DOM nodes and removed the calls to setPressed, since this code
	is dead and not used by anyone.
	
        * khtml/khtmlview.cpp:
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::addChild):
        (RenderLayer::updateHoverActiveState):
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::NodeImpl):
        * khtml/xml/dom_nodeimpl.h:
        (DOM::NodeImpl::hasStyle):
        (DOM::NodeImpl::setHasStyle):

2003-10-30  David Hyatt  <hyatt@apple.com>

	Fix for 3469330, the Marquee data in RenderStyle needs a copy constructor hack like all the other
	objects do.

        * khtml/rendering/render_style.cpp:
        (direction):
        * khtml/rendering/render_style.h:

2003-10-30  David Hyatt  <hyatt@apple.com>

	Fix for 3469206, images didn't paint outlines any more.  They were bailing early because I forgot to
	add a check for my new PaintAction.
	
        Reviewed by darin

        * khtml/rendering/render_replaced.cpp:
        (RenderReplaced::paint):

2003-10-30  David Hyatt  <hyatt@apple.com>

	Fixes for 3469057, outlines not drawn on aintitcool.com and also for 3469178, objects with width/height of 0
	incorrectly excluded from tabbing.
	
        Reviewed by darin

        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::isSelectable):
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::isSelectable):
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::getAbsoluteRepaintRect):
        * khtml/rendering/render_inline.cpp:
        (RenderInline::addFocusRingRects):
        (RenderInline::paintOutline):
        * khtml/rendering/render_object.cpp:
        (RenderObject::addFocusRingRects):
        (RenderObject::getAbsoluteRepaintRectWithOutline):

2003-10-30  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3426081 - empty cells HTMLCollection for <tr>
	- fixed 3367598 - "length" attribute for table row "cells" always returns 0
	
        * khtml/dom/html_table.cpp:
        (HTMLTableRowElement::cells): TR_CELLS, not TABLE_ROWS.

2003-10-30  David Hyatt  <hyatt@apple.com>

	Fix for 3468916, outline needs its own paint action so that focus rings don't draw under other content.
	
        Reviewed by kocienda

        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::paintObject):
        (khtml::RenderBlock::paintFloats):
        * khtml/rendering/render_image.cpp:
        (RenderImage::paintObject):
        * khtml/rendering/render_inline.cpp:
        (RenderInline::paintObject):
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::paintLayer):
        * khtml/rendering/render_object.h:

2003-10-30  Maciej Stachowiak  <mjs@apple.com>

	Fixed Dave's fix to my fix to my fix:

        * khtml/html/html_imageimpl.cpp:
        (HTMLImageElementImpl::width): Put back m_render check, consider
	the case of image with no width/height attributes and display:none
	set. We don't want to crash on that.
        (HTMLImageElementImpl::height): Ditto.

2003-10-30  Ken Kocienda  <kocienda@apple.com>

        Reviewed by Hyatt

	Support for tabbing to links.

	Fixes these bugs

	<rdar://problem/3468395>: fix full keyboard access loop for buttons
	<rdar://problem/3468397>: paint aqua focus rings around text links
	<rdar://problem/3468406>: focused links do not activate by hitting
	   return key
	<rdar://problem/3468410>: paintTextOutline in RenderText objects
	   should be done at a higher level
	<rdar://problem/3468424>: improve function to determine if a node is
	   tab selectable
	<rdar://problem/3468427>: add bridge function to access active
	   document view for a node
	<rdar://problem/3468429>: links do not scroll into view when focusing
	<rdar://problem/3468435>: when tabbing out of a frame, last focused
	   node is not cleared if it is a text link
	<rdar://problem/3468436>: focus on text link does not clear when
	   clicking mouse in document body
	<rdar://problem/3468440>: add setRect convenience to QRect
	<rdar://problem/3468444>: elements paint their outlines even if they
	   are not visible
	<rdar://problem/3468448>: setting focus on a node sets focus on all
	   its siblings
	<rdar://problem/3468456>: cannot tab to form image input elements
	<rdar://problem/3468461>: tab focus can seem to disappear from view on
	   pages with dhtml menus
	<rdar://problem/3469021>: webcore bridge nextKeyView always starts 
	from the beginning of the document

        * WebCore-combined.exp: Export WebCoreGraphicsBridge class
        * WebCore.exp: Ditto
        * WebCore.pbproj/project.pbxproj: Add WebCoreGraphicsBridge class
        * khtml/css/cssparser.cpp: 
        (CSSParser::parseValue): border style check now take apple aqua
	style into account
        * khtml/css/cssvalues.in: Add -apple-aqua border value
        * khtml/css/html4.css: Change focus, a:link:active, and a:visited:active
	to use new -apple-aqua focus rings.
        * khtml/html/html_formimpl.cpp:
        (HTMLGenericFormElementImpl::isSelectable): Improve function so
	that invisible elements are no longer considered selectable
        * khtml/html/html_inlineimpl.cpp:
        (HTMLAnchorElementImpl::isSelectable): Ditto.
        (HTMLAnchorElementImpl::defaultEventHandler): Make return key
	activate links as well as Enter.
        * khtml/html/html_inlineimpl.h: Move isSelectable function into
	implementation file.
        * khtml/rendering/render_block.cpp: 
        (khtml::RenderBlock::paintObject): Do not paint outlines if
	content is invisible.
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::getAbsoluteRepaintRect): Improve function to correctly
	calculate repaint rects including outlines.
        * khtml/rendering/render_image.cpp:
        (RenderImage::paintObject): Do not paint outlines if
        content is invisible.
        * khtml/rendering/render_inline.cpp:
        (RenderInline::paintObject): Ditto.
        (RenderInline::addFocusRingRects): New function to gather up rects
	to use for painting outlines.
        (RenderInline::paintOutline): Added code to paint aqua focus rings.
        * khtml/rendering/render_inline.h:
        * khtml/rendering/render_object.cpp:
        (RenderObject::drawBorder): Add case for apple aqua border style.
        (RenderObject::addFocusRingRects): New function to gather up rects
        to use for painting outlines.
        (RenderObject::paintOutline): Added code to paint aqua focus rings.
        (RenderObject::getAbsoluteRepaintRectWithOutline): Helper function
	to calculate rectangle to use for repainting when an object has an
	outline.
        * khtml/rendering/render_object.h: Add addFocusRingRects declaration.
        * khtml/rendering/render_style.h: Add APPLEAQUA to border enum
        * khtml/rendering/render_text.cpp:
        (RenderText::paintObject): Removed code to draw outlines.
        * khtml/rendering/render_text.h: Ditto.
        * khtml/xml/dom_elementimpl.cpp: Removed redundant isSelectable check.
        * khtml/xml/dom_elementimpl.h: Ditto.
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::isSelectable): Added.
        (NodeBaseImpl::setFocus): Do not set focus on siblings.
        * khtml/xml/dom_nodeimpl.h: Moved implementation to .cpp file.
        * kwq/KWQButton.mm:
        (-[KWQButton nextKeyView]): Send a blur before going to next
	key view. This prevents focus from being lost altogether.
        (-[KWQButton previousKeyView]): Ditto.
        * kwq/KWQKHTMLPart.h: Added documentViewForNode function.
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::nextKeyViewInFrame): Add check for other focusables,
	like text links.
        (KWQKHTMLPart::nextKeyViewInFrameHierarchy): Remove focus when leaving
	a view.
        (KWQKHTMLPart::documentViewForNode): Added.
        (KWQKHTMLPart::khtmlMousePressEvent): Remove focus when you click in
	a non-focusable area, like the document body.
        * kwq/KWQPainter.h: Added declarations.
        * kwq/KWQPainter.mm:
        (QPainterPrivate::QPainterPrivate): Modified constructor for new fields.
        (QPainter::initFocusRing): Added.
        (QPainter::addFocusRingRect): Added.
        (QPainter::drawFocusRing): Added.
        (QPainter::clearFocusRing): Added.
        * kwq/KWQRect.h:
        (QRect::setRect): Added.
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge nextKeyView]): Start from the currently-focused node,
	if there is one, not unconditionally from the start of the document.
        (-[WebCoreBridge previousKeyView]): Ditto
        * kwq/WebCoreGraphicsBridge.h: Added.
        * kwq/WebCoreGraphicsBridge.m: Added.
        (+[WebCoreGraphicsBridge sharedBridge]): Added.
        (-[WebCoreGraphicsBridge init]): Added.
        (-[WebCoreGraphicsBridge setFocusRingStyle:radius:color:]): Added.

2003-10-30  Maciej Stachowiak  <mjs@apple.com>

	Fix mistake in my last change that I did not mean to commit.

        * khtml/html/html_imageimpl.cpp:
        (HTMLImageElementImpl::width): Remove extraneous second attempt to
	lay out.

2003-10-30  David Hyatt  <hyatt@apple.com>

	Put paged-media changes back without the wrongful removal of the style data copy constructors (which
	were necessary after all).
	
        * ChangeLog:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/rendering/render_style.cpp:
        (StyleInheritedData::StyleInheritedData):
        (StyleInheritedData::operator==):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::RenderStyle::NonInheritedFlags::operator==):
        (khtml::RenderStyle::setBitDefaults):
        (khtml::RenderStyle::widows):
        (khtml::RenderStyle::orphans):
        (khtml::RenderStyle::pageBreakInside):
        (khtml::RenderStyle::pageBreakBefore):
        (khtml::RenderStyle::pageBreakAfter):
        (khtml::RenderStyle::setWidows):
        (khtml::RenderStyle::setOrphans):
        (khtml::RenderStyle::setPageBreakInside):
        (khtml::RenderStyle::setPageBreakBefore):
        (khtml::RenderStyle::setPageBreakAfter):

2003-10-30  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	- fixed 3468129 - REGRESSION: FOUC occurs on Surfin' Safari
	
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::getValueProperty): Don't force layout for image
	width/height if you can determine it statically from the attribute.
        * khtml/html/html_image.cpp:
        (HTMLImageElementImpl::width):
        (HTMLImageElementImpl::height):

=== Safari-112 ===

2003-10-30  Ken Kocienda  <kocienda@apple.com>

	Rolling out this code since it caused a big performance 
	regression.

	2003-10-29  David Hyatt  <hyatt@apple.com>

		Add the paged media properties to RenderStyle.  
		They aren't used yet, but they should now be
		parsed and interpreted correctly.

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/rendering/render_style.cpp:
        (StyleSurroundData::StyleSurroundData):
        (StyleBoxData::StyleBoxData):
        (StyleBoxData::operator==):
        (StyleVisualData::~StyleVisualData):
        (StyleVisualData::StyleVisualData):
        (StyleBackgroundData::StyleBackgroundData):
        (StyleFlexibleBoxData::StyleFlexibleBoxData):
        (opacity):
        (textShadow):
        (StyleInheritedData::StyleInheritedData):
        (StyleInheritedData::~StyleInheritedData):
        (StyleInheritedData::operator==):
        * khtml/rendering/render_style.h:
        (khtml::StyleBackgroundData::~StyleBackgroundData):
        (khtml::StyleFlexibleBoxData::~StyleFlexibleBoxData):
        (khtml::RenderStyle::NonInheritedFlags::operator==):
        (khtml::RenderStyle::setBitDefaults):

2003-10-29  David Hyatt  <hyatt@apple.com>

	Fix for 3466628, widgets in overflow blocks don't move when the overflow block is scrolled.  This
	was a regression caused by my change to move widgets only during layout and not at paint time.  The
	problem with this is that scrolling an overflow block doesn't do a layout, just a repaint.  I patched
	the layer code to update widget positions on an overflow block scroll.

	This then exposed a bug in absolutePosition, namely that the scroll offset was never factored in when
	computing absolutePosition.  This bug also explains why text selection and cursor display were wrong
	inside scrolled overflow blocks.
	
        Reviewed by mjs

        * khtml/rendering/render_box.cpp:
        (RenderBox::absolutePosition):
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::scrollToOffset):
        * khtml/rendering/render_object.cpp:
        (RenderObject::absolutePosition):
        * khtml/rendering/render_text.cpp:
        (RenderText::cursorPos):
        (RenderText::posOfChar):
        * khtml/rendering/render_text.h:

2003-10-29  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave.

	- fixed 3467499 - REGRESSION: onClick handlers on links don't work (bubbling broken)
	
        * khtml/xml/dom2_eventsimpl.cpp:
        (EventImpl::EventImpl): Initialize m_cancelBubble (duh).

2003-10-29  David Hyatt  <hyatt@apple.com>

	Fix for 3466802.  When breaking on a newline, "pre" is determined by checking the actual object that
	the line broke on, and not by simply checking the "pre" status of the containing block.
	
        Reviewed by mjs

        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::layoutInlineChildren):

2003-10-29  David Hyatt  <hyatt@apple.com>

	Add the paged media properties to RenderStyle.  They aren't used yet, but they should now be 
	parsed and interpreted correctly.
	
        Reviewed by kocienda

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/rendering/render_style.cpp:
        (StyleBoxData::operator==):
        (StyleFlexibleBoxData::StyleFlexibleBoxData):
        (:opacity):
        (:textShadow):
        (StyleInheritedData::StyleInheritedData):
        (StyleInheritedData::operator==):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::RenderStyle::NonInheritedFlags::operator==):
        (khtml::RenderStyle::setBitDefaults):
        (khtml::RenderStyle::widows):
        (khtml::RenderStyle::orphans):
        (khtml::RenderStyle::pageBreakInside):
        (khtml::RenderStyle::pageBreakBefore):
        (khtml::RenderStyle::pageBreakAfter):
        (khtml::RenderStyle::setWidows):
        (khtml::RenderStyle::setOrphans):
        (khtml::RenderStyle::setPageBreakInside):
        (khtml::RenderStyle::setPageBreakBefore):
        (khtml::RenderStyle::setPageBreakAfter):

2003-10-29  David Hyatt  <hyatt@apple.com>

        Reviewed by NOBODY (OOPS!).

        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/rendering/render_style.cpp:
        (StyleBoxData::operator==):
        (StyleFlexibleBoxData::StyleFlexibleBoxData):
        (:opacity):
        (:textShadow):
        (StyleInheritedData::StyleInheritedData):
        (StyleInheritedData::operator==):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::RenderStyle::NonInheritedFlags::operator==):
        (khtml::RenderStyle::setBitDefaults):
        (khtml::RenderStyle::widows):
        (khtml::RenderStyle::orphans):
        (khtml::RenderStyle::pageBreakInside):
        (khtml::RenderStyle::pageBreakBefore):
        (khtml::RenderStyle::pageBreakAfter):
        (khtml::RenderStyle::setWidows):
        (khtml::RenderStyle::setOrphans):
        (khtml::RenderStyle::setPageBreakInside):
        (khtml::RenderStyle::setPageBreakBefore):
        (khtml::RenderStyle::setPageBreakAfter):

2003-10-29  David Hyatt  <hyatt@apple.com>

	Refine the fix to updateLayout.
	updateStyleSelector would get called over and over again when you queried for layout properties from
	JS.  If no stylesheets are pending, this isn't necessary (and is quite expensive, since updateStyleSelector
	is a slow function).
	
        Reviewed by darin

        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::updateLayout):

2003-10-29  David Hyatt  <hyatt@apple.com>

	Fix crasher in border collapsing code.
	
        Reviewed by kocienda

        * khtml/rendering/render_table.cpp:
        (RenderTable::cellRight):

2003-10-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3163842 - Citibank cardmember central DHTML menus not working right in Safari
	
        * khtml/ecma/kjs_html.cpp:
        (KJS::HTMLElement::getValueProperty): update layout before fetching image properties
	that need it.
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::DocumentImpl): Initialize m_ignorePendingStylesheets to false.
        (DocumentImpl::updateLayout): Ignore pending stylesheets - when JS demands a
	layout, it wants a real one now.
        (DocumentImpl::updateStyleSelector): Go ahead with the update if we're ignoring
	pending stylesheets.
        * khtml/xml/dom_docimpl.h:
        (DOM::DocumentImpl::haveStylesheetsLoaded): Pretend stylesheets have loaded if
	we're temporarily ignoring pending stylesheets.

2003-10-29  David Hyatt  <hyatt@apple.com>

	Implement support for <marquee>.  This includes support for the CSS3 specification (although modified a fair
	bit to actually be compatible with WinIE's version and to correct obvious errors in the draft).  All of the
	marquee behaviors (slide, scroll, and alternate) are supported.

	This patch also fixes the following bugs that were discovered while testing marquee:
	(1) An error in the computation of scrollWidth and scrollHeight.  
	(2) The ability to ask for the leftmostPosition as well as the rightmostPosition of content and to
	be able to ask for the positions of children (via left/right/lowest) without including the parent in the
	computation.
	(3) An optimization to RenderFlow's rightmost/lowestPosition functions to avoid examining text elements since
	they are always fully accounted for by either overflow or by inline flow boxes.
	(4) A fix for RTL rendering.  A block with direction:RTL was being placed on the right, when in reality only
	its children should be placed on the right.
	(5) A fix to prevent inline blocks and tables from computing auto margins (making them just like floats in this
	regard).
	
        Reviewed by darin

        * khtml/css/cssparser.cpp:
        (validUnit):
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::convertToLength):
        (khtml::CSSStyleSelector::applyRule):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/css/html4.css:
        * khtml/html/html_blockimpl.cpp:
        (HTMLMarqueeElementImpl::HTMLMarqueeElementImpl):
        (HTMLMarqueeElementImpl::id):
        (HTMLMarqueeElementImpl::parseAttribute):
        * khtml/html/html_blockimpl.h:
        (DOM::HTMLMarqueeElementImpl::minimumDelay):
        * khtml/html/htmlparser.cpp:
        (KHTMLParser::getElement):
        * khtml/misc/htmlattrs.c:
        (hash_attr):
        (findAttr):
        * khtml/misc/htmlattrs.h:
        * khtml/misc/htmlattrs.in:
        * khtml/rendering/bidi.cpp:
        (khtml::RenderBlock::findNextLineBreak):
        * khtml/rendering/render_block.cpp:
        (khtml::RenderBlock::lowestPosition):
        (khtml::RenderBlock::rightmostPosition):
        (khtml::RenderBlock::leftmostPosition):
        * khtml/rendering/render_block.h:
        * khtml/rendering/render_box.cpp:
        (RenderBox::setStyle):
        (RenderBox::calcWidth):
        (RenderBox::calcHorizontalMargins):
        (RenderBox::lowestPosition):
        (RenderBox::rightmostPosition):
        (RenderBox::leftmostPosition):
        * khtml/rendering/render_box.h:
        * khtml/rendering/render_flow.cpp:
        (RenderFlow::lowestPosition):
        (RenderFlow::rightmostPosition):
        (RenderFlow::leftmostPosition):
        * khtml/rendering/render_flow.h:
        * khtml/rendering/render_layer.cpp:
        (RenderLayer::RenderLayer):
        (RenderLayer::~RenderLayer):
        (RenderLayer::updateLayerPositions):
        (RenderLayer::scrollToOffset):
        (RenderLayer::computeScrollDimensions):
        (RenderLayer::styleChanged):
        (RenderLayer::stopMarquees):
        (m_whiteSpace):
        (Marquee::marqueeSpeed):
        (Marquee::direction):
        (Marquee::isHorizontal):
        (Marquee::computePosition):
        (Marquee::start):
        (Marquee::stop):
        (Marquee::updateMarqueePosition):
        (Marquee::updateMarqueeStyle):
        (Marquee::timerEvent):
        * khtml/rendering/render_layer.h:
        (khtml::):
        (khtml::RenderLayer::marquee):
        * khtml/rendering/render_object.cpp:
        (RenderObject::isHTMLMarquee):
        (RenderObject::sizesToMaxWidth):
        * khtml/rendering/render_object.h:
        (khtml::RenderObject::lowestPosition):
        (khtml::RenderObject::rightmostPosition):
        (khtml::RenderObject::leftmostPosition):
        * khtml/rendering/render_style.cpp:
        (StyleMarqueeData::StyleMarqueeData):
        (StyleMarqueeData::operator==):
        (opacity):
        (marquee):
        (StyleCSS3NonInheritedData::operator==):
        (RenderStyle::RenderStyle):
        * khtml/rendering/render_style.h:
        (khtml::):
        (khtml::StyleMarqueeData::operator!=):
        (khtml::RenderStyle::marqueeIncrement):
        (khtml::RenderStyle::marqueeSpeed):
        (khtml::RenderStyle::marqueeLoopCount):
        (khtml::RenderStyle::marqueeBehavior):
        (khtml::RenderStyle::marqueeDirection):
        (khtml::RenderStyle::setMarqueeIncrement):
        (khtml::RenderStyle::setMarqueeSpeed):
        (khtml::RenderStyle::setMarqueeDirection):
        (khtml::RenderStyle::setMarqueeBehavior):
        (khtml::RenderStyle::setMarqueeLoopCount):
        * khtml/xml/dom_docimpl.cpp:
        (DocumentImpl::createHTMLElement):
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::clearTimers):

2003-10-29  David Hyatt  <hyatt@apple.com>

	Make <button> be an inline-block.
	
        * khtml/css/html4.css:

2003-10-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	 - fixed 3465547 - REGRESSION (100-111)?: window.prompt does not work
	
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::runJavaScriptPrompt): Return the result properly
	instead of always returning false.

2003-10-28  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3465504 -- REGRESSION (100-111): text areas with Chinese text in them are wider than ones without

        * kwq/KWQTextArea.h: Add _font field.
        * kwq/KWQTextArea.mm:
        (-[KWQTextArea dealloc]): Release _font.
        (-[KWQTextArea setFont:]): Store font in _font as well as setting it in the text view.
        (-[KWQTextArea sizeWithColumns:rows:]): Use _font rather than asking the text view for the font.

2003-10-28  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3464702 -- node.item(x) is not implemented (dynamic menus not filled out at techcu.com)

        * khtml/ecma/kjs_dom.cpp: (DOMNodeProtoFunc::tryCall): Add implementation of item function.
        * khtml/ecma/kjs_dom.h: Added Item to the enum.
        * khtml/ecma/kjs_dom.lut.h: Regenerated.

2003-10-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Dave,

	- fixed 3379725 - for <a> elements with both onclick and href, Web Kit's behavior does not match other browsers

	The fix for this was to make cancelBubble only prevent bubbling,
	but not stop propagation or prevent default. While I was at it, I
	made returnValue work right too.
	
        * khtml/ecma/kjs_events.cpp:
        (DOMEvent::getValueProperty): Implement cancelBubble and returnValue properties properly.
        (DOMEvent::putValue): Ditto.
        * khtml/dom/dom2_events.cpp:
        (Event::setCancelBubble): Call impl.
        (Event::setDefaultPrevented): Ditto.
        (Event::getCancelBubble): Ditto.
        (Event::defaultPrevented): Ditto.
        * khtml/dom/dom2_events.h:
        * khtml/xml/dom2_eventsimpl.h:
        (DOM::EventImpl::propagationStopped): Made this a const method.
        (DOM::EventImpl::defaultPrevented): Ditto.
        (DOM::EventImpl::setCancelBubble): Implemented by setting a new field.
        (DOM::EventImpl::getCancelBubble): Corresponding getter.
        (DOM::EventImpl::setDefaultPrevented): Set the already existing field for this.
        * khtml/xml/dom_nodeimpl.cpp:
        (NodeImpl::dispatchGenericEvent): Check getCancelBubble() when bubbling. Do not
	check bubbles() before default handling.

2003-10-28  Chris Blumenberg  <cblu@apple.com>

	Fixed: <rdar://problem/3464472>: REGRESSION: New CSS cursor support breaks style="cursor:default

        Reviewed by dave.

        * kwq/KWQWidget.mm:
        (QWidget::cursor): break after we hit a view that responds to documentCursor as we do in setCursor. Without breaking we were returning the cursor of the most super HTML view which is not what we want.

2003-10-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed 3421393 - window.open does not handle non-integral height/width (small window at saabusa.com)
	
        * khtml/ecma/kjs_window.cpp:
        (WindowFunc::tryCall): Parse width, height, top and left as
	floating point and then cast to int instead of parsing as int to
	match other browsers and avoid rejecting floating point numbers.

2003-10-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed 3464528 - addEventListener does not work for buttons, text areas, or inputs

        * khtml/rendering/render_form.cpp:
        (RenderFormElement::slotClicked): Send CLICK_EVENT as well as one
	of KHTML_CLICK_EVENT or KHTML_DOUBLE_CLICK_EVENT.

2003-10-28  Maciej Stachowiak  <mjs@apple.com>

        Fixed broken build.

        * kwq/KWQKPartsPart.mm:
        (KParts::ReadOnlyPart::setName): It's a ReadOnlyPart method, not a Part method.

2003-10-28  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by John.

	- fixed 3427046 - href and src attributes don't always give resolved URL

	It turns out that all href and src attributes should be resolved
	against the base, except for frame elements.
	
        * khtml/dom/html_base.cpp:
        (HTMLIFrameElement::src): Resolve against base URL.
        * khtml/dom/html_form.cpp:
        (HTMLInputElement::src): Resolve URL even when empty. Remove
	comment questioning resolution against base - it's definitely
	right.
        * khtml/dom/html_head.cpp:
        (HTMLBaseElement::href): Resolve against base URL.
        (HTMLLinkElement::href): Ditto.
        (HTMLScriptElement::src): Ditto.
        * khtml/dom/html_image.cpp:
        (HTMLAreaElement::href): Ditto.
	(HTMLImageElement::src): Resolve URL even when empty. Remove
	comment questioning resolution against base - it's definitely
	right.
        * khtml/dom/html_inline.cpp:
        (HTMLAnchorElement::href): Resolve against base URL.

2003-10-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	- fixed 3083264 - frame names changed by JavaScript are not reflected in WebFrame at the WebKit level
	
        * kwq/KWQKHTMLPart.h:
        * kwq/KWQKHTMLPart.mm:
        (KWQKHTMLPart::setName): Make sure the name is unique. Then tell
	the bridge and the superclass about it.
        * kwq/KWQKPartsPart.h:
        (KParts::ReadOnlyPart::setName): Made this method virtual.
        * kwq/KWQKPartsPart.m: Added. Moved implementations of virtual methods here.
        * kwq/WebCoreBridge.h:
        * kwq/WebCoreBridge.mm:
        (-[WebCoreBridge setName:]): Call the superclass method to avid
	sending the name pointlessly back across the bridge.

2003-10-28  Darin Adler  <darin@apple.com>

        Reviewed by John.

        - fixed 3465063 -- REGRESSION (107-108): hang when fetching a page with an ad in a subframe (theage.com.au)

        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::openURL): Follow the parent chain properly rather
        than repeatedly getting the part's own parent!

2003-10-27  Maciej Stachowiak  <mjs@apple.com>

        Reviewed by Darin.

	Improved exception blocking in the following ways:

	- use C+constructors and destructors so returning or breaking out of an exception block works
	- Remove use of volatile
	- Collapse the caught exception case into a single function call to reduce code size.

        * WebCore.pbproj/project.pbxproj:
        * kwq/KWQButton.mm:
        * kwq/KWQCheckBox.mm:
        * kwq/KWQComboBox.mm:
        * kwq/KWQExceptions.h:
        * kwq/KWQExceptions.mm: Added.
        * kwq/KWQFileButton.mm:
        * kwq/KWQFont.mm:
        * kwq/KWQFrame.mm:
        * kwq/KWQKConfigBase.mm:
        * kwq/KWQKCookieJar.mm:
        * kwq/KWQKCursor.mm:
        * kwq/KWQKHTMLPart.mm:
        * kwq/KWQKHTMLPartBrowserExtension.mm:
        * kwq/KWQKHistoryProvider.mm:
        * kwq/KWQKJavaAppletWidget.mm:
        * kwq/KWQKJobClasses.mm:
        * kwq/KWQKLocale.mm:
        * kwq/KWQKPartsBrowserInterface.mm:
        * kwq/KWQLineEdit.mm:
        * kwq/KWQListBox.mm:
        * kwq/KWQLoader.mm:
        * kwq/KWQPainter.mm:
        * kwq/KWQPushButton.mm:
        * kwq/KWQRadioButton.mm:
        * kwq/KWQScrollBar.mm:
        * kwq/KWQScrollView.mm:
        * kwq/KWQTextEdit.mm:
        * kwq/KWQWidget.mm:
        
2003-10-26  Darin Adler  <darin@apple.com>

        * khtml/khtml_part.cpp: (findWordBoundary): Fix small mistake from NULL check-in earlier.

2003-10-26  Darin Adler  <darin@apple.com>

        * kwq/KWQLoader.mm: (KWQResponseMIMEType): Removed an excess volatile.

2003-10-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3463624 -- page at cinemakorea.com shows up blank due to kTECBufferBelowMinimumSizeErr from TEC

        * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertOneChunkUsingTEC): To work around the bug
        I found in the decoder (Radar 3351093), change kTECBufferBelowMinimumSizeErr to
        kTECOutputBufferFullStatus in cases where bytes were actually converted.

2003-10-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3463586 -- WebCore does not compile with new definition of NULL

        * khtml/khtml_part.cpp: (findWordBoundary): Changed NULL to 0 and did a little code
        cleanup of the surrounding code.
        * khtml/rendering/break_lines.cpp: (khtml::isBreakable): Changed NULL to 0 and did
        a tiny bit of cleanup.

        * WebCorePrefix.h: Add a definition of NULL here that takes advantage of the GNU
        __null feature even if the system C library doesn't.

2003-10-26  Darin Adler  <darin@apple.com>

        Reviewed by Maciej.

        - fixed 3457831 -- REGRESSION: copying particular text and pasting (plain) produces lots of extra text

        * khtml/khtml_part.cpp: (KHTMLPart::text): Check for the end node when following a
        link to the parent node, not just when following a link to the next child node.
        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::attributedString): Ditto.

== Rolled over to ChangeLog-2003-10-25 ==ite
