Make sure empty tables honor CSS-specified heights when they have no rows or section...
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2005-04-15  David Hyatt  <hyatt@apple.com>
2
3         Make sure empty tables honor CSS-specified heights when they have no rows or sections.  This is done only
4         in strict mode, since it is not compatible with WinIE.
5
6         * khtml/rendering/render_table.cpp:
7         (RenderTable::layout):
8
9 2005-04-15  David Hyatt  <hyatt@apple.com>
10
11         Fix for row 13 of the Acid2 test.  Change HTML comment parsing in strict mode to do proper SGML parsing,
12         checking for pairs of -- and only being willing to close the comment if every -- is paired up.
13         
14         * khtml/html/htmltokenizer.cpp:
15         (khtml::HTMLTokenizer::parseComment):
16
17 2005-04-12  Maciej Stachowiak  <mjs@apple.com>
18
19         Reviewed by Richard.
20
21         - use custom single-threaded malloc for all non-GC JavaScriptCore
22         allocations, for a 9.1% speedup on JavaScript iBench
23          
24         * khtml/ecma/kjs_binding.cpp:
25         (UString::UString):
26         * khtml/ecma/kjs_proxy.cpp:
27         (KJSProxyImpl::evaluate):
28
29 2005-04-15  David Hyatt  <hyatt@apple.com>
30
31         Fix the six pixel gap between rows nine and ten of the Acid2 test.  Make sure that percentage heights that
32         resolve to auto are properly treated as though they have auto height by the self-collapsing block check (as per
33         section 8.3.1, paragraph 7 of the CSS2.1 spec).
34         
35         * khtml/rendering/render_block.cpp:
36         (khtml::RenderBlock::isSelfCollapsingBlock):
37
38 2005-04-15  David Hyatt  <hyatt@apple.com>
39
40         The Acid2 test and the reference rendering both make use of overflow:hidden on the <html> element.  Turns out
41         the CSS2.1 wording for this behavior has been revised (based off WinIE/Mozilla behavior).  Change our behavior
42         to match and make <html> overflow apply to the viewport.
43         
44         * khtml/khtmlview.cpp:
45         (KHTMLView::applyOverflowToViewport):
46         (KHTMLView::layout):
47         * khtml/khtmlview.h:
48         * khtml/rendering/render_box.cpp:
49         (RenderBox::setStyle):
50
51 2005-04-14  David Hyatt  <hyatt@apple.com>
52
53         3258403 and 3258402 can now be fixed.  min/max-width/height support is now complete.  This patch makes them
54         work for positioned elements and enables us to pass row one of the Acid2 test.
55         
56         * khtml/rendering/render_box.cpp:
57         (RenderBox::calcAbsoluteHorizontal):
58         (RenderBox::calcAbsoluteHorizontalValues):
59         (RenderBox::calcAbsoluteVertical):
60         (RenderBox::calcAbsoluteVerticalValues):
61         * khtml/rendering/render_box.h:
62
63 2005-04-12  David Hyatt  <hyatt@apple.com>
64
65         Working on the Acid2 test, Row 1.
66
67         Improve checkChild for the DTD so that it knows what mode a document is in.  This allows it to adhere more
68         strictly to the actual DTD in strict mode and almost strict mode.
69
70         Change the <table>-inside-<p> check so that <table> is disallowed inside <p> in 
71         strict mode and almost strict mode.  This matches Firefox behavior, which allows <table>
72         inside <p> only in quirks mode.
73
74         * khtml/html/dtd.cpp:
75         (DOM::checkChild):
76         * khtml/html/dtd.h:
77         * khtml/html/htmlparser.cpp:
78         (KHTMLParser::insertNode):
79         * khtml/html/htmltokenizer.cpp:
80         (khtml::HTMLTokenizer::parseTag):
81         * khtml/xml/dom_elementimpl.cpp:
82         (ElementImpl::childAllowed):
83
84 2005-04-12  Vicki Murley  <vicki@apple.com>
85
86         Reviewed by Maciej. 
87
88         - fixed <rdar://problem/3760895> Request for including an implementation of the elementFromPoint function
89  
90         * khtml/dom/dom_doc.cpp:
91         (DOM::Document::elementFromPoint):
92         * khtml/dom/dom_doc.h:
93         * khtml/ecma/kjs_dom.cpp:
94         (DOMDocumentProtoFunc::tryCall):
95         * khtml/ecma/kjs_dom.h:
96         (KJS::DOMDocument::):
97         * khtml/ecma/kjs_dom.lut.h:
98         (KJS::):
99         * khtml/xml/dom_docimpl.cpp:
100         (DocumentImpl::elementFromPoint):
101         * khtml/xml/dom_docimpl.h:
102
103 2005-04-12  David Hyatt  <hyatt@apple.com>
104
105         Beginning of work to support the Acid2 CSS test put forward by the Web Standards Project.  Fix
106         our handling of the rel attribute on <link> elements to do a proper tokenization so that stylesheets
107         can be recognized even when other keywords are present in the rel attribute.
108
109         * khtml/html/html_headimpl.cpp:
110         (HTMLLinkElementImpl::HTMLLinkElementImpl):
111         (HTMLLinkElementImpl::parseHTMLAttribute):
112         (HTMLLinkElementImpl::tokenizeRelAttribute):
113         (HTMLLinkElementImpl::process):
114         * khtml/html/html_headimpl.h:
115
116 2005-04-12  John Sullivan  <sullivan@apple.com>
117
118         - fixed these two bugs (I also fixed these on the experimental-ui-branch)
119         <rdar://problem/3154293> Find Next should not scroll page if the next target is already visible
120         <rdar://problem/3121828> scrollToVisible on find cuts off the left part of the view due to needless horiz. scroll
121
122         Reviewed by Chris.
123
124         * kwq/KWQKHTMLPart.mm:
125         (KWQKHTMLPart::jumpToSelection):
126         Trey had written code to address these issues, but left it commented out due to other
127         problems. The other problems no longer occur, so I uncommented Trey's code, and then
128         discovered that I could make it behave more like TextEdit with many fewer lines of
129         code.
130
131 2005-04-08  David Harrison  <harrison@apple.com>
132
133         Reviewed by Dave Hyatt.
134
135         <rdar://problem/4084106> Remove NSAccessibilityForegroundColorTextAttributeWrapper
136
137         * kwq/KWQAccObject.mm:
138         (AXAttributeStringSetStyle):
139         Use NSAccessibilityForegroundColorTextAttribute directly.
140
141 2005-04-05  David Hyatt  <hyatt@apple.com>
142
143         Fix for 4077106, make sure that mouse wheeling in overflow sections uses 40 rather than 10 as the base line
144         step.
145         
146         Reviewed by darin
147
148         * khtml/rendering/render_layer.cpp:
149         (RenderLayer::positionScrollbars):
150         * kwq/KWQScrollBar.mm:
151         (QScrollBar::scroll):
152
153 2005-04-04  Vicki Murley  <vicki@apple.com>
154
155         Reviewed by Maciej.
156
157         - fixed <rdar://problem/3871669> no focus or blur methods on HTML button elements
158
159         * khtml/dom/html_form.cpp:
160         (HTMLButtonElement::focus): 
161         (HTMLButtonElement::blur): 
162         * khtml/dom/html_form.h: 
163         * khtml/ecma/kjs_html.cpp:
164         (KJS::HTMLElementFunction::tryCall):
165         * khtml/ecma/kjs_html.h:
166         (KJS::HTMLElement::):
167         * khtml/ecma/kjs_html.lut.h:
168         (KJS::):
169         * khtml/html/html_formimpl.cpp:
170         (DOM::HTMLButtonElementImpl::blur):
171         (DOM::HTMLButtonElementImpl::focus):
172         * khtml/html/html_formimpl.h:
173
174 === WebCore-415 ===
175
176 2005-03-28  David Harrison  <harrison@apple.com>
177
178         Reviewed by Darin.
179         
180         <rdar://problem/4069161> REGRESSION (8A416-8A419): Safari crash bringing up context menu for non-HTML content in a frame
181
182         * kwq/KWQAccObject.mm:
183         (-[KWQAccObject rendererForView:]):
184         Nil-check node variable instead of rechecking document variable.
185
186 === WebCore-413 ===
187
188 2005-03-27  Darin Adler  <darin@apple.com>
189
190         Reviewed by me, fix by Kida-san.
191
192         - fixed <rdar://problem/4067474> 8A424: Safari immediately quit by Cmd+Ctrll+'D'
193
194         * kwq/WebCoreBridge.mm: (-[WebCoreBridge convertToNSRange:DOM::]):
195         Added nil check.
196
197 === Safari-412 ===
198
199 2005-03-24  Richard Williamson   <rjw@apple.com>
200
201         Fixed <rdar://problem/4052683> After adding/removing stocks from Stocks Widget, stock areas went blank
202
203         The request was being collected before firing it's load handler.
204         We now gc protect the request while it's loading.
205
206         Reviewed by Maciej.
207
208         * khtml/ecma/xmlhttprequest.cpp:
209         (KJS::XMLHttpRequest::send):
210         (KJS::XMLHttpRequest::abort):
211         (KJS::XMLHttpRequest::slotFinished):
212         (KJS::XMLHttpRequestProtoFunc::tryCall):
213
214 === Safari-411 ===
215
216 2005-03-23  Darin Adler   <darin@apple.com>
217
218         Further fix for 4053515.
219
220         Covered cases where text position doesn't lie inside a
221         text node.      
222
223         Reviewed by Richard.
224
225         * khtml/editing/visible_text.cpp:
226         (khtml::TextIterator::setRangeFromLocationAndLength):
227
228 2005-03-23  Richard Williamson   <rjw@apple.com>
229
230         Fixed <rdar://problem/4053515> REGRESSION (Mail): Kotoeri input method reconversion does not work in WebViews
231
232         We now use actual document NSRanges to represent both marked text
233         ranges and selection ranges.
234
235         Reviewed by Ken.
236
237         * khtml/editing/visible_text.cpp:
238         (khtml::TextIterator::rangeLength):
239         (khtml::TextIterator::setRangeFromLocationAndLength):
240         * khtml/editing/visible_text.h:
241         * kwq/WebCoreBridge.h:
242         * kwq/WebCoreBridge.mm:
243         (-[WebCoreBridge convertToNSRange:DOM::]):
244         (-[WebCoreBridge DOM::convertToDOMRange:]):
245         (-[WebCoreBridge selectNSRange:]):
246         (-[WebCoreBridge markedTextDOMRange]):
247         (-[WebCoreBridge markedTextNSRange]):
248
249 2005-03-22  Kevin Decker  <kdecker@apple.com>
250
251         Reviewed by Vicki.
252
253         Fixed <rdar://problem/4062336> REGRESSION (406-407): HTML submenus not working at hrweb.apple.com after going back
254
255         Rolled out the fix for <rdar://problem/4041374> REGRESSION (185-186): unload handlers (at least those added with addEventListener) are broken
256
257         We clearly need a better solution to 4041374. We can't indiscriminately remove event listeners in closeURL() after-all. Since event listeners are registered in a <script> tag, which is evaluated and executed at page load time, this becomes a problem since we don't reevaluate a page's <script> that is in the back/forward cache.  Thus once you leave the page, the listeners are gone for good.  This is the problem.
258
259         * khtml/khtml_part.cpp:
260         (KHTMLPart::closeURL):
261         * khtml/xml/dom_docimpl.cpp:
262         (DocumentImpl::detach): 
263
264 === Safari-410 ===
265
266 2005-03-22  Vicki Murley  <vicki@apple.com>
267
268         - roll the fix for <rdar://problem/4060266> back in, since its 
269         now approved by CCC
270
271         * khtml/editing/visible_text.cpp:
272         (khtml::TextIterator::handleTextBox):
273
274 2005-03-22  Vicki Murley  <vicki@apple.com>
275
276         - roll out the fix for <rdar://problem/4060266> since it was denied by CCC
277
278         * khtml/editing/visible_text.cpp:
279         (khtml::TextIterator::handleTextBox):
280
281 2005-03-22  David Harrison  <harrison@apple.com>
282
283         Reviewed by Darin.
284         
285         <rdar://problem/4060266> Double-clicking in Dictionary.app doesn't work for some words (coming just after style change)
286
287         * khtml/editing/visible_text.cpp:
288         (khtml::TextIterator::handleTextBox):
289         Complete the check of whether to emit space for collapsed space.
290
291 2005-03-22  David Harrison  <harrison@apple.com>
292
293         Reviewed by John.
294         
295         <rdar://problem/4061443> REGRESSION (8A420-8A421): Pasting in the Stickies widget is broken again
296
297         * khtml/editing/htmlediting.cpp:
298         (khtml::positionBeforeContainingSpecialElement):
299         (khtml::positionAfterContainingSpecialElement):
300         Return unchanged Position rather than a null or non-editable one.
301
302 === Safari-409 ===
303
304 2005-03-20  Ken Kocienda  <kocienda@apple.com>
305
306         Reviewed by me
307
308         I made an error in this test earlier. It was not testing what I intended. Fixed.
309
310         * layout-tests/editing/unsupported-content/list-delete-001-expected.txt
311         * layout-tests/editing/unsupported-content/list-delete-001.html
312         
313         New tests:
314
315         * layout-tests/editing/unsupported-content/table-delete-001-expected.txt: Added.
316         * layout-tests/editing/unsupported-content/table-delete-001.html: Added.
317         * layout-tests/editing/unsupported-content/table-delete-002-expected.txt: Added.
318         * layout-tests/editing/unsupported-content/table-delete-002.html: Added.
319         * layout-tests/editing/unsupported-content/table-delete-003-expected.txt: Added.
320         * layout-tests/editing/unsupported-content/table-delete-003.html: Added.
321         * layout-tests/editing/unsupported-content/table-type-after-expected.txt: Added.
322         * layout-tests/editing/unsupported-content/table-type-after.html: Added.
323         * layout-tests/editing/unsupported-content/table-type-before-expected.txt: Added.
324         * layout-tests/editing/unsupported-content/table-type-before.html: Added.
325
326 2005-03-20  Darin Adler  <darin@apple.com>
327
328         Reviewed by Maciej.
329
330         - fixed <rdar://problem/3923903> REGRESSION (164-165): Repro Safari crash in khtml::RenderLayer::scrollToOffset
331
332         * khtml/rendering/render_layer.cpp: (RenderLayer::scrollToOffset): Check canvas for nil.
333
334 2005-03-20  David Harrison  <harrison@apple.com>
335
336         Reviewed by Darin.
337         
338         <rdar://problem/4055127> Dictionary pop-up panel misplaced at beginning of text blocks (breaks double-clicking in Dictionary.app)
339
340         SimplifiedBackwardsTextIterator::advance() needed to not limit to textnodes
341         when checking whether moving back across block boundaries
342
343         VisibleUnits previousBoundary() needed to INIT_DOWN when creating result VisiblePosition
344
345         All editing tests pass.
346
347         * khtml/editing/visible_text.cpp:
348         (khtml::SimplifiedBackwardsTextIterator::advance):
349         * khtml/editing/visible_units.cpp:
350         (khtml::previousBoundary):
351
352 2005-03-20  Darin Adler  <darin@apple.com>
353
354         Reviewed by Harrison.
355
356         - fixed <rdar://problem/4059914> when you select all of a frame's content, need to select the frame in the parent document so it can be easily deleted
357
358         * khtml/khtml_part.h: Added selectFrameElementInParentIfFullySelected.
359         * khtml/khtml_part.cpp:
360         (isFrame): Added.
361         (KHTMLPart::setFocusNodeIfNeeded): Changed to not set focus to a frame; was not what this function was
362         intended to do, and caused trouble when trying to select a frame element.
363         (KHTMLPart::khtmlMouseReleaseEvent): Call selectFrameElementInParentIfFullySelected.
364         (KHTMLPart::selectAll): Call selectFrameElementInParentIfFullySelected.
365         (KHTMLPart::selectFrameElementInParentIfFullySelected): Added. Selects the frame element in the parent
366         if a frame is entirely selected, which makes it easier to delete or replace the frame and is consistent
367         with the changes Maciej made recently for other elements.
368
369         * kwq/WebCoreBridge.mm:
370         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Call selectFrameElementInParentIfFullySelected.
371         (-[WebCoreBridge alterCurrentSelection:verticalDistance:]): Call selectFrameElementInParentIfFullySelected.
372
373 2005-03-20  Darin Adler  <darin@apple.com>
374
375         Reviewed by me, code change by Ken.
376
377         - fixed <rdar://problem/4059852> Deleting from first element of list makes content jump to wrong place
378
379         * khtml/editing/htmlediting.cpp:
380         (khtml::isListStructureNode): Added.
381         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Check for list nodes as well as table nodes.
382
383 2005-03-20  Ken Kocienda  <kocienda@apple.com>
384
385         Reviewed by me
386         
387         Added tests to cover new "unsupported content" editing code.
388
389         * layout-tests/editing/unsupported-content/list-delete-001-expected.txt: Added.
390         * layout-tests/editing/unsupported-content/list-delete-001.html: Added.
391         * layout-tests/editing/unsupported-content/list-delete-002-expected.txt: Added.
392         * layout-tests/editing/unsupported-content/list-delete-002.html: Added.
393         * layout-tests/editing/unsupported-content/list-delete-003-expected.txt: Added.
394         * layout-tests/editing/unsupported-content/list-delete-003.html: Added.
395         * layout-tests/editing/unsupported-content/list-type-after-expected.txt: Added.
396         * layout-tests/editing/unsupported-content/list-type-after.html: Added.
397         * layout-tests/editing/unsupported-content/list-type-before-expected.txt: Added.
398         * layout-tests/editing/unsupported-content/list-type-before.html: Added.
399
400 2005-03-20  Ken Kocienda  <kocienda@apple.com>
401
402         Reviewed by Maciej
403         
404         Fix for this bug:
405         
406         <rdar://problem/4059578> Entire list deleted, and caret disappears, when delete key hit at end of list
407
408         The problem is that a new case in the delete code did not consider when the
409         downstream end node of the selection might be an ancestor of the upstream start
410         node. That is the case in this bug. The downstream end is the body element, and
411         this line of code would delete all the children of the downstream end:
412             removeChildrenInRangePreservingPosition(m_downstreamEnd.node(), 0, 
413                 m_downstreamEnd.offset(), m_upstreamStart);
414
415         The fix is to check for this "is ancestor" case, and do some tree logic to find
416         the right offset of the downstream end node for the call to
417         removeChildrenInRangePreservingPosition().
418
419         * khtml/editing/htmlediting.cpp:
420         (khtml::DeleteSelectionCommand::handleGeneralDelete): Fixed as described.
421
422 2005-03-19  Ken Kocienda  <kocienda@apple.com>
423
424         Reviewed by Maciej
425
426         Fix for this bug:
427        
428         <rdar://problem/4059384> Cannot place insertion point correctly in editable text that avoids floating elements
429
430         Note: I strongly suspect this bug blocks a complete solution to this other Tiger/P2:
431         <rdar://problem/4055748> AX: Dictionary pop-up panel shows at wrong place on specific parts of particular pages
432
433         * khtml/rendering/render_text.cpp:
434         (RenderText::caretRect): Change the y-coordinate used to calculate the available width for a line. Height is wrong.
435         Top of the box containing the text where the click is done is correct. Also, add in the x-offset for the start
436         of the text box when calculating the available width. If this text box is avoiding a float at the y-coordinate
437         for the relevant box, failure to add in the amount of float-avoidance will make the text at the coordinates
438         greater than end-of-line minus float-avoidance ineligible for caret placement.
439
440 2005-03-19  Darin Adler  <darin@apple.com>
441
442         Reviewed by Ken.
443
444         - fixed <rdar://problem/4057594> REGRESSION (125-406): Unrepro crash in HTMLTokenizer::allDataProcessed after hitting Back button
445
446         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::allDataProcessed):
447         To get the part safely after calling end, save a guarded pointer to the view.
448         The old way could end trying to call a virtual function a part that was destroyed.
449
450 2005-03-19  Maciej Stachowiak  <mjs@apple.com>
451
452         Reviewed by Darin.
453
454         <rdar://problem/4053506> Pasting Tables and Cells in Mail does not allow editing before or after
455         <rdar://problem/4005954> REGRESSION (Mail): After copy/paste of content containing list element cannot go back to entering text at left side of page
456         
457         * khtml/editing/htmlediting.cpp:
458         (khtml::maxDeepOffset):
459         (khtml::CompositeEditCommand::removeFullySelectedNodePreservingPosition):
460         (khtml::CompositeEditCommand::removeChildrenInRangePreservingPosition):
461         (khtml::CompositeEditCommand::removeNodePreservingPosition):
462         (khtml::CompositeEditCommand::insertBlockPlaceholder):
463         (khtml::CompositeEditCommand::appendBlockPlaceholder):
464         (khtml::CompositeEditCommand::forceBlockPlaceholder):
465         (khtml::CompositeEditCommand::addBlockPlaceholderIfNeeded):
466         (khtml::isSpecialElement):
467         (khtml::isFirstVisiblePositionInSpecialElementInFragment):
468         (khtml::positionBeforePossibleContainingSpecialElement):
469         (khtml::positionAfterPossibleContainingSpecialElement):
470         (khtml::ApplyStyleCommand::applyInlineStyle):
471         (khtml::DeleteSelectionCommand::initializePositionData):
472         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
473         (khtml::DeleteSelectionCommand::handleGeneralDelete):
474         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
475         (khtml::DeleteSelectionCommand::doApply):
476         (khtml::InsertParagraphSeparatorCommand::doApply):
477         (khtml::ReplacementFragment::ReplacementFragment):
478         (khtml::ReplaceSelectionCommand::doApply):
479         * khtml/editing/htmlediting.h:
480         * khtml/editing/visible_position.cpp:
481         (khtml::isRenderedBR):
482         (khtml::VisiblePosition::initDownstream):
483         (khtml::isLastVisiblePositionInBlock):
484         * khtml/rendering/render_line.cpp:
485         (khtml::RootInlineBox::closestLeafChildForXPos):
486         * khtml/xml/dom_nodeimpl.cpp:
487         (NodeImpl::isBlockFlowOrTable):
488         (NodeImpl::isEditableBlock):
489         (NodeImpl::enclosingBlockFlowOrTableElement):
490         * khtml/xml/dom_nodeimpl.h:
491         * khtml/xml/dom_position.cpp:
492         (DOM::Position::upstream):
493         (DOM::Position::downstream):
494         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt:
495         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt:
496         * layout-tests/editing/deleting/delete-select-all-001-expected.txt:
497         * layout-tests/editing/deleting/delete-select-all-003-expected.txt:
498         * layout-tests/editing/inserting/insert-3786362-fix-expected.txt:
499
500 2005-03-19  John Sullivan  <sullivan@apple.com>
501
502         Reviewed by Darin.
503         
504         - fixed <rdar://problem/4058740> Crash (nil-deref) editing Mail reply 
505         message in KWQKHTMLPart::fontForSelection (MailViewer-723)
506
507         * kwq/KWQKHTMLPart.mm:
508         (KWQKHTMLPart::fontForSelection):
509         Add nil check to loop. It shouldn't be necessary, but this crash trace seems to be
510         running into it. We're not completely certain, but the check is harmless at worst.
511
512 === Safari-408 ===
513
514 2005-03-18  David Harrison  <harrison@apple.com>
515
516         Reviewed by Darin.
517         
518         <rdar://problem/3584942> AX: Safari Accessibility parent-child mismatch
519         
520         Also changed WebKit.
521
522         * kwq/KWQAccObject.mm:
523         (-[KWQAccObject rendererForView:]):
524         New to cover both the WebCore and WebKit NSViews.
525         
526         (-[KWQAccObject _accessibilityParentForSubview:]):
527         Use rendererForView.
528         
529         * kwq/WebCoreFrameView.h:
530         Add WebCoreBridgeHolder protocol to get access to WebKit NSViews.
531
532 2005-03-18  David Harrison  <harrison@apple.com>
533
534         Reviewed by Darin, Ken.
535
536         <rdar://problem/3735625> AX: add AXPress action if an element has an onclick handler
537
538         * khtml/dom/html_form.cpp:
539         (HTMLInputElement::click):
540         * khtml/html/html_elementimpl.cpp:
541         (HTMLElementImpl::click):
542         (HTMLElementImpl::accessKeyAction):
543         * khtml/html/html_elementimpl.h:
544         * khtml/html/html_formimpl.cpp:
545         (DOM::HTMLFormElementImpl::submitClick):
546         (DOM::HTMLButtonElementImpl::click):
547         (DOM::HTMLButtonElementImpl::accessKeyAction):
548         (DOM::HTMLInputElementImpl::click):
549         (DOM::HTMLInputElementImpl::accessKeyAction):
550         (DOM::HTMLInputElementImpl::defaultEventHandler):
551         (DOM::HTMLLabelElementImpl::accessKeyAction):
552         (DOM::HTMLSelectElementImpl::accessKeyAction):
553         (DOM::HTMLTextAreaElementImpl::accessKeyAction):
554         * khtml/html/html_formimpl.h:
555         * khtml/html/html_inlineimpl.cpp:
556         (HTMLAnchorElementImpl::defaultEventHandler):
557         (HTMLAnchorElementImpl::accessKeyAction):
558         * khtml/html/html_inlineimpl.h:
559         * khtml/rendering/render_form.cpp:
560         (RenderFileButton::click):
561         * khtml/rendering/render_form.h:
562         * khtml/xml/dom_docimpl.cpp:
563         (DocumentImpl::defaultEventHandler):
564         * khtml/xml/dom_elementimpl.h:
565         (DOM::ElementImpl::accessKeyAction):
566         * kwq/DOMHTML.mm:
567         (-[DOMHTMLInputElement click]):
568         * kwq/KWQButton.h:
569         * kwq/KWQButton.mm:
570         (QButton::click):
571         * kwq/KWQFileButton.h:
572         * kwq/KWQFileButton.mm:
573         (KWQFileButton::click):
574         
575         Add accessKeyAction parameter about whether to limit to HTMLElementImpl subclasses that JavaScript wants, or to apply to others as well.
576         
577         Add click() parameter about whether to send the mousedown and mouseup events in addition to the click event.
578         
579         * kwq/KWQAccObject.mm:
580         (-[KWQAccObject mouseButtonListener]):
581         Locate a mousedown, mouseup, or click handler in the current element and its ancestors.
582         
583         (-[KWQAccObject actionElement]):
584         (-[KWQAccObject accessibilityIsIgnored]):
585         (-[KWQAccObject accessibilityPerformAction:]):
586         Consider mouseButtonListener.
587
588 2005-03-18  John Sullivan  <sullivan@apple.com>
589
590         Reviewed by Darin.
591         
592         - fixed <rdar://problem/4002164> maps that include start and end 
593         location don't print right from maps.google.com
594
595         I thought I checked this in yesterday but a ChangeLog conflict aborted my checkin
596         without me noticing.
597
598         * khtml/rendering/render_style.cpp:
599         (RenderStyle::diff):
600         flag name changed from _should_correct_text_color to _force_backgrounds_to_white
601         
602         * khtml/rendering/render_style.h:
603         (khtml::RenderStyle::InheritedFlags::operator==):
604         flag name changed from _should_correct_text_color to _force_backgrounds_to_white
605         (khtml::RenderStyle::setBitDefaults):
606         ditto
607         (khtml::RenderStyle::forceBackgroundsToWhite):
608         ditto, and method name changed too
609         (khtml::RenderStyle::setForceBackgroundsToWhite):
610         ditto
611         
612         * khtml/rendering/render_text.cpp:
613         (InlineTextBox::paint):
614         updated for name change; also, compare text against white instead of current bg color
615         because we no longer actually modify the bg color (previously we would always set
616         the bg color to white, so the result is the same)
617         
618         * khtml/xml/dom_docimpl.cpp:
619         (DocumentImpl::recalcStyle):
620         updated for name change
621         
622         * kwq/WebCoreBridge.mm:
623         (-[WebCoreBridge styleSheetForPrinting]):
624         removed this method
625         (-[WebCoreBridge reapplyStylesForDeviceType:]):
626         removed the code that called styleSheetForPrinting; we no longer use a stylesheet
627         for this behavior.
628
629         * khtml/rendering/render_box.cpp:
630         (RenderBox::paintBackgroundExtended):
631         If forceBackgroundsToWhite flag is set, convert background images and
632         background colors to white background color with no background image.
633         
634 2005-03-18  Ken Kocienda  <kocienda@apple.com>
635
636         Reviewed by John
637
638         Fix for this bug:
639         
640         <rdar://problem/4056718> Pasting quotes the entire message
641
642         * khtml/editing/htmlediting.cpp:
643         (khtml::ReplaceSelectionCommand::doApply): After pasting, nodes are moved to the block containing
644         the end of the pasted content in certain cases. This move logic used to stop once it moved all the
645         siblings of the node following the last node of the pasted-in content. This means that block elements
646         could get moved, and if the pasted-in content included a mail blockquote, this could result in
647         one quote level getting added. The fix is to stop the move of nodes once a <br>, block element, or
648         <table> is seen. This only affected one of the many test cases we have for such scenarios, and 
649         the change to that result makes sense given the code change.
650         * layout-tests/editing/pasteboard/paste-text-003-expected.txt: This test result changed in a way that
651         adequately tests the behavior change, so I did not add a new test.
652
653 2005-03-17  Ken Kocienda  <kocienda@apple.com>
654
655         Reviewed by Harrison
656
657         Fix for this bug:
658         
659         <rdar://problem/4051809> 8A413: Cursor-up in a mail message sometimes gets stuck (with specific reproducible case)
660
661         * khtml/rendering/render_text.cpp:
662         (RenderText::positionForCoordinates): Consider two lines: line-above and line-below. If the caret position in line-below
663         was at an x coordinate between half way through the x coordinate of the last character on the line-above and the
664         end of that same character, this bug would happen since the positioning code would assume that it could create a 
665         VisiblePosition with a DOWNSTREAM affinity. Now, I check to see if the character position on the line-above is the 
666         last character on that line, and if it is, I use UPSTREAM as the affinity.
667
668 === Safari-407 ===
669
670 2005-03-17  David Harrison  <harrison@apple.com>
671
672         Reviewed by Darin, Ken.
673
674         * khtml/editing/htmlediting.cpp:
675         (khtml::EditCommandPtr::setEndingSelection):
676         Fixed typo so that it calls setEndingSelection rather than setStartingSelection.
677         Commented out this unused method, tho, since this is late in Tiger.  Proved unused by successful build after temporarily removing method declaration or implemenation.
678
679 2005-03-16  Kevin Decker  <kdecker@apple.com>
680
681         Reviewed by mjs.
682
683         Fixed <rdar://problem/4046665> REGRESSION (403-405): mypage.apple.com login does not work (hits assertion in Development build)
684
685         * kwq/WebCoreBridge.mm:
686         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]): Check always came back false when callers would send a nil NSURL to this method. Now we allow the empty url cases, eg., <frame src="">
687
688 2005-03-16  Darin Adler  <darin@apple.com>
689
690         Reviewed by Maciej.
691
692         - fixed <rdar://problem/4045203> REGRESSION (125-188): Redundant JS imports crash Safari
693
694         * khtml/html/htmltokenizer.h: Take inWRite bool out of NDEBUG ifdef.
695         * khtml/html/htmltokenizer.cpp:
696         (khtml::HTMLTokenizer::HTMLTokenizer): Take inWrite bool management code out of NDEBUG ifdef.
697         (khtml::HTMLTokenizer::write): Ditto. Don't call end if inWrite is true, since it will be called
698         when you return to the body of the outer write() call.
699         (khtml::HTMLTokenizer::allDataProcessed): Don't call end() if inWrite is true for the same reason.
700         (khtml::HTMLTokenizer::finish): Ditto.
701
702         * kwq/KWQWidget.mm: (QWidget::getOuterView): Removed bogus assertion that has been vexing us of late.
703
704 2005-03-16  David Harrison  <harrison@apple.com>
705
706         Reviewed by me (written by Patti Yeh).
707
708         * kwq/KWQAccObject.mm:
709         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
710         Use LeftWordIfOnBoundary instead of RightWordIfOnBoundary.
711
712         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
713         Use RightWordIfOnBoundary instead of LeftWordIfOnBoundary.
714
715 2005-03-16  David Harrison  <harrison@apple.com>
716
717         Reviewed by Maciej.
718
719         <rdar://problem/4054590> AX: Dictionary panel does not work when page is scrolled on Safari
720
721         * kwq/KWQAccObject.mm:
722         (-[KWQAccObject doAXTextMarkerForPosition:]):
723         Add in the view's contentsX and contentsY to the point.
724
725 2005-03-16  David Harrison  <harrison@apple.com>
726
727         Reviewed by Maciej.
728
729         <rdar://problem/4048506> Deleting from beginning of editable div deletes other document elements
730         
731         Also changed WebKit.
732         
733         * khtml/editing/visible_units.h:
734         * khtml/editing/visible_units.cpp:
735         (khtml::startOfEditableContent):
736         (khtml::endOfEditableContent):
737         (khtml::inSameEditableContent):
738         (khtml::isStartOfEditableContent):
739         (khtml::isEndOfEditableContent):
740         New.
741         
742         * kwq/WebCoreBridge.h:
743         * kwq/WebCoreBridge.mm:
744         (-[WebCoreBridge canDeleteRange:]):
745         New.
746
747 2005-03-16  Ken Kocienda  <kocienda@apple.com>
748
749         Reviewed by Darin
750
751         Fix for this bug:
752         
753         <rdar://problem/4042935> undo doesn't work properly during inline input
754
755         * kwq/WebCoreBridge.h: Declare new method below.
756         * kwq/WebCoreBridge.mm:
757         (-[WebCoreBridge replaceMarkedTextWithText:]): New method. Wraps calls to TypingCommand::deleteKeyPressed and
758         TypingCommand::insertText to map the way that international text input works onto the typing undo system.
759
760 2005-03-16  David Harrison  <harrison@apple.com>
761
762         Reviewed by Darin.
763
764         <rdar://problem/4044336> REGRESSION (8A398-8A409): Option-Delete also deletes space to left of deleted word
765
766         * khtml/editing/htmlediting.cpp:
767         (khtml::DeleteSelectionCommand::initializePositionData):
768         - skip smart delete if the selection to delete already starts or ends with whitespace
769         
770         * khtml/khtml_part.cpp:
771         (KHTMLPart::handleMousePressEventDoubleClick):
772         - preserve selection on double-click when range is already selected
773         
774         * khtml/xml/dom_position.cpp:
775         (DOM::Position::leadingWhitespacePosition):
776         (DOM::Position::trailingWhitespacePosition):
777         - fix considerNonCollapsibleWhitespace action (logic was reversed)
778         - add non-breaking space to the non-collapsable ones
779         
780         * kwq/WebCoreBridge.mm:
781         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
782         (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:]):
783         - these methods do not set the selection, so remove calls to setSelectionGranularity
784           
785         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]):
786         (-[WebCoreBridge alterCurrentSelection:verticalDistance:]):
787         - set the granularity back to character
788         - the one exception is that we need to keep word granularity
789           to preserve smart delete behavior when extending by word
790
791 2005-03-15  Maciej Stachowiak  <mjs@apple.com>
792
793         Reviewed by John.
794
795         <rdar://problem/4053266> Pressing return a few times right after a link makes the new blank lines part of the link
796         
797         * khtml/editing/htmlediting.cpp:
798         (khtml::InsertLineBreakCommand::doApply): Use
799         positionOutsideContainingSpecialElement in the right two places.
800         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
801
802         - move all these helper functions higher in the file
803         
804         * khtml/editing/htmlediting.cpp:
805         (khtml::isSpecialElement):
806         (khtml::isFirstVisiblePositionInSpecialElement):
807         (khtml::positionBeforeNode):
808         (khtml::positionBeforeContainingSpecialElement):
809         (khtml::maxRangeOffset):
810         (khtml::isLastVisiblePositionInSpecialElement):
811         (khtml::positionAfterNode):
812         (khtml::positionAfterContainingSpecialElement):
813         (khtml::positionOutsideContainingSpecialElement):
814
815 2005-03-14  Maciej Stachowiak  <mjs@apple.com>
816
817         Reviewed by Ken.
818
819         <rdar://problem/4049925> Pasting right after a link makes pasted content part of the link (without visible style change)
820         
821         * khtml/editing/htmlediting.cpp:
822         (khtml::positionOutsideContainingSpecialElement): made a helper
823         function that computes a position outside the outermost containing
824         special element if the passed in position is right at the start or
825         end of it
826         (khtml::InsertTextCommand::prepareForTextInsertion): use new helper here
827         (khtml::ReplaceSelectionCommand::doApply): use it here too: this is the fix
828         (khtml::positionBeforeNode): made static
829         (khtml::positionBeforeContainingSpecialElement): made static
830         (khtml::positionAfterNode): made static
831         (khtml::positionAfterContainingSpecialElement): made static
832
833 2005-03-15  Richard Williamson   <rjw@apple.com>
834
835         Fixed <rdar://problem/4053658> Crash getting direction at maps.google.com
836
837         Add non nil style() check.
838
839         Reviewed by Dave Harrison.
840
841         * khtml/rendering/render_table.cpp:
842         (RenderTableCell::collapsedRightBorder):
843
844 2005-03-15  Kevin Decker  <kdecker@apple.com>
845
846         Reviewed by John
847         
848         Fixed: <rdar://problem/4041374> REGRESSION (185-186): unload handlers (at least those added with addEventListener) are broken
849
850         The reason why UNLOAD_EVENT wouldn't dispatch was because the code would delete all event listeners at the detach() phase which is prior to closeURL(). 
851
852         This fixes a recent regression from:
853
854  <rdar://problem/3977973> pages on ebay leak referenced JavaScript objects -- over time browsing becomes super-slow
855
856         * khtml/khtml_part.cpp:
857         (KHTMLPart::closeURL): After dispatching event handlers, go ahead and remove them from the DOM. 
858         * khtml/xml/dom_docimpl.cpp:
859         (DocumentImpl::detach): Took out the call to removeAllEventListenersFromAllNodes(). If we remove all event listeners here then when KHTMLPart::closeURL() checks for even listeners, it will never have any because they'll already be gone. 
860
861 2005-03-15  Ken Kocienda  <kocienda@apple.com>
862
863         Reviewed by Vicki
864
865         Fox for this bug:
866         
867         <rdar://problem/4052642> Each delete keystroke is in its own undo group; not included in undo group with other typing
868
869         Calling -[WebCore setSelectedDOMRange:range affinity:] had the result of "closing" any active set of typing
870         keystrokes grouped together in a single undo operation. A change on 27 Jan in WebKit to change the way delete
871         keystrokes are handled made this feature regress. Previous to that change, the backwards delete
872         key went through separate code that is no longer in the tree that did not set the selection in the way
873         it is done now.
874         
875         The solution is to add an extra argument to the set-selection call. The WebCoreBridge now offers this method:
876         -[WebCore setSelectedDOMRange:range affinity:closeTyping:]. Now, callers must indicate whether setting the 
877         selection will act to close typing or not.
878
879         * kwq/WebCoreBridge.h: Changed header accordingly to change method shown below.
880         * kwq/WebCoreBridge.mm:
881         (-[WebCoreBridge setSelectedDOMRange:affinity:closeTyping:]): Added closeTyping argument to this method.
882
883 2005-03-15  John Sullivan  <sullivan@apple.com>
884
885         Reviewed by Vicki.
886         
887         - fixed <rdar://problem/4052246> crash in KWQKHTMLPart::createPart() trying to display local file in frame
888
889         * kwq/KWQKHTMLPart.mm:
890         (KWQKHTMLPart::createPart):
891         Check part for nil before trying to ref. This was probably a longstanding code flaw revealed by
892         the recent security fix.
893
894 2005-03-15  Kevin Decker  <kdecker@apple.com>
895
896         Reviewed by Ken and Maciej.
897
898         New fix for <rdar://problem/3667701> crash in KHTMLPart::jScriptEnabled()
899         
900         The tokenizer has buffers which mean parsing can continue even after loading is supposed to be stopped. If the loading process was aborted, the tokenizer should abort, too.
901
902         * khtml/html/htmltokenizer.cpp:
903         (khtml::HTMLTokenizer::HTMLTokenizer): Initialize loadStopped to false.
904         (khtml::HTMLTokenizer::write): Go ahead and bail out if loadStopped is true. 
905         (khtml::HTMLTokenizer::processToken):
906         * khtml/html/htmltokenizer.h: Added loadStopped flag. Changed the view pointer from a standard pointer to a QGuardedPtr.  This fixes the crash.  Now the tokenizer's handle to the view will now automatically nil-out and never dangle.
907         * khtml/khtml_part.cpp:
908         (KHTMLPart::closeURL): Notify the tokenizer to stop parsing. 
909         * khtml/xml/xml_tokenizer.cpp:
910         (khtml::XMLTokenizer::XMLTokenizer): Initialize loadStopped to false.
911         * khtml/xml/xml_tokenizer.h:
912         (khtml::Tokenizer::stopParsing): Added. 
913
914 2005-03-14  David Harrison  <harrison@apple.com>
915
916         Reviewed by Darin, Maciej.
917
918         <rdar://problem/4046103> REGRESSION (Mail): clicking after style change sets insertion point incorrectly
919         
920         Also fixes crash by adding nil check.
921
922         * khtml/editing/htmlediting.cpp:
923         (khtml::MoveSelectionCommand::doApply):
924         Check the node for nil.
925         
926         * khtml/khtml_part.cpp:
927         (KHTMLPart::khtmlMouseReleaseEvent):
928         Use the node from the event rather than from the selection.
929
930 2005-03-14  Darin Adler  <darin@apple.com>
931
932         Reviewed by Harrison.
933
934         - fixed <rdar://problem/4049776> Seed: Mail: Disable spellcheck leaves red artifacts
935
936         * khtml/xml/dom_docimpl.cpp:
937         (DocumentImpl::DocumentImpl): Set markers list to be "auto-delete" so they don't all leak.
938         (DocumentImpl::removeMarker): Remove markers list for a node when the last marker is removed
939         for that node. Otherwise, we can have empty marker lists for each node forever until the
940         document goes away.
941         (DocumentImpl::removeAllMarkers): Added code to dirty the markers.
942         (DocumentImpl::shiftMarkers): Remove unneeded empty check.
943
944         * kwq/WebCoreBridge.h: Added unmarkAllMisspellings for WebKit.
945         * kwq/WebCoreBridge.mm: (-[WebCoreBridge unmarkAllMisspellings]): Added. Calls removeAllMarkers.
946
947 2005-03-14  Richard Williamson   <rjw@apple.com>
948
949         Fixed <rdar://problem/4027928> Tiger_8A394:Acrobat crashes while tried to remove the subscription errors by clicking on "Would you like to remove the subscription" from Tracker details view pane
950
951         A document may be deleted as a consequence of handling an event,
952         as was the case with Acrobat.app.  Ensure that the document is still valid
953         before passing the event on for further handling.
954
955         * khtml/xml/dom_nodeimpl.cpp:
956         (NodeImpl::dispatchUIEvent):
957
958 2005-03-14  Ken Kocienda  <kocienda@apple.com>
959
960         Reviewed by me
961
962         Added a couple of comments about setChanged() to this code based on my experiences with 4047028.
963
964         * khtml/css/css_valueimpl.cpp:
965         (DOM::CSSMutableStyleDeclarationImpl::addParsedProperties)
966         (DOM::CSSMutableStyleDeclarationImpl::merge)
967
968 2005-03-14  Ken Kocienda  <kocienda@apple.com>
969
970         Reviewed by John
971
972         Fix for this bug:
973         
974         <rdar://problem/4047028> Changing quote levels on stylized text causes it to be sent as colored (Blue). Tiger8A410
975
976         * khtml/css/css_valueimpl.cpp:
977         (DOM::CSSMutableStyleDeclarationImpl::removePropertiesInSet): This function now calls setChanged() at the 
978         end of its loop if any properties were removed. This makes the style system update correctly in response
979         to changes made by this function. The code to paste removes style from the pasted content in a 
980         preliminary step, and the fact that the style system did not update properly left unwanted color
981         declarations in the document.
982
983 2005-03-14  Vicki Murley  <vicki@apple.com>
984
985         - roll out this change for now, since it was denied by CCC
986
987     2005-03-11  David Harrison  <harrison@apple.com>
988         
989         Reviewed by Darin.
990         
991         <rdar://problem/4046602> WebCore invokes undefined behavior when the spell checker isn't running
992
993         * kwq/KWQKHTMLPart.mm:
994         (KWQKHTMLPart::advanceToNextMisspelling):
995         (KWQKHTMLPart::markMisspellings):
996         Nil check checker.
997
998 2005-03-14  Ken Kocienda  <kocienda@apple.com>
999
1000         Reviewed by John
1001
1002         Fix for this bug:
1003         
1004         <rdar://problem/4050403> Mail crashes after pasting and deleting the content of one Excel cell
1005
1006         * khtml/editing/htmlediting.cpp:
1007         (khtml::DeleteSelectionCommand::handleGeneralDelete): Add some null checks to the code. This fixes the crash, although
1008         following the steps described in the bug by John Sullivan on 3/14/05 at 10:49 AM will leave us with a "blank line" in 
1009         the document that cannot be removed (this is actually an empty table). This is undesirable, however, work Maciej is
1010         doing to fix the general-case problem of trying to edit constructs we do not handle well in editing should fix this
1011         particular case, making the deletion of this "blank line" possible. Maciej is doing this work as part of this bug:
1012         <rdar://problem/4036051> Hard to select (and thus delete) an IFRAME in an editable WebView
1013
1014 2005-03-14  Ken Kocienda  <kocienda@apple.com>
1015
1016         Reviewed by Darin
1017
1018         Fix for this bug:
1019         
1020         <rdar://problem/4029632> Mail crashes in DOM::NodeImpl::isBlockFlow() after pasting text with alignment style and BR element from Safari
1021         
1022         The problem is that removeInlineStyle() can remove nodes, and if either the start or end node of the
1023         selection at the time of the call to removeInlineStyle() was in a node that got removed, bad things
1024         would happen. The fix is described below.
1025
1026         * khtml/editing/htmlediting.cpp:
1027         (khtml::maxRangeOffset): Moved this static function to a different place in the file so the code below can use it.
1028         (khtml::ApplyStyleCommand::applyInlineStyle): Calling removeInlineStyle() now has the side effect of 
1029         setting the command's ending selection. Now resets start and end using the ending selection after the call to
1030         removeInlineStyle() as it is done elsewhere in this function.
1031         (khtml::ApplyStyleCommand::removeInlineStyle): Track the removal of the start or end node based on
1032         the positions passed in. If either the start or the end node is removed as part of style removal, 
1033         set an appropriate replacement start or end that is still in the document.
1034
1035 === Safari-406 ===
1036
1037 2005-03-14  Ken Kocienda  <kocienda@apple.com>
1038
1039         Reviewed by Darin
1040
1041         I need to roll out Kevin's change to fix 3667701. It breaks contextual fragments, and hence breaks
1042         paste in editing (among other things).
1043
1044         * khtml/html/htmltokenizer.cpp: Roll out recent change.
1045         (khtml::HTMLTokenizer::write) 
1046         * khtml/html/htmltokenizer.h: Ditto.
1047
1048 2005-03-13  Darin Adler  <darin@apple.com>
1049
1050         Reviewed by Ken and Maciej.
1051
1052         - fixed <rdar://problem/4049040> REGRESSION (403-405): security check prevents user stylesheet from loading (Dictionary.app doesn't work at all!)
1053
1054         * kwq/WebCoreBridge.mm: (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]): Changed to give "applewebdata:"
1055         documents the same privileges to open local files that "file:" documents have.
1056
1057 2005-03-13  Kevin Decker  <kdecker@apple.com>
1058
1059         Reviewed by mjs.
1060         
1061         Fixed: <rdar://problem/3667701> crash in KHTMLPart::jScriptEnabled()
1062         
1063         The problem here was that the tokenizer would continue to receive chunks of data from the loader already
1064         after the view and part had been destroyed.  Situations like this could arise when clicking on another link 
1065         while still loading the current view, or during self test where we rapidly open, load, and close browser
1066         windows very fast. 
1067
1068         * khtml/html/htmltokenizer.cpp: 
1069         (khtml::HTMLTokenizer::write): Simple nil check against the view. 
1070         * khtml/html/htmltokenizer.h: Changed the view pointer from a standard pointer to a QGuardedPtr.  The tokenizer's
1071         handle to the view will now automatically nil-out and never dangle.
1072
1073 2005-03-13  Darin Adler  <darin@apple.com>
1074
1075         Reviewed by John and Ken.
1076
1077         - fixed <rdar://problem/4044347> REGRESSION (Mail): Control-K in particular message moves insertion point to previous line
1078
1079         Tweaked the deleting code, and added three new deleting layout tests to confirm the new code works.
1080
1081         * khtml/editing/htmlediting.cpp:
1082         (khtml::DeleteSelectionCommand::handleSpecialCaseBRDelete): Removed special case with comment that said it was
1083         for the case where a "selection contains only a BR right after a block ended". This code was being triggered in
1084         more cases than just that one, and in all the cases I tested, the general delete code works fine.
1085         (khtml::DeleteSelectionCommand::handleGeneralDelete): Changed the code that decides whether to delete an entire
1086         block to understand the case where the end block is outside the start block, but contains the start block.
1087         In that case, we want to delete the entire block. Not deleting the block was causing us to delete just the <br>,
1088         and not the enclosing <div> in the case in the bug.
1089
1090         * layout-tests/editing/deleting/delete-line-015-expected.txt: Added.
1091         * layout-tests/editing/deleting/delete-line-015.html: Added.
1092         * layout-tests/editing/deleting/delete-line-016-expected.txt: Added.
1093         * layout-tests/editing/deleting/delete-line-016.html: Added.
1094         * layout-tests/editing/deleting/delete-line-017-expected.txt: Added.
1095         * layout-tests/editing/deleting/delete-line-017.html: Added.
1096         * layout-tests/editing/style/smoosh-styles-002-expected.txt: Updated to improved results. With the code change, the deletion
1097         now deletes more than it used to. The old results had an empty text node and <h1> element that were both 0-sized, and now
1098         we delete both of those.
1099
1100 2005-03-13  Darin Adler  <darin@apple.com>
1101
1102         - fixed <rdar://problem/4049172> REGRESSION (403-405): Gmail: text box in "Invite a friend" section overlaps other sections
1103
1104         Rolled out fix for <rdar://problem/3952698> Function buttons do not display properly with Telia Webmail
1105
1106         * khtml/rendering/render_replaced.cpp: (RenderReplaced::calcMinMaxWidth): Back to previous version of this file.
1107
1108 2005-03-12  Maciej Stachowiak  <mjs@apple.com>
1109
1110         Reviewed by Adele.
1111
1112         <rdar://problem/4046144> RSS pages leave a hole in local file security policy (need to revert feed: exemption)
1113         
1114         * kwq/WebCoreBridge.mm:
1115         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]): Revert
1116         emergency workaround for Safari RSS, now that a new Syndication
1117         has been submitted.
1118
1119 2005-03-11  Maciej Stachowiak  <mjs@apple.com>
1120
1121         Reviewed by Kevin.
1122
1123         <rdar://problem/4026787> text typed after a link (pasted or Mail Link to this Page) is part of the link, underlined and colored blue
1124         
1125         The concept of this change is every time you type at the very
1126         start or very end of a link (even if nested in further inner
1127         elements), the typed text goes outside the link instead of inside.
1128         
1129         * khtml/editing/htmlediting.cpp:
1130         (khtml::InsertTextCommand::prepareForTextInsertion): Check whether
1131         we are at the first visible position or last visible position of a
1132         special element. For now this only includes HTML A elements that
1133         are links (i.e. they have an href).
1134         (khtml::isSpecialElement): Helper function that identifies special
1135         elements (for now only links).
1136         (khtml::isFirstVisiblePositionInSpecialElement): Checks if a given DOM
1137         position is equivalent to the first visible position in some containing 
1138         editable special element.
1139         (khtml::positionBeforeNode): Returns the DOM position immediately
1140         before a node.
1141         (khtml::positionBeforeContainingSpecialElement): Gives a DOM
1142         position immediately before the outermost editable containing
1143         special element where the passed-in position is equivalent to the
1144         first visible position.
1145         (khtml::maxRangeOffset): Helper to get the maximum allowed
1146         range/position offset for a node, does the right thing based on
1147         whether the node would use a character offset or child offset.
1148         (khtml::isLastVisiblePositionInSpecialElement): Similar to above,
1149         but for end of node instead of start.
1150         (khtml::positionAfterNode): Ditto.
1151         (khtml::positionAfterContainingSpecialElement): Ditto.
1152
1153         Some layout tests changed - I looked over all the diffs and found
1154         that the only changes were "junk nodes" like empty spans and text
1155         nodes moving from one spot in the tree to another. These changes
1156         are all harmless and do not affect layout or future editing.
1157
1158         * layout-tests/editing/inserting/typing-003-expected.txt:
1159         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt:
1160         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt:
1161         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt:
1162         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt:
1163         * layout-tests/editing/style/remove-underline-expected.txt:
1164         * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt:
1165         * layout-tests/editing/style/remove-underline-in-bold-expected.txt:
1166         * layout-tests/editing/style/typing-style-003-expected.txt:
1167         * layout-tests/editing/style/unbold-in-bold-expected.txt:
1168         * layout-tests/editing/style/underline-expected.txt:
1169
1170 2005-03-11  Adele Amchan  <adele@apple.com>
1171
1172         backing out fix for <rdar://problem/4021711> REGRESSION (125-188): blank pages when browsing forum at cooperativeresearch.org - cached external script problem
1173
1174         This caused the following regressions (that we know of): 
1175         <rdar://problem/4047445> REGRESSION (Safari-400-403?): Some or all page contents sometimes don't appear (macworld.com)
1176         <rdar://problem/4046153> 8a409: Problem loading Citibank page in Safari 2 (403)
1177         <rdar://problem/4047801> REGRESSION (402-403): .Mac homepage links don't work
1178
1179         * khtml/html/htmltokenizer.cpp:
1180         (khtml::HTMLTokenizer::scriptHandler):
1181
1182 2005-03-11  David Harrison  <harrison@apple.com>
1183
1184         Reviewed by Darin.
1185
1186         <rdar://problem/4046602> WebCore invokes undefined behavior when the spell checker isn't running
1187
1188         * kwq/KWQKHTMLPart.mm:
1189         (KWQKHTMLPart::advanceToNextMisspelling):
1190         (KWQKHTMLPart::markMisspellings):
1191         Nil check checker.
1192
1193 2005-03-11  Ken Kocienda  <kocienda@apple.com>
1194
1195         Reviewed by me
1196
1197         * ForwardingHeaders/editing/visible_units.h: Added.
1198
1199 2005-03-11  Ken Kocienda  <kocienda@apple.com>
1200
1201         Reviewed by John
1202
1203         Fix for this bug:
1204         
1205         <rdar://problem/4045521> Hitting return key with full line selected does not add blank line as it should
1206
1207         * khtml/editing/htmlediting.cpp:
1208         (khtml::InsertParagraphSeparatorCommand::doApply): Removed some "special-case" code from this 
1209         function that would look for a selection that started and ended in a different block, and would
1210         then bail right after the deletion of the selection without inserting a paragraph separator.
1211         This was just wrong. So, the code change is removal only. When the general-case code runs instead
1212         of the erroneous special-case code, the bug goes away.
1213         
1214         New tests:
1215         
1216         * layout-tests/editing/inserting/return-key-with-selection-001-expected.txt: Added.
1217         * layout-tests/editing/inserting/return-key-with-selection-001.html: Added.
1218         * layout-tests/editing/inserting/return-key-with-selection-002-expected.txt: Added.
1219         * layout-tests/editing/inserting/return-key-with-selection-002.html: Added.
1220         * layout-tests/editing/inserting/return-key-with-selection-003-expected.txt: Added.
1221         * layout-tests/editing/inserting/return-key-with-selection-003.html: Added.
1222
1223 2005-03-11  David Harrison  <harrison@apple.com>
1224
1225         Reviewed by Darin.
1226
1227         <rdar://problem/4009446> AX: kAXTextMarkerForPositionParameterizedAttribute not working correctly (required for Dictionary pop-up)
1228
1229         * kwq/KWQAccObject.mm:
1230         (-[KWQAccObject accessibilityAttributeValue:]):
1231         Comment changes.
1232         
1233         (-[KWQAccObject doAXTextMarkerForPosition:]):
1234         Dig into widgets.
1235         
1236         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
1237         Use the selection's document instead of the top document, to accommodate frames, etc.
1238         
1239         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
1240         Fixed parameter processing to look for NSValue instead of AXValue.
1241
1242 2005-03-11  Ken Kocienda  <kocienda@apple.com>
1243
1244         Reviewed by Harrison
1245
1246         Fix for this bug:
1247         
1248         <rdar://problem/3972665> 8A360: HTML message partially truncated on left hand side, text-indent from Script Editor
1249         
1250         This was fixed, then regressed with Harrison's fix for this bug:
1251         
1252         <rdar://problem/3948453> Can't type accented chars as first character in Stickies widget
1253
1254         * khtml/editing/htmlediting.cpp:
1255         (khtml::ReplaceSelectionCommand::doApply): My now addresses both problems in a way that they no longer
1256         clobber each other.
1257
1258 2005-03-10  Ken Kocienda  <kocienda@apple.com>
1259
1260         Reviewed by John
1261
1262         Fix for these bugs:
1263         
1264         <rdar://problem/4045511> Copying and pasting end-of-paragraph selection puts insertion point in wrong place
1265         <rdar://problem/4045513> Copying and pasting selection starting at end of paragraph can incorrectly remove line break
1266
1267         The copy/paste code before this patch had no notion of a "logical newline" at the start of the selection. We have
1268         had a similar notion for "logical newline" at the end of the selection for quite some time. To fix these bugs, we
1269         need to introduce the same idea for selection starts.
1270
1271         * khtml/editing/htmlediting.cpp:
1272         (khtml::ReplacementFragment::ReplacementFragment): Process the "logical newline" at start as we write it out
1273         in markup. Set the bit we added to this object to signify we have such a newline.
1274         (khtml::ReplaceSelectionCommand::doApply): Many, many changes to introduce the new "logical newline" at start concept.
1275         I also tried to simply the code that sets the start position for inserting content to be pasted. I also improved a
1276         weakness in the smart-paste code. Now, we check before and after the paste for whether we need to add a leading or
1277         trailing space. The code previous to this patch only did a "before" check, with the result that we sometimes added
1278         a second space. In other words, the code did not realize that DOM changes done by pasting could cause formerly
1279         unrendered whitespace to become rendered. Also moved line placeholder clean up code to its own function.
1280         (khtml::ReplaceSelectionCommand::removeLinePlaceholderIfNeeded): New helper that further refines the notion
1281         of when we can remove a line placeholder. The definition is now, "If a line placeholder is at the visible start
1282         and visible end of its line, keep it; otherwise remove it".
1283         * khtml/editing/htmlediting.h: Declare new functions. Rework inlines in ReplacementFragment class to account for
1284         addition of new "logical newline" at start concept.
1285         (khtml::ReplacementFragment::hasInterchangeNewlineAtStart): New accessor.
1286         (khtml::ReplacementFragment::hasInterchangeNewlineAtEnd): Renamed from hasInterchangeNewline(), since before we
1287         only had a bit for the end, hence we did not need to distinguish it from the start.
1288         * khtml/editing/markup.cpp:
1289         (khtml::createMarkup): Added code to detect and write out markup for cases where we have a "logical newline" at start.
1290         * khtml/xml/dom2_rangeimpl.cpp:
1291         (DOM::RangeImpl::startPosition): New helper.
1292         (DOM::RangeImpl::endPosition): Ditto.
1293         * khtml/xml/dom2_rangeimpl.h: Declare new helpers.
1294         
1295         New tests:
1296         * layout-tests/editing/pasteboard/paste-line-endings-001-expected.txt: Added.
1297         * layout-tests/editing/pasteboard/paste-line-endings-001.html: Added.
1298         * layout-tests/editing/pasteboard/paste-line-endings-002-expected.txt: Added.
1299         * layout-tests/editing/pasteboard/paste-line-endings-002.html: Added.
1300         * layout-tests/editing/pasteboard/paste-line-endings-003-expected.txt: Added.
1301         * layout-tests/editing/pasteboard/paste-line-endings-003.html: Added.
1302         * layout-tests/editing/pasteboard/paste-line-endings-004-expected.txt: Added.
1303         * layout-tests/editing/pasteboard/paste-line-endings-004.html: Added.
1304         * layout-tests/editing/pasteboard/paste-line-endings-005-expected.txt: Added.
1305         * layout-tests/editing/pasteboard/paste-line-endings-005.html: Added.
1306         * layout-tests/editing/pasteboard/paste-line-endings-006-expected.txt: Added.
1307         * layout-tests/editing/pasteboard/paste-line-endings-006.html: Added.
1308         * layout-tests/editing/pasteboard/paste-line-endings-007-expected.txt: Added.
1309         * layout-tests/editing/pasteboard/paste-line-endings-007.html: Added.
1310         * layout-tests/editing/pasteboard/paste-line-endings-008-expected.txt: Added.
1311         * layout-tests/editing/pasteboard/paste-line-endings-008.html: Added.
1312         * layout-tests/editing/pasteboard/paste-line-endings-009-expected.txt: Added.
1313         * layout-tests/editing/pasteboard/paste-line-endings-009.html: Added.
1314         * layout-tests/editing/pasteboard/paste-line-endings-010-expected.txt: Added.
1315         * layout-tests/editing/pasteboard/paste-line-endings-010.html: Added.
1316
1317 === Safari-405 ===
1318
1319 2005-03-10  Darin Adler  <darin@apple.com>
1320
1321         Reviewed by Richard.
1322
1323         - fixed <rdar://problem/4037700> Every character typed causes stat call for /usr/share/icu/icudt32b_char.brk
1324
1325         * khtml/rendering/render_text.cpp: (getCharacterBreakIterator): Set boolean "got iterator" to true.
1326
1327 2005-03-10  Darin Adler  <darin@apple.com>
1328
1329         Reviewed by Ken.
1330
1331         - fixed <rdar://problem/4042867> "Bigger" changes the font size of too much text when the selection is on a style-change boundary
1332
1333         * khtml/editing/htmlediting.cpp: (khtml::ApplyStyleCommand::applyRelativeFontStyleChange):
1334         Advance out of the starting text node if we're at the end of it.
1335
1336 2005-03-10  Darin Adler  <darin@apple.com>
1337
1338         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::write): Fixed assertion for nested calls to write.
1339
1340 2005-03-10  David Harrison  <harrison@apple.com>
1341
1342         Reviewed by Darin.
1343
1344         <rdar://problem/4032346> REGRESSION (Mail): changing 1st line of a URL that wraps to two lines doesn't always update 2nd line
1345
1346         * khtml/rendering/bidi.cpp:
1347         (khtml::RenderBlock::matchedEndLine):
1348         Look at first clean line in case line wrap implicitly dirtied it.
1349
1350 2005-03-10  Maciej Stachowiak  <mjs@apple.com>
1351
1352         Reviewed by Vicki.
1353
1354         <rdar://problem/4046018> REGRESSION (TOT): RSS pages don't display anything
1355         
1356         * kwq/WebCoreBridge.mm:
1357         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]): Exempt
1358         feed: and feeds: pages from the local file security check.
1359
1360 2005-03-10  Darin Adler  <darin@apple.com>
1361
1362         Change written by Steve Peters, reviewed by me.
1363
1364         - fixed <rdar://problem/4045924> improve compareBoundaryPoints to make style changes faster
1365
1366         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::compareBoundaryPoints):
1367         Do early outs in a couple of the loops to make things faster.
1368
1369 2005-03-10  Jens Alfke  <jens@apple.com>
1370
1371         Reviewed by rjw.
1372
1373         Fixes <rdar://problem/4040848> "REGR: Sun security-check demo applet does not load". My earlier fix for 3603191 deferred loading the applet until the </applet> tag is reached, so all <param>s will be available. Unfortunately that meant that if the </applet> tag was missing, the applet would never load at all. So instead, the loading needs to happen when the ID_APPLET tag is popped from the parser stack for any reason.
1374
1375         I've restored the old NodeImpl::closeRenderer() method. Except it's now virtual, with a no-op base implementation, and is overridden by HTMLAppletElementImpl, replacing its setAllParamsAvailable method that I added a few weeks ago when fixing 3603191.
1376
1377         This ensures that the applet will get loaded even if there is no explicit </applet> tag.
1378
1379         The changes to htmlparser.cpp back out my earlier change and restore the lines that were deleted on 8/3/04 when the old closeRenderer was removed.
1380
1381         * khtml/html/html_objectimpl.cpp:
1382         (HTMLAppletElementImpl::closeRenderer):
1383         * khtml/html/html_objectimpl.h:
1384         * khtml/html/htmlparser.cpp:
1385         (KHTMLParser::insertNode):
1386         (KHTMLParser::processCloseTag):
1387         (KHTMLParser::popOneBlock):
1388         * khtml/xml/dom_nodeimpl.h:
1389         (DOM::NodeImpl::closeRenderer):
1390
1391 2005-03-10  Ken Kocienda  <kocienda@apple.com>
1392
1393         Reviewed by John
1394
1395         Fix for this bug:
1396         
1397         <rdar://problem/4024929> REGRESSION (Mail): Pasting text with multiple reply levels removes one level instead of all
1398         
1399         The code to figure out which node to use to merge into an existing line did not drill into the first inline element
1400         as needed to make the feature work as user expect. Instead, it looked at the first node, and if it was a block, it
1401         skipped that node. This worked for some cases (including the important "paste-as-quotation" case) but obviously 
1402         doesn't work for content quoted more than once.
1403         
1404         Now, mergeStartNode() will look for the first node in pasted content that is not a block. It will now also look
1405         for nodes specially marked by Mail as a node added to make "Paste As Quotation" work. It won't skip those. 
1406         
1407         NOTE: This change will break Mail's "Paste As Quotation" feature for TOT WebKit users, but this is only a temporary 
1408         problem that will exist until we sync up with Mail's pending change to mark nodes as needed in its pasteAsQuotation:
1409         method.
1410         
1411         * khtml/editing/html_interchange.h: Add ApplePasteAsQuotation constant used to check for "marked" blockquotes.
1412         * khtml/editing/htmlediting.cpp:
1413         (khtml::ReplacementFragment::mergeStartNode): Look for first node that is either not a block or is marked as
1414         an ApplePasteAsQuotation node.
1415         (khtml::isMailPasteAsQuotationNode): New helper that looks for nodes marked with ApplePasteAsQuotation.
1416         * khtml/editing/htmlediting.h: Updated header for new function.
1417         
1418         This test result changed is an acceptable way.
1419         
1420         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
1421         * layout-tests/editing/pasteboard/paste-text-013.html
1422
1423         NOTE: This change causes a regression in this layout test:
1424
1425         * layout-tests/editing/pasteboard/paste-text-013.html
1426
1427         This problem will need to be fixed separately, and this bug has been filed to track this problem:
1428         <rdar://problem/4045513> Copying and pasting selection starting at end of paragraph can incorrectly remove line break
1429
1430 2005-03-09  Maciej Stachowiak  <mjs@apple.com>
1431
1432         Reviewed by Richard.
1433
1434         <rdar://problem/4040776> Dashboard (Weather widget) is a memory hog
1435         
1436         Change things around so the event listeners for XMLHttpRequest
1437         mark their JS listener objects instead of holding a hard
1438         reference, to avoid an unbreakable reference cycle.
1439
1440         * khtml/ecma/kjs_events.cpp:
1441         (JSAbstractEventListener::JSAbstractEventListener):
1442         (JSAbstractEventListener::~JSAbstractEventListener):
1443         (JSAbstractEventListener::handleEvent):
1444         (JSAbstractEventListener::eventListenerType):
1445         (JSUnprotectedEventListener::JSUnprotectedEventListener):
1446         (JSUnprotectedEventListener::~JSUnprotectedEventListener):
1447         (JSUnprotectedEventListener::listenerObj):
1448         (JSUnprotectedEventListener::windowObj):
1449         (JSUnprotectedEventListener::mark):
1450         (JSEventListener::JSEventListener):
1451         (JSEventListener::~JSEventListener):
1452         (JSEventListener::listenerObj):
1453         (JSEventListener::windowObj):
1454         (JSLazyEventListener::JSLazyEventListener):
1455         * khtml/ecma/kjs_events.h:
1456         * khtml/ecma/kjs_html.h:
1457         * khtml/ecma/kjs_window.cpp:
1458         (Window::getJSEventListener):
1459         (Window::getJSUnprotectedEventListener):
1460         * khtml/ecma/kjs_window.h:
1461         * khtml/ecma/xmlhttprequest.cpp:
1462         (KJS::XMLHttpRequest::putValue):
1463         (KJS::XMLHttpRequest::mark):
1464         * khtml/ecma/xmlhttprequest.h:
1465         * khtml/khtml_part.h:
1466
1467 2005-03-06  Maciej Stachowiak  <mjs@apple.com>
1468
1469         Reviewed by Darin.
1470
1471         <rdar://problem/4005575> Arbitrary file disclosure vulnerability due to ability to load local html from remote content
1472         
1473         * khtml/ecma/kjs_html.cpp:
1474         (KJS::HTMLDocument::putValue):
1475         * khtml/ecma/kjs_window.cpp:
1476         (Window::put):
1477         (WindowFunc::tryCall):
1478         (Location::put):
1479         (LocationFunc::tryCall):
1480         * khtml/khtml_part.cpp:
1481         (KHTMLPart::begin):
1482         (KHTMLPart::scheduleLocationChange):
1483         (KHTMLPart::slotRedirect):
1484         (KHTMLPart::processObjectRequest):
1485         * khtml/khtml_part.h:
1486         * khtml/khtmlpart_p.h:
1487         * kwq/KWQKHTMLPart.mm:
1488         (KWQKHTMLPart::openURLRequest):
1489         (KWQKHTMLPart::urlSelected):
1490         (KWQKHTMLPart::createPart):
1491         * kwq/KWQKHTMLPartBrowserExtension.mm:
1492         (KHTMLPartBrowserExtension::createNewWindow):
1493         * kwq/WebCoreBridge.h:
1494         * kwq/WebCoreBridge.mm:
1495         (hasCaseInsensitivePrefix):
1496         (-[WebCoreBridge didNotOpenURL:pageCache:]):
1497         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]):
1498
1499 2005-03-09  Richard Williamson   <rjw@apple.com>
1500
1501         Fixed <rdar://problem/4032938> Safari: text layout for MS P Gothic font is corrupted
1502
1503         Remove our hacked special case now we have our own cache of
1504         which fonts are fixed  pitch.
1505
1506         Reviewed by Maciej.
1507
1508         * kwq/KWQFont.mm:
1509         (QFont::isFixedPitch):
1510
1511 2005-03-09  David Harrison  <harrison@apple.com>
1512
1513         Reviewed by Maciej.
1514
1515         <rdar://problem/4037141> REGRESSION (Mail): Pasting deletes preceding blank lines with certain steps
1516
1517         * khtml/editing/htmlediting.cpp:
1518         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
1519         Add check for anonymous text after blocks.
1520
1521 2005-03-08  Ken Kocienda  <kocienda@apple.com>
1522
1523         Reviewed by John
1524
1525         Fix for these bugs:
1526         
1527         <rdar://problem/4039661> crash in ApplyStyleCommand::applyBlockStyle pasting contents of webpage into Mail or Blot
1528         <rdar://problem/4039672> hang in moveParagraphContentsToNewBlockIfNecessary after pasting contents of webpage into Blot
1529
1530         * khtml/editing/htmlediting.cpp:
1531         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Fix for 4039672. Iteration needs to do
1532         a traverseNextSibling(), not a traverseNextNode(). The latter might iterate into a child that already got moved, and
1533         the code can infinite loop as a result.
1534         (khtml::ApplyStyleCommand::applyBlockStyle): Fix for 4039661. This function iterates over a set of nodes to apply
1535         block styles. Before, the iteration would go from the start to the end of the selection, and apply block styles
1536         as it went. However, the act of applying style could confuse the iteration. Now I iterate and store the relevant
1537         nodes in QPtrList before doing any style manipulation, and then iterate that set of nodes.
1538
1539 2005-03-08  Darin Adler  <darin@apple.com>
1540
1541         Change written by Hyatt, reviewed by me.
1542
1543         - fixed <rdar://problem/3952698> Function buttons do not display properly with Telia Webmail
1544
1545         * khtml/rendering/render_replaced.cpp: (RenderReplaced::calcMinMaxWidth):
1546         Only use a minWidth of 0 for images with a percentage value. Other replaced elements aren't scalable
1547         so their minWidth should be their calculated width. This has been wrong all along, but it's a relatively
1548         safe change because it only affects replaced elements' min-width.
1549
1550 2005-03-08  David Harrison  <harrison@apple.com>
1551
1552         Reviewed by Ken.
1553
1554         <rdar://problem/4039006> REGRESSION (Mail): Command-left-arrow goes to the start of the wrong line in particular message
1555
1556         * khtml/editing/visible_units.cpp:
1557         (khtml::startOfLine):
1558         Use firstLeafChild() instead of firstChild().
1559
1560 2005-03-08  Richard Williamson   <rjw@apple.com>
1561
1562         Fixed by Tom Madden.
1563
1564         Fixed <rdar://problem/4038586> 8A402: Osaka-Mono text overlaps when typing with input method
1565
1566         We weren't clearing the "all ascii" flag when setting text on
1567         RenderText.
1568
1569         Reviewed by Richard Williamson.
1570
1571         * khtml/rendering/render_text.cpp:
1572         (RenderText::setText):
1573
1574 2005-03-08  Darin Adler  <darin@apple.com>
1575
1576         Reviewed by Ken and Maciej.
1577
1578         - fixed <rdar://problem/3988809> REGRESSION (Mail): wide space characters are turned into plain old spaces when typed or pasted
1579
1580         Changed the few places where it matters to use a "collapsible whitespace" concept instead of
1581         the general whitespace concept. This means treating only ' ' and '\n' specially instead of
1582         including other space characters, which matches what the space-collapsing logic does in RenderText,
1583         although it really needs to behave differently based on whitespace mode.
1584
1585         * khtml/editing/visible_text.h: (khtml::isCollapsibleWhitespace): Added. This returns true only for
1586         ' ' and '\n' since they are the only characters collapsed once text is in the DOM. But really it
1587         can't do the job ignoring white-space mode, so some day it must go.
1588
1589         * khtml/editing/html_interchange.cpp: (convertHTMLTextToInterchangeFormat): Changed to use
1590         isCollapsibleWhitespace and removed unnecessary calls to latin1().
1591
1592         * khtml/editing/htmlediting.cpp:
1593         (khtml::isNBSP): Removed unnecessary creation/destruction of QChar each time this is called.
1594         (khtml::nextCharacterIsCollapsibleWhitespace): Renamed from isWS and changed to use isCollapsibleWhitespace.
1595         (khtml::DeleteSelectionCommand::fixupWhitespace): Use isCollapsibleWhitespace instead of isWS,
1596         since we only want to do our NBSP tricks for collapsible whitespace.
1597         (khtml::InsertTextCommand::input): Changed use of isTab to instead say == "\t" since that does the
1598         same thing and is arguably just as clear. Changed use of isWS to == " " since the input text can't
1599         include any "\n" characters, and really a plain old space is the only collapsible thing that can
1600         be passed in. Use isCollapsibleWhitespace instead of isWS since we want to do NBSP tricks only for
1601         collapsible whitespace, not all whitespace.
1602         (khtml::InsertTextCommand::insertSpace): Use isCollapsibleWhitespace instead of isWS since we want
1603         to do NBSP tricks only for collapsible whitespace, not all whitespace.
1604         (khtml::RebalanceWhitespaceCommand::doApply): Ditto.
1605
1606         * khtml/xml/dom_position.h: Changed treatNBSPAsWhiteSpace parameters to considerNonCollapsibleWhitespace
1607         parameters. The most common callers are only interested in collapsible whitespace, and the smart copy
1608         and paste callers want to include all whitespace, including non-breaking spaces and all the Unicode spaces.
1609         * khtml/xml/dom_position.cpp:
1610         (DOM::Position::leadingWhitespacePosition): Rename the parameter, and use either QChar::isSpace or
1611         isCollapsibleWhitespace depending on the boolean passed in.
1612         (DOM::Position::trailingWhitespacePosition): Ditto.
1613
1614 2005-03-07  John Sullivan  <sullivan@apple.com>
1615
1616         Reviewed by Darin.
1617         
1618         - <rdar://problem/4040868> REGRESSION (Mail, 403-403+): Drag and drop deletes text, 
1619         many other bad editing problems
1620
1621         * khtml/rendering/render_text.cpp:
1622         (RenderText::caretMaxOffset):
1623         A "-" should have been a "+" in this method that was tweaked an hour ago. Editing
1624         was completely horked.
1625
1626 2005-03-07  Richard Williamson   <rjw@apple.com>
1627
1628         Additional nil check from fix for 4040749.
1629
1630         * khtml/rendering/render_box.cpp:
1631         (RenderBox::setStyle):
1632
1633 2005-03-07  Richard Williamson   <rjw@apple.com>
1634
1635         Additional nil check from fix for 4040749.
1636
1637         * khtml/rendering/render_layer.cpp:
1638         (RenderLayer::updateLayerPosition):
1639
1640 2005-03-07  David Harrison  <harrison@apple.com>
1641
1642         Reviewed by Darin.
1643
1644         <rdar://problem/4033202> REGRESSION (Mail): Can't arrow up at a particular spot in a particular Mail message
1645
1646         Doublecheck that new position is really on a different line, because the VisiblePosition constructor does not.
1647         Filed <rdar://problem/4040763> for that problem.
1648
1649         * khtml/editing/visible_units.cpp:
1650         (khtml::previousLinePosition):
1651
1652 2005-03-07  Richard Williamson   <rjw@apple.com>
1653
1654         Fixed <rdar://problem/4040749> REGRESSION (125-178): opacity style not working, breaks fading images on okcupid.com
1655
1656         When layers are dynamically created/removed as a result of changing opacity they weren't being correctly
1657         sized and positioned.  This happens whenever opacity goes from < 1 to 1.
1658
1659         Reviewed by Darin.
1660
1661         * khtml/rendering/render_box.cpp:
1662         (RenderBox::setStyle):
1663         * khtml/rendering/render_layer.cpp:
1664         (RenderLayer::updateLayerPosition):
1665
1666 2005-03-07  Christy Warren  <kali@apple.com>
1667
1668         Reviewed by Darin
1669
1670         * khtml/rendering/render_text.cpp:
1671         (RenderText::caretMinOffset): modified to handle BIDI case by checking all text boxes for min offset
1672         (RenderText::caretMaxOffset): modified to handle BIDI case by checking all text boxes for max offset
1673
1674 2005-03-07  David Harrison  <harrison@apple.com>
1675
1676         Reviewed by Ken.
1677
1678         <rdar://problem/4029225> REGRESSION (Mail): Crash if hit return after dragging in attachment - DeleteSelectionCommand::initializePositionData
1679
1680         Work around the fact that the height() of a BR is 0 if there are no text elements on the line, even if there are replaced elements.
1681         Filed <rdar://problem/4040358> RenderBR height() is not accurate.
1682         
1683         * khtml/editing/htmlediting.cpp:
1684         (khtml::ReplaceSelectionCommand::doApply):
1685         When height is 0, double check that the placeholder is the first position on the line.
1686
1687 === Safari-403 ===
1688
1689 2005-03-07  Ken Kocienda  <kocienda@apple.com>
1690
1691         Reviewed by Vicki
1692     
1693         Fix for this bug:
1694         
1695         <rdar://problem/4040136> Expose SPI for WebCore's functions to create document fragments from plain text and markup strings
1696
1697         * kwq/DOMHTML.mm: Add two new SPI functions.
1698         (-[DOMHTMLDocument _createDocumentFragmentWithMarkupString:baseURLString:])
1699         (-[DOMHTMLDocument _createDocumentFragmentWithText:])
1700         * kwq/DOMPrivate.h: Declare the new SPI here, a privately-exported header, so Mail can make use of it.
1701
1702 2005-03-07  Ken Kocienda  <kocienda@apple.com>
1703
1704         Reviewed by John
1705
1706         Fix for this bug:
1707         
1708         <rdar://problem/4039676> REGRESSION (Mail): in reply, <cr> on pasted text (without trailing newline) is eaten when pasted above date
1709
1710         * khtml/editing/htmlediting.cpp:
1711         (khtml::ReplaceSelectionCommand::doApply): Code to "eat" a <br> element, that was creating an otherwise empty line, was running
1712         when it should not. If the content being pasted in does not end in a "logical" newline itself, then the <br> already
1713         in the content needs to be preserved. A simple one-line change now sees to this.
1714         
1715         * layout-tests/editing/pasteboard/paste-text-010-expected.txt: This test now has an extra, but harmless,
1716         <br> at the end of a paragraph. This makes sense given the code change.
1717
1718         New test:
1719         * layout-tests/editing/pasteboard/paste-text-018-expected.txt: Added.
1720         * layout-tests/editing/pasteboard/paste-text-018.html: Added.
1721
1722 2005-03-07  Ken Kocienda  <kocienda@apple.com>
1723
1724         Reviewed by John
1725
1726         Fix for this bug:
1727         
1728         <rdar://problem/4035648> REGRESSION (Mail): line feed in source HTML file causes bad copy/paste behavior
1729
1730         The createMarkup() function in markup.cpp iterates over the nodes in a range,
1731         and does some bookkeeping to figure out when to add close tags to the markup.
1732         Some code added at the start of the loop to prevent markup from being written
1733         for unrendered nodes short-circuited the rest of the loop, and so prevented
1734         the close-tag-writing code from running when it should.
1735
1736         This is why the "plain" text wound up inside of the bold tag in the example
1737         above. The addition of the unrendered return character caused an incorrect
1738         delay in the close tag for the bold element from being written out, with the
1739         result being that it wound up including additional content.
1740
1741         The fix is to add checks for node renderers throughout the loop at the points
1742         where markup is written out for each node. This allows the additional close
1743         tag logic to run as needed.
1744
1745         All layout tests pass with this change.
1746
1747         * khtml/editing/markup.cpp:
1748         (khtml::createMarkup)
1749
1750         New test:
1751         
1752         * layout-tests/editing/pasteboard/paste-4035648-fix-expected.txt: Added.
1753         * layout-tests/editing/pasteboard/paste-4035648-fix.html: Added.
1754
1755 2005-03-06  Christy Warren  <kali@appple.com>
1756
1757         Reviewed by Ken
1758
1759         * khtml/rendering/render_text.cpp:
1760         (lastRendererOnPrevLine): helper for RenderText::caretRect
1761         (RenderText::caretRect): added code to properly handle bidi ordered text boxes
1762
1763 2005-03-06  Christy Warren  <kali@apple.com>
1764
1765         Reviewed by Darin.
1766
1767         * khtml/editing/visible_position.cpp: Eliminated code that cuts off searching through the text boxes based on an assumption that breaks under bidi
1768         (khtml::VisiblePosition::isCandidate):
1769         * kwq/KWQFontMetrics.mm:
1770         (QFontMetrics::checkSelectionPoint): Made the initialization of the WebCoreStyle honor the reversed flag
1771
1772 2005-03-05  John Sullivan  <sullivan@apple.com>
1773
1774         Reviewed by Maciej.
1775         
1776         - fixed <rdar://problem/4038417> Mail crashed in StyleChange::checkForLegacyHTMLStyleChange 
1777         when composing a reply
1778
1779         * khtml/editing/htmlediting.cpp:
1780         (khtml::StyleChange::checkForLegacyHTMLStyleChange):
1781         Added missing nil check.
1782
1783 2005-03-05  Darin Adler  <darin@apple.com>
1784
1785         Reviewed by Don.
1786
1787         - fixed <rdar://problem/4038478> Crash in renderer viewing RSS feed at feed://wvs.topleftpixel.com/index.rdf
1788
1789         * khtml/xml/dom_docimpl.cpp: (widgetForNode): Check for nil before going from node to renderer.
1790
1791 2005-03-05  Darin Adler  <darin@apple.com>
1792
1793         Reviewed by Richard.
1794
1795         - fixed <rdar://problem/4037700> Every character typed causes stat call for /usr/share/icu/icudt32b_char.brk
1796
1797         * khtml/rendering/render_text.cpp:
1798         (getCharacterBreakIterator): Added. Helper that sets up an iterator for the passed-in text.
1799         Shares a single global iterator (fast, albeit not thread-safe).
1800         (RenderText::previousOffset): Changed to call getCharacterBreakIterator.
1801         (RenderText::nextOffset): Ditto.
1802
1803 2005-03-05  Ken Kocienda  <kocienda@apple.com>
1804
1805         Reviewed by Darin
1806
1807         Fix for this bug:
1808         
1809         <rdar://problem/4038267> REGRESSION (Mail): Crash copying and pasting end of paragraph
1810
1811         Code to handle content that has a "logical" newline at the end of the pasted content, and the code
1812         to adjust the selection at the end of the paste operation made an assumption that at least one
1813         node had been inserted by the paste command. This is not necessarily true in the case where the sole content
1814         in the pasted content is one of these "logical" newlines. Adjust some code around so that we don't deref
1815         null, but still adjust the selection correctly for this case. In each of the two functions below, some
1816         null checks have been added, and some code has been rearranged a little bit to continue on through
1817         the end of completeHTMLReplacement, even if no nodes have been inserted. The patch looks bigger and more
1818         complicated than the conceptual change.
1819
1820         * khtml/editing/htmlediting.cpp:
1821         (khtml::ReplaceSelectionCommand::doApply)
1822         (khtml::ReplaceSelectionCommand::completeHTMLReplacement)
1823         
1824         * layout-tests/editing/pasteboard/paste-4038267-fix-expected.txt: Added.
1825         * layout-tests/editing/pasteboard/paste-4038267-fix.html: Added.
1826
1827 2005-03-05  Darin Adler  <darin@apple.com>
1828
1829         Reviewed by John.
1830
1831         - fixed <rdar://problem/4025918> images copied from Safari with relative src URLs aren't pasted into Mail messages (KURL resolves base URLs incorrectly)
1832
1833         * kwq/KWQKURL.mm: (KURL::KURL): Add a slash at the start of the path if a relative part is adding
1834         a path onto a URL that has "pre-path" bits like host name, but no path yet. This doesn't come up
1835         for http because in that case we add a trailing "/" as part of canonicalization.
1836
1837 2005-03-04  John Sullivan  <sullivan@apple.com>
1838
1839         Reviewed by Kevin.
1840         
1841         - fixed <rdar://problem/4033705> REGRESSION (Mail): Copy/Paste from Excel 
1842         crashes Mail in KWQKHTMLPart::fontForSelection(bool*) const + 232
1843
1844         * kwq/KWQKHTMLPart.mm:
1845         (KWQKHTMLPart::fontForSelection):
1846         Check for nil startNode, not just nil renderer.
1847
1848 2005-03-04  David Harrison  <harrison@apple.com>
1849
1850         Reviewed by Ken, Richard.
1851
1852         <rdar://problem/3996383> REGRESSION (Mail): Deleting all of first line also deletes line ending
1853
1854         Problem was the placeholder check was based on 0 height block, but the block in this
1855         case is the BODY, which has other content even though the paragraph is gone.
1856         
1857         * khtml/editing/htmlediting.cpp:
1858         (khtml::CompositeEditCommand::insertBlockPlaceholder):
1859         Now does insert instead of append!
1860     
1861         (khtml::CompositeEditCommand::appendBlockPlaceholder):
1862         New.  Actually does append.
1863         
1864         (khtml::CompositeEditCommand::addBlockPlaceholderIfNeeded):
1865         Renamed from insertBlockPlaceholderIfNeeded because it can insert or append.  Also accepts "force insert" flag.
1866         
1867         (khtml::CompositeEditCommand::removeBlockPlaceholder):
1868         Renamed for succinctness from removeBlockPlaceholderIfNeeded.
1869         
1870         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
1871         (khtml::DeleteSelectionCommand::moveNodesAfterNode):
1872         Use renamed methods.
1873         
1874         (khtml::DeleteSelectionCommand::doApply):
1875         Use addBlockPlaceholderIfNeeded "force insert" flag if deleting whole paragraphs did not leave an empty one.
1876         
1877         (khtml::InsertParagraphSeparatorCommand::doApply):
1878         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
1879         (khtml::InsertTextCommand::input):
1880         Use renamed methods.
1881         
1882         * khtml/editing/htmlediting.h:
1883         Renamed and new methods per above.
1884         
1885
1886 2005-03-04  Chris Blumenberg  <cblu@apple.com>
1887
1888         Fixed: <rdar://problem/4032840> REGRESSION (Mail): crash in RemoveNodeCommand after pasting attachment at end of message
1889
1890         Reviewed by darin.
1891
1892         * khtml/editing/visible_units.cpp:
1893         (khtml::endOfParagraph): don't consider text nodes that have no rendered characters
1894
1895 2005-03-04  Richard Williamson   <rjw@apple.com>
1896
1897         Fixed <rdar://problem/4034764> REGRESSION(125-188)Viewing text/plain page and going back/forward corrupts HTML pages (google.com)
1898
1899         The parse mode wasn't be restored to the document when going
1900         back.
1901
1902         Reviewed by Hyatt.
1903
1904         * kwq/KWQKHTMLPart.mm:
1905         (KWQKHTMLPart::openURLFromPageCache):
1906         * kwq/KWQPageState.h:
1907         * kwq/KWQPageState.mm:
1908         (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:]):
1909
1910 2005-03-04  Ken Kocienda  <kocienda@apple.com>
1911
1912         Reviewed by me
1913
1914         * layout-tests/editing/style/create-block-for-style-012-expected.txt: Shame on me!
1915         I landed my last fix without running layout tests. This one changes in a subtle, but
1916         acceptable way.
1917
1918 2005-03-04  Ken Kocienda  <kocienda@apple.com>
1919
1920         Reviewed by Harrison
1921
1922         Fix for this bug:
1923         
1924         <rdar://problem/4032543> REGRESSION (Mail): Mail hangs when quoted text is pasted twice
1925         
1926         This code change fixes the bug in a non-obvious way. The root cause of the problem was
1927         that a VisiblePosition created using an affinity originating in Mail code caused 
1928         two VisiblePosition objects that should have been equal to differ only in their 
1929         affinities, which in turn caused us to run a code path that should not have run.
1930
1931         * khtml/editing/visible_position.cpp:
1932         (khtml::VisiblePosition::VisiblePosition): Added copy constructor.
1933         (khtml::VisiblePosition::next): Factored out inline code that used to be here into new
1934         setAffinityUsingLinePosition() function.
1935         (khtml::isEqualIgnoringAffinity): New helper to handle cases when affinity in equality check does
1936         not matter. However, we want to know about such cases where a VisiblePosition differs only by affinity, 
1937         and the code will assert in development when this happens.
1938         (khtml::isNotEqualIgnoringAffinity): Ditto, but not. :)
1939         (khtml::setAffinityUsingLinePosition): New helper function mentioned above. This will "correct"
1940         upstream affinity to downstream if the affinity does not make a difference for the position.
1941         * khtml/editing/visible_position.h:
1942         * khtml/editing/visible_range.h: Wacky bug. The operator== for this class took VisiblePosition classes!
1943         * khtml/editing/visible_units.cpp:
1944         (khtml::isStartOfParagraph): Now performs equality check without regard to affinity.
1945         (khtml::isEndOfParagraph): Ditto.
1946         (khtml::isStartOfBlock): Ditto.
1947         (khtml::isEndOfBlock): Ditto.
1948         * kwq/WebCoreBridge.mm:
1949         (-[WebCoreBridge setSelectedDOMRange:affinity:]): Adjusts the affinity using setAffinityUsingLinePosition()
1950         if necessary.
1951
1952 2005-03-04  Darin Adler  <darin@apple.com>
1953
1954         Reviewed by John.
1955
1956         - fixed <rdar://problem/4036817> REGRESSION: ctrl-y broken when a line + carriage return cut
1957
1958         * khtml/editing/htmlediting.h: Added insertTextRunWithoutNewlines.
1959         * khtml/editing/htmlediting.cpp:
1960         (khtml::InsertTextCommand::input): Added assertion to make sure strings with newlines don't get
1961         down to this level.
1962         (khtml::TypingCommand::insertText): Added. Takes the name of the old function, but is a new
1963         level that breaks runs into lines and inserts each one separately.
1964         (khtml::TypingCommand::insertTextRunWithoutNewlines): Renamed old insertText to this. 
1965
1966         * khtml/dom/dom_string.h: Made substring be a const member function.
1967         * khtml/dom/dom_string.cpp: (DOM::DOMString::substring): Made this const.
1968
1969 2005-03-04  Darin Adler  <darin@apple.com>
1970
1971         Reviewed by John.
1972
1973         - fixed <rdar://problem/4020413> REGRESSION (Mail): can't use fonts with names that start with "#" in Mail (Korean fonts)
1974
1975         * khtml/css/css_valueimpl.cpp:
1976         (DOM::isLegalIdentifier): Added. Commented out and not used.
1977         (DOM::quoteStringIfNeeded): Quotes the string if needed. For now only if it starts with "#".
1978         (DOM::CSSPrimitiveValueImpl::cssText): Call quoteStringIfNeeded when asked for cssText for an arbitrary string, since we
1979         need text you can re-parse.
1980         (DOM::FontFamilyValueImpl::cssText): Ditto.
1981
1982         * khtml/editing/markup.cpp:
1983         (khtml::startMarkup): Added comments about lack of quoting for attributes.
1984         (khtml::createMarkup): Ditto.
1985
1986 2005-03-04 Adele Amchan  <adele@apple.com>
1987  
1988        Reviewed by Maciej
1989
1990         Fix for <rdar://problem/4021711> REGRESSION(125-188) blank pages when browsing forum at cooperativeresearch.org - cached external script problem
1991
1992         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::scriptHandler): set flag needToRefCachedScript so we can make sure 
1993         notifyFinished is called after pendingSrc is set up with the right data from the cached script
1994
1995 2005-03-04  Ken Kocienda  <kocienda@apple.com>
1996
1997         Reviewed by John
1998
1999         Fix for this bug:
2000         
2001         <rdar://problem/4029632> Tiger 8A398:- Mail crashes in DOM::NodeImpl::isBlockFlow() after pasting text with alignment style and BR element from Safari
2002
2003         * khtml/editing/htmlediting.cpp:
2004         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): VisiblePosition constructor
2005         was failing to yield a position for a node just pasted into the document since a layout was needed
2006         for the calculation to come out right. Layout added. Crash gone.
2007
2008 === Safari-402 ===
2009
2010 2005-03-03  Chris Blumenberg  <cblu@apple.com>
2011
2012         Fixed: <rdar://problem/3992803> Cannot navigate through list items with the keyboard, you're stuck in the same <li> block unless you click out
2013
2014         Reviewed by harrison.
2015
2016         * khtml/rendering/render_line.cpp:
2017         (khtml::RootInlineBox::closestLeafChildForXPos): avoid returning list markers when possible. Also improved heuristic for returning the best InlineBox given the passed X position.
2018
2019
2020 2005-03-03  Ken Kocienda  <kocienda@apple.com>
2021
2022         Reviewed by John
2023         
2024         Fix for this bug:
2025         
2026         <rdar://problem/4035198> Pasting text with different styles does not get reproducible results
2027
2028         I had a good idea yesterday to improve the way we "fixup" styles after
2029         pasting, but i chose a poor data structure to do it, a map of
2030         nodes-to-styles. In the fixup step, I iterated over the map elements and
2031         did the fixup. However, since the order in which the items would come
2032         out of the map is indeterminate, we got unpredictable results.
2033
2034         So, the concept was good, but the implementation was flawed. I have
2035         fixed this mapping to be a list instead, so the order that nodes are
2036         evaluated in the fixup step is document order. This works nicely.
2037
2038         * khtml/editing/htmlediting.cpp:
2039         (khtml::ReplacementFragment::~ReplacementFragment): No longer need to explicity deref nodes and
2040         styles saved away for later fixup. This is now handled by the new NodeDesiredStyle class.
2041         (khtml::ReplacementFragment::computeStylesUsingTestRendering): Now calls computeAndStoreNodeDesiredStyle,
2042         function renamed from mapDesiredStyleForNode.
2043         Now accepts a QValueList<NodeDesiredStyle> in place of the old map.
2044         (khtml::NodeDesiredStyle::NodeDesiredStyle): New class that represents a node-to-style mapping.
2045         (khtml::NodeDesiredStyle::~NodeDesiredStyle): Ditto.
2046         (khtml::NodeDesiredStyle::operator=): Ditto.
2047         (khtml::ReplaceSelectionCommand::doApply): Now calls computeAndStoreNodeDesiredStyle,
2048         function renamed from mapDesiredStyleForNode.
2049         (khtml::ReplaceSelectionCommand::fixupNodeStyles): Now operates on a QValueList<NodeDesiredStyle> in 
2050         place of the old map.
2051         (khtml::computeAndStoreNodeDesiredStyle): Renamed from mapDesiredStyleForNode.  Now operates on a 
2052         QValueList<NodeDesiredStyle> in place of the old map.
2053         * khtml/editing/htmlediting.h:
2054         (khtml::NodeDesiredStyle): New class that represents a node-to-style mapping.
2055         (khtml::ReplacementFragment::desiredStyles): Now returns a QValueList<NodeDesiredStyle> in place of the old map.
2056
2057         * layout-tests/editing/style/typing-style-003-expected.txt: Results changed in an acceptable way.
2058
2059 2005-03-02  Darin Adler  <darin@apple.com>
2060
2061         Reviewed by Maciej.
2062
2063         - fixed <rdar://problem/4029741> REGRESSION (188-189): <input type=text> are cleared when you hide/show them
2064
2065         * khtml/html/html_formimpl.h: Added detach functions for both input and text area elements, since
2066         both have m_valueMatchesRenderer flags.
2067         * khtml/html/html_formimpl.cpp:
2068         (DOM::HTMLInputElementImpl::detach): Set m_valueMatchesRenderer to false, since the renderer is going away.
2069         (DOM::HTMLTextAreaElementImpl::detach): Ditto.
2070
2071 2005-03-02  Ken Kocienda  <kocienda@apple.com>
2072
2073         Reviewed by Hyatt
2074
2075         Fix for this bug:
2076         
2077         <rdar://problem/4006151> in reply, caret moves to next line after toggling bold style then typing
2078
2079         * khtml/editing/htmlediting.cpp:
2080         (khtml::ApplyStyleCommand::applyInlineStyle): Defer cleaning up empty style until the end of the
2081         function. In some situations, the render tree can get confused when we do this removal up front.
2082         I wish I understood the reasons more deeply, but this bit of code shuffling seems harmless, and 
2083         fixes the bug.
2084
2085 2005-03-02  Darin Adler  <darin@apple.com>
2086
2087         Reviewed by Maciej.
2088
2089         - fixed <rdar://problem/4024966> crash happened twice in [KWQTextField setHasFocus:] + 0xe8
2090
2091         Added more nil checks to the widget implementations. Anywhere a widget pointer is used, do a nil check,
2092         rather than relying on high level assumptions about which calls can and can't destroy the HTML element
2093         (and hence the widget). The case in the bug seems to be a case where scrolling destroyed the element.
2094         We can't be sure this fixes the bug, but we can be relatively sure we didn't introduce any new problems,
2095         because this just avoids nil-dereferencing.
2096
2097         * kwq/KWQButton.mm:
2098         (-[KWQButton becomeFirstResponder]):
2099         (-[KWQButton nextKeyView]):
2100         (-[KWQButton previousKeyView]):
2101         * kwq/KWQListBox.mm:
2102         (-[KWQTableView mouseDown:]):
2103         (-[KWQTableView becomeFirstResponder]):
2104         (-[KWQTableView numberOfRowsInTableView:]):
2105         (-[KWQTableView tableViewSelectionDidChange:]):
2106         (-[KWQTableView tableView:shouldSelectRow:]):
2107         (-[KWQTableView selectionShouldChangeInTableView:]):
2108         * kwq/KWQScrollBar.mm:
2109         (-[KWQScrollBar scroll:]):
2110         * kwq/KWQSlider.mm:
2111         (-[KWQSlider mouseDown:]):
2112         (-[KWQSlider slide:]):
2113         (-[KWQSlider becomeFirstResponder]):
2114         (-[KWQSlider nextKeyView]):
2115         (-[KWQSlider previousKeyView]):
2116         * kwq/KWQTextArea.mm:
2117         (-[KWQTextAreaTextView becomeFirstResponder]):
2118         (-[KWQTextAreaTextView resignFirstResponder]):
2119         (-[KWQTextAreaTextView mouseDown:]):
2120         * kwq/KWQTextField.mm:
2121         (-[KWQTextFieldController action:]):
2122         (-[KWQTextFieldController controlTextDidEndEditing:]):
2123         (-[KWQTextFieldController controlTextDidChange:]):
2124         (-[KWQTextFieldController textView:didHandleEvent:]):
2125         (-[KWQTextFieldController setHasFocus:]):
2126
2127 2005-03-02  Richard Williamson   <rjw@apple.com>
2128
2129         Fixed <rdar://problem/4031483> Leak (RenderObject::createInlineBox) reproducible with Stock widget
2130
2131         We were leaking inline block line boxes.  Argh!
2132
2133         Reviewed by Hyatt.
2134
2135         * khtml/rendering/render_flow.cpp:
2136         (RenderFlow::dirtyLineBoxes):
2137         * khtml/rendering/render_line.cpp:
2138         (khtml::InlineBox::deleteLine):
2139
2140 2005-03-02  Chris Blumenberg  <cblu@apple.com>
2141
2142         Fixed: <rdar://problem/3976872> REGRESSION (Mail): Pasted plain text doesn't get the proper style if pasted into newlines
2143
2144         Reviewed by kocienda.
2145
2146         * khtml/editing/htmlediting.cpp:
2147         (khtml::EditCommand::styleAtPosition): new, factored out from calculateStyleBeforeInsertion
2148         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): call styleAtPosition
2149         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): clear new m_insertionStyle ivar
2150         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand): deref new m_insertionStyle  ivar
2151         (khtml::ReplaceSelectionCommand::doApply): store the style so it later be applied when matching style
2152         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): apply style from m_insertionStyle when matching style
2153         * khtml/editing/htmlediting.h:
2154
2155 2005-03-02  Maciej Stachowiak  <mjs@apple.com>
2156
2157         Reviewed by Darin.
2158
2159         <rdar://problem/4031718> REGRESSION (401-401+): Safari reproducible crash setting up scope in JSLazyEventListener::parseCode authenticating to bugweb
2160         
2161         * khtml/ecma/kjs_events.cpp:
2162         (JSLazyEventListener::parseCode): If originalNode is NULL, don't
2163         mess with the scope chain.
2164         
2165         * khtml/html/html_baseimpl.cpp:
2166         (HTMLBodyElementImpl::parseHTMLAttribute): For handlers that are
2167         delcared on body but set on the document, pass NULL to avoid
2168         swizzling the scope chain. It turns out that this is what browsers
2169         do, and it finesses the crash.
2170
2171 2005-03-02  David Harrison  <harrison@apple.com>
2172
2173         Reviewed by Ken.
2174
2175         <rdar://problem/3948453> Can't type accented chars as first character in Stickies widget
2176
2177         * khtml/editing/htmlediting.cpp:
2178         (khtml::ReplaceSelectionCommand::doApply):
2179
2180 2005-03-02  Ken Kocienda  <kocienda@apple.com>
2181         Reviewed by John
2182
2183         Fix for this bug:
2184         
2185         <rdar://problem/4020574> REGRESSION (Mail): copy/paste first part of reply-quoted text alters downstream style
2186         
2187         The problem was that the operation to move nodes following the newly-pasted nodes did not preserve the
2188         style of these moved nodes. I have generalized some of the functions that compute and preserve styles
2189         for nodes and then apply these styles after a DOM operation.
2190
2191         * khtml/editing/htmlediting.cpp:
2192         (khtml::ReplacementFragment::~ReplacementFragment): Call new derefNodesAndStylesInMap() helper function
2193         in place of old code that had this deref'ing inline.
2194         (khtml::ReplacementFragment::computeStylesUsingTestRendering): Now calls new mapDesiredStyleForNode() helper
2195         function place of old code that had this style computation inline.
2196         (khtml::ReplacementFragment::removeStyleNodes): Updated comment for new helper name.
2197         (khtml::ReplaceSelectionCommand::doApply): Now calls new helpers in place of helpers whose names were changed,
2198         or in place of pre-refactored inline code.
2199         (khtml::ReplaceSelectionCommand::fixupNodeStyles): Renamed from applyStyleToInsertedNodes(). Now generalized
2200         to take the map of nodes to use for the fixup. This makes it possible to call this code with different maps,
2201         and that is needed to fix the bug.
2202         (khtml::mapDesiredStyleForNode): New helper function to compute the inheritable styles for a given node
2203         and map this style to the given node in the given map. This function now also includes the code that was
2204         in the removeBlockquoteColorsIfNeeded(). This latter helper has now been removed.
2205         (khtml::derefNodesAndStylesInMap): Simple helper to deref map members.
2206         * khtml/editing/htmlediting.h:
2207         (khtml::ReplacementFragment::desiredStyles): New helper to return map of nodes-to-desiredStyles.
2208
2209 2005-03-01  Ken Kocienda  <kocienda@apple.com>
2210
2211         Reviewed by Hyatt
2212
2213         Fix for this bug:
2214
2215         <rdar://problem/4011358> REGRESSION(Mail): after dragging text to mail message and deleting, typing or dragging new text doesn't work
2216
2217         * khtml/editing/visible_position.cpp:
2218         (khtml::VisiblePosition::isCandidate): Insertion point disappearing was due to a failed
2219         check here after deleting all the content in the body element. The special "empty block"
2220         needs to add check for DOM children. A block may have straggling anonymous render children in
2221         some cases, and so the check needs to be (!DOM-kids || !render-kids).
2222
2223         Also, I botched the last checkin trying to split these two patches in my tree. Wrong layout tests 
2224         got checked in, I checked in a conflict marker in the Changelog, etc. I fixed everything with this checkin.
2225
2226 2005-03-01  Ken Kocienda  <kocienda@apple.com>
2227  
2228         Reviewed by Maciej
2229
2230         Improved fix for this bug:
2231         
2232         <rdar://problem/3996605> Insert paragraph command puts new block in wrong place, creating difficult-to-handle HTML
2233
2234         Maciej and I discussed this situation at length, and we came up with a better fix than I did earlier.
2235
2236         * khtml/editing/htmlediting.cpp:
2237         (khtml::InsertParagraphSeparatorCommand::doApply): Simplify one special case so that it only handles the 
2238         "last in block" situation. Remove special case for "downstream node is in different block" and handle
2239         this case with a little bit of special code in the general insertion case.
2240
2241         Results studied to make sure there were no problems.
2242
2243         * layout-tests/editing/deleting/delete-3959464-fix-expected.txt
2244         * layout-tests/editing/inserting/insert-div-001-expected.txt
2245         * layout-tests/editing/inserting/insert-div-002-expected.txt
2246         * layout-tests/editing/inserting/insert-div-004-expected.txt
2247         * layout-tests/editing/inserting/insert-div-005-expected.txt
2248         * layout-tests/editing/inserting/insert-div-009-expected.txt
2249         * layout-tests/editing/inserting/insert-div-014-expected.txt
2250         * layout-tests/editing/inserting/insert-div-018-expected.txt
2251         * layout-tests/editing/inserting/insert-div-024-expected.txt
2252         * layout-tests/editing/pasteboard/paste-text-011-expected.txt
2253         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
2254         * layout-tests/editing/pasteboard/paste-text-015-expected.txt
2255         * layout-tests/editing/style/block-style-004-expected.txt
2256         * layout-tests/editing/style/block-style-005-expected.txt
2257         * layout-tests/editing/style/block-style-006-expected.txt
2258
2259         New test:
2260         
2261         * layout-tests/editing/inserting/insert-div-027.html
2262         * layout-tests/editing/inserting/insert-div-027-expected.txt
2263
2264 2005-03-01  David Hyatt  <hyatt@apple.com>
2265
2266         Fix for 4030890, regression with <sup> on Google.  Fix some bogus != comparison checks in verticalPositionHint.
2267         
2268         Reviewed by John
2269
2270         (RenderObject::getVerticalPosition):
2271         
2272 2005-03-01  Chris Blumenberg  <cblu@apple.com>
2273
2274         Fixed: <rdar://problem/4030669> smart delete does not delete spaces from pasted content
2275
2276         Reviewed by rjw.
2277
2278         * khtml/editing/htmlediting.cpp:
2279         (khtml::DeleteSelectionCommand::initializePositionData): pass true for treatNBSPAsWhiteSpace to leadingWhitespacePosition and trailingWhitespacePosition when testing whether or not we have to delete those characters as well.
2280         * khtml/editing/jsediting.cpp: pass true for smartDelete when the selection granularity is WORD. This allows us to write smart delete layout tests.
2281         * layout-tests/editing/deleting/smart-delete-001-expected.txt: Added.
2282         * layout-tests/editing/deleting/smart-delete-001.html: Added.
2283         * layout-tests/editing/deleting/smart-delete-002-expected.txt: Added.
2284         * layout-tests/editing/deleting/smart-delete-002.html: Added.
2285
2286 2005-03-01  Richard Williamson   <rjw@apple.com>
2287
2288         Fixed <rdar://problem/4029772> Weather widgets use a lot of memory (more that other widgets)
2289
2290         The string objects created by KWQHeaderStringFromDictionary() leaked.
2291
2292         Reviewed by John Louch.
2293
2294         * kwq/KWQLoader.mm:
2295         (KWQHeaderStringFromDictionary):
2296
2297 2005-03-01  Jens Alfke  <jens@apple.com>
2298
2299         Reviewed by Darin.
2300
2301         <rdar://problem/4004531> Simple Sun Signed Applet throws exceptions; doesn't run
2302         Two fixes for the way we extract the parameter-y goodness from <object> tags.
2303
2304         * khtml/rendering/render_frames.cpp:
2305         (RenderPartObject::updateWidget):
2306
2307 2005-03-01  Richard Williamson   <rjw@apple.com>
2308
2309         Fixed <rdar://problem/3990258> REGRESSION (125.12-181): top of picture that spans two pages is cut off on print from Safari
2310
2311         The problem was due to incorrect "object truncation" in  RenderFlow::paintLines.  
2312         We attempt to push objects down if they don't fit on a page at
2313         paint time.  If the attempt to push object down failed we just
2314         didn't paint at all.
2315
2316         Reviewed by Hyatt.
2317
2318         * khtml/rendering/render_flow.cpp:
2319         (RenderFlow::paintLines):
2320
2321 2005-03-01  Chris Blumenberg  <cblu@apple.com>
2322
2323         Fixed: <rdar://problem/4030669> smart delete does not delete spaces from pasted content
2324
2325         Reviewed by rjw.
2326
2327         * khtml/editing/htmlediting.cpp:
2328         (khtml::DeleteSelectionCommand::initializePositionData): pass true for treatNBSPAsWhiteSpace to leadingWhitespacePosition and trailingWhitespacePosition when testing whether or not we have to delete those characters as well.
2329         * khtml/editing/jsediting.cpp: pass true for smartDelete when the selection granularity is WORD. This allows us to write smart delete layout tests.
2330         * layout-tests/editing/deleting/smart-delete-001-expected.txt: Added.
2331         * layout-tests/editing/deleting/smart-delete-001.html: Added.
2332         * layout-tests/editing/deleting/smart-delete-002-expected.txt: Added.
2333         * layout-tests/editing/deleting/smart-delete-002.html: Added.
2334
2335 2005-03-01  Ken Kocienda  <kocienda@apple.com>
2336
2337         Reviewed by Vicki
2338
2339         Fix for this bug:
2340         
2341         <rdar://problem/4030068> Trailing <return> gets eaten when pasted at the end of a document
2342
2343         * khtml/editing/htmlediting.cpp:
2344         (khtml::ReplaceSelectionCommand::doApply): Add code to handle formerly-unhandled end-of-document case.
2345
2346 2005-03-01  Maciej Stachowiak  <mjs@apple.com>
2347
2348         Reviewed by Vicki.
2349
2350         <rdar://problem/4003774> REGRESSION(125-181): JavaScript problems @ Yankee/Dixie quiz
2351         
2352         Reworked how scopes are set up for event handlers to match other
2353         browser. This includes the following changes:
2354
2355         - Special scope entries are set up at the time the event handler
2356         is created, not at the time it fires.
2357
2358         - Special scope is only set up for event handlers set in the html
2359         source through an html attribute, not for handlers set using
2360         addEventHandler or setting JS properties like onclick through
2361         JavaScript.
2362
2363         - Special scope is based on the DOM node on which the handler is
2364         an attribute, not the event target.
2365
2366         This fixes the regression while allowing the fix to
2367         <rdar://problem/3798453> (DIG: getting variable with same name as
2368         DOM element attribute gets attribute value instead) to keep
2369         working correctly.
2370         
2371         * khtml/ecma/kjs_events.cpp:
2372         (JSEventListener::handleEvent):
2373         (JSLazyEventListener::JSLazyEventListener):
2374         (JSLazyEventListener::parseCode):
2375         * khtml/ecma/kjs_events.h:
2376         * khtml/ecma/kjs_proxy.cpp:
2377         (KJSProxyImpl::createHTMLEventHandler):
2378         * khtml/ecma/kjs_proxy.h:
2379         * khtml/ecma/kjs_window.cpp:
2380         (Window::getJSLazyEventListener):
2381         * khtml/ecma/kjs_window.h:
2382         * khtml/html/html_baseimpl.cpp:
2383         (HTMLBodyElementImpl::parseHTMLAttribute):
2384         (HTMLFrameElementImpl::parseHTMLAttribute):
2385         (HTMLFrameSetElementImpl::parseHTMLAttribute):
2386         * khtml/html/html_elementimpl.cpp:
2387         (HTMLElementImpl::parseHTMLAttribute):
2388         * khtml/html/html_formimpl.cpp:
2389         (DOM::HTMLFormElementImpl::parseHTMLAttribute):
2390         (DOM::HTMLButtonElementImpl::parseHTMLAttribute):
2391         (DOM::HTMLInputElementImpl::parseHTMLAttribute):
2392         (DOM::HTMLLabelElementImpl::parseHTMLAttribute):
2393         (DOM::HTMLSelectElementImpl::parseHTMLAttribute):
2394         (DOM::HTMLTextAreaElementImpl::parseHTMLAttribute):
2395         * khtml/html/html_imageimpl.cpp:
2396         (HTMLImageElementImpl::parseHTMLAttribute):
2397         * khtml/html/html_objectimpl.cpp:
2398         (HTMLObjectElementImpl::parseHTMLAttribute):
2399         * khtml/khtml_part.cpp:
2400         (KHTMLPart::createHTMLEventListener):
2401         * khtml/khtml_part.h:
2402         * khtml/xml/dom_docimpl.cpp:
2403         (DocumentImpl::createHTMLEventListener):
2404         * khtml/xml/dom_docimpl.h:
2405
2406 === Safari-401 ===
2407
2408 2005-03-01  Chris Blumenberg  <cblu@apple.com>
2409
2410         Backed out my patch since the tree was closed.
2411
2412         * khtml/editing/htmlediting.cpp:
2413         (khtml::DeleteSelectionCommand::initializePositionData):
2414         * khtml/editing/jsediting.cpp:
2415
2416 2005-03-01  Chris Blumenberg  <cblu@apple.com>
2417
2418         Fixed: <rdar://problem/4030669> smart delete does not delete spaces from pasted content
2419
2420         Reviewed by rjw.
2421
2422         * khtml/editing/htmlediting.cpp:
2423         (khtml::DeleteSelectionCommand::initializePositionData): pass true for treatNBSPAsWhiteSpace to leadingWhitespacePosition and trailingWhitespacePosition when testing whether or not we have to delete those characters as well.
2424         * khtml/editing/jsediting.cpp: pass true for smartDelete when the selection granularity is WORD. This allows us to write smart delete layout tests.
2425         * layout-tests/editing/deleting/smart-delete-001-expected.txt: Added.
2426         * layout-tests/editing/deleting/smart-delete-001.html: Added.
2427         * layout-tests/editing/deleting/smart-delete-002-expected.txt: Added.
2428         * layout-tests/editing/deleting/smart-delete-002.html: Added.
2429
2430 2005-03-01  Ken Kocienda  <kocienda@apple.com>
2431
2432         Reviewed by Vicki
2433
2434         Fix for this bug:
2435         
2436         <rdar://problem/4030068> Trailing <return> gets eaten when pasted at the end of a document
2437
2438         * khtml/editing/htmlediting.cpp:
2439         (khtml::ReplaceSelectionCommand::doApply): Add code to handle formerly-unhandled end-of-document case.
2440
2441 2005-03-01  David Harrison  <harrison@apple.com>
2442
2443         Reviewed by Chris.
2444
2445         <rdar://problem/3915560> Mail would like an SPI to enable "smart" text paste/drop
2446
2447         * kwq/WebCoreBridge.h:
2448         * kwq/WebCoreBridge.mm:
2449         (-[WebCoreBridge smartDeleteRangeForProposedRange:]):
2450         (-[WebCoreBridge smartInsertForString:replacingRange:beforeString:afterString:]):
2451         New.
2452
2453 2005-03-01  Chris Blumenberg  <cblu@apple.com>
2454
2455         Fixed: <rdar://problem/4030404> selection granularity should be set when extending selection via JS
2456
2457         Reviewed by kocienda.
2458
2459         * khtml/ecma/kjs_window.cpp:
2460         (SelectionFunc::tryCall): set the granularity on the part. This will allow us to write smart paste layout tests.
2461         * layout-tests/editing/pasteboard/smart-paste-001-expected.txt: Added.
2462         * layout-tests/editing/pasteboard/smart-paste-001.html: Added.
2463         * layout-tests/editing/pasteboard/smart-paste-002-expected.txt: Added.
2464         * layout-tests/editing/pasteboard/smart-paste-002.html: Added.
2465         * layout-tests/editing/pasteboard/smart-paste-003-expected.txt: Added.
2466         * layout-tests/editing/pasteboard/smart-paste-003.html: Added.
2467         * layout-tests/editing/pasteboard/smart-paste-004-expected.txt: Added.
2468         * layout-tests/editing/pasteboard/smart-paste-004.html: Added.
2469         * layout-tests/editing/pasteboard/smart-paste-005-expected.txt: Added.
2470         * layout-tests/editing/pasteboard/smart-paste-005.html: Added.
2471         * layout-tests/editing/pasteboard/smart-paste-006-expected.txt: Added.
2472         * layout-tests/editing/pasteboard/smart-paste-006.html: Added.
2473         * layout-tests/editing/pasteboard/smart-paste-007-expected.txt: Added.
2474         * layout-tests/editing/pasteboard/smart-paste-007.html: Added.
2475
2476 2005-03-01  Chris Blumenberg  <cblu@apple.com>
2477
2478         Fixed: <rdar://problem/4029934> smart paste with plain text can add too many spaces
2479
2480         Reviewed by kocienda.
2481
2482         * khtml/editing/htmlediting.cpp:
2483         (khtml::ReplaceSelectionCommand::doApply): pass true for treatNBSPAsWhitespace to leadingWhitespacePosition and trailingWhitespacePosition
2484         * khtml/xml/dom_position.cpp:
2485         (DOM::isWS): take treatNBSPAsWhitespace param
2486         (DOM::Position::leadingWhitespacePosition): ditto
2487         (DOM::Position::trailingWhitespacePosition): ditto
2488         * khtml/xml/dom_position.h:
2489
2490 2005-03-01  Ken Kocienda  <kocienda@apple.com>
2491
2492         Reviewed by John
2493
2494         Fix for this bug:
2495         
2496         <rdar://problem/3996605> Insert paragraph command puts new block in wrong place, creating difficult-to-handle HTML
2497
2498         * khtml/editing/htmlediting.cpp:
2499         (khtml::InsertParagraphSeparatorCommand::doApply): Look for the upstream-most block to insert after
2500         when at the visible end of a block. This helps to avoid some undesirable sequences of markup which
2501         Dave says will be vary hard to render. Changing the command in this way avoids the "limitations"
2502         of the render tree by not asking it to render markup we do not want to make anyway.
2503         
2504         All these tests change, but either in insignificant ways, or for the better.
2505         
2506         * layout-tests/editing/deleting/delete-3959464-fix-expected.txt:
2507         * layout-tests/editing/inserting/insert-div-001-expected.txt:
2508         * layout-tests/editing/inserting/insert-div-002-expected.txt:
2509         * layout-tests/editing/inserting/insert-div-004-expected.txt:
2510         * layout-tests/editing/inserting/insert-div-005-expected.txt:
2511         * layout-tests/editing/inserting/insert-div-009-expected.txt:
2512         * layout-tests/editing/inserting/insert-div-024-expected.txt:
2513         * layout-tests/editing/pasteboard/paste-text-011-expected.txt:
2514         * layout-tests/editing/pasteboard/paste-text-013-expected.txt:
2515         * layout-tests/editing/pasteboard/paste-text-015-expected.txt:
2516         * layout-tests/editing/style/block-style-004-expected.txt:
2517         * layout-tests/editing/style/block-style-005-expected.txt:
2518         * layout-tests/editing/style/block-style-006-expected.txt:
2519         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt:
2520         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt:
2521         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt:
2522         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt:
2523
2524         New test to check specific problem mentioned in the bug.
2525
2526         * layout-tests/editing/inserting/insert-div-026-expected.txt: Added.
2527         * layout-tests/editing/inserting/insert-div-026.html: Added.
2528
2529 2005-02-28  Maciej Stachowiak  <mjs@apple.com>
2530
2531         Reviewed by Darin.
2532
2533         <rdar://problem/4002864> REGRESSION(125-146) getElementById in onload fails in a test case involving external resources
2534         
2535         Moved management of elementById hashtable from attach/detach to
2536         insertedIntoDocument/removedFromDocument, to avoid being thrown
2537         off by temporary detaches due to style recalcs.
2538         
2539         * khtml/xml/dom_elementimpl.cpp:
2540         (ElementImpl::insertedIntoDocument):
2541         (ElementImpl::removedFromDocument):
2542         (ElementImpl::attach):
2543         (ElementImpl::updateId):
2544         * khtml/xml/dom_elementimpl.h:
2545
2546         Make sure that insertedIntoDocument is called before firing any
2547         DOM events.
2548         
2549         * khtml/xml/dom_nodeimpl.cpp:
2550         (NodeBaseImpl::dispatchChildInsertedEvents): 
2551
2552 2005-02-28  David Hyatt  <hyatt@apple.com>
2553
2554         Fix for 4028999, safari crashes when resetting if mallocsribble is on.  Clip rects were being cleared using dead
2555         render objects.  Change the ordering.
2556         
2557         Reviewed by rjw
2558
2559         * khtml/rendering/render_box.cpp:
2560         (RenderBox::detach):
2561         * khtml/rendering/render_layer.cpp:
2562         (RenderLayer::~RenderLayer):
2563
2564 2005-02-28  Chris Blumenberg  <cblu@apple.com>
2565
2566         Fixed: <rdar://problem/4024786> REGRESSION (Mail): "Smart paste" plain-text word into Blot leaves insertion point misplaced
2567
2568         Reviewed by kocienda.
2569
2570         * khtml/editing/htmlediting.cpp:
2571         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Call updateLayout so caretMinOffset and caretMaxOffset return correct values.
2572
2573 2005-02-28  John Sullivan  <sullivan@apple.com>
2574
2575         Reviewed by Ken.
2576         
2577         - WebCore part of fix for <rdar://problem/4023490> REGRESSION (125-185): Tabbing through links 
2578         on frameset page gets stuck at end (tivofaq.com)
2579
2580         * kwq/WebCoreBridge.h:
2581         add nextValidKeyViewOutsideWebFrameViews (code is in WebKit)
2582
2583 2005-02-28  Ken Kocienda  <kocienda@apple.com>
2584
2585         Reviewed by John
2586
2587         Fix for this bug:
2588         
2589         <rdar://problem/3972665> 8A360: HTML message partially truncated on left hand side, text-indent from Script Editor
2590
2591         * khtml/css/css_computedstyle.cpp: inheritableProperties array now defined in css_valueimpl.cpp.
2592         * khtml/css/css_valueimpl.cpp: Define inheritableProperties array here.
2593         (DOM::CSSMutableStyleDeclarationImpl::copyBlockProperties): Use new name for blockProperties, and use the new
2594         constant for the number of items in the array.
2595         (DOM::CSSMutableStyleDeclarationImpl::removeBlockProperties): Ditto.
2596         (DOM::CSSMutableStyleDeclarationImpl::removeInheritableProperties): New function.
2597         * khtml/css/css_valueimpl.h: Declare inheritableProperties array and numInheritableProperties extern so they
2598         can be defined in css_valueimpl.cpp and used in css_computedstyle.cpp.
2599         * khtml/editing/htmlediting.cpp:
2600         (khtml::ReplacementFragment::removeStyleNodes): This code was misguided, and removed too much style from HTML
2601         elements. Now, it removes from HTML elements only the styles that we replace later with a call to applyStyle().
2602         Also, add ID_B to list of inline "style" nodes we are willing to remove. Leaving it off was an oversight.
2603
2604         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: ID_B fix made this result change, without any
2605         visible change in the test.
2606         
2607         New test:
2608         
2609         * layout-tests/editing/style/smoosh-styles-003.html
2610         * layout-tests/editing/style/smoosh-styles-003-expected.txt
2611
2612 2005-02-28  Richard Williamson   <rjw@apple.com>
2613
2614         Fixed <rdar://problem/4026985> CrashTracer: ...14 crashes at com.apple.WebCore: -[KWQPageState invalidate] + 32
2615
2616         Added more nil checking and ASSERTS.
2617         Without a reproducible case this is hard to definitively resolve.
2618
2619         Reviewed by John Sullivan.
2620
2621         * kwq/KWQPageState.mm:
2622         (-[KWQPageState invalidate]):
2623
2624 2005-02-28  Richard Williamson   <rjw@apple.com>
2625
2626         Fixed <rdar://problem/4027702> 3.5% performance regression btwn Safari-188 and Safari-400
2627
2628         I inadvertently checked in some debugging code that disabled
2629         style sharing.  Backed out that change.
2630
2631         * khtml/css/cssstyleselector.cpp:
2632         (khtml::CSSStyleSelector::styleForElement):
2633
2634 2005-02-28  Chris Blumenberg  <cblu@apple.com>
2635
2636         Fixed: <rdar://problem/4026639> www.bmw.ca configurator does not work with Safari
2637
2638         Reviewed by john.
2639
2640         * khtml/ecma/kjs_html.cpp:
2641         (KJS::HTMLElement::tryGet): when frameset.<name of frame child> is called, return the window object of the frame child
2642
2643 2005-02-28  Ken Kocienda  <kocienda@apple.com>
2644
2645         Reviewed by Chris
2646
2647         Fix for this bug:
2648         
2649         <rdar://problem/4026906> Paste of HTML table content can break table structure
2650
2651         * khtml/editing/htmlediting.cpp:
2652         (khtml::ReplacementFragment::pruneEmptyNodes): Call new isProbablyTableStructureNode() function to prevent
2653         removal of empty table structure nodes.
2654         (khtml::ReplacementFragment::removeUnrenderedNodesUsingTestRendering): Ditto.
2655         (khtml::isProbablyTableStructureNode): New helper function.
2656         * khtml/editing/htmlediting.h: Declare new helper.
2657
2658 2005-02-28  Chris Blumenberg  <cblu@apple.com>
2659
2660         Fixed: <rdar://problem/4023566> Stickies: Crash in ReplacementFragment::insertFragmentForTestRendering on paste
2661
2662         Reviewed by kocienda.
2663
2664         * khtml/editing/htmlediting.cpp:
2665         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): ref and deref the element while it is "floating"
2666         (khtml::ReplacementFragment::insertFragmentForTestRendering): ditto
2667         (khtml::floatRefdElement): new, keeps an element alive while its ref count is 0
2668         (khtml::createDefaultParagraphElement): removed commented out code
2669         (khtml::createBlockPlaceholderElement): ref the element and return it as "floating"
2670         (khtml::createFontElement): ditto
2671         (khtml::createStyleSpanElement): ditto
2672         * khtml/editing/htmlediting.h:
2673
2674 2005-02-27  Maciej Stachowiak  <mjs@apple.com>
2675
2676         Reviewed by Vicki.
2677
2678         <rdar://problem/3993557> REGRESSION (125-180-ish): getElementsByTagName no longer works with namespace designations
2679         
2680         * khtml/xml/dom_nodeimpl.cpp:
2681         (NodeBaseImpl::getElementsByTagNameNS): When no namespace is specified, find elements
2682         of the specified name in any namespace to match Mozilla and earlier Safari behavior.
2683
2684 2005-02-25  Darin Adler  <darin@apple.com>
2685
2686         Reviewed by Adele.
2687
2688         - fixed <rdar://problem/4025618> Crash while searching at hollywoodvideo.com
2689
2690         * khtml/html/html_formimpl.h: Added valueWithDefault.
2691         * khtml/html/html_formimpl.cpp:
2692         (DOM::HTMLInputElementImpl::appendFormData): Call valueWithDefault instead of going at the render object
2693         to try to get the default value; there may be no render object if this is display:none.
2694         (DOM::HTMLInputElementImpl::valueWithDefault): Added. Knows about the defaults for "submit" and "reset"
2695         buttons; otherwise just returns the value as-is.
2696
2697         * khtml/rendering/render_form.h: Removed the defaultLabel member functions.
2698         * khtml/rendering/render_form.cpp:
2699         (RenderSubmitButton::rawText): Call valueWithDefault instead of using defaultLabel function here on
2700         the render side. The DOM needs to know how to deal with the default anyway for form submission.
2701         (RenderSubmitButton::defaultLabel): Removed.
2702         (RenderResetButton::defaultLabel): Removed.
2703         (RenderPushButton::defaultLabel): Removed.
2704
2705 2005-02-25  Darin Adler  <darin@apple.com>
2706
2707         Reviewed by John.
2708
2709         - fixed <rdar://problem/4025088> window onblur and onfocus don't fire when text field has focus
2710
2711         * kwq/KWQKHTMLPart.h: Added setWindowHasFocus function and m_windowHasFocus data member.
2712         * kwq/KWQKHTMLPart.mm:
2713         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Took out the code that sends the focus and blur events.
2714         (KWQKHTMLPart::setWindowHasFocus): Put that code here instead.
2715
2716         * kwq/WebCoreBridge.h: Added setWindowHasFocus: method to the bridge.
2717         * kwq/WebCoreBridge.mm: (-[WebCoreBridge setWindowHasFocus:]): Added. Calls method on the part.
2718
2719 2005-02-25  Darin Adler  <darin@apple.com>
2720
2721         Reviewed by John.
2722
2723         - re-fixed <rdar://problem/3665430> horizontal scroll bar of text area does not show, even when text is wide in "no wrap" mode
2724
2725         * kwq/KWQTextArea.mm: (-[KWQTextArea _updateTextViewWidth]): Don't change the text view width
2726         to match the text area's width in the "wrap" case.
2727
2728 2005-02-25  Ken Kocienda  <kocienda@apple.com>
2729
2730         Reviewed by Hyatt
2731
2732         Fix for this bug:
2733         
2734         <rdar://problem/4021518> 8A394 Mail crashes during paste: khtml::RootInlineBox::closestLeafChildForXPos
2735
2736         * khtml/editing/visible_units.cpp:
2737         (khtml::previousLinePosition): Adding an updateLayout call at the start of the function fixes the crash, since
2738         we caught line boxes in a not-completely-updated state.
2739         (khtml::nextLinePosition): Ditto.
2740
2741 2005-02-25  David Hyatt  <hyatt@apple.com>
2742
2743         Fix for 4010774, make sure to avoid an O(N^2) algorithm in nextRenderer() that is triggered when large
2744         DOM subtrees are inserted into documents via one insert/append call.
2745         
2746         Reviewed by kocienda
2747
2748         * khtml/xml/dom_nodeimpl.cpp:
2749         (NodeImpl::nextRenderer):
2750
2751 2005-02-25  Richard Williamson   <rjw@apple.com>
2752
2753         Fixed <rdar://problem/3382926> Bidi neutrals at RTL/LTR boundaries not handled correctly.
2754
2755         Second pass at fixing 3382926 w/o causing layout regressions.  Same concept:
2756         if directionality of text's element is RTL and first character has neutral directionality
2757         then set the initial directionality to RTL.
2758
2759         Reviewed by Hyatt.
2760
2761         * khtml/rendering/bidi.cpp:
2762         (khtml::RenderBlock::bidiReorderLine):
2763         (khtml::RenderBlock::determineStartPosition):
2764
2765 === Safari-400 ===
2766
2767 2005-02-25  Ken Kocienda  <kocienda@apple.com>
2768
2769         Reviewed by me
2770
2771         Roll out Chris' change to fix this bug:
2772         
2773         <rdar://problem/4023566> Stickies: Crash in ReplacementFragment::insertFragmentForTestRendering on paste
2774         
2775         That code change is responsible for all these new crashers:
2776         
2777         <rdar://problem/4025177> crash copying safari.apple.com into Blot document
2778         <rdar://problem/4025184> crash in DOM::NodeImpl::parentNode copying "New!" from google.com to Blot
2779         <rdar://problem/4025214> crash in DOM::NodeImpl::getRect loading paste-match-style-001.html
2780
2781         Since we wish to close the tree for a build right now, I am rolling out rather than investigating.
2782
2783         * khtml/editing/htmlediting.cpp:
2784         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded)
2785         (khtml::ReplacementFragment::insertFragmentForTestRendering)
2786         (khtml::createDefaultParagraphElement)
2787         (khtml::createBlockPlaceholderElement)
2788         (khtml::createFontElement)
2789         (khtml::createStyleSpanElement)
2790         * khtml/editing/htmlediting.h
2791
2792 2005-02-25  Ken Kocienda  <kocienda@apple.com>
2793
2794         Reviewed by John
2795
2796         Fix for this bug:
2797         
2798         <rdar://problem/4020108> Pasting text into message makes Mail crash reproducibly
2799
2800         Note that, even with this fix, development build will crash until this bug is fixed:
2801         <rdar://problem/4024996> Applying block styles can cause assertion failure in inline style removal
2802         
2803         This will not crash deployment builds, so I am going to land.
2804
2805         * khtml/editing/htmlediting.cpp:
2806         (khtml::ApplyStyleCommand::applyBlockStyle): Applying block styles can make the loop to reach beyondEnd
2807         fail since the structure of the document can change. Cache the next node first before operating on it,
2808         as we do elsewhere.
2809
2810 2005-02-25  Vicki Murley <vicki@apple.com>
2811
2812         - recommit this change, since rolling it out did NOT fix the performance regression!
2813
2814     2005-02-23  Darin Adler  <darin@apple.com>
2815
2816         Reviewed by John.
2817
2818         - fixed <rdar://problem/4011405> REGRESSION (180-181): Unconfirmed text disappears when text focus moves
2819
2820         The key was to change things around so that we don't push text from the DOM to the widget
2821         unless the DOM has actually been changed. This prevents the code path that wipes out inline input
2822         during the blur process.
2823
2824         * khtml/html/html_formimpl.cpp:
2825         (DOM::HTMLInputElementImpl::HTMLInputElementImpl): Start m_valueMatchesRenderer as false.
2826         (DOM::HTMLInputElementImpl::parseHTMLAttribute): Set m_valueMatchesRenderer to false when a
2827         new value is set here.
2828         (DOM::HTMLInputElementImpl::setValue): Set m_valueMatchesRenderer to false when a new value
2829         is set here.
2830         (DOM::HTMLInputElementImpl::setValueFromRenderer): Added. Sets m_value, sets m_valueMatchesRenderer
2831         to true, and also sends out the input event. It's better to have this here than in the renderer code.
2832         (DOM::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl): Start m_valueIsValid as false (replaces
2833         m_dirtyvalue) and m_valueMatchesRenderer as false.
2834         (DOM::HTMLTextAreaElementImpl::updateValue): Added. Factored this out from the value function. Uses
2835         the new booleans and keeps them up to date, specifically setting m_valueMatchesRenderer based on
2836         where the value came from.
2837         (DOM::HTMLTextAreaElementImpl::value): Updated to call updateValue to do most of the work.
2838         (DOM::HTMLTextAreaElementImpl::setValue): Set both m_valueIsValid and m_valueMatchesRenderer.
2839         (DOM::HTMLTextAreaElementImpl::setDefaultValue): Take parameter by reference.
2840
2841         * khtml/html/html_formimpl.h: Added setValueFromRenderer, valueMatchesRenderer, setValueMatchesRenderer,
2842         and m_valueMatchesRenderer to input element. For textarea element, made some parameters pass DOMString
2843         by reference, and added invalidateValue, updateValue, valueMatchesRenderer, and setValueMatchesRenderer.
2844
2845         * khtml/rendering/render_form.cpp:
2846         (RenderLineEdit::updateFromElement): Don't re-get the value from the DOM if valueMatchesRenderer
2847         is true.
2848         (RenderLineEdit::slotTextChanged): Call setValueFromRenderer instead of manipulating the DOM
2849         directly.
2850         (RenderTextArea::detach): Call updateValue instead of calling value for its side effect.
2851         (RenderTextArea::handleFocusOut): Ditto.
2852         (RenderTextArea::updateFromElement): Call updateValue and then not re-get the value from the
2853         DOM if valueMatchesRenderer is true.
2854         (RenderTextArea::slotTextChanged): Call invalidateValue instead of directly setting m_dirtyvalue to true.
2855
2856 2005-02-25  Chris Blumenberg  <cblu@apple.com>
2857
2858         Fixed: <rdar://problem/4023566> Stickies: Crash in ReplacementFragment::insertFragmentForTestRendering on paste
2859
2860         Reviewed by darin.
2861
2862         * khtml/editing/htmlediting.cpp:
2863         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded):
2864         (khtml::ReplacementFragment::insertFragmentForTestRendering):
2865         (khtml::floatRefdElement):
2866         (khtml::createDefaultParagraphElement):
2867         (khtml::createBlockPlaceholderElement):
2868         (khtml::createFontElement):
2869         (khtml::createStyleSpanElement):
2870         * khtml/editing/htmlediting.h:
2871
2872 2005-02-25  Darin Adler  <darin@apple.com>
2873
2874         * kwq/character-sets.txt: Checked in updated file. This new file has no effect, because none of the
2875         changes affect character sets that we support, but it's good to have the latest file in here, and
2876         completely safe because I checked that the generated files have not changed.
2877
2878 2005-02-25  Vicki Murley <vicki@apple.com>
2879
2880         Reviewed by Darin.
2881  
2882         - back out this change, since it causes a 3.5% performance regression
2883
2884     2005-02-23  Darin Adler  <darin@apple.com>
2885
2886         Reviewed by John.
2887
2888         - fixed <rdar://problem/4011405> REGRESSION (180-181): Unconfirmed text disappears when text focus moves
2889
2890         The key was to change things around so that we don't push text from the DOM to the widget
2891         unless the DOM has actually been changed. This prevents the code path that wipes out inline input
2892         during the blur process.
2893
2894         * khtml/html/html_formimpl.cpp:
2895         (DOM::HTMLInputElementImpl::HTMLInputElementImpl): Start m_valueMatchesRenderer as false.
2896         (DOM::HTMLInputElementImpl::parseHTMLAttribute): Set m_valueMatchesRenderer to false when a
2897         new value is set here.
2898         (DOM::HTMLInputElementImpl::setValue): Set m_valueMatchesRenderer to false when a new value
2899         is set here.
2900         (DOM::HTMLInputElementImpl::setValueFromRenderer): Added. Sets m_value, sets m_valueMatchesRenderer
2901         to true, and also sends out the input event. It's better to have this here than in the renderer code.
2902         (DOM::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl): Start m_valueIsValid as false (replaces
2903         m_dirtyvalue) and m_valueMatchesRenderer as false.
2904         (DOM::HTMLTextAreaElementImpl::updateValue): Added. Factored this out from the value function. Uses
2905         the new booleans and keeps them up to date, specifically setting m_valueMatchesRenderer based on
2906         where the value came from.
2907         (DOM::HTMLTextAreaElementImpl::value): Updated to call updateValue to do most of the work.
2908         (DOM::HTMLTextAreaElementImpl::setValue): Set both m_valueIsValid and m_valueMatchesRenderer.
2909         (DOM::HTMLTextAreaElementImpl::setDefaultValue): Take parameter by reference.
2910
2911         * khtml/html/html_formimpl.h: Added setValueFromRenderer, valueMatchesRenderer, setValueMatchesRenderer,
2912         and m_valueMatchesRenderer to input element. For textarea element, made some parameters pass DOMString
2913         by reference, and added invalidateValue, updateValue, valueMatchesRenderer, and setValueMatchesRenderer.
2914
2915         * khtml/rendering/render_form.cpp:
2916         (RenderLineEdit::updateFromElement): Don't re-get the value from the DOM if valueMatchesRenderer
2917         is true.
2918         (RenderLineEdit::slotTextChanged): Call setValueFromRenderer instead of manipulating the DOM
2919         directly.
2920         (RenderTextArea::detach): Call updateValue instead of calling value for its side effect.
2921         (RenderTextArea::handleFocusOut): Ditto.
2922         (RenderTextArea::updateFromElement): Call updateValue and then not re-get the value from the
2923         DOM if valueMatchesRenderer is true.
2924         (RenderTextArea::slotTextChanged): Call invalidateValue instead of directly setting m_dirtyvalue to true.
2925
2926 2005-02-25  Darin Adler  <darin@apple.com>
2927
2928         Reviewed by Chris.
2929
2930         - fixed <rdar://problem/4024786> REGRESSION (Mail): "Smart paste" plain-text word into Blot leaves insertion point misplaced
2931
2932         * khtml/editing/htmlediting.cpp: (khtml::ReplaceSelectionCommand::doApply):
2933         Use the insertNodeAfterAndUpdateNodesInserted and insertNodeBeforeAndUpdateNodesInserted
2934         functions to add the leading and trailing spaces for smart paste.
2935
2936 2005-02-25  David Hyatt  <hyatt@apple.com>
2937
2938         Back out fix for 3382926, since it breaks LTR text inside RTL contexts.
2939         
2940         Reviewed by john
2941
2942         * khtml/rendering/bidi.cpp:
2943         (khtml::BidiIterator::direction):
2944
2945 2005-02-25  David Hyatt  <hyatt@apple.com>
2946
2947         Fix for 3975039, scrolling is slow in huge RSS views.  Optimize the calculation of clip rects for overflow:hidden
2948         layers.  Also optimize layer movement when scrolling overflow sections.
2949         
2950         Reviewed by darin
2951
2952         * khtml/rendering/render_layer.cpp:
2953         (throw):
2954         (ClipRects::operator delete):
2955         (ClipRects::detach):
2956         (RenderLayer::RenderLayer):
2957         (RenderLayer::~RenderLayer):
2958         (RenderLayer::updateLayerPosition):
2959         (RenderLayer::removeOnlyThisLayer):
2960         (RenderLayer::insertOnlyThisLayer):
2961         (RenderLayer::scrollToOffset):
2962         (RenderLayer::hitTest):
2963         (RenderLayer::calculateClipRects):
2964         (RenderLayer::calculateRects):
2965         (RenderLayer::containsPoint):
2966         (RenderLayer::clearClipRects):
2967         (RenderLayer::clearClipRect):
2968         * khtml/rendering/render_layer.h:
2969         (khtml::ClipRects::m_refCnt):
2970         (khtml::ClipRects::overflowClipRect):
2971         (khtml::ClipRects::fixedClipRect):
2972         (khtml::ClipRects::posClipRect):
2973         (khtml::ClipRects::ref):
2974         (khtml::ClipRects::deref):
2975         (khtml::RenderLayer::clipRects):
2976         * khtml/rendering/render_object.cpp:
2977         (RenderObject::setStyle):
2978
2979 2005-02-24  Maciej Stachowiak  <mjs@apple.com>
2980
2981         Reviewed by Darin and Dave a while ago.
2982
2983         <rdar://problem/3996685> REGRESSION: Crash in KWQVectorImpl::at loading http://maps.google.com/mapfiles/homepanel.xsl
2984         
2985         * kwq/WebCoreBridge.mm:
2986         (formElementFromDOMElement): Check for isHTMLElement() as well as
2987         id() == ID_FORM. This seems like an impossible situation, but
2988         papering over it seems more expedient for the time being.
2989
2990 2005-02-24  Richard Williamson   <rjw@apple.com>
2991
2992         Fixed <rdar://problem/3382926> Bidi neutrals at RTL/LTR boundaries not handled correctly.
2993
2994         Use mirror characters correctly when rendering with RTL directionality.
2995
2996         Reviewed by Hyatt.
2997
2998         * khtml/rendering/bidi.cpp:
2999         (khtml::BidiIterator::direction):
3000
3001 2005-02-24  Richard Williamson   <rjw@apple.com>
3002
3003         Fixed <rdar://problem/3985889> REGRESSION (125-180): setting <img> src to GIF that already animated does not animate; just shows final frame
3004         
3005         Reviewed by Hyatt.
3006
3007         * WebCore.pbproj/project.pbxproj:
3008         * khtml/html/html_imageimpl.cpp:
3009         (HTMLImageLoader::updateFromElement):
3010         * khtml/rendering/render_image.cpp:
3011         (RenderImage::resetAnimation):
3012         * khtml/rendering/render_image.h:
3013         * khtml/rendering/render_list.cpp:
3014         (RenderListMarker::setStyle):
3015         (RenderListMarker::paint):
3016         * khtml/rendering/render_list.h:
3017         * kwq/KWQPixmap.h:
3018         * kwq/KWQPixmap.mm:
3019         (QPixmap::QPixmap):
3020         (QPixmap::resetAnimation):
3021         * kwq/WebCoreImageRenderer.h:
3022
3023 2005-02-24  Chris Blumenberg  <cblu@apple.com>
3024
3025         Fixed: <rdar://problem/4020110> Safari crashes in setAllData while taking a www.zoomerang.com survey
3026
3027         Reviewed by rjw.
3028
3029         * kwq/KWQResourceLoader.mm:
3030         (-[KWQResourceLoader finishJobAndHandle:]): clear the job after we've deleted to avoid reentrancy
3031
3032 2005-02-24  Darin Adler  <darin@apple.com>
3033
3034         Reviewed by Vicki.
3035
3036         - fixed <rdar://problem/4023360> REGRESSION (186-187): image file upload is broken at pep.apple.com
3037
3038         * khtml/html/html_formimpl.cpp: (DOM::HTMLInputElementImpl::appendFormData): Return true after
3039         setting up the form data for an uploaded file. The old code would fall through to the ISINDEX
3040         case and send double form data (the filename instead of the file contents the second time).
3041
3042 2005-02-24  David Harrison  <harrison@apple.com>
3043
3044         Reviewed by Ken.
3045         
3046         <rdar://problem/3990849> AX: textMarkerRange for an AXUIElement within an AXWebArea
3047
3048         * kwq/KWQAccObject.mm:
3049         (-[KWQAccObject textMarkerRange]):
3050         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
3051         (-[KWQAccObject doAXTextMarkerRangeForUIElement:]):
3052         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
3053         Added AXTextMarkerRangeForUIElement, or you can send textMarkerRange to the UIElement itself.
3054
3055 2005-02-24  David Harrison  <harrison@apple.com>
3056
3057         Reviewed by Vicki.
3058
3059         <rdar://problem/4004279> 3 AXSelectedTextChanged notifications are firing each time I type a character
3060
3061         * khtml/xml/dom_docimpl.cpp:
3062         (DocumentImpl::updateSelection):
3063         Send notification only if the selection is not null.  This safely ignores transitory selections set during editing.
3064
3065 2005-02-24  Darin Adler  <darin@apple.com>
3066
3067         Reviewed by John.
3068
3069         - fixed <rdar://problem/3987619> in some cases, text doesn't resize with Format->Style->Bigger/Smaller
3070
3071         * khtml/editing/htmlediting.cpp:
3072         (khtml::ApplyStyleCommand::applyRelativeFontStyleChange): Only call nodeFullySelected for non-text nodes.
3073         Text nodes are already split so they're either in the range and full selected or out of the range.
3074         And nodeFullySelected doesn't work for text nodes.
3075         (khtml::ApplyStyleCommand::nodeFullySelected): Add an assertion, since this function only works for elements,
3076         not text nodes.
3077         (khtml::ApplyStyleCommand::nodeFullyUnselected): Ditto.
3078
3079         - make big improvement in <rdar://problem/3953636> Mail hung for ~10sec changing font of 84328 characters: khtml::ApplyStyleCommand::nodeFullySelected
3080
3081         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::compareBoundaryPoints): Improve algorithm based on suggestion
3082         from Nate Begeman.
3083
3084         - fixed <rdar://problem/4020305> REGRESSION (185-186): loading image in new window using document.write fails
3085
3086         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::open): If there is no parent document, don't blow away the base URL.
3087
3088         - fixed <rdar://problem/4021701> REGRESSION (188-188+): form not submitted after pressing <return> at http://hrweb.apple.com
3089         
3090         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::dispatchMouseEvent): Send activate event in the case where the event
3091         sent is a KHTML_CLICK_EVENT, not CLICK_EVENT.
3092
3093 2005-02-23  Kevin Decker  <kdecker@apple.com>
3094
3095         Reviewed by mjs  
3096         
3097         Fixed <rdar://problem/4020747> REGRESSION: stray </applet> tags crash Safari
3098
3099         * khtml/html/htmlparser.cpp:
3100         (KHTMLParser::processCloseTag):  Made a typesafe check that prevents crashes
3101         whenever there is a closing applet tag without an actual <applet> in the first place. 
3102         Now verifies the current token is ID_APPLET before casting it to an HTMLAppletElementImpl.
3103          
3104
3105 2005-02-23  Ken Kocienda  <kocienda@apple.com>
3106
3107         Reviewed by John
3108
3109         Fix for this bug:
3110         
3111         <rdar://problem/3977962> font loses bold style after pasting next to existing text and pressing return
3112
3113         * khtml/editing/htmlediting.cpp:
3114         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): Problem here was
3115         that we were doing work in cases where we should not, and content whose style would have
3116         been correct if we had done nothing was getting clobbered. It turns out that extra work
3117         to apply style to the new paragraph added in this command only needs to be done if we're 
3118         at the boundaries of a paragraph. Otherwise, content that is moved as part of the work 
3119         of the command will lend their styles to the new paragraph without any extra work needed.
3120         So, make this position check and return unless at a paragraph boundary.
3121
3122         New test:
3123
3124         * layout-tests/editing/style/block-styles-007-expected.txt
3125         * layout-tests/editing/style/block-styles-007.html
3126
3127 2005-02-23  Ken Kocienda  <kocienda@apple.com>
3128
3129         Reviewed by Hyatt
3130
3131         Fix for this bug:
3132         
3133         <rdar://problem/4017641> REGRESSION (Mail): you can only bold/unbold a selection starting from end of line once
3134
3135         Problem is with the way we figure out whether to add or remove a style based on
3136         the current selection. In this case, the code is looking at the end of the
3137         previous line, which is not bold, and deduces incorrectly that the operation is
3138         a "make bold". Then the style code runs to make bold, but there is nothing on
3139         the end of the previous line to embolden, so we get into a cycle where the same
3140         thing happens each time cmd-b is hit.
3141
3142         * khtml/khtml_part.cpp:
3143         (KHTMLPart::selectionComputedStyle):  Call editingStartPosition() to get the right position for the font determination.
3144         * khtml/xml/dom2_rangeimpl.cpp:
3145         (DOM::RangeImpl::editingStartPosition): New helper function that "does the right thing" based on whether the
3146         selection is a caret or a range, moving upstream for the former, and downstream for the latter.
3147         * khtml/xml/dom2_rangeimpl.h:
3148         * kwq/KWQKHTMLPart.mm:
3149         (KWQKHTMLPart::fontForSelection): Call editingStartPosition() to get the right position for the font determination.
3150
3151         New tests:
3152
3153         * layout-tests/editing/style/style-boundary-001-expected.txt
3154         * layout-tests/editing/style/style-boundary-001.html
3155         * layout-tests/editing/style/style-boundary-002-expected.txt
3156         * layout-tests/editing/style/style-boundary-002.html
3157         * layout-tests/editing/style/style-boundary-003-expected.txt
3158         * layout-tests/editing/style/style-boundary-003.html
3159         * layout-tests/editing/style/style-boundary-004-expected.txt
3160         * layout-tests/editing/style/style-boundary-004.html
3161
3162 2005-02-23  Richard Williamson   <rjw@apple.com>
3163
3164         Fixed <rdar://problem/3985579> 8A367: Dashboard: Stock widget not visible when click remove to remove single char ticker symbol
3165
3166         Explicitly remove scroll bar views when removing them from 
3167         the overflow.
3168
3169         Don't paint synchronously when the scroll position changes,
3170         this caused funky clip problems.
3171
3172         Reviewed by Hyatt.
3173
3174         * khtml/rendering/render_layer.cpp:
3175         (RenderLayer::scrollToOffset):
3176         (RenderLayer::setHasHorizontalScrollbar):
3177         (RenderLayer::setHasVerticalScrollbar):
3178         (RenderLayer::updateScrollInfoAfterLayout):
3179
3180 2005-02-23  Ken Kocienda  <kocienda@apple.com>
3181
3182         Reviewed by Hyatt
3183
3184         Fix for this bug:
3185         
3186         <rdar://problem/3959996> REGRESSION (Mail): cursor moves to beginning of document when click is past end
3187
3188         * khtml/rendering/render_block.cpp:
3189         (khtml::RenderBlock::positionForCoordinates): Skip blocks that are invisible or have no height when 
3190         looking for a child to pass off to. And save away the last visible block with a height to pass off
3191         to if there is no child at the right y-coordinate.
3192
3193 2005-02-23  David Harrison  <harrison@apple.com>
3194
3195         Reviewed by Darin.
3196
3197         <rdar://problem/4010059> BoundsForTextMarkerRange does not update with scrolled web area
3198
3199         * kwq/KWQAccObject.mm:
3200         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
3201         Adjust for scrolling.
3202
3203 2005-02-22  Maciej Stachowiak  <mjs@apple.com>
3204
3205         Reviewed by Ken.
3206
3207         <rdar://problem/3949790> hitting return after pasted styled line results in extra content getting the style
3208         
3209         * khtml/editing/htmlediting.cpp:
3210         (khtml::InsertParagraphSeparatorCommand::doApply): In the case
3211         where the start block is the root, insert the newly created DIV at
3212         the end of the root block instead of after the last sibling in the
3213         start node, since the start node could be inside other
3214         style-affecting nodes and we don't want to reparent its cousins
3215         into that.
3216
3217 2005-02-23  David Harrison  <harrison@apple.com>
3218
3219         Reviewed by Vicki.
3220
3221         <rdar://problem/4014691> switch to correctly spelled NSAccessibilityForegroundColorTextAttribute constant
3222         
3223         Also removed two older, now unneeded, wrappers.
3224
3225         * kwq/KWQAccObject.mm:
3226         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
3227         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
3228         Removed these older, now unneeded, wrappers.
3229         
3230         (NSAccessibilityForegroundColorTextAttributeWrapper):
3231         New wrapper for NSAccessibilityForegroundColorTextAttribute.
3232         
3233         (AXAttributeStringSetStyle):
3234         Use NSAccessibilityForegroundColorTextAttributeWrapper.
3235         
3236         (-[KWQAccObject doAXTextMarkerRangeForUnorderedTextMarkers:]):
3237         Remove uses of visiblePositionForStartOfTextMarkerRange and visiblePositionForEndOfTextMarkerRange.
3238
3239 2005-02-23  David Harrison  <harrison@apple.com>
3240
3241         Reviewed by Vicki.
3242
3243         <rdar://problem/3524784> AX hit test doesn't return info when done in empty space of content area
3244
3245         * kwq/KWQAccObject.mm:
3246         (-[KWQAccObject accessibilityHitTest:]):
3247         Return unignored object.
3248
3249 2005-02-23  Darin Adler  <darin@apple.com>
3250
3251         Reviewed by Ken.
3252
3253         - fixed <rdar://problem/4006509> REGRESSION (171-172): Setting CSS -khtml-user-modify property triggers crash
3254
3255         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::applyProperty):
3256         Removed the code that changes the style of the element. This was never needed, and caused the
3257         style to be modified while we were iterating it.
3258
3259 2005-02-23  Ken Kocienda  <kocienda@apple.com>
3260
3261         Reviewed by John
3262
3263         Fix for this bug:
3264         
3265         <rdar://problem/3980209> Mail crashed when I pressed Cmd-Shift-[ (nil-deref in ApplyStyleCommand::addBlockStyleIfNeeded)
3266
3267         * khtml/editing/htmlediting.cpp:
3268         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Reordered the new block
3269         insertion so that it come before the move. The logic stays exactly the same, however, with the old
3270         ordering, the new block could want to become a child of itself come insertion time. I considered
3271         making a more complicated code change to fix this problem, but the simple reordering works just
3272         as well, and seems less risky.
3273         
3274         These all changed in an insignificant way. It seems that with the new code, some empty text nodes
3275         got reordered in the document. This has no effect on anything visible to the user.
3276         
3277         * layout-tests/editing/style/create-block-for-style-003-expected.txt
3278         * layout-tests/editing/style/create-block-for-style-004-expected.txt
3279         * layout-tests/editing/style/create-block-for-style-009-expected.txt
3280         * layout-tests/editing/style/create-block-for-style-011-expected.txt
3281         * layout-tests/editing/style/create-block-for-style-013-expected.txt
3282
3283 2005-02-23  Darin Adler  <darin@apple.com>
3284
3285         Reviewed by John.
3286
3287         - fixed <rdar://problem/4013986> REGRESSION (173-174): onclick event not sent when mouse click on checkbox is double-click
3288
3289         We need to send an onclick event *and* an ondblclick event when we process a double click.
3290
3291         * khtml/khtmlview.cpp: (KHTMLView::dispatchMouseEvent): In the case where we're sending a CLICK_EVENT,
3292         follow it by a KHTML_CLICK_EVENT, a KHTML_DBLCLICK_EVENT when handling a double click, and a DOMACTIVATE_EVENT.
3293         We no longer do the DOMACTIVATE_EVENT in dispatchGenericEvent.
3294         * khtml/rendering/render_form.cpp: (RenderFormElement::slotClicked): send only CLICK_EVENT here, and
3295         lets dispatchMouseEvent deal with the other subsequent events.
3296         * khtml/xml/dom_nodeimpl.cpp:
3297         (NodeImpl::dispatchGenericEvent): Remove the code that sends a DOMACTIVATE_EVENT, since there's no longer
3298         a good way to figure out if this is the last event that should be sent before it is.
3299         (NodeImpl::dispatchMouseEvent): Set the meta key modifier here (as it already is set elsewhere), and
3300         follow up a CLICK_EVENT with KHTML_CLICK_EVENT, a KHTML_DBLCLICK_EVENT, and DOMACTIVATE_EVENT as above.
3301
3302 2005-02-23  Darin Adler  <darin@apple.com>
3303
3304         Reviewed by John.
3305
3306         - fixed <rdar://problem/4011405> REGRESSION (180-181): Unconfirmed text disappears when text focus moves
3307
3308         The key was to change things around so that we don't push text from the DOM to the widget
3309         unless the DOM has actually been changed. This prevents the code path that wipes out inline input
3310         during the blur process.
3311
3312         * khtml/html/html_formimpl.cpp:
3313         (DOM::HTMLInputElementImpl::HTMLInputElementImpl): Start m_valueMatchesRenderer as false.
3314         (DOM::HTMLInputElementImpl::parseHTMLAttribute): Set m_valueMatchesRenderer to false when a
3315         new value is set here.
3316         (DOM::HTMLInputElementImpl::setValue): Set m_valueMatchesRenderer to false when a new value
3317         is set here.
3318         (DOM::HTMLInputElementImpl::setValueFromRenderer): Added. Sets m_value, sets m_valueMatchesRenderer
3319         to true, and also sends out the input event. It's better to have this here than in the renderer code.
3320         (DOM::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl): Start m_valueIsValid as false (replaces
3321         m_dirtyvalue) and m_valueMatchesRenderer as false.
3322         (DOM::HTMLTextAreaElementImpl::updateValue): Added. Factored this out from the value function. Uses
3323         the new booleans and keeps them up to date, specifically setting m_valueMatchesRenderer based on
3324         where the value came from.
3325         (DOM::HTMLTextAreaElementImpl::value): Updated to call updateValue to do most of the work.
3326         (DOM::HTMLTextAreaElementImpl::setValue): Set both m_valueIsValid and m_valueMatchesRenderer.