Fix for 3992440, text not wrapping correctly on half moon bay web site. Refine...
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
index 3b10efb..ba4400c 100644 (file)
+2005-02-10  David Hyatt  <hyatt@apple.com>
+
+       Fix  for 3992440, text not wrapping correctly on half moon bay web site.  Refine an incorrect optimization I
+       added to be less restrictive.
+       
+        Reviewed by mjs
+
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::layoutBlockChildren):
+
+2005-02-08  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
+       <rdar://problem/3977973> pages on ebay leak referenced JavaScript objects -- over time browsing becomes super-slow
+
+       I fixed this by removing all event listeners for a document, it's
+       children, and any disconnected nodes that used to be in the
+       document at document detach time. Mozilla temporarily disables
+       event listeners on such nodes, but re-enables them if you
+       re-parant a node into a new document. However, in WebCore, you
+       can't re-parent a node into another document, so there is no
+       observable change in behavior.
+
+       We have to do this to break the possible reference cycles between
+       event listeners and the dom nodes they are attached to (e.g. via
+       scope chain, as in this case).
+
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::detach):
+        (DocumentImpl::removeAllEventListenersFromAllNodesx):
+        (DocumentImpl::registerDisconnectedNodeWithEventListeners):
+        (DocumentImpl::unregisterDisconnectedNodeWithEventListeners):
+        (DocumentImpl::removeAllDisconnectedNodeEventListeners):
+        * khtml/xml/dom_docimpl.h:
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::~NodeImpl):
+        (NodeImpl::addEventListener):
+        (NodeImpl::removeEventListener):
+        (NodeImpl::removeAllEventListeners):
+        (NodeImpl::removeHTMLEventListener):
+        (NodeImpl::insertedIntoDocument):
+        (NodeImpl::removedFromDocument):
+        * khtml/xml/dom_nodeimpl.h:
+
+2005-02-09  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3999213> Sometimes 2 Windows Media Player plugin instances are loaded
+
+        Reviewed by hyatt.
+
+        * khtml/html/html_objectimpl.cpp:
+        (HTMLObjectElementImpl::attach): Set needWidgetUpdate to false before calling updateWidget because updateWidget may cause this method or another method (which also calls updateWidget) to be called.
+        (HTMLObjectElementImpl::recalcStyle): ditto
+
+2005-02-09  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+        
+        <rdar://problem/3937447> Mail-689: Arrow key navigation in new message body stops working when a line ends with a bold word
+        
+        Added affinity to VisiblePosition.  Changed Selection code to use affinity more.
+        
+        (Partial) <rdar://problem/3982096> editing/pasteboard/paste-text-007 is failing
+        
+        Changed ReplaceSelectionCommand to also pay attention to the top children of the incoming fragment, not just the very last node inserted, when deciding whether to insert a paragraph for the Apple interchange newline.
+
+        * khtml/ecma/kjs_window.cpp:
+        (SelectionFunc::tryCall):
+        * khtml/editing/htmlediting.cpp:
+        (khtml::EditCommandPtr::setStartingSelection):
+        (khtml::EditCommandPtr::setEndingSelection):
+        (khtml::EditCommand::setStartingSelection):
+        (khtml::EditCommand::setEndingSelection):
+        (khtml::CompositeEditCommand::deleteInsignificantTextDownstream):
+        (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
+        (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
+        (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
+        (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
+        (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
+        (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
+        (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
+        (khtml::ApplyStyleCommand::joinChildTextNodes):
+        (khtml::DeleteSelectionCommand::initializePositionData):
+        (khtml::DeleteSelectionCommand::handleGeneralDelete):
+        (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
+        (khtml::DeleteSelectionCommand::doApply):
+        (khtml::InsertLineBreakCommand::doApply):
+        (khtml::InsertParagraphSeparatorCommand::doApply):
+        (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
+        (khtml::InsertTextCommand::input):
+        (khtml::MoveSelectionCommand::doApply):
+        (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand):
+        (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand):
+        (khtml::ReplaceSelectionCommand::doApply):
+        (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
+        (khtml::ReplaceSelectionCommand::updateNodesInserted):
+        (khtml::TypingCommand::deleteKeyPressed):
+        (khtml::TypingCommand::forwardDeleteKeyPressed):
+        (khtml::TypingCommand::markMisspellingsAfterTyping):
+        * khtml/editing/htmlediting.h:
+        * khtml/editing/selection.cpp:
+        (khtml::Selection::Selection):
+        (khtml::Selection::init):
+        (khtml::Selection::moveTo):
+        (khtml::Selection::modifyExtendingRightForward):
+        (khtml::Selection::modifyMovingRightForward):
+        (khtml::Selection::modifyExtendingLeftBackward):
+        (khtml::Selection::modifyMovingLeftBackward):
+        (khtml::Selection::modify):
+        (khtml::Selection::xPosForVerticalArrowNavigation):
+        (khtml::Selection::clear):
+        (khtml::Selection::setBase):
+        (khtml::Selection::setExtent):
+        (khtml::Selection::setBaseAndExtent):
+        (khtml::Selection::layout):
+        (khtml::Selection::validate):
+        * khtml/editing/selection.h:
+        (khtml::Selection::startAffinity):
+        (khtml::Selection::endAffinity):
+        (khtml::Selection::baseAffinity):
+        (khtml::Selection::extentAffinity):
+        (khtml::operator==):
+        * khtml/editing/text_affinity.h:
+        (khtml::):
+        * khtml/editing/visible_position.cpp:
+        (khtml::VisiblePosition::VisiblePosition):
+        (khtml::VisiblePosition::init):
+        (khtml::VisiblePosition::initUpstream):
+        (khtml::VisiblePosition::initDownstream):
+        (khtml::VisiblePosition::next):
+        (khtml::VisiblePosition::previous):
+        (khtml::startVisiblePosition):
+        (khtml::endVisiblePosition):
+        * khtml/editing/visible_position.h:
+        (khtml::VisiblePosition::):
+        (khtml::VisiblePosition::VisiblePosition):
+        (khtml::VisiblePosition::affinity):
+        (khtml::VisiblePosition::setAffinity):
+        (khtml::operator==):
+        * khtml/editing/visible_units.cpp:
+        (khtml::previousBoundary):
+        (khtml::nextBoundary):
+        (khtml::startOfLine):
+        (khtml::endOfLine):
+        (khtml::previousLinePosition):
+        (khtml::nextLinePosition):
+        (khtml::startOfParagraph):
+        (khtml::endOfParagraph):
+        (khtml::previousParagraphPosition):
+        (khtml::nextParagraphPosition):
+        (khtml::startOfBlock):
+        (khtml::endOfBlock):
+        (khtml::startOfDocument):
+        (khtml::endOfDocument):
+        * khtml/editing/visible_units.h:
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::findTextNext):
+        (KHTMLPart::selectClosestWordFromMouseEvent):
+        (KHTMLPart::handleMousePressEventTripleClick):
+        (KHTMLPart::handleMousePressEventSingleClick):
+        (KHTMLPart::handleMouseMoveEventSelection):
+        (KHTMLPart::khtmlMouseReleaseEvent):
+        (KHTMLPart::selectAll):
+        (KHTMLPart::computeAndSetTypingStyle):
+        (KHTMLPart::selectionComputedStyle):
+        * khtml/rendering/render_br.cpp:
+        (RenderBR::positionForCoordinates):
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::updateSelection):
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeBaseImpl::setFocus):
+        * khtml/xml/dom_position.cpp:
+        (DOM::Position::previousCharacterPosition):
+        (DOM::Position::nextCharacterPosition):
+        * khtml/xml/dom_position.h:
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject value]):
+        (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
+        (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
+        (-[KWQAccObject accessibilityAttributeValue:]):
+        (-[KWQAccObject doAXLineForTextMarker:]):
+        (-[KWQAccObject doAXTextMarkerRangeForLine:]):
+        (-[KWQAccObject doAXTextMarkerForPosition:]):
+        (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
+        (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
+        (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
+        (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
+        (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
+        (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
+        (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
+        * kwq/KWQAccObjectCache.mm:
+        (KWQAccObjectCache::textMarkerForVisiblePosition):
+        (KWQAccObjectCache::visiblePositionForTextMarker):
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::findString):
+        (KWQKHTMLPart::advanceToNextMisspelling):
+        (KWQKHTMLPart::styleForSelectionStart):
+        (KWQKHTMLPart::baseWritingDirectionForSelectionStart):
+        (KWQKHTMLPart::setSelectionFromNone):
+        (KWQKHTMLPart::respondToChangedSelection):
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge setSelectedDOMRange:affinity:]):
+        (-[WebCoreBridge selectionAffinity]):
+        (-[WebCoreBridge setMarkDOMRange:]):
+        (-[WebCoreBridge _visiblePositionForPoint:]):
+        (-[WebCoreBridge moveDragCaretToPoint:]):
+        (-[WebCoreBridge editableDOMRangeForPoint:]):
+        (-[WebCoreBridge ensureSelectionVisible]):
+        (-[WebCoreBridge rangeOfCharactersAroundCaret]):
+
+2005-02-09  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3985211> Seed: Mail: Drag-and-drop destination indicator / insertion point disappears
+
+        Reviewed by kocienda.
+
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::paintCaret): new
+        (khtml::RenderBlock::paintObject): call paintCaret for the cursor caret and the drag caret
+        * khtml/rendering/render_block.h:
+
+=== Safari-185 ===
+
+2005-02-08  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3996344> Entire document content is deleted when only the first paragraph was supposed to be
+
+        Problem stems from my attempt to fix this bug: <rdar://problem/3986155> Insertion point goes 
+        to beginning of doc after deleting.
+        
+        I added an "optimization" that proved to do more harm than good. So, basically, the fix is to remove code.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::DeleteSelectionCommand::handleGeneralDelete)
+
+2005-02-07  Darin Adler  <darin@apple.com>
+
+        Reviewed by Kevin.
+
+        - fixed <rdar://problem/3890352> REGRESSION (125-170, Panther-only): pasted textarea contents disappear (exception in NSText)
+
+        * kwq/KWQTextArea.mm: (-[KWQTextArea tile]): Don't resize the text view immediately here.
+        Use performWithDelay to defer it to avoid the re-entrancy that bothers the Panther version
+        of NSTextView. On Tiger, leave the code alone.
+
+2005-02-07  Adele Amchan  <adele@apple.com>
+
+        Reviewed by Darin.
+
+        Fix for <rdar://problem/3993628> REGRESSION (180-181): Logitelnet bank's website doesn't work
+
+        This fixes an oversight in the fix for <rdar://problem/3964286>.  
+        We're now making sure there is a document before calling checkCompleted in slotLoaderRequestDone.
+               That function is called even when other parts finish loads of their subresources, so we could end
+       up calling checkCompleted before we had a document. We also looked over all the other calls to
+       checkCompleted to convince ourselves no other call sites had a similar issue.
+
+        * khtml/khtml_part.cpp: (KHTMLPart::slotLoaderRequestDone): Check if doc is nil before calling
+       checkCompleted.
+
+2005-02-07  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Darin
+
+        Fix for this bug:
+        
+        <rdar://problem/3953302> Replacing quoted text ends up with blue-colored text that is not quoted
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::DeleteSelectionCommand::doApply): Removed special case delete code for select all. It was
+        causing as many bugs as it fixed. What's more, the design concept is a bit shaky. By removing
+        this special case, the bug goes away.
+        * khtml/editing/htmlediting.h: Remove declaration.
+        
+        Test results using selectAll() updated to reflect changed behavior.
+        
+        * layout-tests/editing/deleting/delete-3775172-fix-expected.txt:
+        * layout-tests/editing/deleting/delete-select-all-001-expected.txt:
+        * layout-tests/editing/deleting/delete-select-all-003-expected.txt:
+        * layout-tests/editing/inserting/insert-3654864-fix-expected.txt:
+        * layout-tests/editing/inserting/insert-3775316-fix-expected.txt:
+        * layout-tests/editing/inserting/insert-3851164-fix-expected.txt:
+        * layout-tests/editing/inserting/insert-3907422-fix-expected.txt:
+        * layout-tests/editing/pasteboard/paste-text-015-expected.txt:
+
+2005-02-06  Darin Adler  <darin@apple.com>
+
+        Reviewed by Ken.
+
+        - fixed <rdar://problem/3994164> setting a new style attribute with setAttribute("style") doesn't blow away the old style
+
+        * khtml/css/css_valueimpl.h: Renamed parseProperty to parseDeclaration, since it's used to parse
+        an entire style declaration, not a single property.
+        * khtml/css/css_valueimpl.cpp: (DOM::CSSMutableStyleDeclarationImpl::parseDeclaration): Renamed,
+        and added code to clear m_values.
+        * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::parseHTMLAttribute): Call function by its
+        new name, and remove some unnecessary comments.
+
+2005-02-06  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - fixed <rdar://problem/3993722> need oncut and onpaste handlers implemented for <textarea> (needed for widgets)
+
+        * kwq/KWQTextArea.mm:
+        (-[KWQTextAreaTextView dispatchHTMLEvent:]): Added.
+        (-[KWQTextAreaTextView cut:]): Dispatch "before cut" and "cut" events.
+        (-[KWQTextAreaTextView copy:]): Dispatch "before copy" and "copy" events.
+        (-[KWQTextAreaTextView paste:]): Dispatch "before paste" and "paste" events.
+        (-[KWQTextAreaTextView pasteAsPlainText:]): Ditto.
+        (-[KWQTextAreaTextView pasteAsRichText:]): Ditto.
+
+2005-02-06  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - fixed <rdar://problem/3943038> <input type=search> that is focused in onload handler doesn't have a visible editor
+
+        * khtml/xml/dom_docimpl.cpp: (DocumentImpl::setFocusNode): Always update layout before giving focus to a widget.
+        This prevents the bad case where we give a widget focus before it has been positioned or sized, causing us to
+        exercise edge cases AppKit doesn't handle well.
+
+        * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Remove workaround code I added
+        to fix bug 3943049. Updating the layout fixes the same problem in a cleaner, safer way, and solves another problem,
+        with the way the clip view is set up.
+
+2005-02-06  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - fixed <rdar://problem/3425232> textarea won't trigger onchange action when clicking to new field
+
+        * khtml/rendering/render_form.h: Added new m_dirty data member.
+        * khtml/rendering/render_form.cpp:
+        (RenderTextArea::RenderTextArea): Initialize m_dirty to false.
+        (RenderTextArea::detach): Call value() on the DOM element to cause it to fetch the value from this object.
+        (RenderTextArea::handleFocusOut): Ditto. Also send the onchange event based only on the m_dirty flag.
+        (RenderTextArea::updateFromElement): Clear the m_dirty flag if the edited value is blown away by a value
+        that comes from the DOM element. Remove code to clear the element's m_dirtyvalue flag; that's an unnecessary
+        optimization, and ideally we'll stop having code in the render object that knows about that flag later.
+        (RenderTextArea::slotTextChanged): Set the m_dirty flag.
+
+2005-02-06  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - re-fixed <rdar://problem/3760910> please add support for custom tag names in HTML
+
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::tagId): Use ID_LAST_TAG + 1 for the ID of the first assigned tag ID. Before we'd use ID_LAST_TAG,
+        which resulted in the same number being used for ID_COMMENT and the first custom tag.
+        (DocumentImpl::tagName): Use ID_LAST_TAG + 1, as above.
+        (DocumentImpl::namespaceURI): Change a < ID_LAST_TAG to <= ID_LAST_TAG in the same spirit as above.
+
+2005-02-06  Darin Adler  <darin@apple.com>
+
+        Reviewed by Maciej.
+
+        - fixed <rdar://problem/3986639> Crash occurs after choosing Undo Typing from the Edit menu
+
+        * kwq/KWQTextArea.mm: (-[KWQTextArea viewWillMoveToWindow:]): Remove actions from undo manager when the view is
+        removed from the window. Unfortunately, to do this the code has to know that the target of NSTextView actions
+        will be the text storage object, but given the NSText architecture, that's pretty clear.
+
+2005-02-05  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3991974> REGRESSION: www.jabra.com world location screen does not work
+
+        Reviewed by hyatt.
+
+        * kwq/KWQKJavaAppletWidget.mm:
+        (KJavaAppletWidget::KJavaAppletWidget): fallback to the document's base URL if there is no baseURL attribute
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge baseURL]): new
+
+2005-02-04  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        Rolled out Ken's accidental checkin when committing <rdar://problem/3986155> fix yesterday.
+        
+        * khtml/editing/selection.cpp:
+        (khtml::Selection::validate):
+
+2005-02-04  Adele Amchan  <adele@apple.com>
+
+        Reviewed by Darin.
+
+        Fix for <rdar://problem/3758785> Safari no longer works at BankOfAmerica online banking for military users
+  
+        When closing the document, if a body doesn't exist we now create one.  This bug was preventing the onload handler from
+        firing in cases where there wasn't a body.  In the BankOfAmerica case, the page was just a bit of script where the onload
+        handler redirected to the correct page.
+
+        * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close):
+
+2005-02-03  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Chris
+
+        Fix for this bug:
+        
+        <rdar://problem/3986155> Insertion point goes to beginning of doc after deleting
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::DeleteSelectionCommand::setStartNode): New convenience to handle reference counting when setting.
+        (khtml::DeleteSelectionCommand::handleGeneralDelete): This contains the crux of the bug fix. Improve tests
+        that detect when a selected node needs to be retained, rather than deleted, to preserve the intent of the user.
+        This has the side effect of causing the insertion point placement code to succeed rather than fail. Before
+        this fix, the failure of the insertion point placement code caused the insertion point to jump to the start
+        of the document, which is the symptom that can be perceived by users when editing.
+        * khtml/editing/htmlediting.h: Add setStartNode declaration.
+        * khtml/editing/visible_units.cpp:
+        (khtml::startOfBlock): This function had a stubbed-in non-tested implementation. Implement and 
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001.html: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002.html: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003.html: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004.html: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005.html: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006.html: Added.
+
+=== Safari-183 ===
+
+2005-02-03  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3987419> Stocks and Weather leak what appears to XMLHTTPRequest results
+
+       XMLHTTPRequests were causing massive leaks.  _webcore_initWithHeaderString: did funky things with
+       self replacement.  Re-wrote to use more traditional factory constructor avoiding self replacement.
+       
+        Reviewed by David Harrison.
+
+        * kwq/KWQLoader.mm:
+        (+[NSDictionary _webcore_dictionaryWithHeaderString:]):
+        (KWQServeRequest):
+        (KWQServeSynchronousRequest):
+
+2005-02-03  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3938763> Cannot view Windows Media Player videos (soundtrack is played twice with delay)
+
+        Reviewed by hyatt.
+
+        * khtml/html/html_objectimpl.cpp:
+        (HTMLObjectElementImpl::attach): set needWidgetUpdate to false right after calling updateWidget because dispatchHTMLEvent can end up calling this method again
+        (HTMLObjectElementImpl::recalcStyle): ditto
+
+2005-02-02  John Sullivan  <sullivan@apple.com>
+
+        Reviewed by Chris.
+
+        - WebCore part of fix for <rdar://problem/3980651> REGRESSION (125-180): Huge number of pages printed from certain page, 
+        iFrame involved
+        
+        This also fixes the problems with printing from GMail, yay!
+
+        * khtml/rendering/render_flow.cpp:
+        (RenderFlow::paintLines):
+        If the current line is taller than the entire page height (e.g. tall iFrame), don't try
+        to avoid splitting it across pages.
+        
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
+        Handle error cases in a more obvious manner; this will cause future problems like this
+        to print a blank page and complain to the console on debug builds, rather than print a 
+        zillionty mostly-blank pages.
+
+2005-02-02  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3960304> can't load a particular applet (at www.escape.de) unless it's the first applet to be loaded
+
+        Reviewed by hyatt.
+
+        * khtml/rendering/render_frames.cpp:
+        (RenderPartObject::updateWidget): when getting the MIME type from the PARAM tag, make sure the MIME type is the text from the left of the semi-colon if there is one. We do this elsewhere as well.
+
+2005-02-02  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3983628> control-click on WebView is not selecting the word under the cursor (Mail, non-editable WebView)
+
+        Reviewed by rjw.
+
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::sendContextMenuEvent): check if SPI to always enable selecting closest word is enabled
+        * kwq/WebCoreBridge.h:
+
+2005-02-02  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by me
+
+        * khtml/editing/markup.cpp:
+        (khtml::createMarkup): Removed debug spam I committed earlier in error.
+
+2005-02-02  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Darin
+
+        Fix for this bug:
+        
+        <rdar://problem/3823109> WebKit should support -toggleBaseWritingDirection: (bidi editing support)
+
+        Since base writing direction is a paragraph-level property in AppKit, and we use the CSS direction
+        property in WebCore, which can be applied to inline elements as well as blocks, a new notion has
+        been added to the WebCore apply style logic. It is now possible to force all properties in a 
+        style declaration to be applied as though they were block properties.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ApplyStyleCommand::ApplyStyleCommand): Add an enum and a flag to this command that controls whether to force all
+        properties in the style to be applied as block styles. Default is "no", retaining previous behavior.
+        (khtml::ApplyStyleCommand::doApply): Switch on new flag to apply styles as before, or force all preoperties to be applied
+        as block styles.
+        * khtml/editing/htmlediting.h:
+        (khtml::ApplyStyleCommand::): Add an enum and a flag, as above.
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::applyParagraphStyle): New method to force application of all style properties as block styles.
+        * khtml/khtml_part.h: Update header declarations.
+        * kwq/KWQKHTMLPart.h: Update header declarations.
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::baseWritingDirectionForSelectionStart): Accessor to help WebKit do a toggle operation on 
+        writing direction.
+        * kwq/WebCoreBridge.h: Update header declarations.
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge applyParagraphStyle:withUndoAction:]): New method to force application of all style properties as block styles.
+        (-[WebCoreBridge baseWritingDirectionForSelectionStart]): Accessor to help WebKit do a toggle operation on 
+        writing direction.
+
+        Fix for this bug:
+        
+        <rdar://problem/3985035> REGRESSION (Mail): Text copied from wrapped line contains extra character when pasted
+
+        * khtml/editing/markup.cpp:
+        (khtml::renderedText): Add an enum and a flag to this command that controls whether to force all
+        This is the result of an error in the code that computes the rendered text that is selected 
+        when copying. Since spaces collapse at the end of lines, and these spaces need to be copied 
+        when the selection spans line endings, code runs to compute this text. However, this code 
+        was also running incorrectly in cases where lines wrapped. I have now added the missing 
+        test to check that the selection does indeed extend to the end of the line.
+
+
+2005-02-02  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Darin
+
+        Fix for these bugs:
+        
+        <rdar://problem/3984894> REGRESSION (Mail): Command-right-arrow in reply does the wrong thing (two ways)
+        <rdar://problem/3985130> REGRESSION (Mail): command-right-arrow in pasted RTF selects only up to tab
+
+        * khtml/editing/visible_units.cpp:
+        (khtml::endOfLine): Two separate problems in this new function recently added to take the place of
+        selectionForLine. In the first, endOfLine did not stop at BR elements, and returned the position
+        beyond them. In the second, the VisiblePosition constructor gives the wrong answer in certain cases.
+        Darin is going to work on a solution for that problem. In the meantime, I can fix the symptom of this
+        bug by going down to the last leaf child of the root line box; a one line change we will roll out when
+        Darin's fix is in.
+
+2005-02-01  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3985535> QT Plug-in JavaScript support now fails in <embed> tag only case
+
+        Reviewed by Maciej.
+
+        * khtml/ecma/kjs_html.cpp:
+        (KJS::HTMLDocument::tryGet):
+
+2005-02-01  John Sullivan  <sullivan@apple.com>
+
+        Written by Darin, reviewed and tested by me
+        
+        - fixed <rdar://problem/3969684> Panther-only: extra blank lines between 
+        pasted content from Blot
+
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::attributedString):
+        don't emit paragraph breaks if the margins are tiny; matches what
+        we do for plain-text conversion
+
+=== Safari-182 ===
+
+2005-02-01  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3985160> Deficiencies in pasting architecture blocking progress on other bugs
+
+        * khtml/editing/html_interchange.h: Move style span text used to mark element added to 
+        add style to this header.
+        * khtml/editing/htmlediting.cpp:
+        (khtml::styleSpanClassString): Change to use constant moved to html_interchange.h.
+        (khtml::isStyleSpan): New helper function. Checks if this is a span we added to apply style.
+        (khtml::CompositeEditCommand::insertNodeBefore): Added an assert to check that the node
+        we are inserting before is not the body.
+        (khtml::CompositeEditCommand::insertNodeAfter): Ditto, but check is for after.
+        (khtml::ReplacementFragment::ReplacementFragment): Added code to process the "default style"
+        that is added by the copy code.
+        (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): first and last nodes inserted are
+        now member variables instead of function locals. Initialize them here.
+        (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand): Deref first and last nodes inserted
+        if necessary.
+        (khtml::ReplaceSelectionCommand::doApply): Change design to fix the bug. Major change is to
+        separate out the code that inserts nodes into the tree so additional styling checks can
+        be done in a centralized way. Also got rid of the notion of "merging into the end block." That
+        concept was just wrong.
+        (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Tweak interface now that first and 
+        last nodes inserted are member variables.
+        (khtml::ReplaceSelectionCommand::insertNodeAfterAndUpdateNodesInserted): New helper used
+        by replace code to do the stated DOM operation and update state internal to the command.
+        This will also be a catch point to handle the kinds of additional style checks needed to
+        make paste work right.
+        (khtml::ReplaceSelectionCommand::insertNodeAtAndUpdateNodesInserted): Ditto.
+        (khtml::ReplaceSelectionCommand::insertNodeBeforeAndUpdateNodesInserted): Ditto.
+        (khtml::ReplaceSelectionCommand::updateNodesInserted): Ditto.
+        * khtml/editing/htmlediting.h: Update declarations as needed.
+        * khtml/editing/markup.cpp:
+        (khtml::createMarkup): Adds a "default style" span to the content written to the pasteboard.
+        This will help us to fix some of the bugs blocked by the bug above.
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::lastDescendent): New helper.
+        * khtml/xml/dom_nodeimpl.h: Ditto.
+        * khtml/xml/dom_position.cpp:
+        (DOM::Position::upstream): Fixed a bug which would allow the upstream position returned to be
+        in unrendered content.
+        (DOM::Position::downstream): Ditto.
+
+        * layout-tests/editing/deleting/delete-3775172-fix-expected.txt: Ending positions tweaked due to 
+        changes in upstream() and downstream() functions.
+        * layout-tests/editing/inserting/insert-3851164-fix-expected.txt: Ditto
+        * layout-tests/editing/inserting/insert-3907422-fix-expected.txt: Ditto
+        * layout-tests/editing/selection/extend-by-character-006-expected.txt: Ditto
+
+        * layout-tests/editing/pasteboard/paste-text-003-expected.txt: Changed what we expect, given
+        new behavior of paste code.
+
+2005-01-31  John Sullivan  <sullivan@apple.com>
+
+        Reviewed by Dave Hyatt.
+        
+        - fixed <rdar://problem/3983097> Tabbing on RSS pages gets stuck in search field 
+        with "full keyboard navigation" off
+
+        * kwq/KWQSlider.h:
+        * kwq/KWQSlider.mm:
+        (QSlider::focusPolicy):
+        Implemented this method for KWQSlider. It is needed for our widget subclasses that
+        can become focused in some situations. I missed this when fixing 3949203 because
+        it only comes into play when tab-to-controls is on, and because the other relevant
+        methods are objective-C methods.
+
+2005-01-31  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/3964164> AXWebArea needs to unregister on going invisible
+
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::detach):
+        Detach the AX UIElement for the AXWebArea.
+
+2005-01-31  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin
+
+        <rdar://problem/3850876> AX: button exposed as only an AXImage at http://appleseed.apple.com/ site (<input type=image>)
+
+        * khtml/rendering/render_form.h:
+        (khtml::RenderImageButton::isImageButton):
+        New.
+        * khtml/rendering/render_image.h:
+        (khtml::RenderImage::isImageButton):
+        New.
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject isImageButton]):
+        (-[KWQAccObject actionElement]):
+        (-[KWQAccObject role]):
+        (-[KWQAccObject accessibilityActionNames]):
+        (-[KWQAccObject accessibilityPerformAction:]):
+        Represent RenderImageButton elements as buttons instead of images.
+
+2005-01-31  David Harrison  <harrison@apple.com>
+
+        Prevent nil dereference in debug code.
+
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::displayTree):
+        Stop when parent is 0, too.
+
+2005-01-31  John Sullivan  <sullivan@apple.com>
+
+        Reviewed by Dave Hyatt.
+        
+        - fixed <rdar://problem/3949203> cannot tab to, within, or out of the RSS sidebar
+
+        * kwq/KWQSlider.mm:
+        (-[KWQSlider becomeFirstResponder]):
+        (-[KWQSlider resignFirstResponder]):
+        (-[KWQSlider nextKeyView]):
+        (-[KWQSlider previousKeyView]):
+        (-[KWQSlider canBecomeKeyView]):
+        (-[KWQSlider nextValidKeyView]):
+        (-[KWQSlider previousValidKeyView]):
+        Copied these methods from KWQButton. The lack of special handling for first-responder-ness
+        here was causing the focus to get "stuck" on the RSS page's slider widget. Added FIXME
+        about how it would be nice to share more of this code rather than replicating it in each
+        KWQ widget subclass.
+
+2005-01-31  Darin Adler  <darin@apple.com>
+
+        Reviewed by Harrison.
+
+        - fixed <rdar://problem/3980066> Double-click on single character moves insertion point to previous line
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::selectClosestWordFromMouseEvent): Set affinity too.
+        (KHTMLPart::handleMousePressEventTripleClick): Ditto.
+        (KHTMLPart::handleMouseMoveEventSelection): Ditto.
+        (KHTMLPart::khtmlMouseReleaseEvent): Ditto.
+
+        * khtml/editing/selection.cpp:
+        (khtml::Selection::modifyExtendingRightForward): Use endOfLine and endOfDocument.
+        (khtml::Selection::modifyMovingRightForward): Ditto.
+        (khtml::Selection::modifyExtendingLeftBackward): Use startOfLine and startOfDocument.
+        (khtml::Selection::modifyMovingLeftBackward): Ditto.
+        (khtml::Selection::validate): Rewrote the section that handles double-click. Two main fixes: 1) use isStartOfLine to
+        check for another case where we want to select the word to the right, and 2) use isEndOfParagraph, which seems
+        to work correctly in cases where isLastVisiblePositionInParagraph is giving the wrong answer. Also changed the line
+        code to use startOfLine/endOfLine and the document code to use startOfDocument/endOfDocument.
+
+2005-01-31  Darin Adler  <darin@apple.com>
+
+        Reviewed by Harrison.
+
+        - fixed <rdar://problem/3935275> unexpected quit scrolling over link; last.fm (works in IE and Firefox)
+
+        * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): By using the correct document, fix the crash reported here.
+        The page still crashes when you close the browser window, but it's not trivial to fix so I'll file a new bug after that.
+
+2005-01-31  Darin Adler  <darin@apple.com>
+
+        Reviewed by Ken and Harrison.
+
+        - fixed <rdar://problem/3947901> REGRESSION (Mail): Pasting paragraph of rich text leaves insertion point before pasted text
+        - fixed <rdar://problem/3949790> hitting return after underlined line results in too much or too little underlined
+        - fixed <rdar://problem/3981759> nil-deref and crash when pasting just a paragraph break
+        - fixed a couple problems I discovered while working with bug 3949790
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ApplyStyleCommand::applyInlineStyle): Pass StayInBlock to upstream. Without this, we end up going too far
+        upstream in the test case in bug 3949790.
+        (khtml::ApplyStyleCommand::removeInlineStyle): Pass StayInBlock to upstream and downstream. Same reason as above.
+        (khtml::ReplaceSelectionCommand::doApply): Update endPos if inserting a new node and endPos is using that node's
+        parent and an offset past the node being inserted. That change fixes a problem with the position of the insertion point
+        after pasting into the top level of a document (from test cases in 3947901 and 3949790). When setting insertionPos, use
+        code that works when lastNodeInserted is a block rather than a text node. That change fixes a problem where a newline is
+        not added when pasting an entire paragraph into the end of a document (from test case in 3949790). Added nil check before
+        checking if lastNodeInserted is a <br> element, which fixes the crash when pasting just a paragraph break.
+
+        * khtml/editing/visible_units.h: Filled out the set of calls to add some boolean checks for lines (needed for the
+        bug fix), and calls for blocks (not yet implemented), and documents. The document checks may need refinement to
+        properly handle documents with a mix of editable and non-editable content, but for now they just refactor code
+        and make things a little clearer. Also removed the "include line break" parameter from endOfSentence.
+        * khtml/editing/visible_units.cpp:
+        (khtml::rootBoxForLine): Added.
+        (khtml::startOfLine): Added. Algorithm taken from selectionForLine in selection.cpp.
+        (khtml::endOfLine): Ditto.
+        (khtml::inSameLine): Added.
+        (khtml::isStartOfLine): Added.
+        (khtml::isEndOfLine): Added.
+        (khtml::endOfSentence): Removed "include line break" parameter.
+        (khtml::inSameParagraph): Added a null check.
+        (khtml::isStartOfParagraph): Ditto.
+        (khtml::isEndOfParagraph): Ditto.
+        (khtml::startOfBlock): Added.
+        (khtml::endOfBlock): Added.
+        (khtml::inSameBlock): Added.
+        (khtml::isStartOfBlock): Added.
+        (khtml::isEndOfBlock): Added.
+        (khtml::startOfDocument): Added.
+        (khtml::endOfDocument): Added.
+        (khtml::inSameDocument): Added.
+        (khtml::isStartOfDocument): Added.
+        (khtml::isEndOfDocument): Added.
+
+2005-01-30  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3977000> form data set posted for <input type="image" ...> omits name/value pair
+
+        * khtml/html/html_formimpl.cpp:
+        (DOM::HTMLInputElementImpl::appendFormData): Append a name/value pair for type IMAGE in addition to the X/Y
+        coordinates.
+
+2005-01-30  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3974246> REGRESSION (125-180): popup menus are missing item text on Harmony Remote web site
+
+        * khtml/html/html_formimpl.cpp: (DOM::HTMLOptionElementImpl::text): Change this function to traverse the entire tree
+        and gather all the text rather than just looking at immediate children.
+
+        * khtml/xml/dom_nodeimpl.h: Added const.
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::traverseNextNode): Added const.
+        (NodeImpl::traverseNextSibling): Ditto.
+        (NodeImpl::traversePreviousNodePostOrder): Ditto.
+        (NodeImpl::detach): Add a missing nil check.
+
+2005-01-30  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3864536> crash copying text from other apps and pasting in a sticky in dashboard
+
+        * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Added missing ref/deref of newly created element.
+
+2005-01-28  Darin Adler  <darin@apple.com>
+
+        * khtml/css/cssproperties.c: Regenerated with newer gperf.
+
+2005-01-28  David Harrison  <harrison@apple.com>
+
+        Reviewed by John Sullivan.
+
+        <rdar://problem/3968144> AX need to be able to focus an AXLink by setting AXFocused to true
+        
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject accessibilityPerformAction:]):
+        (-[KWQAccObject accessibilityIsAttributeSettable:]):
+        Add AXFocused for AXLinks.
+
+2005-01-28  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/3584942> AX: Safari Accessibility parent-child mismatch
+
+        Use AppKit SPI _accessibilityParentForSubview to return KWQAccObject parent of AppKit AX object.
+        
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject _accessibilityParentForSubview:]):
+        New.
+
+2005-01-27  Adele Amchan  <adele@apple.com>
+
+        fixed by Darin, reviewed by me.
+
+        <rdar://problem/3976314> REGRESSION (180-TOT): submitting password fields fail on Panther
+
+        * kwq/KWQTextField.mm: (-[KWQTextFieldController string]): on panther, the secure text field's editor 
+        does not contain the real string, so now we just call stringValue on the field in that case.
+
+2005-01-26  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin, Hyatt and Ken.
+
+       <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
+       
+        * khtml/css/css_computedstyle.cpp:
+        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Add support
+       for -khtml-text-decorations-in-effect property. This works like text-docration
+       but follows proper inline semantics, that is, if a parent is causing text
+       decoration then -khtml-text-decorations-in-effect on this element will reflect that.
+        * khtml/css/cssproperties.in: Add -khtml-text-decorations-in-effect property.
+        * khtml/css/cssproperties.h: regenerated
+        * khtml/css/cssvalues.c: regenerated
+        * khtml/css/cssparser.cpp: regenerated
+        * khtml/css/cssproperties.c: regenerated
+
+        * khtml/css/css_valueimpl.h: Made copyPropertiesInSet public.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::StyleChange::init): Handle -khtml-text-decorations-in-effect
+       specially, translate to text-decoration
+        (khtml::ApplyStyleCommand::applyInlineStyle): Fix a comment.
+        (khtml::ApplyStyleCommand::removeInlineStyle): Add new way of pushing down
+       text-decoration styles around the edges of the selected range.
+        (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAroundNode): Helper for this.
+        (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): ditto
+        (khtml::ApplyStyleCommand::nodeFullyUnselected): ditto
+        (khtml::hasTextDecorationProperty): ditto
+        (khtml::highestAncestorWithTextDecoration): ditto
+        (khtml::ApplyStyleCommand::extractTextDecorationStyle): ditto
+        (khtml::ApplyStyleCommand::extractAndNegateTextDecorationStyle): ditto
+        (khtml::ApplyStyleCommand::applyTextDecorationStyle): ditto
+        * khtml/editing/htmlediting.h: Prototype new methods.
+        * khtml/editing/jsediting.cpp: Make underline execCommand use the new CSS property.
+
+       - as a necessary part of the fix, fixed the longstanding problem
+       that mutating an element's inlineStyleDecl would not property
+       update its style attribute. now it does.
+       
+        * khtml/css/css_valueimpl.cpp:
+        (DOM::CSSMutableStyleDeclarationImpl::setChanged): If this is an inline style
+       declaration, tell the element it's style attribute needs updating.
+        * khtml/html/html_elementimpl.cpp:
+        (HTMLElementImpl::invalidateStyleAttribute): New method, just calls down
+       to the dom element.
+        (HTMLElementImpl::updateStyleAttribute): Regenerate style attribute from
+       inline style declaration.
+        * khtml/html/html_elementimpl.h: Prototype new stuff.
+        * khtml/xml/dom_elementimpl.cpp:
+        (ElementImpl::ElementImpl): Initialize new attribute.
+        (ElementImpl::updateStyleAttributeIfNeeded): New method to check if the style
+       is dirty and this is an html element, and if so call the html element to
+       regenerate the style attribute.
+        (ElementImpl::attributes): update style if needed
+        (ElementImpl::getAttribute): ditto
+        (ElementImpl::hasAttributes): ditto
+        (ElementImpl::dump): ditto
+        (XMLElementImpl::cloneNode): ditto
+        * khtml/xml/dom_elementimpl.h:
+        (DOM::ElementImpl::isStyleAttributeValid): new method to manage style attr
+       dirty bit
+        (DOM::ElementImpl::setStyleAttributeValid): ditto
+
+       - added new layout tests for underlining:
+       
+        * layout-tests/editing/editing.js:
+        * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt: Added.
+        * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt: Added.
+        * layout-tests/editing/style/remove-underline-across-paragraph-in-bold.html: Added.
+        * layout-tests/editing/style/remove-underline-across-paragraph.html: Added.
+        * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt: Added.
+        * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt: Added.
+        * layout-tests/editing/style/remove-underline-after-paragraph-in-bold.html: Added.
+        * layout-tests/editing/style/remove-underline-after-paragraph.html: Added.
+        * layout-tests/editing/style/remove-underline-expected.txt: Added.
+        * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt: Added.
+        * layout-tests/editing/style/remove-underline-from-stylesheet.html: Added.
+        * layout-tests/editing/style/remove-underline-in-bold-expected.txt: Added.
+        * layout-tests/editing/style/remove-underline-in-bold.html: Added.
+        * layout-tests/editing/style/remove-underline.html: Added.
+        * layout-tests/editing/style/underline-expected.txt: Added.
+        * layout-tests/editing/style/underline.html: Added.
+
+2005-01-27  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3875199, search field needs to be able to  show a magnifying  glass without a dropdown menu.
+       
+        Reviewed by kocienda
+
+        * khtml/html/html_formimpl.cpp:
+        (DOM::HTMLInputElementImpl::HTMLInputElementImpl):
+        (DOM::HTMLInputElementImpl::parseHTMLAttribute):
+        * kwq/KWQLineEdit.mm:
+        (QLineEdit::setMaxResults):
+
+2005-01-27  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Maciej
+
+        Fix for this bug:
+        
+        <rdar://problem/3973254> Deletions of ranges does not coalesce correctly with subsequent typing
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::InsertTextCommand::deleteCharacter): Remove this dead code.
+        (khtml::ReplaceSelectionCommand::editingAction): Moved this code to a better place in the file. 
+        It was in with unrelated functions.
+        (khtml::TypingCommand::TypingCommand): Reorganize initialization list so it is easier to read.
+        (khtml::TypingCommand::issueCommandForDeleteKey): Remove dead code. Roll in remaining code into deleteKeyPressed.
+        (khtml::TypingCommand::deleteKeyPressed): Add in support for carrying along smart delete flag.
+        (khtml::TypingCommand::forwardDeleteKeyPressed): New function. Makes forward delete work like
+        "regular" delete in terms of coalescing typing.
+        (khtml::TypingCommand::doApply): Add case for ForwardDeleteKey.
+        (khtml::TypingCommand::preservesTypingStyle): Ditto.
+        * khtml/editing/htmlediting.h:
+        (khtml::TypingCommand::): Add ForwardDeleteKey constant. Remove a couple declarations for now-dead code.
+        (khtml::TypingCommand::smartDelete): New accessor.
+        (khtml::TypingCommand::setSmartDelete): Ditto.
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge deleteKeyPressedWithSmartDelete:]): Add smart delete flag.
+        (-[WebCoreBridge forwardDeleteKeyPressedWithSmartDelete:]): New method.
+        * khtml/editing/jsediting.cpp: Add supprt for ForwardDelete command
+        * layout-tests/editing/editing.js: Ditto.
+        * layout-tests/editing/deleting/delete-and-undo-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-and-undo.html: Added.
+        * layout-tests/editing/deleting/forward-delete-expected.txt: Added.
+        * layout-tests/editing/deleting/forward-delete.html: Added.
+
+=== Safari-181 ===
+
+2005-01-27  David Harrison  <harrison@apple.com>
+
+        Reviewed by Ken.
+
+        <rdar://problem/3962214> AX: AXLeftLineTextMarkerRangeForTextMarker returns incorrect range
+
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
+        Allowed for selection to end of line including the linebreak.
+        
+2005-01-27  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin, Ken.
+
+        <rdar://problem/3964470> AX: Include attachments in AXAttributedStringForTextMarkerRange
+
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject isAttachment]):
+        (-[KWQAccObject attachmentView]):
+        (-[KWQAccObject role]):
+        (-[KWQAccObject subrole]):
+        (-[KWQAccObject roleDescription]):
+        (-[KWQAccObject value]):
+        (-[KWQAccObject title]):
+        (-[KWQAccObject accessibilityDescription]):
+        (-[KWQAccObject accessibilityIsIgnored]):
+        (-[KWQAccObject accessibilityAttributeNames]):
+        (-[KWQAccObject accessibilityAttributeValue:]):
+        Make attachments accessible.
+        
+        (CreateCGColorIfDifferent):
+        (AXAttributeStringSetColor):
+        (AXAttributeStringSetNumber):
+        (AXAttributeStringSetFont):
+        (AXAttributeStringSetStyle):
+        (AXAttributeStringSetElement):
+        (AXLinkElementForNode):
+        (AXAttributedStringAppendText):
+        (AXAttributedStringAppendReplaced):
+        (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
+        Add attachments and more text attributes to AXAttributedStringForTextMarkerRange.
+
+2005-01-27  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3807935> DOM CSS computed style line-height is wrong in two ways
+
+        * khtml/css/css_computedstyle.cpp: (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
+        Use specified size rather than computed size when dealing with a percentage for line height.
+
+2005-01-27  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3971372> SWB: template function DOM_cast() won't compile with gcc 4.0
+        - fixed other gcc 4.0 compiling problems Patrick Beard pointed out on the phone
+
+        * kwq/DOMInternal.h: (DOM_cast): Change the "failToCompile()" trick to use a dependent name.
+        Nowadays, if a name is not dependent, it is checked at template definition time. But we want
+        a failure only at template instantiation time.
+
+        * ForwardingHeaders/editing/text_granularity.h: Added. Needed but a bug in the 3.3 compiler made
+        it compile anyway without this.
+
+        - other changes
+
+        * khtml/html/html_miscimpl.h: For clarity, mark these functions virtual too. They are automatically
+        virtual because the base class ones are virtual, but it's ugly to leave it this way.
+
+2005-01-26  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+
+        Fix for this bug:
+        
+        <rdar://problem/3971609> REGRESSION (Mail): up/down arrow navigation broken after rewrapping text by resizing window
+        <rdar://problem/3975661> REGRESSION (Mail): left/right arrow navigation can place insertion point after last character on line
+
+        * khtml/editing/selection.cpp:
+        (khtml::Selection::modifyAffinity): PARAGRAPH and LINE movements should not alter affinity. This was
+        just a mistake before when it reset to upstream in some cases.
+        * khtml/rendering/render_line.cpp:
+        (khtml::RootInlineBox::closestLeafChildForXPos): Move this function down from InlineBox, and 
+        rework the implementation. This fixes 3971609.
+        * khtml/rendering/render_line.h:
+        * khtml/rendering/render_text.cpp:
+        (RenderText::caretRect): Rework the algorithm to fix 3975661. This regressed when we began placing
+        the spaces on the end of lines in text boxes when lines wrap.
+
+2005-01-26  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3972522> (179-180) 40% slowdown on iBench JavaScript test
+
+       I added a member variable to ObjectImp.  This changed it's size and consequently
+       hampered the optimizations built into the garbage collector.  Objects no longer
+       fit within the allocators cell size, and thus allocation fell back to a slower
+       allocator.
+
+       As a result of this fix I also dramatically cleaned up how runtime objects are
+       accessed.  The path mostly *removes* code.
+       
+        Reviewed by Chris.
+
+        * khtml/ecma/kjs_dom.cpp:
+        (DOMDocumentProtoFunc::tryCall):
+        (DOMElementProtoFunc::tryCall):
+        (KJS::getRuntimeObject):
+        * khtml/ecma/kjs_dom.h:
+        * khtml/ecma/kjs_html.cpp:
+        (KJS::HTMLDocument::tryGet):
+        (KJS::HTMLElement::tryGet):
+        (KJS::HTMLElement::implementsCall):
+        (KJS::HTMLElement::call):
+        (KJS::HTMLElement::tryPut):
+        (KJS::HTMLCollection::tryGet):
+        (KJS::HTMLCollection::getNamedItems):
+        * khtml/ecma/kjs_html.h:
+        * khtml/ecma/kjs_window.cpp:
+        (Window::get):
+
+2005-01-26  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3757712> REGRESSION (Mail): WebCore does not allow Devanagari ligature input
+
+       For now we are using ICU UBreakIterator to determine grapheme boundaries for
+       cursor and deletion.  This does not match what Cocoa does exactly, but does match
+       what Carbon does.  The areas are difference are obscure, but, according to
+       Deborah Goldsmith, using the UBreakIterator is the reasonable approach.
+
+        Reviewed by Ken.
+
+        * khtml/rendering/render_text.cpp:
+        (RenderText::previousOffset):
+        (RenderText::nextOffset):
+
+2005-01-25  David Harrison  <harrison@apple.com>
+
+        Reviewed by Maciej and Richard.
+
+        <rdar://problem/3963731> AX VO: Changing window sizes causes a crash using with Voice Over - KWQPtrDictImpl::clear
+
+        * khtml/html/html_miscimpl.cpp:
+        (HTMLCollectionImpl::HTMLCollectionImpl):
+        Ensure that isHTMLDocument before calling HTMLDocument-only method.
+
+2005-01-25  Richard Williamson   <rjw@apple.com>
+
+       Part one of fix for <rdar://problem/3757712> REGRESSION (Mail): WebCore does not allow Devanagari ligature input
+
+       This patch changes the semantics of next() and previous() on
+       VisiblePosition to move a grapheme (character cluster) at a
+       time.  This means that cursor navigation with correctly move
+       over an entire cluster.
+
+       However, the expected behavior for deleting a grapheme is to
+       delete individual code points, thus decomposing the grapheme
+       into it constituent parts.  That will be addressed in the next
+       part of the fix.
+
+        Reviewed by Ken.
+
+        * khtml/editing/visible_position.cpp:
+        (khtml::VisiblePosition::previousPosition):
+        (khtml::VisiblePosition::nextPosition):
+        * khtml/editing/visible_position.h:
+        * khtml/rendering/render_object.cpp:
+        (RenderObject::previousOffset):
+        (RenderObject::nextOffset):
+        * khtml/rendering/render_object.h:
+        * khtml/rendering/render_text.cpp:
+        (RenderText::previousOffset):
+        (RenderText::nextOffset):
+        (RenderText::findNextInlineTextBox):
+        * khtml/rendering/render_text.h:
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::previousOffset):
+        (NodeImpl::nextOffset):
+        * khtml/xml/dom_nodeimpl.h:
+
+2005-01-25  David Harrison  <harrison@apple.com>
+
+        Reviewed by Maciej.
+
+        <rdar://problem/3973067> AXWebArea for http://apple.netscape.com/ has an empty AXLinkUIElements
+
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject accessibilityAttributeValue:]):
+        Omit ignored AXLinks from AXLinkUIElements result
+
+2005-01-25  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3972851> REGRESSION (179-180+): Repro crash in ApplyStyleCommand::cleanUpEmptyStyleSpans
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ApplyStyleCommand::cleanUpEmptyStyleSpans): Added two null checks.
+
+2005-01-25  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3954710> Mail crashed while editing signatures - NodeImpl::isBlockFlow
+
+        The fix is more general than for this one bug, and may work to fix many crashers. The problem
+        is that the ReplaceSelectionCommand never checked whether its starting selection is empty. If
+        it is, then we need to bail before doing the work of the command, which we need to deref the
+        start and end points of the selection in order to do its work. I think you can see the crash
+        potential.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplaceSelectionCommand::doApply): Assert selection is not empty.
+        * kwq/WebCoreBridge.mm:
+        (partHasSelection): New helper function to test that bridge has a part with a selection.
+        
+        Use new helper function to test part and selection; return from these function if this test fails.
+        
+        (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:])
+        (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:])
+        (-[WebCoreBridge alterCurrentSelection:direction:granularity:])
+        (-[WebCoreBridge rangeByAlteringCurrentSelection:verticalDistance:])
+        (-[WebCoreBridge alterCurrentSelection:verticalDistance:])
+        (-[WebCoreBridge documentFragmentWithText:])
+        (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:smartReplace:])
+        (-[WebCoreBridge insertLineBreak])
+        (-[WebCoreBridge insertParagraphSeparator])
+        (-[WebCoreBridge insertParagraphSeparatorInQuotedContent])
+        (-[WebCoreBridge insertText:selectInsertedText:])
+        (-[WebCoreBridge deleteSelectionWithSmartDelete:])
+        (-[WebCoreBridge ensureSelectionVisible])
+
+2005-01-24  Kevin Decker  <kdecker@apple.com>
+
+        Reviewed by Darin.
+
+       Fixed <rdar://problem/3932374> REGRESSION: 'ReferenceError - Can't find variable' JavaScript error at webxpress.fidelity.com
+
+        * khtml/html/html_miscimpl.h: Missing virtual identifiers for namedItem() and nextNamedItem() exposed a flaw that prevented finding variables in form [HTMLFormCollectionImpl] scopes.
+       
+
+2005-01-24  Vicki Murley <vicki@apple.com>
+
+        Reviewed by kocienda.
+
+       - fix <rdar://problem/3810661> computed style not handled for Apple extensions
+        * khtml/css/css_computedstyle.cpp: (DOM::):
+        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): add -apple-line-clamp and -apple-text-size-adjust
+
+2005-01-24  Darin Adler  <darin@apple.com>
+
+        Reviewed by Kevin.
+
+        - fixed <rdar://problem/3969884> REGRESSION (179-180): Typing password not echoed as "bullets" at paypal.com when field is first focused
+
+        * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]):
+        Sizing up the form editor, which fixes things for normal fields and search fields,
+        screws things up for password fields. Eventually, I'll need to figure out why this is
+        and file a bug so that the AppKit team fixes it. In the mean time, just check for the
+        case of the secure text field, and don't size up in that case.
+
+2005-01-24  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+
+        Fix for this bug:
+        
+        <rdar://problem/3963560> 8A354: Inserting Japanese text to the line head causes line break
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplaceSelectionCommand::doApply): Add one more case where we merge content into the
+        existing line. This covers the situation see using the steps to reproduce this bug.
+
+2005-01-21  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
+       <rdar://problem/3967572> Editing should split elements before removing style
+       
+        * khtml/editing/htmlediting.cpp:
+        (khtml::CompositeEditCommand::splitElement):
+        (khtml::CompositeEditCommand::mergeIdenticalElements):
+        (khtml::CompositeEditCommand::wrapContentsInDummySpan):
+        (khtml::CompositeEditCommand::splitTextNodeContainingElement):
+        (khtml::ApplyStyleCommand::applyInlineStyle):
+        (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
+        (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
+        (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
+        (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
+        (khtml::areIdenticalElements):
+        (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
+        (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
+        (khtml::ApplyStyleCommand::cleanUpEmptyStyleSpans):
+        (khtml::ApplyStyleCommand::addInlineStyleIfNeeded):
+        (khtml::InsertParagraphSeparatorCommand::doApply):
+        (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
+        (khtml::InsertTextCommand::prepareForTextInsertion):
+        (khtml::SplitTextNodeCommand::doUnapply):
+        (khtml::SplitElementCommand::SplitElementCommand):
+        (khtml::SplitElementCommand::~SplitElementCommand):
+        (khtml::SplitElementCommand::doApply):
+        (khtml::SplitElementCommand::doUnapply):
+        (khtml::MergeIdenticalElementsCommand::MergeIdenticalElementsCommand):
+        (khtml::MergeIdenticalElementsCommand::~MergeIdenticalElementsCommand):
+        (khtml::MergeIdenticalElementsCommand::doApply):
+        (khtml::MergeIdenticalElementsCommand::doUnapply):
+        (khtml::WrapContentsInDummySpanCommand::WrapContentsInDummySpanCommand):
+        (khtml::WrapContentsInDummySpanCommand::~WrapContentsInDummySpanCommand):
+        (khtml::WrapContentsInDummySpanCommand::doApply):
+        (khtml::WrapContentsInDummySpanCommand::doUnapply):
+        (khtml::SplitTextNodeContainingElementCommand::SplitTextNodeContainingElementCommand):
+        (khtml::SplitTextNodeContainingElementCommand::~SplitTextNodeContainingElementCommand):
+        (khtml::SplitTextNodeContainingElementCommand::doApply):
+        * khtml/editing/htmlediting.h:
+
+       New layout test that shows the side benefit of this.
+        
+       * layout-tests/editing/style/unbold-in-bold-expected.txt: Added.
+        * layout-tests/editing/style/unbold-in-bold.html: Added.
+
+2005-01-24  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3933435> -[DOMRange cloneContents] sometimes alters the original DOMRange
+
+        * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::processContents): Fixed code that was collapsing
+        the range after processing the contents. That's right for extract and delete, but not clone.
+
+        - fixed <rdar://problem/3714184> inline input works incorrectly when I type Korean slowly in textfield in form on www.google.co.kr
+        - fixed <rdar://problem/3193848> Can't enter SSN to sign up for Chase visa online account (changing focus inside key press handler)
+        - fixed <rdar://problem/3874683> REGRESSION (161-162): Crash after typing command-Z to undo after pasting text with newline in it into a text field <input type=text>
+
+        * kwq/KWQLineEdit.mm:
+        (QLineEdit::text): Changed to call a new string method on the controller instead of calling
+        stringValue, since stringValue has a bad side effect of ending inline input.
+        (QLineEdit::selectAll): Changed to only call selectText: when the field is already selected.
+        When you are giving the field focus, it automatically gets all selected, and this change
+        is required in the case where we defer the focus change.
+
+        * kwq/KWQTextField.h: Added a new string method to the controller.
+        * kwq/KWQTextField.mm:
+        (-[KWQTextFieldController setMaximumLength:]): Call the new string method instead of using stringValue.
+        (-[KWQTextFieldController controlTextDidChange:]): Removed the code to truncate at the first CR or LF.
+        That's now handled in the shouldChangeTextInRange method instead.
+        (-[KWQTextFieldController textView:shouldHandleEvent:]): Add new logic to defer responder changes until
+        after the event is handled. This makes sure the key gets into the field that's already handling it at
+        rather than ending up in the newly-focused field if the key press handler focuses a different element.
+        (-[KWQTextFieldController textView:didHandleEvent:]): Turn off deferral here, now that the key press
+        has been handled.
+        (-[KWQTextFieldController string]): Added. Calls stringValue only if there's no editor. If there is
+        an editor, calls string on that instead.
+        (-[KWQTextFieldController textView:shouldChangeTextInRange:replacementString:]): Added. Called by
+        the three field subclasses. Truncates incoming strings at the first CR or LF character. This works
+        properly with Undo, and the old technique did not.
+        (-[KWQTextFieldController preprocessString:]): Added. Helper used for all the setStringValue methods
+        so they all truncate at the first CR or LF as well as truncating to the appropriate length.
+        (-[KWQTextField setStringValue:]): Changed to call the controller.
+        (-[KWQTextField textView:shouldChangeTextInRange:replacementString:]): Added. Calls the controller.
+        (-[KWQSecureTextField setStringValue:]): More of the same.
+        (-[KWQSecureTextField textView:shouldChangeTextInRange:replacementString:]): Ditto.
+        (-[KWQSearchField setStringValue:]): Ditto.
+        (-[KWQSearchField textView:shouldChangeTextInRange:replacementString:]): Ditto.
+
+        * kwq/KWQWidget.h: Added the new setDeferFirstResponderChanges function.
+        * kwq/KWQWidget.mm:
+        (QWidget::~QWidget): Clear out the deferredFirstResponder global just in case we are destroyed
+        while we "have the ball".
+        (QWidget::hasFocus): If we are in the deferred mode, use the global to decide who to say is focused.
+        (QWidget::setFocus): If we are in the deferred mode, set the global instead of making something be
+        the first responder.
+        (QWidget::setDeferFirstResponderChanges): Set the boolean. If the boolean is being cleared, then
+        get the deferred first responder and call setFocus on it again, which will do the work we didn't
+        want to do earlier.
+
+2005-01-24  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3964350> Deleting all content and typing in a message gets one letter, then beeps
+
+        This is a problem with the way we turn key events, when a user starts typing, into editing commands. 
+        Right now, that initial delete key in an empty window is turned into an editing command, and much 
+        editing code runs that need not run. What's more, this is confusing the selection machinery. The
+        solution is to detect the "delete in an empty window" case and don't turn this into an editing
+        command at all.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::TypingCommand::deleteKeyPressed)
+
+2005-01-23  Adele Amchan  <adele@apple.com>
+
+        Fixed <rdar://problem/3964286> REGRESSION (178-179): menus and "go to old site" link at Ameritrade's new site don't work
+
+        Removed check for document from checkCompleted.  In this case, WebCore never knew that a WebImageView was complete because 
+        it fell into this document check case in checkCompleted.  
+        Added check for document to tokenizerProcessedData (see <rdar://problem/3807144>)
+
+        Reviewed by Darin.
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::stop):
+        (KHTMLPart::checkCompleted):
+        * khtml/khtml_part.h:
+        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::tokenizerProcessedData):
+
+2005-01-21  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3759399> Javascript / Liveconnect problems ((event handler):Undefined value)
+
+       Java applets specified with <object> or <embed> weren't scriptable.  Now they are.
+
+        Reviewed by Chris.
+
+        * khtml/html/html_objectimpl.cpp:
+        (HTMLEmbedElementImpl::getEmbedInstance):
+        (HTMLObjectElementImpl::getObjectInstance):
+
+2005-01-21  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3959464> REGRESSION (Mail): Insertion point goes back to beginning of document after deleting
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::DeleteSelectionCommand::handleGeneralDelete): Add special case to handle retaining a fully-selected block.
+        This fixes the bug.
+        * layout-tests/editing/deleting/delete-3959464-fix-expected.txt: Added.
+        * layout-tests/editing/deleting/delete-3959464-fix.html: Added.
+
+2005-01-21  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3966998> REGRESSION(179-TOT) clicking on gmail message brings me to blank screen
+
+       getElementById() sometimes returns Undefined() instead of Null().
+
+        Reviewed by Hyatt.
+
+        * khtml/ecma/kjs_dom.cpp:
+        (DOMDocumentProtoFunc::tryCall):
+
+2005-01-21  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3773809, make sure that overflow regions never end up at an invalid scroll offset because of a layout change.
+       
+        Reviewed by kocienda
+
+        * khtml/rendering/render_layer.cpp:
+        (RenderLayer::updateScrollInfoAfterLayout):
+
+2005-01-21  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3966349, hang loading page.  Make sure that loops using popOneBlock properly check for a null
+       blockStack to avoid an infinite loop.
+       
+        Reviewed by kocienda
+
+        * khtml/html/htmlparser.cpp:
+        (KHTMLParser::parseToken):
+        (KHTMLParser::insertNode):
+        (KHTMLParser::popInlineBlocks):
+
+2005-01-21  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3957204> Mail crashed when sending a message in ~InsertParagraphSeparatorInQuotedContentCommand
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::InsertParagraphSeparatorInQuotedContentCommand::InsertParagraphSeparatorInQuotedContentCommand):
+        InsertParagraphSeparatorInQuotedContentCommand has this member variable: DOM::ElementImpl *m_breakNode;
+        I failed to initialize this variable to null in the constructor, and there is an uncommonly-traveled 
+        code path which does not set this variable to something good. In the destructor, we check for null, 
+        and deref if non-null. Obvious "BOOM" potential. Fixed.
+
+2005-01-21  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3966311> REGRESSION (Mail): Hitting return makes space character disappear
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::InsertParagraphSeparatorCommand::doApply): When writing the code to insert a block
+        in response to the return key, I did not write code to cover the case described in the bug.
+        Now I have.
+        * layout-tests/editing/inserting/insert-div-025-expected.txt: Added.
+        * layout-tests/editing/inserting/insert-div-025.html: Added.
+
+2005-01-20  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Ken.
+
+       <rdar://problem/3965196> security fix for javascript: exploit missed one case (already fixed in updates)
+        
+       * khtml/ecma/kjs_window.cpp:
+        (WindowFunc::tryCall): correct mistake in earlier fix for the following bug, caught by Adele:
+
+2005-01-20  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Ken.
+
+       <rdar://problem/3965466> editing needs to insert text before applying typing style
+       
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): Remove a FIXME comment.
+        (khtml::InsertLineBreakCommand::doApply): Apply style to the BR
+       node after inserting it.
+        (khtml::InsertTextCommand::prepareForTextInsertion): Don't try to
+       apply style to any new nodes created before inserting.
+        (khtml::InsertTextCommand::input): Apply style to the inserted range
+       after doing the text insert.
+        * khtml/editing/htmlediting.h:
+
+       This change leads to improved results on one of the layout tests:
+        
+       * layout-tests/editing/inserting/insert-div-024-expected.txt:
+
+=== Safari-180 ===
+
+2005-01-20  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3964646> REGRESSION (179-180): Typing space at end of line makes following paragraph disappear
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Recent change to block placeholder removal code 
+        caused this regression. The code became too aggressive in removing block placeholders, and would remove them
+        from blocks other than the block containing the selection.
+        * layout-tests/editing/inserting/insert-div-023-expected.txt: This file had a spurious BR element in it that
+        I did not notice earlier.
+        * layout-tests/editing/inserting/insert-div-024-expected.txt: Ditto.
+
+2005-01-20  David Hyatt  <hyatt@apple.com>
+
+       Fix for oddness on albertsons.com.  Make sure not to crash when setting/removing style properties on a node
+       with no document.  The bug # is 3813900.
+       
+        Reviewed by john
+
+2005-01-20  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        PARTIAL fix for following bug.  Create attributed string with fonts and links.  Still need to add attachments.
+        <rdar://problem/3942606> AX: Support kAXAttributedStringForTextMarkerRangeParameterizedAttribute
+        
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject textUnderElement]):
+        Touched up previous checkin to match code review comments.
+        
+        (-[KWQAccObject value]):
+        Use plainText for this one instead of obsolete attributedString.
+        
+        (-[KWQAccObject accessibilityParameterizedAttributeNames]):
+        Advertise AXAttributedStringForTextMarkerRange.
+        
+        (AXAttributeStringAddFont):
+        (AXAttributeStringAddElement):
+        (-[KWQAccObject linkUIElementForNode:]):
+        (-[KWQAccObject _addAttachmentForElement:URL:needsParagraph:usePlaceholder:]):
+        (-[KWQAccObject accessibilityAttributedStringForRange:]):
+        New routines to support AXAttributedStringForTextMarkerRange.
+        
+        (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
+        Use new routines instead of obsolete attributedString.
+
+2005-01-20  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/3960196> AX Crash in DOM::Range::setStartBefore
+
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::getAccObjectCache):
+        Adjust when detecting cache in non-top level WebArea.
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject textUnderElement]):
+        (-[KWQAccObject accessibilityAttributeValue:]):
+        Make sure the elements document is the current one for the part.
+
+2005-01-20  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3922980> Mail not crashing, just quitting itself suddenly in -[WebHTMLView(MailExtras) findString:options:]
+
+        * khtml/dom/dom2_range.cpp: (DOM::operator==): Handle null and detached ranges without raising exceptions.
+        The uncaught exception would make the entire program terminate.
+
+        - fixed <rdar://problem/3885729> attempting to modify a computed style does nothing, but should raise a DOM exception
+
+        * kwq/DOM-CSS.mm: (-[DOMCSSStyleDeclaration setProperty:::]): Uncommented this code which I had to disable
+        back in November because Mail was stumbling over it.
+
+        - fixed <rdar://problem/3943049> focus() called during onload handler results in square text field on <input type=search>        
+
+        * kwq/KWQLineEdit.mm: (QLineEdit::baselinePosition): Change computation so it will work even for fields
+        that position their text in a way that depends on vertical size. In the case of a search field, the text
+        is centered, so the old logic was broken.
+        * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Set the frame size to
+        something large enough to accomodate the field editor. If we start the frame at size 0,0 we run into
+        AppKit trouble when it insets the frame to figure out the frame for the field editor. In the case of this
+        bug this happens because we become first responder before being sized and positioned by the HTML layout code.
+
+        - improved debugging output when using "po" from gdb with Objective-C DOM
+
+        * kwq/DOM.mm:
+        (-[DOMNode description]): Added. Includes node name ("<tr>") and node value (e.g., string for text node).
+        (-[DOMRange description]): Tweaked format.
+
+2005-01-19  Richard Williamson   <rjw@apple.com>
+
+       After further discussion with Real we have decided to NOT include the
+       additional CLSID for the real plugin.  See 3958601.
+
+        Reviewed by Darin.
+
+        * khtml/rendering/render_frames.cpp:
+        (RenderPartObject::updateWidget):
+
+2005-01-19  David Harrison  <harrison@apple.com>
+
+        Reviewed by Maciej.
+
+        <rdar://problem/3949429> AX: word marker routines returns incorrect data for empty line
+
+        Previous checkin for this bug was missing some of the patch.  Editing snafu with multiple changes in tree.
+        
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
+        (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
+        (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
+        (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
+        (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
+        (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
+        (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
+
+2005-01-19  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Small, cosmetic change John and I decided
+        to do on my last checkin, but I forgot to do before landing.
+
+2005-01-19  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/3959727> REGRESSION (Mail): Style not preserved on blank lines
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::CompositeEditCommand::applyStyle):
+        (khtml::CompositeEditCommand::insertBlockPlaceholder): New function that unconditionally adds a block placeholder.
+        (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Now returns bool based on whether
+        placeholder was added or not.
+        (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Now searches all the descendents of a block
+        looking for a placeholder. The old code, which just looked at the last child of a node, started missing
+        once block placeholders became styled (which started happening with this patch).
+        (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Now handles applying typing style
+        to a block placeholder at call time, rather than setting the typing style as a latent style that
+        might be applied later. This is an important part of the bug fix.
+        (khtml::DeleteSelectionCommand::doApply): Now uses bool return value from insertBlockPlaceholderIfNeeded()
+        and passes it along to calculateStyleBeforeInsertion, so the case where a block placeholder needs to
+        be styled can be detected.
+        (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Changed the way this class
+        managed style. Before it would calculate and set typing style for the block added. This is not
+        sufficient. Added blocks need to styled immediately. Some name changes to instance variables in 
+        this class due to the change to accommodate this change.
+        (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Name changes, as above.
+        (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): Ditto.
+        (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Ditto.
+        (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
+        (khtml::ReplaceSelectionCommand::doApply): Improve check for testing when a placeholder
+        block can be removed in its entirety after the insertion.
+        * khtml/editing/htmlediting.h: Update header accordingly.
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::selectionComputedStyle): Move position for computed style check downstream before
+        doing check when the position is in an empty block (this makes sure any style on any block
+        placeholder is accounted for).
+
+        New layout tests to check bug fix.
+
+        * layout-tests/editing/style/block-style-004-expected.txt: Added.
+        * layout-tests/editing/style/block-style-004.html: Added.
+        * layout-tests/editing/style/block-style-005-expected.txt: Added.
+        * layout-tests/editing/style/block-style-005.html: Added.
+        * layout-tests/editing/style/block-style-006-expected.txt: Added.
+        * layout-tests/editing/style/block-style-006.html: Added.
+
+        Results updated to reflect new block placeholder code.
+
+        * layout-tests/editing/inserting/insert-div-004-expected.txt 
+        * layout-tests/editing/inserting/insert-div-005-expected.txt
+        * layout-tests/editing/inserting/insert-div-006-expected.txt
+        * layout-tests/editing/inserting/insert-div-008-expected.txt
+        * layout-tests/editing/inserting/insert-div-011-expected.txt
+        * layout-tests/editing/inserting/insert-div-012-expected.txt
+        * layout-tests/editing/inserting/insert-div-013-expected.txt
+        * layout-tests/editing/inserting/insert-div-014-expected.txt
+        * layout-tests/editing/inserting/insert-div-015-expected.txt
+        * layout-tests/editing/inserting/insert-div-016-expected.txt
+        * layout-tests/editing/inserting/insert-div-017-expected.txt
+        * layout-tests/editing/inserting/insert-div-018-expected.txt
+        * layout-tests/editing/inserting/insert-div-019-expected.txt
+        * layout-tests/editing/inserting/insert-div-021-expected.txt
+        * layout-tests/editing/inserting/insert-div-022-expected.txt
+        * layout-tests/editing/inserting/insert-div-023-expected.txt
+        * layout-tests/editing/inserting/insert-div-024-expected.txt
+
+2005-01-19  David Hyatt  <hyatt@apple.com>
+
+       Dont null-check the renderer before submitting, since a script can set it to display:none and still expect the
+       submission to occur.  Fixes bug #3477282.
+       
+        Reviewed by kdecker
+
+        (DOM::HTMLInputElementImpl::defaultEventHandler):
+
 2005-01-18  Richard Williamson   <rjw@apple.com>
        
        Fixed several issues all arising from analysis of plugin detection code at ifilm.com: