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