Reviewed by John
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
index f7bc857..6bc843b 100644 (file)
+2004-12-06  Ken Kocienda  <kocienda@apple.com>
+        Reviewed by John
+        
+        * khtml/dom/dom_string.cpp:
+        (DOM::DOMString::substring): Expose method already on DOMStrimgImpl.
+        * khtml/dom/dom_string.h: Ditto.
+        * khtml/editing/htmlediting.cpp:
+        (khtml::CompositeEditCommand::rebalanceWhitespace): New helper to create and execute a
+        RebalanceWhitespaceCommand instance.
+        (khtml::DeleteSelectionCommand::doApply): Call rebalanceWhitespace() after running command.
+        (khtml::InsertLineBreakCommand::doApply): Ditto.
+        (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
+        (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
+        (khtml::InsertTextCommand::input): Ditto.
+        (khtml::RebalanceWhitespaceCommand::RebalanceWhitespaceCommand): New command.
+        (khtml::RebalanceWhitespaceCommand::~RebalanceWhitespaceCommand): Ditto.
+        (khtml::RebalanceWhitespaceCommand::doApply): Ditto.
+        (khtml::RebalanceWhitespaceCommand::doUnapply): Ditto.
+        (khtml::RebalanceWhitespaceCommand::preservesTypingStyle): Ditto.
+        (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Ditto.
+        * khtml/editing/htmlediting.h: Ditto.
+        (khtml::RebalanceWhitespaceCommand::): Ditto.
+
+2004-12-05  Darin Adler  <darin@apple.com>
+
+        - fixed small problem in my check-in from yesterday
+
+        * kwq/KWQEvent.mm:
+        (positionForEvent): Get location from event without raising exception if it's the wrong type.
+        (clickCountForEvent): Same, for clickCount.
+        (QMouseEvent::QMouseEvent): Use the new helper functions so this can be constructed even with
+        the wrong type of NSEvent. Required for cases where a keyboard event causes a "click" and we need
+        to synthesize a QMouseEvent for KHTML internal use, using the key down NSEvent.
+
+2004-12-04  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3878329> REGRESSION (169-170): colors are wrong for my.yahoo.com due to CSS background parsing changes
+
+        * khtml/css/cssparser.cpp: (CSSParser::parseBackgroundShorthand): Changed function so it doesn't rely on the position
+        attribute being at the end of the array and then moved position attribute before color attribute so it takes precedence.
+        Since "0" can be both the X coordinate of a position and a legal color (meaning black), we need to do position first.
+
+        - fixed <rdar://problem/3760869> click events for input type=button or type=checkbox don't have flags like shiftKey set
+
+        * khtml/rendering/render_form.h: Remove unused RenderFormElement fields.
+        * khtml/rendering/render_form.cpp:
+        (RenderFormElement::RenderFormElement): Take out code to set a bunch of unused fields.
+        (RenderFormElement::slotClicked): Change to create the QMouseEvent from the actual mouse event rather than
+        creating it with all the flags set to 0, using the new QMouseEvent constructor that does so.
+
+        * kwq/KWQEvent.h: Added constructor that takes no parameters which uses the current event from AppKit.
+        Made the click count getter const and added an isDoubleClick that matches the logic used elsewhere.
+        Added a fixState helper method so the constructors can save code.
+        * kwq/KWQEvent.mm:
+        (QMouseEvent::QMouseEvent): Factored out the state-fixing code that was in the two existing constructors
+        and added a third constructor that uses the "current event" from AppKit (used above).
+        (QMouseEvent::fixState): Compute state and click count based on event type.
+
+        - fixed first symptom of <rdar://problem/3830936> REGRESSION (125-165): crash due to null font family, hang at changeforamerica.com
+
+        * kwq/KWQFontFamily.mm: (KWQFontFamily::getNSFamily): Handle empty strings specially so we don't run into trouble when
+        the family name is a null string. This prevents the crash, but there are still other problems that may have the same
+        underlying cause in CSS.
+
+        - fixed <rdar://problem/3829808> Safari crashes when adding a DOM node that was removed from an XMLHTTP request result
+
+        * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::insertedIntoDocument):
+        Added nil check before calling scheduleRelayout. This is new code so the nil-dereference is a recent regression.
+
+2004-12-03  Chris Blumenberg  <cblu@apple.com>
+
+       New fixes for:
+       <rdar://problem/3685766> WebDataSource is missing subresources when they use cached WebCore data
+       <rdar://problem/3722434> REGRESSION?: Assertion failure trying to drag image in iframe (itapema.sc.gov.br)
+       <rdar://problem/3903173> REGRESSION (172-TOT): assertion failure and crash in slotAllData logging into hotmail account
+       <rdar://problem/3902749> REGRESSION (Tiger): missing image symbol does not appear
+
+        Reviewed by darin, rjw, kocienda.
+
+        * khtml/misc/loader.cpp:
+        (CachedObject::~CachedObject):
+        (CachedCSSStyleSheet::checkNotify):
+        (Loader::servePendingRequests):
+        (Loader::slotFinished):
+        (Loader::slotReceivedResponse):
+        (Cache::requestImage):
+        (Cache::requestScript):
+        * khtml/misc/loader.h:
+        (khtml::CachedObject::CachedObject):
+        (khtml::CachedObject::response):
+        (khtml::CachedObject::allData):
+        * kwq/KWQKJobClasses.h:
+        * kwq/KWQKJobClasses.mm:
+        (KIO::TransferJobPrivate::TransferJobPrivate):
+        (KIO::TransferJobPrivate::~TransferJobPrivate):
+        (KIO::TransferJob::TransferJob):
+        (KIO::TransferJob::assembleResponseHeaders):
+        (KIO::TransferJob::retrieveCharset):
+        (KIO::TransferJob::emitResult):
+        (KIO::TransferJob::emitReceivedResponse):
+        * kwq/KWQLoader.h:
+        * kwq/KWQLoader.mm:
+        (KWQHeaderStringFromDictionary):
+        (KWQCheckCacheObjectStatus):
+        (KWQIsResponseURLEqualToURL):
+        (KWQResponseURL):
+        (KWQResponseMIMEType):
+        (KWQCacheObjectExpiresTime):
+        (khtml::CachedObject::setResponse):
+        (khtml::CachedObject::setAllData):
+        * kwq/KWQPixmap.h:
+        * kwq/KWQPixmap.mm:
+        (QPixmap::QPixmap):
+        * kwq/KWQResourceLoader.mm:
+        (-[KWQResourceLoader finishJobAndHandle:]):
+        (-[KWQResourceLoader cancel]):
+        (-[KWQResourceLoader reportError]):
+        (-[KWQResourceLoader finishWithData:]):
+        * kwq/KWQSignal.h:
+        * kwq/KWQSignal.mm:
+        (KWQSignal::call):
+        * kwq/KWQSlot.h:
+        * kwq/KWQSlot.mm:
+        (KWQSlot::KWQSlot):
+        (KWQSlot::call):
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreResourceLoader.h:
+
+2004-12-04  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3876093> REGRESSION (166-167): Setting slider control's value from JavaScript has no effect (breaks RSS)
+
+        * khtml/rendering/render_form.cpp:
+        (RenderSlider::updateFromElement): Call setValue to update the value of the DOM element rather than
+        modifying the m_value data member directly. We don't use m_value at all for sliders now, and in fact
+        the code relies on the fact that m_value is null. Setting m_value to a non-null value was causing the bug.
+        (RenderSlider::slotSliderValueChanged): Ditto.
+
+2004-12-03  John Sullivan  <sullivan@apple.com>
+
+        Reviewed by Ken.
+        
+        - fixed <rdar://problem/3889411> REGRESSION (125-172): repro crash in 
+        khtml::BackgroundLayer::cullEmptyLayers
+
+        * khtml/rendering/render_style.cpp:
+        (BackgroundLayer::cullEmptyLayers):
+        added missing nil check
+
+=== Safari-173 ===
+
+2004-12-03  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by me
+
+        Roll out some recent changes by Chris that caused a performance regression.
+        Fix is in hand, but it is a little risky this close to a submission. So,
+        we have decided to roll back the change with the regression and roll in
+        the new code after we submit.
+
+        * khtml/css/cssproperties.c:
+        (hash_prop):
+        (findProp):
+        * khtml/css/cssvalues.c:
+        (hash_val):
+        (findValue):
+        * khtml/misc/htmlattrs.c:
+        (hash_attr):
+        (findAttr):
+        * khtml/misc/htmltags.c:
+        (hash_tag):
+        (findTag):
+        * khtml/misc/loader.cpp:
+        (CachedObject::~CachedObject):
+        (CachedObject::setResponse):
+        (CachedCSSStyleSheet::checkNotify):
+        (Loader::servePendingRequests):
+        (Loader::slotFinished):
+        (Loader::slotReceivedResponse):
+        (Cache::requestImage):
+        (Cache::requestScript):
+        * khtml/misc/loader.h:
+        (khtml::CachedObject::CachedObject):
+        (khtml::CachedObject::response):
+        * kwq/KWQKJobClasses.h:
+        * kwq/KWQKJobClasses.mm:
+        (KIO::TransferJobPrivate::TransferJobPrivate):
+        (KIO::TransferJobPrivate::~TransferJobPrivate):
+        (KIO::TransferJob::TransferJob):
+        (KIO::TransferJob::assembleResponseHeaders):
+        (KIO::TransferJob::retrieveCharset):
+        (KIO::TransferJob::emitResult):
+        (KIO::TransferJob::emitReceivedResponse):
+        * kwq/KWQLoader.h:
+        * kwq/KWQLoader.mm:
+        (KWQHeaderStringFromDictionary):
+        (KWQCheckCacheObjectStatus):
+        (KWQRetainResponse):
+        (KWQReleaseResponse):
+        (KWQIsResponseURLEqualToURL):
+        (KWQResponseURL):
+        (KWQResponseMIMEType):
+        (KWQResponseTextEncodingName):
+        (KWQResponseHeaderString):
+        (KWQCacheObjectExpiresTime):
+        (KWQLoader::KWQLoader):
+        * kwq/KWQPixmap.h:
+        * kwq/KWQPixmap.mm:
+        (QPixmap::QPixmap):
+        * kwq/KWQResourceLoader.mm:
+        (-[KWQResourceLoader finishJobAndHandle]):
+        (-[KWQResourceLoader cancel]):
+        (-[KWQResourceLoader reportError]):
+        (-[KWQResourceLoader finish]):
+        * kwq/KWQSignal.h:
+        * kwq/KWQSignal.mm:
+        (KWQSignal::call):
+        * kwq/KWQSlot.h:
+        * kwq/KWQSlot.mm:
+        (KWQSlot::KWQSlot):
+        (KWQSlot::call):
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreResourceLoader.h:
+
+2004-12-03  John Sullivan  <sullivan@apple.com>
+
+        Reviewed by Chris.
+        
+        - fixed <rdar://problem/3903990> can't tab to all items on www.google.com any more (other pages too?)
+
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::nextKeyViewInFrameHierarchy):
+        when checking whether we moved the focus to another view, make sure we didn't "move" it to
+        our documentView, because that's no move at all.
+
+2004-12-03  Darin Adler  <darin@apple.com>
+
+        Reviewed by Vicki.
+
+        - fixed <rdar://problem/3901109> REGRESSION (171-172): repro crash in DOM::NodeImpl::setChanged at chick-fil-a.com
+
+        * khtml/css/css_valueimpl.cpp: (DOM::CSSMutableStyleDeclarationImpl::CSSMutableStyleDeclarationImpl):
+        Added missing initialization for base class and node pointer.
+
+        - fixed a few places that could leave dangling node pointers
+
+        * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::~HTMLBodyElementImpl):
+        Clear out the node pointer when the node is destroyed.
+        * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::~HTMLElementImpl): Ditto.
+
+2004-12-03  Chris Blumenberg  <cblu@apple.com>
+
+       Fix for performance regression. My original patch added a signal for passing the data of a resource to its WebCore cache object. This patch passes the data with the preexisting "finished" symbol so we make less calls. 
+       Fixed: <rdar://problem/3903173> REGRESSION (172-TOT): assertion failure and crash in slotAllData logging into hotmail account
+
+        Reviewed by rjw.
+
+        * khtml/misc/loader.cpp:
+        (Loader::servePendingRequests): pass data param to slotFinished, removed allData signal
+        (Loader::slotFinished): take data param
+        * khtml/misc/loader.h:
+        * kwq/KWQKJobClasses.h:
+        * kwq/KWQKJobClasses.mm:
+        (KIO::TransferJob::TransferJob): have m_result take a data param, removed m_allData
+        (KIO::TransferJob::emitResult): take data param and pass it
+        * kwq/KWQResourceLoader.mm:
+        (-[KWQResourceLoader finishJobAndHandle:]): take data param and pass it
+        (-[KWQResourceLoader cancel]): pass nil for data
+        (-[KWQResourceLoader reportError]): ditto
+        (-[KWQResourceLoader finishWithData:]): pass data
+        * kwq/KWQSlot.mm:
+        (KWQSlot::KWQSlot): pass data param to slotFinished
+        (KWQSlot::call): added support for slotFinished_Loader, removed slotAllData
+
+2004-12-03  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Did some clean up in the Position class as a result of trying to write some new layout
+        tests and discovering a bug along the way.
+
+        I removed these three functions from the Position class:
+        
+        1. bool isFirstRenderedPositionOnLine() const;
+        2. bool isLastRenderedPositionOnLine() const;
+        3. static bool renderersOnDifferentLine(RenderObject *r1, long o1, RenderObject *r2, long o2);
+        4. bool inFirstEditableInRootEditableElement() const;
+
+        The first two have replacements in the VisiblePosition class, and some code has been
+        moved to use these new variants. The third function was a helper used only by these
+        first two function, and can be removed as well. The fourth function was not used by anyone.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::InsertTextCommand::input): Change over to use VisiblePosition isFirstVisiblePositionOnLine().
+        * khtml/editing/visible_position.cpp:
+        (khtml::visiblePositionsOnDifferentLines): Added an additional check for blocks to this function.
+        Incorrect results were being returned when asking about positions at the starts of blocks.
+        * khtml/xml/dom_position.cpp:
+        (DOM::Position::previousCharacterPosition): Change over to use VisiblePosition isFirstVisiblePositionOnLine().
+        (DOM::Position::nextCharacterPosition): Change over to use VisiblePosition isLastVisiblePositionOnLine().
+        (DOM::Position::rendersInDifferentPosition): Removed use of #3 helper in a log message. We can live without it.
+        * khtml/xml/dom_position.h: Update header for deletions.
+
+2004-12-03  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Terminology change in execCommand command identifiers. Specifically, the name of 
+        "InsertNewline" command has been changed to "InsertLineBreak". This matches the 
+        terminology used by AppKit. It is also more accurate, since the insertion of a
+        "br" element is what the command does. The inspiration for this change is so the 
+        -insertNewline AppKit method can be mapped to insert a new "div" element in 
+        a document and avoid ambiguity with what the javascript editing command does.
+        
+        * khtml/editing/jsediting.cpp
+        * layout-tests/editing/deleting/delete-tab-004.html
+        * layout-tests/editing/editing.js
+        * layout-tests/editing/inserting/insert-3654864-fix.html
+        * layout-tests/editing/inserting/insert-3659587-fix.html
+        * layout-tests/editing/inserting/insert-3775316-fix.html
+        * layout-tests/editing/inserting/insert-3800346-fix.html
+        * layout-tests/editing/inserting/insert-br-001.html
+        * layout-tests/editing/inserting/insert-br-002.html
+        * layout-tests/editing/inserting/insert-br-003.html
+        * layout-tests/editing/inserting/insert-br-004.html
+        * layout-tests/editing/inserting/insert-br-005.html
+        * layout-tests/editing/inserting/insert-br-006.html
+        * layout-tests/editing/inserting/insert-br-007.html
+        * layout-tests/editing/inserting/insert-br-008.html
+        * layout-tests/editing/inserting/insert-tab-004.html
+        * layout-tests/editing/inserting/insert-text-with-newlines.html
+        * layout-tests/editing/pasteboard/paste-text-010.html
+
+2004-12-02  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3786362> REGRESSION (Mail): pasted text loses one newline
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::InsertLineBreakCommand::doApply): Added check for strict mode before adding an extra br element
+        at the end of a block. This is only necessary in quirks mode. Also, lower-case "br" used to make element.
+        (khtml::ReplaceSelectionCommand::doApply): If the replacement adds a br element as the last element
+        in a block and the document is in quirks mode, add an additional br to make the one in the 
+        replacement content show up. This turns out to be much the same logic as is done in InsertLineBreakCommand.
+        * layout-tests/editing/inserting/insert-3786362-fix-expected.txt: Added.
+        * layout-tests/editing/inserting/insert-3786362-fix.html: Added.
+
+2004-12-02  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3841332> REGRESSION (125.9-167u): repro crash in -[KWQPageState invalidate] involving .Mac images
+
+       Ensure that the document is cleared when leaving a non-HTML page.  This ensures that
+       the b/f cache won't incorrectly trash the previous state when restoring.
+
+        Reviewed by John.
+
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
+        (-[WebCoreBridge canCachePage]):
+        (-[WebCoreBridge clear]):
+
+2004-12-02  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Richard
+
+        Fix for this bug:
+        
+        <rdar://problem/3857775> 8A293: Mail.app crashes converting copy-pasted text into plain text
+
+        * khtml/xml/dom2_rangeimpl.cpp:
+        (DOM::RangeImpl::commonAncestorContainer): Return the document element if no common ancestor container
+        was found. This can happen in cases where the DOM was built from malformed markup (as in the case
+        of this bug where there is content after the body tag). Did a little code clean up as well.
+        (DOM::RangeImpl::compareBoundaryPoints): Made code more robust by adding some null checks.
+
+2004-12-02  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Chris
+
+        Fix for this bug:
+        
+        <rdar://problem/3668157> REGRESSION (Mail): shift-click deselects when selection was created right-to-left
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::handleMousePressEventSingleClick): Use RangeImpl::compareBoundaryPoints
+        to figure out which end of the selection to extend.
+
+2004-12-02  David Harrison  <harrison@apple.com>
+
+        Reviewed by Ken Kocienda.
+
+               <rdar://problem/3834917> REGRESSION (Mail): double-clicking blank line selects end of previous line
+               Fixed originally reported bug plus the case of double-clicking whitespace at the beginning of a line, which has a similar result.
+
+        * khtml/editing/visible_text.cpp:
+        (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
+        (khtml::SimplifiedBackwardsTextIterator::handleTextNode):
+        (khtml::SimplifiedBackwardsTextIterator::handleReplacedElement):
+        (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode):
+        (khtml::SimplifiedBackwardsTextIterator::emitCharacter):
+        Distinguish BR from whitespace.
+        * khtml/editing/visible_text.h:
+        Distinguish BR from whitespace.
+        * khtml/editing/visible_units.cpp:
+        (khtml::previousWordBoundary):
+        Use UPSTREAM visible position now that SimplifiedBackwardsTextIterator distinguishes BR from whitespace.  Otherwise, double-clicking at end of line would result in caret selection at start of next line. 
+
+2004-12-02  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3900996> Crash dragging past end of contentEditable DIV, at DOM::RangeImpl::pastEndNode() const + 24
+
+        * khtml/xml/dom_position.cpp:
+        (DOM::Position::equivalentRangeCompliantPosition): Fixed this function so that it constrains the offset
+        of the position to be >= 0 and <= number of kids of its node. Not doing this constraining led to a DOM
+        exception trying to use a Position returned from this function to set the boundary point of a Range (which
+        eventually led to the crash). Since this crash happened, it seems like this function was failing in its
+        contract to return a range-compliant position, hence the need for this fix.
+
+2004-12-01  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by me
+
+        Moving code only.
+
+        * khtml/editing/htmlediting.cpp: Move ReplaceSelectionCommand into alphabetical order with
+        regard to other editing commands. The class had a name change ages ago, and it was never
+        moved.
+        * khtml/editing/htmlediting.h: Ditto.
+
+2004-12-01  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+        
+        Some improvements for paste, including some new code to annotate
+        whitespace when writing to the pasteboard to ensure that the meaning
+        of the markup on the pasteboard is unambiguous.
+        
+        There is also new code for reading this annotated markup from the pasteboard,
+        removing the nodes that were added only to prevent ambiguity.
+
+        * WebCore.pbproj/project.pbxproj: Added html_interchange.h and html_interchange.cpp files.
+        The header should have been added earlier, but I did not do so.
+        * khtml/editing/html_interchange.cpp: Added.
+        (convertHTMLTextToInterchangeFormat):
+        * khtml/editing/html_interchange.h: Added some new constants for use with whitespace annotations.
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplacementFragment::ReplacementFragment): Now looks for and removes annotations added for whitespace.
+        Also fixed a bug in the code that counts blocks in a fragment.
+        (khtml::ReplacementFragment::isInterchangeConvertedSpaceSpan): New helper. Recognizes annotation spans.
+        (khtml::ReplacementFragment::insertNodeBefore): New helper.
+        (khtml::ReplaceSelectionCommand::doApply): Fixed a bug in the code that sets the start position
+        for the replacement after deleting. This was causing a bug when pasting at the end of a block.
+        * khtml/editing/htmlediting.h: Add some new declarations.
+        * khtml/xml/dom2_rangeimpl.cpp:
+        (DOM::RangeImpl::toHTML): Calls to startMarkup now pass true for the new annotate flag.
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::stringValueForRange): New helper.
+        (NodeImpl::renderedText): New helper to return only the rendered text in a node.
+        (NodeImpl::startMarkup): Now takes an additional flag to control whether interchange annotations
+        should be added. Called by the paste code.
+        * khtml/xml/dom_nodeimpl.h: Added and modified function declarations.
+
+        New test to check the khtml::ReplaceSelectionCommand::doApply fix.
+        * layout-tests/editing/pasteboard/paste-text-010-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-010.html: Added.
+
+2004-11-30  Chris Blumenberg  <cblu@apple.com>
+
+        * ChangeLog: removed conflict marker
+
+2004-11-30  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed:
+       <rdar://problem/3685766> WebDataSource is missing subresources when they use cached WebCore data
+       <rdar://problem/3722434> REGRESSION?: Assertion failure trying to drag image in iframe (itapema.sc.gov.br)
+
+        Reviewed by darin.
+
+        * khtml/misc/loader.cpp:
+        (CachedObject::~CachedObject): release m_allData
+        (CachedObject::setAllData): new
+        (Loader::servePendingRequests): connect slotAllData
+        (Loader::slotAllData): new
+        (Cache::requestImage): tweak
+        * khtml/misc/loader.h:
+        (khtml::CachedObject::CachedObject): set allData to 0
+        (khtml::CachedObject::allData): new
+        * kwq/KWQKJobClasses.h:
+        * kwq/KWQKJobClasses.mm:
+        (KIO::TransferJob::TransferJob): set m_allData
+        (KIO::TransferJob::emitAllData): new
+        * kwq/KWQLoader.mm:
+        (KWQCheckCacheObjectStatus): pass WebKit the data instead of the length of the resource
+        * kwq/KWQResourceLoader.mm:
+        (-[KWQResourceLoader finishWithData:]): renamed to pass all data for the resource
+        * kwq/KWQSlot.mm:
+        (KWQSlot::KWQSlot): support for slotAllData
+        (KWQSlot::call):
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreResourceLoader.h:
+
+2004-11-30  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by John.
+
+2004-11-30  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by John.
+
+       <rdar://problem/3805311> REGRESSION (159-163): onload in dynamically written document not called (causes blank search page at Japanese EPP site, many others)
+
+        * khtml/khtml_part.cpp:
+       (KHTMLPart::begin): call setParsing on document here after opening
+       - from now on we'll only set parsing to true for a document open
+       caused by page loading, not a programmatic one.
+       * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::open): don't setParsing to true here any more.
+
+2004-11-30  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by John.
+
+       - fix recent regression from collection perf fixes.
+       
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLFormCollectionImpl::updateNameCache): Look up the name
+       attribute in the name cache, not the id cache (d'oh!)
+
+2004-11-30  Darin Adler  <darin@apple.com>
+
+        Reviewed by Ken.
+
+        - rolled in a KDE fix for a problem that may underlie a number of crashes
+
+        * khtml/xml/dom2_rangeimpl.cpp: (RangeImpl::compareBoundaryPoints): Rolled in a change from
+        the KDE guys to fix a subtle problem. Code said "n = n =".
+
+        - rolled in a KDE fix for a containingBlock crash
+
+        * khtml/rendering/render_object.cpp: Roll in a change from KDE that adds frameset to the list of
+        elements that can not be a containingBlock. They said this fixes a crash, although I did not look
+        into that further.
+
+        - fixed <rdar://problem/3884660> 8A305: Repro crash in QScrollBar::setValue (affects Safari RSS)
+
+        * kwq/KWQButton.mm:
+        (-[KWQButton initWithQButton:]): Set up target and action here instead of in caller.
+        (-[KWQButton detachQButton]): Added.
+        (-[KWQButton sendConsumedMouseUpIfNeeded]): Check button for nil instead of checking target.
+        (-[KWQButton mouseDown:]): Add calls to QWidget::beforeMouseDown/afterMouseDown.
+        (-[KWQButton widget]): Added.
+        (-[KWQButton becomeFirstResponder]): Added check to handle when button is 0.
+        (-[KWQButton resignFirstResponder]): Ditto.
+        (-[KWQButton canBecomeKeyView]): Ditto.
+        (QButton::QButton): Remove target and action setup; handled in KWQButton now.
+        (QButton::~QButton): Call detachQButton instead of setTarget:nil.
+
+        * kwq/KWQComboBox.mm:
+        (QComboBox::~QComboBox): Call detachQComboBox.
+        (-[KWQPopUpButtonCell detachQComboBox]): Added.
+        (-[KWQPopUpButtonCell trackMouse:inRect:ofView:untilMouseUp:]): Handle case where box is 0.
+        (-[KWQPopUpButtonCell setHighlighted:]): Ditto.
+        (-[KWQPopUpButton action:]): Ditto.
+        (-[KWQPopUpButton widget]): Tweaked.
+        (-[KWQPopUpButton mouseDown:]): Added. Calls QWidget::beforeMouseDown/afterMouseDown.
+        (-[KWQPopUpButton becomeFirstResponder]): Handle case where widget is 0.
+        (-[KWQPopUpButton resignFirstResponder]): Ditto.
+        (-[KWQPopUpButton canBecomeKeyView]): Ditto.
+
+        * kwq/KWQLineEdit.mm: (QLineEdit::~QLineEdit): Updated to use new detachQLineEdit name.
+
+        * kwq/KWQListBox.mm:
+        (-[KWQTableView mouseDown:]): Added. Calls QWidget::beforeMouseDown/afterMouseDown.
+
+        * kwq/KWQScrollBar.h: Removed m_scroller field.
+        * kwq/KWQScrollBar.mm:
+        (-[KWQScrollBar initWithQScrollBar:]): Rearranged a little bit.
+        (-[KWQScrollBar detachQScrollBar]): Added.
+        (-[KWQScrollBar widget]): Added.
+        (-[KWQScrollBar mouseDown:]): Added.  Calls QWidget::beforeMouseDown and afterMouseDown.
+        (QScrollBar::QScrollBar): Changed to no longer set m_scroller.
+        (QScrollBar::~QScrollBar): Changed to call detachQScrollBar. No longer calls removeFromSuperview.
+        (QScrollBar::setValue): Chagned to use getView instad of m_scrollBar.
+        (QScrollBar::setKnobProportion): Ditto.
+        (QScrollBar::scrollbarHit): Ditto.
+
+        * kwq/KWQScrollView.mm:
+        (QScrollView::addChild): Changed to call QWidget to add to superview to accomodate the
+        hack where we don't remove right away when doing mouse tracking.
+        (QScrollView::removeChild): Changed to call QWidget to remove from superview to accomodate
+        the hack where we don't add right away when doing mouse tracking.
+
+        * kwq/KWQSlider.h: Added destructor.
+        * kwq/KWQSlider.mm:
+        (-[KWQSlider initWithQSlider:]): Tweaked a little.
+        (-[KWQSlider detachQSlider]): Added.
+        (-[KWQSlider mouseDown:]): Added call to QWidget::beforeMouseDown/afterMouseDown.
+        (-[KWQSlider widget]): Added.
+        (QSlider::~QSlider): Added. Calls detachQSlider.
+
+        * kwq/KWQTextArea.h: Added detachQTextEdit method.
+        * kwq/KWQTextArea.mm:
+        (-[KWQTextArea detachQTextEdit]): Added.
+        (-[KWQTextArea textDidChange:]): Added check for widget of 0.
+        (-[KWQTextArea becomeFirstResponder]): Ditto.
+        (-[KWQTextArea nextKeyView]): Ditto.
+        (-[KWQTextArea previousKeyView]): Ditto.
+        (-[KWQTextArea drawRect:]): Ditto.
+        (-[KWQTextAreaTextView insertTab:]): Ditto.
+        (-[KWQTextAreaTextView insertBacktab:]): Ditto.
+        (-[KWQTextAreaTextView shouldDrawInsertionPoint]): Ditto.
+        (-[KWQTextAreaTextView selectedTextAttributes]): Ditto.
+        (-[KWQTextAreaTextView mouseDown:]): Ditto.
+        (-[KWQTextAreaTextView keyDown:]): Ditto.
+        (-[KWQTextAreaTextView keyUp:]): Ditto.
+
+        * kwq/KWQTextEdit.h: Added ~QTextEdit.
+        * kwq/KWQTextEdit.mm: (QTextEdit::~QTextEdit): Added. Calls detachQTextEdit.
+
+        * kwq/KWQTextField.h: Changed invalidate to detachQLineEdit.
+        * kwq/KWQTextField.mm: (-[KWQTextFieldController detachQLineEdit]): Changed.
+
+        * kwq/KWQWidget.h: Added addToSuperview/removeFromSuperview for use from QScrollView.
+        Added beforeMouseDown and afterMouseDown for use in widget implementations.
+        Removed unused hasMouseTracking function.
+        * kwq/KWQWidget.mm:
+        (QWidget::QWidget): Initialize two new fields.
+        (QWidget::~QWidget): Added code to remove view when widget is destroyed.
+        (QWidget::getOuterView): Remove unneeded exception blocking since we're just caling superview.
+        (QWidget::addToSuperview): Added.
+        (QWidget::removeFromSuperview): Added.
+        (QWidget::beforeMouseDown): Added.
+        (QWidget::afterMouseDown): Added.
+
+        * khtml/rendering/render_layer.cpp:
+        (RenderLayer::setHasHorizontalScrollbar): Remove parent parameter; let addChild call addSubview:.
+        (RenderLayer::setHasVerticalScrollbar): Ditto.
+
+2004-11-30  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3863031> REGRESSION (Mail): caret continues flashing while mouse is down
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::timerEvent): Add a check for whether the mouse is down. Keep the caret drawn
+        with no blink if it is.
+
+2004-11-30  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3861602> cursor gets lost trying to backspace to delete a form control
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::setFocusNodeIfNeeded): This function would clear the selection if a <button>
+        or <input type=image> was checked for focus since these elements are keyboard-focusable,
+        but not mouse focusable. Also, this function did not work hard enough to set the focused
+        node, and was content to clear it if the first element checked failed the test, rather
+        than looking more at parents. This would have the effect of clearing, then resetting the
+        focus on a DIV containing a button or image with content on either side of it in the
+        process of arrowing over such content.
+
+2004-11-30  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplaceSelectionCommand::doApply): Fix smart replace, which I (knowingly) broke with yesterday's checkin.
+        Also, call updateLayout() in one more place to prevent stale information being returned from caretMaxOffset().
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::isCharacterSmartReplaceExempt): Make this virtual and always return true. This gets rid of an
+        ugly APPLE_CHANGES block and use of KWQ(part) in ReplaceSelectionCommand.
+        * khtml/khtml_part.h: To help out with the isCharacterSmartReplaceExempt cleanup, add declaration.
+        * kwq/KWQKHTMLPart.h: To help out with the isCharacterSmartReplaceExempt cleanup, make 
+        isCharacterSmartReplaceExempt virtual.
+
+2004-11-30  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by me
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplacementFragment::mergeEndNode): Fixed one-line coding mistake that created an endless loop.
+        Seemed simple enough to land without review.
+
+2004-11-29  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Chris
+    
+        Rewrite of paste code (specifically the ReplaceSelectionCommand class). Many more cases
+        are handled correctly now, including selections that span multiple blocks, and cases
+        where content on the pasteboard ends in newlines (or what appear to be newlines to a
+        user, really block ends or BRs). I also made one small, but important change in the 
+        copy code to annotate the markup written to the pasteboard to support these selections 
+        ending in newlines.
+
+        New header that defines a couple of constants used in copying and pasting.
+
+        * ForwardingHeaders/editing/html_interchange.h: Added.
+        * khtml/editing/html_interchange.h: Added.
+        
+        Rewrite of the ReplaceSelectionCommand. There are several new helper functions, as well
+        as a new helper class, ReplacementFragment, which encapsulates information and functions
+        pertaining to a document fragment that is being inserted into a document.
+        
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplacementFragment::ReplacementFragment):
+        (khtml::ReplacementFragment::~ReplacementFragment):
+        (khtml::ReplacementFragment::firstChild): Simple accessor.
+        (khtml::ReplacementFragment::lastChild): Ditto.
+        (khtml::ReplacementFragment::mergeStartNode): Looks at the nodes in a fragment and determines
+        the starting node to use for merging into the block containing the start of the selection.
+        (khtml::ReplacementFragment::mergeEndNode): Same as above, but for the end of the selection.
+        (khtml::ReplacementFragment::pruneEmptyNodes): Simple helper.
+        (khtml::ReplacementFragment::isInterchangeNewlineComment): Determines if a node is the
+        special annotation comment added in by the copy code.
+        (khtml::ReplacementFragment::removeNode): Simple helper.
+        (khtml::isComment): Simple helper.
+        (khtml::isProbablyBlock): Determines if a node is of a type that is usually rendered as a block.
+        I would like to do better than this some day, but this check will hold us until I can do better.
+        (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand):
+        (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand):
+        (khtml::ReplaceSelectionCommand::doApply):
+        (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Figures out the right ending selection.
+        * khtml/editing/htmlediting.h: Declarations for the new ReplacementFragment class.
+        (khtml::ReplacementFragment::root):
+        (khtml::ReplacementFragment::type):
+        (khtml::ReplacementFragment::isEmpty):
+        (khtml::ReplacementFragment::isSingleTextNode):
+        (khtml::ReplacementFragment::isTreeFragment):
+        (khtml::ReplacementFragment::hasMoreThanOneBlock):
+        (khtml::ReplacementFragment::hasLogicalNewlineAtEnd):
+        
+        This smaller set of changes markup generation to add the newline annotation described in the
+        comment at the start of this entry.
+        
+        * khtml/xml/dom2_rangeimpl.cpp:
+        (DOM::RangeImpl::addCommentToHTMLMarkup): Simple helper.
+        (DOM::RangeImpl::toHTML): Added new EAnnotateForInterchange default argument to control whether
+        comment annotations are added to the markup generated.
+        * khtml/xml/dom2_rangeimpl.h: Add some new declarations.
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge markupStringFromRange:nodes:]): Request that markup resulting from call to 
+        DOM::RangeImpl::toHTML uses annotations when generating.
+        
+        New tests.        
+
+        * layout-tests/editing/pasteboard/paste-text-001-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-001.html: Added.
+        * layout-tests/editing/pasteboard/paste-text-002-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-002.html: Added.
+        * layout-tests/editing/pasteboard/paste-text-003-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-003.html: Added.
+        * layout-tests/editing/pasteboard/paste-text-004-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-004.html: Added.
+        * layout-tests/editing/pasteboard/paste-text-005-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-005.html: Added.
+        * layout-tests/editing/pasteboard/paste-text-006-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-006.html: Added.
+        * layout-tests/editing/pasteboard/paste-text-007-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-007.html: Added.
+        * layout-tests/editing/pasteboard/paste-text-008-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-008.html: Added.
+        * layout-tests/editing/pasteboard/paste-text-009-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-009.html: Added.
+
+2004-11-29  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Harrison
+
+        Made two small changes that make it possible for comments to have DOM nodes made for them
+        when pasting. This relies on some earlier work I did some days ago.
+
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::startMarkup): Get the string from the comment.
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]): Did some very minor
+        rearranging. Now passes a flag when creating a contextual fragment, requesting that comments
+        be included in the DOM.
+
+2004-11-29  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Harrison
+
+        Added some new helpers to the VisiblePosition class. I will begin to use these when I check in
+        my improved paste code.
+
+        * khtml/editing/visible_position.cpp:
+        (khtml::blockRelationship)
+        (khtml::visiblePositionsInDifferentBlocks)
+        (khtml::isFirstVisiblePositionInBlock)
+        (khtml::isFirstVisiblePositionInNode)
+        (khtml::isLastVisiblePositionInBlock)
+        * khtml/editing/visible_position.h
+
+2004-11-29  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Harrison
+
+        * khtml/xml/dom_position.cpp:
+        (DOM::Position::downstream): Fix a bug in downstream that prevented a call with DoNotStayInBlock
+        specified from obeying that directive. The old code would stop at an outer block boundary in
+        the case where that block had a block as its first child. The correct behavior is to drill into
+        that inner block (and continue on drilling down, if possible), to find the correct position.
+
+2004-11-29  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Harrison
+
+        Small improvements to the node-display debugging helpers.
+
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::displayTree): Make the rootNode be this if there is no rootEditableElement.
+        * khtml/xml/dom_nodeimpl.h: Make displayNode take a default argument of "" for its string.
+
+2004-11-29  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Harrison
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::DeleteSelectionCommand::handleGeneralDelete): The downstream position in this function 
+        may need to be adjusted when deleting text off the front part of a text node. This fixes a problem 
+        I discovered while improving the paste command, where the insertion poitn wound up in the wrong
+        place after the delete. 
+
+2004-11-29  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Harrison
+
+        Add a new helper function to insert a paragraph separator. Will be used in my
+        upcoming paste improvments.
+
+        * khtml/editing/htmlediting.cpp: Added function
+        (khtml::CompositeEditCommand::insertParagraphSeparator)
+        * khtml/editing/htmlediting.h: Ditto.
+
+2004-11-23  David Harrison  <harrison@apple.com>
+
+        Added various comments.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::StyleChange::init):
+        (khtml::ApplyStyleCommand::doApply):
+        (khtml::ApplyStyleCommand::applyBlockStyle):
+        (khtml::ApplyStyleCommand::applyInlineStyle):
+
+2004-11-23  David Hyatt  <hyatt@apple.com>
+
+       Hit testing in table cells with top/bottom space from vertical alignment didn't work.  I forgot about the
+       super-secret yPos() lie that table cells do.  Use m_y instead of yPos().
+
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::nodeAtPoint):
+
+2004-11-22  David Hyatt  <hyatt@apple.com>
+
+       Make sure you can use document.createElement to make a <canvas> element.
+
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::createHTMLElement):
+
+2004-11-22  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Dave.
+
+       <rdar://problem/3492044> performing JavaScript operations on form elements is slower than WinIE (HTMLFormCollection)
+       <rdar://problem/3489679> selecting an item on the Apache bugzilla query page is very slow (HTMLFormCollection)
+       <rdar://problem/3477810> checking 80 check boxes with JavaScript is 10x slower than in IE (HTMLFormCollection)
+       <rdar://problem/3760962> JavaScript that toggles checkboxes is slow (HTMLCollection,HTMLFormCollection)
+        
+       * khtml/ecma/kjs_html.cpp:
+        (KJS::HTMLDocument::tryGet):
+        * khtml/html/html_formimpl.cpp:
+        (DOM::HTMLFormElementImpl::HTMLFormElementImpl):
+        (DOM::HTMLFormElementImpl::~HTMLFormElementImpl):
+        * khtml/html/html_formimpl.h:
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLCollectionImpl::HTMLCollectionImpl):
+        (HTMLCollectionImpl::~HTMLCollectionImpl):
+        (HTMLCollectionImpl::CollectionInfo::CollectionInfo):
+        (HTMLCollectionImpl::CollectionInfo::reset):
+        (HTMLCollectionImpl::resetCollectionInfo):
+        (HTMLCollectionImpl::checkForNameMatch):
+        (appendToVector):
+        (HTMLCollectionImpl::updateNameCache):
+        (HTMLCollectionImpl::namedItems):
+        (HTMLFormCollectionImpl::HTMLFormCollectionImpl):
+        (HTMLFormCollectionImpl::~HTMLFormCollectionImpl):
+        (HTMLFormCollectionImpl::item):
+        (HTMLFormCollectionImpl::updateNameCache):
+        * khtml/html/html_miscimpl.h:
+
+2004-11-22  David Hyatt  <hyatt@apple.com>
+
+       Improve the WebCore cache so that the maximum cacheable object size is scaled based off the total cache
+       size.
+       
+        Reviewed by mjs
+
+        * khtml/misc/loader.cpp:
+        (CachedObject::finish):
+        (Cache::flush):
+        (Cache::setSize):
+        * khtml/misc/loader.h:
+        (khtml::Cache::maxCacheableObjectSize):
+
+2004-11-22  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3673381, huge directory listing so slow it seems like a hang.  Rework painting and hit testing so that
+       it crawls the line box tree instead of the render tree.  This allows more precise intersection/containment testing
+       that lets us short circuit earlier when painting and hit testing.
+       
+        Reviewed by mjs
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::isPointInsideSelection):
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::paint):
+        (khtml::RenderBlock::paintChildren):
+        (khtml::RenderBlock::paintObject):
+        (khtml::RenderBlock::paintFloats):
+        (khtml::RenderBlock::nodeAtPoint):
+        * khtml/rendering/render_block.h:
+        * khtml/rendering/render_box.cpp:
+        (RenderBox::nodeAtPoint):
+        * khtml/rendering/render_box.h:
+        * khtml/rendering/render_br.h:
+        * khtml/rendering/render_canvas.cpp:
+        (RenderCanvas::paint):
+        * khtml/rendering/render_flow.cpp:
+        (RenderFlow::paintLines):
+        (RenderFlow::hitTestLines):
+        (RenderFlow::caretRect):
+        (RenderFlow::addFocusRingRects):
+        (RenderFlow::paintFocusRing):
+        (RenderFlow::paintOutlines):
+        (RenderFlow::paintOutlineForLine):
+        * khtml/rendering/render_flow.h:
+        * khtml/rendering/render_frames.cpp:
+        (RenderFrameSet::nodeAtPoint):
+        * khtml/rendering/render_frames.h:
+        * khtml/rendering/render_image.cpp:
+        (RenderImage::nodeAtPoint):
+        * khtml/rendering/render_image.h:
+        * khtml/rendering/render_inline.cpp:
+        (RenderInline::paint):
+        (RenderInline::nodeAtPoint):
+        * khtml/rendering/render_inline.h:
+        * khtml/rendering/render_layer.cpp:
+        (RenderLayer::paintLayer):
+        (RenderLayer::hitTest):
+        (RenderLayer::hitTestLayer):
+        * khtml/rendering/render_layer.h:
+        * khtml/rendering/render_line.cpp:
+        (khtml::InlineBox::paint):
+        (khtml::InlineBox::nodeAtPoint):
+        (khtml::InlineFlowBox::flowObject):
+        (khtml::InlineFlowBox::nodeAtPoint):
+        (khtml::InlineFlowBox::paint):
+        (khtml::InlineFlowBox::paintBackgrounds):
+        (khtml::InlineFlowBox::paintBackground):
+        (khtml::InlineFlowBox::paintBackgroundAndBorder):
+        (khtml::InlineFlowBox::paintDecorations):
+        (khtml::EllipsisBox::paint):
+        (khtml::EllipsisBox::nodeAtPoint):
+        (khtml::RootInlineBox::paintEllipsisBox):
+        (khtml::RootInlineBox::paint):
+        (khtml::RootInlineBox::nodeAtPoint):
+        * khtml/rendering/render_line.h:
+        (khtml::InlineRunBox::paintBackgroundAndBorder):
+        * khtml/rendering/render_object.cpp:
+        (RenderObject::hitTest):
+        (RenderObject::setInnerNode):
+        (RenderObject::nodeAtPoint):
+        * khtml/rendering/render_object.h:
+        (khtml::RenderObject::PaintInfo::PaintInfo):
+        (khtml::RenderObject::PaintInfo::~PaintInfo):
+        (khtml::RenderObject::paintingRootForChildren):
+        (khtml::RenderObject::shouldPaintWithinRoot):
+        * khtml/rendering/render_table.cpp:
+        (RenderTable::layout):
+        (RenderTable::paint):
+        * khtml/rendering/render_text.cpp:
+        (simpleDifferenceBetweenColors):
+        (correctedTextColor):
+        (InlineTextBox::nodeAtPoint):
+        (InlineTextBox::paint):
+        (InlineTextBox::selectionStartEnd):
+        (InlineTextBox::paintSelection):
+        (InlineTextBox::paintMarkedTextBackground):
+        (InlineTextBox::paintDecoration):
+        (RenderText::posOfChar):
+        * khtml/rendering/render_text.h:
+        (khtml::RenderText::paint):
+        (khtml::RenderText::layout):
+        (khtml::RenderText::nodeAtPoint):
+        * khtml/xml/dom2_eventsimpl.cpp:
+        (MouseEventImpl::computeLayerPos):
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::prepareMouseEvent):
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject accessibilityHitTest:]):
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::scrollOverflowWithScrollWheelEvent):
+        (KWQKHTMLPart::eventMayStartDrag):
+        (KWQKHTMLPart::khtmlMouseMoveEvent):
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge elementAtPoint:]):
+        (-[WebCoreBridge _positionForPoint:]):
+
+2004-11-22  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Dave.
+
+       <rdar://problem/3890961> selecting an item on the Apache bugzilla query page can be sped up 10% (HTMLFormCollection)
+       <rdar://problem/3890958> JavaScript that toggles checkboxes can be improved 73% (HTMLCollection,HTMLFormCollection)
+
+       This avoids the O(N^2) penalty for named item traversal for form collections.
+
+       It also combines the item traversal logic for all non-form
+       collection operations into a single traverseNextItem
+       function. This avoids having 5 copies of the big switch statement
+       for this.
+
+       Also fixed a bug that prevented the last form element from being removed properly.
+        
+        * khtml/html/html_formimpl.cpp:
+        (DOM::removeFromVector):
+       * khtml/dom/html_misc.cpp:
+        (HTMLCollection::namedItems):
+        * khtml/dom/html_misc.h:
+        * khtml/ecma/kjs_html.cpp:
+        (KJS::HTMLCollection::getNamedItems):
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLCollectionImpl::traverseNextItem):
+        (HTMLCollectionImpl::calcLength):
+        (HTMLCollectionImpl::length):
+        (HTMLCollectionImpl::item):
+        (HTMLCollectionImpl::nextItem):
+        (HTMLCollectionImpl::checkForNameMatch):
+        (HTMLCollectionImpl::namedItem):
+        (HTMLCollectionImpl::namedItems):
+        (HTMLCollectionImpl::nextNamedItem):
+        (HTMLFormCollectionImpl::calcLength):
+        (HTMLFormCollectionImpl::namedItem):
+        (HTMLFormCollectionImpl::nextNamedItem):
+        (HTMLFormCollectionImpl::namedItems):
+        * khtml/html/html_miscimpl.h:
+
+2004-11-22  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Harrison
+
+        Change around the way we block the Javascript "Paste" command identifier from
+        being available. Formerly, this was done with an ifdef we never compiled in.
+        Now, this is done with a couple of cheap runtime checks. The advantage is that
+        we can now compile this command into development builds, and still yet switch
+        on the command in deployment builds through the use of WebCore SPI so we can
+        write and run layout tests with all of our builds.
+
+        * khtml/editing/jsediting.cpp:
+        (DOM::JSEditor::queryCommandSupported): Checks state of paste command in case
+        command being queried is the paste command. 
+        (DOM::JSEditor::setSupportsPasteCommand): New SPI to turn on paste command.
+        * khtml/editing/jsediting.h: Ditto.
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::pasteFromPasteboard): Added.
+        (KHTMLPart::canPaste): Added.
+        * kwq/KWQKHTMLPart.mm:
+        (KHTMLPart::canPaste): Added.
+        * kwq/KWQRenderTreeDebug.cpp:
+        (externalRepresentation): Turn on paste command.
+        * kwq/WebCoreBridge.h: Add canPaste call so WebKit can fill in the answer.
+
+2004-11-21  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Richard.
+
+       <rdar://problem/3889655> HTMLCollectionImpl should use traverseNextNode to improve speed and save recursion
+        
+       * khtml/html/html_miscimpl.cpp:
+        (HTMLCollectionImpl::calcLength):
+        (HTMLCollectionImpl::getItem):
+        (HTMLCollectionImpl::item):
+        (HTMLCollectionImpl::nextItem):
+        (HTMLCollectionImpl::getNamedItem):
+        (HTMLCollectionImpl::namedItem):
+        (HTMLCollectionImpl::nextNamedItemInternal):
+        (HTMLFormCollectionImpl::nextNamedItemInternal):
+
+2004-11-19  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
+       <rdar://problem/3482935> JavaScript so slow it seems like a hang (hrweb.apple.com) (HTMLCollection?)
+       <rdar://problem/3759149> PeopleSoft page in Safari twice as slow as Mozilla engine (HTMLFormCollection)
+       <rdar://problem/3888368> selecting an item on the Apache bugzilla query page can be improved 95% (HTMLFormCollection)
+
+       Many optimizations to HTMLFormCollection. Iterating it should not
+       be N^2 any more, though finding items by name could still be.
+       
+        * khtml/html/html_formimpl.cpp:
+        (DOM::HTMLFormElementImpl::~HTMLFormElementImpl):
+        (DOM::HTMLFormElementImpl::length):
+        (DOM::HTMLFormElementImpl::submitClick):
+        (DOM::HTMLFormElementImpl::formData):
+        (DOM::HTMLFormElementImpl::submit):
+        (DOM::HTMLFormElementImpl::reset):
+        (DOM::HTMLFormElementImpl::radioClicked):
+        (DOM::appendToVector):
+        (DOM::removeFromVector):
+        (DOM::HTMLFormElementImpl::registerFormElement):
+        (DOM::HTMLFormElementImpl::removeFormElement):
+        (DOM::HTMLFormElementImpl::makeFormElementDormant):
+        (DOM::HTMLFormElementImpl::registerImgElement):
+        (DOM::HTMLFormElementImpl::removeImgElement):
+        * khtml/html/html_formimpl.h:
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLFormCollectionImpl::FormCollectionInfo::FormCollectionInfo):
+        (void::HTMLFormCollectionImpl::FormCollectionInfo::reset):
+        (HTMLFormCollectionImpl::resetCollectionInfo):
+        (HTMLFormCollectionImpl::calcLength):
+        (HTMLFormCollectionImpl::item):
+        (HTMLFormCollectionImpl::getNamedItem):
+        (HTMLFormCollectionImpl::getNamedFormItem):
+        (HTMLFormCollectionImpl::firstItem):
+        (HTMLFormCollectionImpl::nextItem):
+        * khtml/html/html_miscimpl.h:
+        (DOM::HTMLFormCollectionImpl::~HTMLFormCollectionImpl):
+        * khtml/xml/dom_elementimpl.cpp:
+        (ElementImpl::setAttribute):
+        (ElementImpl::setAttributeMap):
+        * kwq/KWQPtrVector.h:
+        (QPtrVector::findRef):
+        * kwq/KWQVectorImpl.h:
+        * kwq/KWQVectorImpl.mm:
+        (KWQVectorImpl::findRef):
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge elementWithName:inForm:]):
+        (-[WebCoreBridge controlsInForm:]):
+
+2004-11-19  David Harrison  <harrison@apple.com>
+
+        Reviewed by Ken and Darin.
+
+        <rdar://problem/3856215> Cannot remove bold from the beginning of a message
+
+        Problem is that KHTMLPart::computeAndSetTypingStyle always looked upstream
+        for the existing style, but in this case (hitting cmd-B with caret at top of
+        file) there is nothing upstream.  Changed this to use the VisiblePosition
+        deepEquivalent instead.
+        
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::computeAndSetTypingStyle):
+
+=== Safari-172 ===
+
+2004-11-19  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
+       <rdar://problem/3864151> REGRESSION (125-167): Chrysler.com never stops loading
+       
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::close): Don't fire the onload handler if there is a
+       redirect pending. This is a very long-standing bug that was masked
+       by our previously incorrect redirect logic. It used to be that an
+       older redirect would always win. Recently we changed things so
+       that a newer redirect would win, but a script that causes a
+       redirect would stop parsing once complete (so if there are two
+       redirects in the same script, the latter wins). However, we should
+       have also prevented onload in this case. Testing with other
+       browsers shows that onload handlers do not run at all when there
+       is a pending redirect.
+
 2004-11-19  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by Harrison
 
         Reviewed by Darin.
         
-        Back out Darin's fix for <rdar://problem/3885729>, because the new exception gets triggered by Mail.app.
-        Filed <rdar://problem/3886832> against Mail.app.
+        Back out part of Darin's fix for <rdar://problem/3885729>, because the new exception gets triggered
+        by Mail.app. Filed <rdar://problem/3886832> against Mail.app.
 
         * kwq/DOM-CSS.mm:
         (-[DOMCSSStyleDeclaration setProperty:::]):
 
         * khtml/rendering/bidi.cpp:
         (khtml::RenderBlock::findNextLineBreak): I did not get my fix for 3848343 and 3848224
-           yesterday quite right: words that should have been placed on the next line were instead
+        yesterday quite right: words that should have been placed on the next line were instead
         appearing on the line before, beyond the right margin. This was a one-word only error
         based on moving the line break object when it should have stayed put. Here is the rule:
         The line break object only moves to after the whitespace on the end of a line if that