WebCore:
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
index 44f2b27..130fba5 100644 (file)
+2005-02-22  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3976872> Pasted plain text doesn't get the proper style if pasted into newlines
+
+        Reviewed by mjs.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplaceSelectionCommand::doApply): don't clear the typing style when matching style
+        (khtml::ReplaceSelectionCommand::completeHTMLReplacement): apply the typing style when matching style
+        * khtml/editing/jsediting.cpp:
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::pasteAndMatchStyle): new
+        * khtml/khtml_part.h:
+        * kwq/KWQKHTMLPart.h:
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::issuePasteAndMatchStyleCommand): new
+        * kwq/WebCoreBridge.h:
+        * layout-tests/editing/editing.js:
+
+2005-02-22  Darin Adler  <darin@apple.com>
+
+        Reviewed by Adele.
+
+        - fixed <rdar://problem/4006596> REGRESSION (183-184): crash in DOM::DocumentImpl::setFocusNode(DOM::NodeImpl*)
+
+        * khtml/xml/dom_docimpl.cpp:
+        (widgetForNode): Added helper.
+        (DocumentImpl::setFocusNode): Re-get the widget for the node after calling updateLayout.
+        The updateLayout can destroy the old widget, so we can't keep a stale widget pointer around.
+
+2005-02-22  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+
+        Fix for this bug:
+        
+        <rdar://problem/4003463> Mail.app HTML uses inline styling markup not understood by Entourage and Eudora
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::isEmptyFontTag): Helper for removing <font> tags.
+        (khtml::StyleChange::styleModeForParseMode): Helper to map a document parse mode to a use/don't use
+        legacy-html-styles value.
+        (khtml::StyleChange::checkForLegacyHTMLStyleChange): Add support for colors, font faces, and font sizes.
+        (khtml::ApplyStyleCommand::isHTMLStyleNode):
+        (khtml::ApplyStyleCommand::removeHTMLFontStyle):
+        (khtml::ApplyStyleCommand::applyTextDecorationStyle): Now call styleModeForParseMode to determine
+        whether to use legacy html styles or not.
+        (khtml::ApplyStyleCommand::removeInlineStyle): Now properly removes <font> styles.
+        (khtml::ApplyStyleCommand::addBlockStyleIfNeeded): Ditto.
+        (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): Ditto.
+        (khtml::createFontElement): Helper for applying <font> elements.
+        * khtml/editing/htmlediting.h: All the following support the new bits of data we need to store.
+        (khtml::StyleChange::applyFontColor)
+        (khtml::StyleChange::applyFontFace)
+        (khtml::StyleChange::applyFontSize)
+        (khtml::StyleChange::fontColor)
+        (khtml::StyleChange::fontFace)
+        (khtml::StyleChange::fontSize)
+
+        Test results updated now that we will write out <font> tags for quirks mode documents.        
+        
+        * layout-tests/editing/execCommand/modifyForeColorByCharacter-expected.txt
+        * layout-tests/editing/style/block-style-004-expected.txt
+        * layout-tests/editing/editing/pasteboard/paste-text-011-expected.txt
+        * layout-tests/editing/style/block-style-005-expected.txt
+        * layout-tests/editing/style/block-style-006-expected.txt
+        * layout-tests/editing/style/smoosh-styles-001-expected.txt
+        * layout-tests/editing/style/smoosh-styles-002-expected.txt
+
+2005-02-22  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Kevin.
+
+       <rdar://problem/4017066> crash in KJS::ValueImp::dispatchType() every time I load www.nytimes.com/pages/automobiles
+
+       When creating option elements, use lowercase "option" instead of
+       uppercase "OPTION" to create option elements, because only
+       lowercase works for XHTML.
+       
+        * khtml/ecma/kjs_html.cpp:
+        (KJS::HTMLSelectCollection::tryPut):
+        (OptionConstructorImp::construct):
+
+2005-02-22  Chris Blumenberg  <cblu@apple.com>
+
+       WebCore fix for: <rdar://problem/3918056> Mail not line breaking my <pre> formatted emails on replies
+       
+       Mail must 4018993 to fully address the problem.
+
+        Reviewed by kocienda.
+
+        * khtml/editing/markup.cpp:
+        (khtml::startMarkup): don't compute style for text in PRE tags
+        (khtml::createMarkup): include PRE if it is an ancestor of the nodes in the range
+
+2005-02-21  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/4008338> REGRESSION (125-178): opacity style not working, breaks fading images on okcupid.com
+
+       There was a long standing bug in cssText().  Double value were always cast int!  So,
+       opacity values values were incorrectly converted to text, i.e. 0.75 became 0.
+       
+       The problem was newly triggered because we parse the css for opacity *TWICE*.  This is a result of 
+       incorrectly "invalidating" the style attribute (from fix for 3790449).  The second parse was from
+       the cssText() of the style.
+
+        Reviewed by Hyatt.
+
+        * khtml/css/css_valueimpl.cpp:
+        (DOM::CSSPrimitiveValueImpl::cssText):
+
+2005-02-21  David Hyatt  <hyatt@apple.com>
+
+       Fix for 4017204, apply the same fix to the base class nodeAtPoint that was already applied to RenderBlock.
+       Skip elements with layers and inline flows.  Demoted <form>s can end up causing trouble otherwise.
+       
+        Reviewed by Richard Williamson
+
+        * khtml/rendering/render_box.cpp:
+        (RenderBox::nodeAtPoint):
+
+2005-02-21  David Hyatt  <hyatt@apple.com>
+
+       Fix for 4017033, CSS is being parsed twice.  Make sure to always validate the style attribute when it is
+       initially parsed.  Add code to clean up decls when the style attribute is completely removed.  Add a new
+       synchronizing boolean that avoids reparsing the style declaration when the attribute is simply
+       being synced up to the declaration.
+
+        Reviewed by John
+
+        * khtml/css/css_valueimpl.cpp:
+        (DOM::CSSMutableStyleDeclarationImpl::setChanged):
+        * khtml/html/html_elementimpl.cpp:
+        (HTMLElementImpl::invalidateStyleAttribute):
+        (HTMLElementImpl::updateStyleAttributeIfNeeded):
+        (HTMLElementImpl::HTMLElementImpl):
+        (HTMLElementImpl::~HTMLElementImpl):
+        (HTMLElementImpl::destroyInlineStyleDecl):
+        (HTMLElementImpl::mapToEntry):
+        (HTMLElementImpl::parseHTMLAttribute):
+        * khtml/html/html_elementimpl.h:
+        * khtml/xml/dom_elementimpl.cpp:
+        (ElementImpl::ElementImpl):
+        (ElementImpl::setAttribute):
+        * khtml/xml/dom_elementimpl.h:
+        (DOM::ElementImpl::updateStyleAttributeIfNeeded):
+
+=== Safari-188 ===
+
+2005-02-21  Darin Adler  <darin@apple.com>
+
+        - fixed Panther deployment build
+
+        * kwq/KWQTextEdit.mm: (QTextEdit::setScrollBarModes): Put more stuff inside #if.
+
+2005-02-21  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/3943090> REGRESSION (Mail): Spelling underline incompletely erased following certain steps
+
+        * khtml/rendering/render_text.cpp:
+        (InlineTextBox::paintMarker):
+        Make sure underline is placed within the text bounds.
+        
+        * kwq/KWQPainter.h:
+        * kwq/KWQPainter.mm:
+        (QPainter::misspellingLineThickness):
+        * kwq/WebCoreTextRenderer.h:
+        Add misspellingLineThickness for use by InlineTextBox::paintMarker.
+
+2005-02-21  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/4012978> -[DOMRange markupString] crashes when range contains only a text node with a single space
+
+        * khtml/editing/markup.cpp: (khtml::createMarkup): Added updateLayout calls, and added a missing
+        nil check.
+
+2005-02-21  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/4005435> Safari hung while pasting text into a <textarea> (Panther-only)
+
+        * kwq/KWQTextEdit.mm: (QTextEdit::setScrollBarModes): Don't setAutohidesScrollers:YES on Panther.
+
+2005-02-21  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/4015499> REGRESSION (186-187): pasted quoted text starting with a blank line increases quote level of pasted text when pasted
+
+        * khtml/editing/markup.cpp:
+        (khtml::markup): Changed over to ASSERT instead of assert.
+        (khtml::createMarkup): The issue was that the code to add parents all the way back to the common ancestor
+        block did not check for blocks whose markup had already been added, and could result in adding markup for
+        nodes twice (hence the additional and erroneous quote level). Now there is a new check that will
+        only add markup for those nodes before the start of the selection range. This fixes the bug.
+        (khtml::createFragmentFromMarkup): Changed over to ASSERT instead of assert.
+        (khtml::createFragmentFromText): Ditto.
+
+2005-02-21  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+
+        Fix for this bug:
+        
+        <rdar://problem/4015494> REGRESSION (186-187) <cr> removed if quoted word is copy/pasted on line immediately above quoted text
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplaceSelectionCommand::doApply): Relatively new check designed to remove a <br> element when
+        that element was on a line by itself did not do an adequate check for this condition, causing the
+        failure described in the bug. Fixed.
+
+2005-02-19  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Maciej
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::matchNearestBlockquoteColorString): New function which abstracts away the CSS property we use
+        for this pseudo-color.
+        (khtml::ReplacementFragment::removeBlockquoteColorsIfNeeded): Set the new nearestBlockquoteColorString
+        psuedo-color here, rather than removing colors as was done before.
+        (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes): Check for the pseudo-color in the desired
+        style, and determine the real color based on the nearest blockquote (or none) to the node.
+        (khtml::nearestMailBlockquote): Name change from closestMailBlockquote to match new property better.
+
+        All the rest of this change is the mechanical coding you need to do to add a new CSS property, in this
+        case, -khtml-match-nearest-mail-blockquote-color.
+
+        * khtml/css/css_computedstyle.cpp:
+        (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue)
+        * khtml/css/cssparser.cpp:
+        (CSSParser::parseValue):
+        * khtml/css/cssproperties.c:
+        (hash_prop):
+        (findProp):
+        * khtml/css/cssproperties.h:
+        * khtml/css/cssproperties.in:
+        * khtml/css/cssstyleselector.cpp:
+        (khtml::CSSStyleSelector::applyProperty)
+        * khtml/css/cssvalues.c:
+        (findValue)
+        * khtml/css/cssvalues.h:
+        * khtml/css/cssvalues.in:
+        * khtml/rendering/render_style.h:
+        (khtml::RenderStyle::matchNearestMailBlockquoteColor)
+        (khtml::RenderStyle::setMatchNearestMailBlockquoteColor)
+        (khtml::RenderStyle::initialMatchNearestMailBlockquoteColor)
+
+2005-02-19  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Chris
+
+        Fix for these bugs:
+        
+        <rdar://problem/4014228> REGRESSION (186-187) extra, uneditable lines inserted above and below a line of pasted quoted text
+        <rdar://problem/4014393> REGRESSION (186-187) pasted quoted text gets extra <cr>s when pasted at top of document
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplacementFragment::ReplacementFragment): Part of a general refactoring of how
+        the fragment is inserted into the document, rendered, and then tested for certain
+        important pieces of information that are required for pasting.
+        (khtml::ReplacementFragment::insertFragmentForTestRendering): New helper. Handles inserting
+        the fragment nodes into the document.
+        (khtml::ReplacementFragment::restoreTestRenderingNodesToFragment): Removes nodes from the
+        document, and restores them to the fragment.
+        (khtml::ReplacementFragment::computeStylesUsingTestRendering): Factored out code that
+        did this before into its own function.
+        (khtml::ReplacementFragment::removeUnrenderedNodesUsingTestRendering): Ditto.
+        (khtml::ReplacementFragment::countRenderedBlocks): This is a real improvement, as it
+        eliminates a major use of the isProbablyBlock() function. Now, the blocks that are
+        counted are real, rendered blocks.
+        (khtml::ReplacementFragment::removeStyleNodes): Made this function retain margin-zeroing
+        CSS properties on paragraphs. This does two things: 1) It helps us to maintain good behavior
+        in the short term while there are still versions of Mail out there that use <p> elements
+        instead of <div> elements for new paragraphs; and 2) It will help to maintain the compatibility
+        with other mail clients that use <p> elements for their paragraphs but render them themselves
+        with no margins as the result of quirks.
+        (khtml::ReplaceSelectionCommand::doApply): Do some work to fix up and improve the handling
+        of blank lines, be they <p> elements or <br> elements, that can be removed after pasting. This, 
+        coupled with the refactoring, fixes 4014393.
+        * khtml/editing/htmlediting.h: Updated for new functions.
+        * layout-tests/editing/pasteboard/paste-text-010-expected.txt: Updated results, actually improved with this change.
+        * layout-tests/editing/pasteboard/paste-text-011-expected.txt: Ditto.
+
+2005-02-19  Kevin Decker  <kdecker@apple.com>
+
+        Reviewed by Chris.
+
+       Fixed <rdar://problem/4010765> Flash player can be used to arbitrarily open popup windows without user permission
+       
+       Our window.open() policy is to refuse the <script>window.open(...)</script> case and allow the inline the <a href="javascript:window.open('foo')> case.  Clever advertisers at some point realized that by executing their Javascript through the Flash plugin, Safari would always treat their code as the inline case, and thus, they were able to work around our popup blocker.
+
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge stringByEvaluatingJavaScriptFromString:]): Changed this to invoke the new stringByEvaluatingJavaScriptFromString:forceUserGesture method below.
+        (-[WebCoreBridge stringByEvaluatingJavaScriptFromString:forceUserGesture:]): Let the WebKit make the determination if this was a user originated gesture or not; we must no longer assume this is always the case.
+
+2005-02-18  Chris Blumenberg  <cblu@apple.com>
+       
+       Fixed: <rdar://problem/3951196> REGRESSION (Mail): too many levels of reply quotes after certain steps
+
+        Reviewed by kocienda.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
+       - If we find a new start node, update topBlockquote so we don't use too many block quotes for the contents following the new line.
+       - Build up the list of ancestors after we've determined the actual topBlockquote.
+       - Don't insert an extra new line if there is a new start node.
+
+2005-02-19  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3978461> smart paste is broken
+
+        Reviewed by kevin.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplaceSelectionCommand::doApply): properly check for leading and trailing whitespace. These checks were incorrectly reversed. Also check if we're pasting at the beginning or end of a line. We should not insert spaces in either case.
+
+2005-02-18  Adele Amchan  <adele@apple.com>
+
+        Reviewed by Darin.
+
+        Fix for <rdar://problem/3975568> REGRESSION(125-180)Australian Open pages have drawing problem
+
+        This patch fixes two problems caused by our added support for custom tags.  First, the layout problem at the sites mentioned in the bug
+        was caused by custom tags within tables.  In checkChild, we needed to treat these tags as spans so they get placed correctly in the DOM tree.
+        Also, we were indexing the tagPriority and endTag arrays with id values from the custom tags that were greater than the size of the array.  So now 
+        we have functions to check for the custom tags, and again, treat them as spans.  To avoid confusion, we changed the names of the arrays to
+        endTagArray and tagPriorityArray.
+
+        * khtml/html/dtd.h: changed all uses of the endTag array to endTagArray for our new wrapper functions
+        (DOM::tagPriority): added function to check array bounds and to treat custom tags as spans
+        (DOM::endTagRequirement): added function to check array bounds and to treat custom tags as spans
+        * khtml/html/dtd.cpp: changed name of endTag and tagPriority arrays to endTagArray and tagPriorityArray
+        (DOM::checkChild): treat custom tags as spans during this check
+        * khtml/html/html_elementimpl.cpp: changed all uses of the endTag array to the endTagRequirement function
+        (HTMLElementImpl::createContextualFragment):
+        (HTMLElementImpl::setInnerText):
+        (HTMLElementImpl::setOuterText):
+        (HTMLElementImpl::toString):
+        * khtml/html/htmlparser.cpp: changed all uses of the endTag array to the endTagRequirement function and all uses of the tagPriority array to the tagPriority function.
+        (KHTMLParser::parseToken):
+        (KHTMLParser::insertNode):
+        * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): changed all uses of the endTag array to the endTagRequirement function
+       * khtml/editing/markup.cpp: changed all uses of the endTag array to the endTagRequirement function
+        (khtml::endMarkup): 
+        (khtml::markup):
+
+2005-02-18  Jens Alfke  <jens@apple.com>
+
+        Reviewed by Hyatt.
+
+       Fixed build: Whoops, setNeedsLayout's parameter is NOT optional.
+
+        * khtml/html/html_objectimpl.cpp:
+        (HTMLAppletElementImpl::setAllParamsAvailable):
+
+2005-02-18  Jens Alfke  <jens@apple.com>
+
+        Reviewed by cblu, hyatt.
+
+       Fixes <rdar://problem/3603191> "REGRESSION: Applets not receiving all of the Applet Parameters in Java 1.4.1/1.4.2"
+       Defer instantiation of Java applet plugin until after all of the <applet> tag's nested <param> tags have been parsed, otherwise the list of parameters passed to the applet is incomplete. The regression was introduced (says Dave) when the parser's close-tag notifications were removed in the name of performance.
+
+        * khtml/html/html_objectimpl.cpp:
+        (HTMLAppletElementImpl::HTMLAppletElementImpl):
+        (HTMLAppletElementImpl::getAppletInstance):
+        (HTMLAppletElementImpl::setAllParamsAvailable):
+        (HTMLAppletElementImpl::allParamsAvailable):
+        * khtml/html/html_objectimpl.h:
+        * khtml/html/htmlparser.cpp:
+        (KHTMLParser::processCloseTag):
+        * khtml/rendering/render_applet.cpp:
+        (RenderApplet::createWidgetIfNecessary):
+
+2005-02-18  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/4006161> Tiger8A380: Widgets leak dashboard regions
+       
+       We were leaking the DashboardRegionImpls.
+
+        Reviewed by Kevin.
+
+        * khtml/css/css_valueimpl.cpp:
+        (DOM::CSSPrimitiveValueImpl::cleanup):
+
+2005-02-18  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3945271> REGRESSION (Mail): pasted plain text should pick up typing style instead of being unstyled
+
+        Reviewed by kocienda.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): don't set class on element returned by createStyleSpanElement since that's already done
+        (khtml::ReplacementFragment::ReplacementFragment): take matchStyle param, don't call computeStylesAndRemoveUnrendered() if !matchStyle
+        (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): take matchStyle param
+        (khtml::ReplaceSelectionCommand::doApply): if m_matchStyle, use selection.start() as the insertion position and don't call applyStyleToInsertedNodes()
+        * khtml/editing/htmlediting.h:
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]): take matchStyle param and pass it
+        (-[WebCoreBridge replaceSelectionWithNode:selectReplacement:smartReplace:]): pass NO for matchStyle
+        (-[WebCoreBridge replaceSelectionWithMarkupString:baseURLString:selectReplacement:smartReplace:]): pass NO for matchStyle
+        (-[WebCoreBridge replaceSelectionWithText:selectReplacement:smartReplace:]): pass YES for matchStyle
+
+2005-02-18  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Chris
+
+        Fix for these bugs:
+        
+        <rdar://problem/4013025> Copy/Paste of quoted word results in removal of any following <cr>
+        <rdar://problem/4013100> Copy/Paste quoted text and then decrease quote level does not change text color
+
+        For the most part, these bugs were caused by errors and lack of foresight on my part when
+        I added the better paste code. Chalk these fixes up to the result of bake time.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplacementFragment::ReplacementFragment): Need to move count of number of blocks in
+        fragment after the call to remove unrendered nodes. Meant to do this before, but forgot to.
+        (khtml::ReplacementFragment::removeStyleNodes): Need to remove inline styles from elements!
+        Terrible omission now fixed.
+        (khtml::ReplacementFragment::removeBlockquoteColorsIfNeeded): Remove blockquote colors for now.
+        Code has a more extensive comment in it now to explain the difficulty, and the need for more
+        study and changes.
+        (khtml::ReplaceSelectionCommand::doApply): Need to call applyStyleToInsertedNodes() in the 
+        m_fragment.hasInterchangeNewline() case. This was just missed before.
+        * layout-tests/editing/pasteboard/paste-text-011-expected.txt: Updated results, subtly different, but OK.
+        * layout-tests/editing/pasteboard/paste-text-017-expected.txt: Updated for <p> to <div> change in test content.
+        * layout-tests/editing/pasteboard/paste-text-017.html: Needed to change <p> to <div> to 
+        make this test go with the new design of using <div> tags for default paragraphs.
+
+2005-02-18  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3974263 (and possibly others).  Don't let fixed tables use maxint as their maxwidth when some
+       cells have percentage values.
+       
+        Reviewed by kocienda
+
+        * khtml/misc/arena.cpp:
+        (ArenaAllocate):
+        * khtml/rendering/table_layout.cpp:
+        (FixedTableLayout::calcWidthArray):
+        (FixedTableLayout::calcMinMaxWidth):
+        (AutoTableLayout::layout):
+
+2005-02-17  Darin Adler  <darin@apple.com>
+
+        Reviewed by Kevin.
+
+        - fixed <rdar://problem/3998627> WebKit crashes when deleting text in a modified div
+
+        * khtml/khtml_part.cpp: (KHTMLPart::selectionComputedStyle): Add a ref and deref to keep
+        the element alive until it's added to the DOM tree.
+        * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::styleForSelectionStart): Ditto.
+
+2005-02-17  Richard Williamson   <rjw@apple.com>
+
+        Fixed <rdar://problem/3999467> when Osaka-Mono is specified as fixed width font, Osaka used instead
+
+       Fixed w/o introducing a performance regression.  Add early
+       check for Osaka-Mono to avoid expensive call into WebKit.
+
+        Reviewed by Vicki.
+
+        * kwq/KWQFont.mm:
+        (QFont::isFixedPitch):
+
+2005-02-17  Darin Adler  <darin@apple.com>
+
+        Reviewed by Kevin.
+
+        - fixed <rdar://problem/4011210> REGRESSION (180-181): Maxlength property for INPUT object not working
+
+        * kwq/KWQTextField.mm:
+        (-[KWQTextField textView:shouldChangeTextInRange:replacementString:]): If controller returns
+        YES, go on to call super, since super does the text formatter handling, which we need.
+        (-[KWQSecureTextField textView:shouldChangeTextInRange:replacementString:]): Ditto.
+        (-[KWQSearchField textView:shouldChangeTextInRange:replacementString:]): Ditto.
+
+=== Safari-187 ===
+
+2005-02-17  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+
+        Fix for this bug:
+        
+        <rdar://problem/4012058> Copy from quoted text and paste results in blue text
+
+        The relatively-new paste code tries hard to retain style of the content from the
+        source location. However, in the case of quoted material in mail messages, we do 
+        not want to carry the quoting color along. This fixes the problem by factoring
+        out such colors.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplacementFragment::computeStylesAndRemoveUnrendered): Now calls removeBlockquoteColorsIfNeeded()
+        to fix bug.
+        (khtml::ReplacementFragment::removeBlockquoteColorsIfNeeded): New function. Factors out colors that are
+        the result of text being quoted. 
+        (khtml::isNodeRendered): Function moved in file. No other change.
+        (khtml::isProbablyBlock): Function moved in file. No other change.
+        (khtml::closestMailBlockquote): New function. Helps fix bug.
+        (khtml::isMailBlockquote): Function moved to be free-floating instead of being a 
+        member of CompositeEditCommand. No other change.
+        * khtml/editing/htmlediting.h: Moved around some functions. Added removeBlockquoteColorsIfNeeded().
+        * khtml/editing/markup.cpp: Remove redundant static implementation of isMailBlockquote.
+
+2005-02-17  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/4008163> dynamic support for -apple-dashboard-region is flakey
+
+       Style operator== wasn't including regions.
+
+        Reviewed by Darin.
+
+        * khtml/rendering/render_style.cpp:
+        (StyleCSS3NonInheritedData::operator==):
+
+2005-02-17  Adele Amchan  <adele@apple.com>
+
+        Reviewed by Chris.
+
+        fix for <rdar://problem/4010028> 8A383: Safari v185 crash loading united.com multi city fare finder page.
+
+        * khtml/dom/dom_string.cpp: (DOM::DOMString::operator += ): prevent nil dereference when DOMString being added is nil
+
+2005-02-17  Jens Alfke  <jens@apple.com>
+
+        Reviewed by Hyatt.
+
+       Fix for rdar://3963151 "Mail only pasted ~950 of 1407 text lines into my message!"
+       Force tokenizer to run synchronously while parsing document fragments, so it doesn't stop halfway through and cause truncated content.
+
+        * khtml/html/html_elementimpl.cpp:
+        (HTMLElementImpl::createContextualFragment):
+        * khtml/html/htmltokenizer.cpp:
+        (khtml::HTMLTokenizer::reset):
+        (khtml::HTMLTokenizer::begin):
+        (khtml::HTMLTokenizer::setForceSynchronous):
+        (khtml::HTMLTokenizer::continueProcessing):
+        * khtml/html/htmltokenizer.h:
+
+2005-02-17  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+
+        Fix for this bug:
+        
+        <rdar://problem/3982183> Mail's HTML paragraphs appear with unintended margins in Entourage and Eudora
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::createDefaultParagraphElement): Change element we make from <p> to <div>.
+        This fixes the problem, as these other mailers show <div> elements without margins.
+        
+        Some test files needed to change to preserve the ability to "eyeball" the results.
+        Many others changed just because their <p> elements changed to <div> elements.
+        
+        * layout-tests/editing/deleting/delete-3928305-fix-expected.txt
+        * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt
+        * layout-tests/editing/inserting/insert-div-013-expected.txt
+        * layout-tests/editing/inserting/insert-div-013.html
+        * layout-tests/editing/inserting/insert-div-014-expected.txt
+        * layout-tests/editing/inserting/insert-div-014.html
+        * layout-tests/editing/inserting/insert-div-018-expected.txt
+        * layout-tests/editing/inserting/insert-div-018.html
+        * layout-tests/editing/inserting/insert-div-019-expected.txt
+        * layout-tests/editing/inserting/insert-div-019.html
+        * layout-tests/editing/inserting/insert-div-020-expected.txt
+        * layout-tests/editing/inserting/insert-div-020.html
+        * layout-tests/editing/inserting/insert-div-021-expected.txt
+        * layout-tests/editing/inserting/insert-div-021.html
+        * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt
+        * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt
+        * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt
+        * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt
+
+2005-02-17  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+
+        Fix for this bug:
+        
+        <rdar://problem/3996737> REGRESSION (Mail): Copy/paste in Mail inserts returns
+
+        The root cause of the problem is that a couple of pieces of code in AppKit and Mail 
+        insert newlines into markup as it is generated, and the paste code in WebCore was 
+        not smart about nodes that do not render (as is the case with these added newlines). 
+        So, the solution is to remove these unrendered nodes in the paste code in a pre-pass. 
+        Fortunately, my recent addition of such a pass to the paste code to handle styles 
+        gave me a convenient place to put this new logic.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplacementFragment::ReplacementFragment): Use new name for function below.
+        (khtml::ReplacementFragment::computeStylesAndRemoveUnrendered): Name change from computeStylesForNodes().
+        Now does the additional work of removing unrendered nodes, as mentioned above.
+        (khtml::isNodeRendered): New helper function.
+        * khtml/editing/htmlediting.h: Updated as necessary.
+
+2005-02-17  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+
+        Fix for this bug:
+        
+        <rdar://problem/3998892> REGRESSION (Mail): bolding a selection from end of line changes unselected text on starting line.
+        
+        The styling code did not move to the next node when the starting position was 
+        at the last offset of a node. Instead, it styled it. Clearly wrong. Solution 
+        is to borrow a check from the delete algorithm. Though I call caretMaxOffset(),
+        which I consider deprecated, it is still the simplest and most strightforward
+        way to ask the right question for this kind of problem.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ApplyStyleCommand::applyInlineStyle): Fixed, as described above.
+        * layout-tests/editing/style/style-3998892-fix-expected.txt: Added.
+        * layout-tests/editing/style/style-3998892-fix.html: Added.
+
+2005-02-16  Chris Blumenberg  <cblu@apple.com>
+       
+       Fixed: <rdar://problem/3954842> Forward/reply to an HTML email can result in nothing (in cases with <link> tags for CSS)
+
+        Reviewed by john.
+
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeBaseImpl::addChild): don't call insertedIntoDocument on the added child if "this" itself is not in the document.
+
+2005-02-16  John Sullivan  <sullivan@apple.com>
+
+        Written by Darin, reviewed by Maciej and me
+        
+        - change required to make previous checkin work with English language RSS pages
+
+        * kwq/KWQKURL.h:
+        new private method isHierarchical
+        * kwq/KWQKURL.mm:
+        (KURL::KURL):
+        add hierarchical base URL check when determining whether the URL is absolute
+        (KURL::isHierarchical):
+        new method, returns true if this is a valid URL with a slash just past the scheme's trailing colon
+
+2005-02-16  John Sullivan  <sullivan@apple.com>
+
+        Written by Darin, reviewed by me.
+        
+        - WebCore part of fix for <rdar://problem/4007384> 
+        FILTER: Bookmark of RSS with Japanese search word & multiple RSS pages loses filter
+
+        * kwq/DOM.mm:
+        (-[DOMElement _getURLAttribute:]):
+        new SPI method, uses parseURL and completeURL to get valid URL from attribute value
+
+        * kwq/DOMPrivate.h:
+        declare new SPI method
+
+2005-02-15  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Darin.
+
+       <rdar://problem/3942428> reproducible crash loading cbs.sportsline.com
+       
+       This change reverts the fix for <rdar://problem/3805311>, and
+       re-fixes it in a different (better) way. Instead of preventing
+       programmatic open from setting the parsing flag, instead make sure
+       that programmatic close resets it.
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::openURL):
+        (KHTMLPart::didExplicitOpen):
+        (KHTMLPart::closeURL):
+        (KHTMLPart::begin):
+        (KHTMLPart::end):
+        (KHTMLPart::endIfNotLoading):
+        (KHTMLPart::slotFinishedParsing):
+        (KHTMLPart::checkEmitLoadEvent):
+        * khtml/khtml_part.h:
+        * khtml/khtmlpart_p.h:
+        (KHTMLPartPrivate::KHTMLPartPrivate):
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::open):
+        (DocumentImpl::implicitOpen):
+        (DocumentImpl::close):
+        (DocumentImpl::implicitClose):
+        * khtml/xml/dom_docimpl.h:
+
+2005-02-15  David Harrison  <harrison@apple.com>
+
+        Reviewed by Maciej.
+
+        <rdar://problem/3933665> smart delete seems to delete too much after expanding selection with arrow keys
+
+        Fixed by updating the selection granularity.  Only byWord granularity enables smart delete, but in this
+        case the granularity changed from byWord to byCharacter.
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::setSelectionGranularity):
+        * khtml/khtml_part.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
+        (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:]):
+        (-[WebCoreBridge alterCurrentSelection:direction:granularity:]):
+
+2005-02-15  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        (continued) <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
+
+        This was supposed have been committed yesterday with the other part of the fix, but was not.
+        
+        * khtml/editing/visible_units.cpp:
+        (khtml::endOfWord):
+
+2005-02-15  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by John
+        
+        Fix for this bug:
+        
+        <rdar://problem/3951178> REGRESSION (Mail): blank line lost after pasting as quotation
+        
+        Problem was that the blank line after the selection was getting deleted incorrectly since the
+        paste code thought this was an unneeded placeholder rather than a placeholder outside of the
+        selection.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Now calls findBlockPlaceholder.
+        (khtml::CompositeEditCommand::findBlockPlaceholder): Moved finding code formerly in 
+        removeBlockPlaceholderIfNeeded to this new helper.
+        (khtml::ReplaceSelectionCommand::doApply): Do not delete placeholder up front. Call 
+        findBlockPlaceholder, and delete it later if needed in the already-existing cleanup step.
+        * khtml/editing/htmlediting.h: Add new function.
+
+        New layout test.
+
+        * layout-tests/editing/pasteboard/paste-text-017-expected.txt: Added.
+        * layout-tests/editing/pasteboard/paste-text-017.html: Added.
+
+        Result changed for the better.
+
+        * layout-tests/editing/pasteboard/paste-text-011-expected.txt
+
+2005-02-14  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
+
+        Reviewed by Darin.
+
+        <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
+
+        * khtml/editing/visible_text.cpp:
+        (khtml::SimplifiedBackwardsTextIterator::advance):
+        Add BR in for <rdar://problem/3917929> fix only if leaving a visible text node.
+        
+        * khtml/editing/visible_units.cpp:
+        (khtml::endOfWord):
+        Do not move left over a paragraph boundary.
+
+2005-02-14  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3686434> Safari uses too much RAM on file upload, leading to malloc errors and crashes (HP printers)
+
+        * khtml/html/html_formimpl.cpp:
+        (DOM::FormDataList::begin): Updated to use a list of FormDataListItem instead of QCString.
+        (DOM::FormDataList::end): Ditto.
+        (DOM::HTMLFormElementImpl::formData): Same here, and also use appendFile rather than appendData
+        when we encounter a path name rather than data.
+        (DOM::HTMLInputElementImpl::appendFormData): Use appendFile here rather than reading the file
+        in; the reading now happens inside WebKit.
+        (DOM::FormDataList::appendString): Updated for FormDataListItem.
+        (DOM::FormDataList::appendFile): Added.
+
+        * ForwardingHeaders/kfileitem.h: Emptied out the file; no longer includes KWQKFileItem.h.
+        * ForwardingHeaders/netaccess.h: Emptied out the file; no longer includes KWQKIONetAccess.h.
+        * kwq/KWQKFileItem.h: Removed.
+        * kwq/KWQKFileItem.mm: Removed.
+        * kwq/KWQKIONetAccess.h: Removed.
+        * kwq/KWQKIONetAccess.mm: Removed.
+        * WebCore.pbproj/project.pbxproj: Removed the 4 files above.
+
+        - small unrelated fix (not reviewed by John)
+
+        * khtml/ecma/kjs_window.cpp: (Window::isSafeScript): Put some logging code outside if statements so it works all the time.
+
+2005-02-14  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
+
+        Fixed nextLinePosition to calculate affinity rather than take it as a parameter.  Propagated the parameter change out to related methods.
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::DeleteSelectionCommand::initializePositionData):
+        (khtml::InsertLineBreakCommand::doApply):
+        (khtml::InsertParagraphSeparatorCommand::doApply):
+        (khtml::InsertTextCommand::input):
+        (khtml::ReplaceSelectionCommand::doApply):
+        (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes):
+        * khtml/editing/selection.cpp:
+        (khtml::Selection::modifyExtendingRightForward):
+        (khtml::Selection::modifyMovingRightForward):
+        (khtml::Selection::modifyExtendingLeftBackward):
+        (khtml::Selection::modifyMovingLeftBackward):
+        (khtml::Selection::modify):
+        (khtml::Selection::validate):
+        * khtml/editing/visible_position.cpp:
+        (khtml::visiblePositionsOnDifferentLines):
+        * khtml/editing/visible_units.cpp:
+        (khtml::rootBoxForLine):
+        (khtml::startOfLine):
+        (khtml::endOfLine):
+        (khtml::inSameLine):
+        (khtml::isStartOfLine):
+        (khtml::isEndOfLine):
+        (khtml::previousLinePosition):
+        (khtml::nextLinePosition):
+        (khtml::previousSentencePosition):
+        (khtml::nextSentencePosition):
+        (khtml::previousParagraphPosition):
+        (khtml::nextParagraphPosition):
+        * khtml/editing/visible_units.h:
+        * khtml/khtml_events.cpp:
+        (khtml::MouseEvent::offset):
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::isPointInsideSelection):
+        (KHTMLPart::selectClosestWordFromMouseEvent):
+        (KHTMLPart::handleMousePressEventTripleClick):
+        (KHTMLPart::handleMousePressEventSingleClick):
+        (KHTMLPart::handleMouseMoveEventSelection):
+        (KHTMLPart::khtmlMouseReleaseEvent):
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::positionForCoordinates):
+        * khtml/rendering/render_block.h:
+        * khtml/rendering/render_br.cpp:
+        (RenderBR::positionForCoordinates):
+        * khtml/rendering/render_br.h:
+        * khtml/rendering/render_container.cpp:
+        (RenderContainer::positionForCoordinates):
+        * khtml/rendering/render_container.h:
+        * khtml/rendering/render_inline.cpp:
+        (RenderInline::positionForCoordinates):
+        * khtml/rendering/render_inline.h:
+        * khtml/rendering/render_object.cpp:
+        (RenderObject::caretRect):
+        (RenderObject::positionForCoordinates):
+        * khtml/rendering/render_object.h:
+        * khtml/rendering/render_replaced.cpp:
+        (RenderReplaced::positionForCoordinates):
+        * khtml/rendering/render_replaced.h:
+        * khtml/rendering/render_text.cpp:
+        (RenderText::positionForCoordinates):
+        * khtml/rendering/render_text.h:
+        * khtml/xml/dom_position.cpp:
+        (DOM::Position::previousCharacterPosition):
+        (DOM::Position::nextCharacterPosition):
+        (DOM::Position::leadingWhitespacePosition):
+        (DOM::Position::trailingWhitespacePosition):
+        * khtml/xml/dom_position.h:
+        * kwq/KWQAccObject.mm:
+        (-[KWQAccObject value]):
+        (-[KWQAccObject accessibilityAttributeValue:]):
+        (-[KWQAccObject doAXLineForTextMarker:]):
+        (-[KWQAccObject doAXTextMarkerRangeForLine:]):
+        (-[KWQAccObject doAXTextMarkerForPosition:]):
+        (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
+        (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
+        (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
+        (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
+        * kwq/KWQKHTMLPart.mm:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge _visiblePositionForPoint:]):
+
+05-02-07  Maciej Stachowiak  <mjs@apple.com>
+
+        Reviewed by Ken and John.
+
+       Re-fixed a specific case of the following:
+
+       <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
+
+       Oddly, Cmd-B, Cmd-U, type some text, return, Cmd-U, Cmd-B, type
+       some text, worked fine. But hitting the second Cmd-B before the
+       second Cmd-U still failed to remove underlining. The reason for
+       this is that our code to compute the style of the current position
+       did not work when you had a typing style and were positioned right
+       at a <br> element. For various reasons, this did not show up for
+       bold and italic, since those are handled through the font manager.
+
+       The following change fixes this - for elements that can't have
+       children, we add the dummy span after the element of interest,
+       rather than as a child of it.
+       
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::selectionComputedStyle): 
+
+2005-02-11  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/3978980> Double Clicking on a line in Mail selected the entire body
+
+        * khtml/editing/visible_units.cpp:
+        (khtml::startOfWord):
+        (khtml::endOfWord):
+        Pay attention to being at the end of a paragraph.
+        
+        (khtml::previousLinePosition):
+        (khtml::nextLinePosition):
+        (khtml::endOfParagraph):
+        Use DOWNSTREAM per recent affinity changes.
+
+2005-02-11  Richard Williamson   <rjw@apple.com>
+
+       Fixed <rdar://problem/3985118> DOM objects not being marshaled on JS->native calls
+
+       Re-factored how 'native' wrappers for JS objects are created.  The interpreter now
+       creates these wrappers.  The WebCore subclass of the interpreter now overrides
+       createLanguageInstanceForValue() and creates a DOM ObjC wrapper for DOM objects.
+
+        * WebCore.pbproj/project.pbxproj:
+        * khtml/ecma/kjs_binding.cpp:
+        (ScriptInterpreter::createLanguageInstanceForValue):
+        * khtml/ecma/kjs_binding.h:
+        * kwq/DOMUtility.mm: Added.
+        (KJS::ScriptInterpreter::createObjcInstanceForValue):
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::getAppletInstanceForView):
+        (getInstanceForView):
+        (KWQKHTMLPart::getEmbedInstanceForView):
+        (KWQKHTMLPart::getObjectInstanceForView):
+
+2005-02-11  Chris Blumenberg  <cblu@apple.com>
+
+       Fixed: <rdar://problem/3937352> Quote level not maintained when copied and pasted within a Mail message
+
+        Reviewed by harrison.
+
+        * khtml/editing/markup.cpp:
+        (khtml::isMailBlockquote): new 
+        (khtml::createMarkup): retain the Mail quote level by including all ancestor mail block quotes
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::positionForCoordinates): default to downstream for the affinity since the affinity is only upstream when the cursor is clicked to the right of a wrapped line
+        * khtml/rendering/render_text.cpp:
+        (RenderText::positionForCoordinates): ditto
+
+2005-02-11  Adele Amchan  <adele@apple.com>
+
+        Reviewed by Darin.
+
+        fix for <rdar://problem/4004004> no need to add body element for xml documents
+
+        In the fix for <rdar://problem/3758785> we decided to add a body element when closing a document 
+        to ensure that the onload handler would fire.  This is unnecessary for xml documents, 
+        so now we also check to see if we're dealing with an html document before adding the body element.
+
+        * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close): 
+
+2005-02-11  Adele Amchan  <adele@apple.com>
+
+        Reviewed by Darin.
+
+        * layout-tests/apple-only/base/www.excite.com/index-expected.txt: updates tests because of custom tag change.
+        * layout-tests/apple-only/base/www.msnbc.com/index-expected.txt:
+        * layout-tests/apple-only/base/www.time.com/index-expected.txt:
+        * layout-tests/apple-only/base/www.travelocity.com/index-expected.txt:
+        * layout-tests/apple-only/base/www.zdnet.com/index-expected.txt:
+        * layout-tests/fast/overflow/003-expected.txt:
+
+        * layout-tests/fast/js/window-object-cross-frame-calls-expected.txt: updated test because of added Body (see rdar://problem/3758785)
+
+=== Safari-186 ===
+
+2005-02-11  Darin Adler  <darin@apple.com>
+
+        Reviewed by John.
+
+        - fixed <rdar://problem/3915449> paths are relative to the old src URL after document.open, which is supposed to clear the document, including the URL
+
+        * khtml/xml/dom_docimpl.h: Added a new openInternal function for use by KHTMLPart.
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::open): Changed to do everything we did before, but also clear the URL and set the
+        base URL based on the enclosing document. This is the basic JavaScript/DOM operation of opening a
+        document, which is supposed to clear the document, including the URL. In the long run we might want
+        to do even more document "resetting and clearing" in here, but this URL clearing is what's needed
+        now to fix the most important problem.
+        (DocumentImpl::openInternal): Moved the old open code in here, except for the "parsing" check, which
+        is unnecessary and inappropriate in the one place we call this.
+
+        * khtml/khtml_part.cpp: (KHTMLPart::begin): Call openInternal instead of open.
+
+2005-02-10  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Hyatt
+
+        Fix for this bug:
+        
+        <rdar://problem/3992092> 8A374: Mail crash while pasting - RemoveNodeCommand
+
+        * khtml/editing/htmlediting.cpp:
+        (khtml::ReplaceSelectionCommand::doApply): Code tried to remove a node that was no longer in 
+        the document. We try to do a good job of detecting all these cases, and generally do. This
+        one was missed. Fixed.
+
+2005-02-10  Darin Adler  <darin@apple.com>
+
+        Reviewed by Harrison.
+
+        - added support needed to fix <rdar://problem/3991225> Format->Style->Underline menu item does not get checked when selected text is underlined
+
+        * kwq/WebCoreBridge.h: Added selectionHasStyle: method.
+        * kwq/WebCoreBridge.mm: (-[WebCoreBridge selectionHasStyle:]): Added. Calls selectionHasStyle on the part.
+
+2005-02-10  Darin Adler  <darin@apple.com>
+
+        Reviewed by Harrison.
+
+        - fixed <rdar://problem/3990484> cursor changes to I-beam when moving over text in widgets, even when selection off via CSS
+
+        * khtml/khtmlview.cpp: (KHTMLView::viewportMouseMoveEvent): Changed code to check canSelect when deciding
+        whether to show an I-beam cursor.
+
+        * khtml/rendering/render_object.h: Added canSelect.
+        * khtml/rendering/render_object.cpp:
+        (selectStartNode): Added. Helper function with the guts of shouldSelect.
+        (RenderObject::canSelect): Added. Like shouldSelect, but does not call the "start selecting" event handler.
+        (RenderObject::shouldSelect): Refactored to use selectStartNode.
+
+        * khtml/css/cssvalues.c: Regnerated with newer gperf.
+
+2005-02-10  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3867759, .mac regression where scrollers don't show up.  Make sure you can set the .width and
+       .height properties on the Image object.
+       
+        Reviewed by John Sullivan
+
+        * khtml/ecma/kjs_html.cpp:
+        (ImageConstructorImp::construct):
+        (Image::getValueProperty):
+        (Image::putValue):
+        (Image::Image):
+        * khtml/ecma/kjs_html.h:
+
+2005-02-10  Ken Kocienda  <kocienda@apple.com>
+
+        Reviewed by Chris
+
+        Fix for this bug:
+        
+        <rdar://problem/3965158> Drag-n-drop within a rich text message sometimes changes the color of the dragged text
+        
+        This change fixes the bug....and much more. Now, for the first time, the paste code can do "smart merging"
+        or "smooshing" of styles during its operation. Since this new code is actively, rather than passively
+        working with styles, it fixes the bug, and lays the groundwork for similar work we need to do to
+        preserve quote levels in Mail.
+
+        * khtml/css/css_valueimpl.cpp:
+        (DOM::CSSMutableStyleDeclarationImpl::clear): New method.
+        (DOM::CSSMutableStyleDeclarationImpl::removeBlockProperties): Ditto.
+        (DOM::CSSMutableStyleDeclarationImpl::removePropertiesInSet): Ditto.
+        (DOM::operator==): Add operator for CSSProperty.
+        * khtml/css/css_valueimpl.h: Declare new functions.
+        * khtml/editing/htmlediting.cpp:
+        (khtml::isEmptyStyleSpan): Improved the test in this function, rolling together the old implementation
+        with some code that did this work inline elsewhere. Sum of the parts is better than either test was by itself.
+        (khtml::isStyleSpan): Check for ID_SPAN.
+        (khtml::ApplyStyleCommand::removeCSSStyle): Call isEmptyStyleSpan. This was the place with an inline implementation before.
+        (khtml::ReplacementFragment::ReplacementFragment): Now takes a DocumentImpl argument. No longer does a "default style"
+        check, but rather calls functions which do a similar check to that, and much more.
+        (khtml::ReplacementFragment::~ReplacementFragment): Deref document, and computed styles.
+        (khtml::ReplacementFragment::styleForNode): New helper. Looks up and returns computed style for a node.
+        (khtml::ReplacementFragment::removeNodePreservingChildren): New helper.
+        (khtml::ReplacementFragment::computeStylesForNodes): New function which computes the "desired" style for
+        every node in the fragment. This information is used later after paste is done as a reference for testing
+        what styles need to be added, and which can be removed as redundant, from all the nodes inserted by the
+        replacement code.
+        (khtml::ReplacementFragment::removeStyleNodes): Clears out all style nodes from the fragment. They are
+        no longer needed after the call to computeStylesForNodes(),
+        (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): Add a document to the call to initialize the
+        command's ReplacementFragment.
+        (khtml::ReplaceSelectionCommand::doApply): Call applyStyleToInsertedNodes() after inserting nodes to make
+        styles come out right.
+        (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes): This is the "style smooshing" function. It 
+        computes the styles that need to be added to each node inserted, comparing the style it gets from just
+        being inserted into its correct destination with the computed "desired style" done in the 
+        ReplacementFragment constructor. It then adds in all the necessary styles, and will also remove redundant styles.
+        * khtml/editing/htmlediting.h: Update declarations and member variables as needed.
+        * khtml/editing/markup.cpp:
+        (khtml::startMarkup): Add additional style annotations to the markup we generate, so that paste code can preserve it.
+        (khtml::markup): Ditto.
+        (khtml::createMarkup): Ditto.
+        
+        These test results are subtly better with this change. They no longer have an unneeded empty span.
+        Visually the same as before.
+        
+        * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt
+        * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt
+        * layout-tests/editing/style/remove-underline-expected.txt
+        * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt
+
+        New tests:
+
+        * layout-tests/editing/style/smoosh-styles-001-expected.txt
+        * layout-tests/editing/style/smoosh-styles-002-expected.txt
+        * layout-tests/editing/style/smoosh-styles-001.html
+        * layout-tests/editing/style/smoosh-styles-002.html
+
+2005-02-10  Darin Adler  <darin@apple.com>
+
+        Reviewed by Adele.
+
+        - fixed <rdar://problem/3974988> WebHTMLView drops scroll wheel events when deltas are 0
+
+        * kwq/WebCoreScrollView.m: (-[WebCoreScrollView autoforwardsScrollWheelEvents]): Added, for Tiger only.
+        For Tiger, removed the override of scrollWheel:, which doesn't work quite right because of how the
+        delta attributes return all 0 for newfangled scrolling events from the new trackpads.
+
+2005-02-10  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/3991532> REGRESSION (Mail): Triple-click on trailing blank line should select previous line but doesn't
+
+        * khtml/css/cssvalues.c:
+        (hash_val):
+        (findValue):
+        * khtml/editing/selection.cpp:
+        (khtml::Selection::validate):
+        Do moral equiavalent of LeftWordIfOnBoundary for PARAGRAPH.
+
+2005-02-10  David Harrison  <harrison@apple.com>
+
+        Reviewed by Darin.
+
+        <rdar://problem/3991848> Double-click on first character selects wrong item
+
+        * khtml/editing/selection.cpp:
+        (khtml::Selection::validate):
+        Honor the fact that clicking on a character positions the cursor on the left side of the character.
+
+2005-02-10  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3980778, repro crash in RootInlineBox::paint.  Make sure that when merging blocks we dirty them for layout
+       up front. That way as we do the merge, we dont attempt to examine the lines in dirtyLinesForChangedChild.
+       
+        Reviewed by mjs
+
+        * khtml/rendering/render_block.cpp:
+        (khtml::RenderBlock::removeChild):
+
+2005-02-10  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3987010, fix a bug that caused the self-collapsing-block-cleared-float bit to never get set correctly.
+       
+        Reviewed by mjs
+
+        * khtml/rendering/render_block.h:
+        (khtml::RenderBlock::MarginInfo::setSelfCollapsingBlockClearedFloat):
+
+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.