Fix for 3992440, text not wrapping correctly on half moon bay web site. Refine...
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
index 19b4056..ba4400c 100644 (file)
@@ -1,3 +1,753 @@
+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.