Safari-179 stamp
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 === Safari-179 ===
2
3 2005-01-13  Vicki Murley <vicki@apple.com>
4
5         Reviewed by Adele.
6
7         - fix <rdar://problem/3946836> Safari about box lists 2004 instead of 2005
8
9         * WebCore.pbproj/project.pbxproj: bump "2004" to "2005"
10
11 2005-01-13  David Harrison  <harrison@apple.com>
12
13         Reviewed by Ken Kocienda.
14         
15         Better fix for 3905066.
16         
17         * khtml/editing/htmlediting.cpp:
18         (khtml::InsertParagraphSeparatorCommand::doApply):
19
20 2005-01-10  Maciej Stachowiak  <mjs@apple.com>
21
22         Reviewed by Darin.
23
24         <rdar://problem/3758033> REGRESSION (Mail): Support attributes in marked text (International input)
25         
26         * khtml/rendering/render_text.cpp:
27         (InlineTextBox::paint): Support painting custom underline markers for
28         marked text in place of generic yellow.
29         (InlineTextBox::paintMarkedTextUnderline): New method that handles this.
30         * khtml/rendering/render_text.h:
31         * kwq/KWQKHTMLPart.h: Declare new methods and structs.
32         * kwq/KWQKHTMLPart.mm:
33         (KWQKHTMLPart::clear): Clear marked test underlines.
34         (KWQKHTMLPart::setMarkedTextRange): Takes attributes and ranges now.
35         (convertAttributesToUnderlines): Converts NSAttributedString attributes
36         to simplified and C++-friendly form.
37         (KWQKHTMLPart::markedTextUsesUnderlines): New method.
38         (KWQKHTMLPart::markedTextUnderlines): New method.
39         * kwq/KWQPainter.mm:
40         (QPainter::drawLineForText): Handle pen width.
41         * kwq/WebCoreBridge.h:
42         * kwq/WebCoreBridge.mm:
43         (-[WebCoreBridge setMarkedTextDOMRange:customAttributes:ranges:]): Take attributes
44         and ranges.
45         * kwq/WebCoreTextRenderer.h:
46
47 2005-01-12  David Harrison  <harrison@apple.com>
48
49         Reviewed by Dave Hyatt.
50
51         <rdar://problem/3888973> AX: Parent AXWebArea of nested AXWebAreas is messed up
52         
53         * kwq/KWQAccObject.mm:
54         (-[KWQAccObject addChildrenToArray:]):
55         Use the widget's outer view.
56
57 2005-01-12  David Harrison  <harrison@apple.com>
58
59         Reviewed by Darin Adler.
60
61         <rdar://problem/3949908> Crash when asking for the kAXLengthForTextMarkerRangeParameterizedAttribute
62         
63         * khtml/xml/dom_nodeimpl.cpp:
64         (NodeImpl::displayNode):
65         Add quotes around text node content.
66         (NodeBaseImpl::childNode):
67         Add nil check to return nil rather than crash when child node not found.
68         * kwq/KWQAccObject.mm:
69         (-[KWQAccObject doAXStringForTextMarkerRange:]):
70         Pass range compliant positions to TextIterator.
71
72 2005-01-12  David Hyatt  <hyatt@apple.com>
73
74         Fix for 3951203, CSS border style incorrectly clipped on inline elements.  Make sure the repaint rect set during
75         line layout is smarter about including the overflow for both old states and new states.
76         
77         Reviewed by john
78
79         * khtml/rendering/bidi.cpp:
80         (khtml::RenderBlock::layoutInlineChildren):
81
82 2005-01-12  David Hyatt  <hyatt@apple.com>
83
84         Fix for bug 3937608, versiontracker.com flashes and displays the right column below content.  Make sure to move
85         tables/overflows that dont fit within a block only in strict mode.
86
87         Fix for bug 3931049, characters dont show up when typing.  Make sure to dirty the right lines when this specific
88         case in editing is hit.
89         
90         Reviewed by darin (first one), kocienda (second one)
91
92         * khtml/rendering/render_block.cpp:
93         (khtml::RenderBlock::getClearDelta):
94         * khtml/rendering/render_flow.cpp:
95         (RenderFlow::dirtyLinesFromChangedChild):
96         * khtml/rendering/render_line.cpp:
97         (khtml::InlineFlowBox::verticallyAlignBoxes):
98
99 2005-01-12  Ken Kocienda  <kocienda@apple.com>
100
101         Reviewed by John
102
103         Fix for this bug:
104         
105         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
106
107         * khtml/editing/htmlediting.cpp:
108         (khtml::DeleteSelectionCommand::initializePositionData): Change test that will prevent block
109         merging. End-of-line test was just wrong. Call new start-of and end-of paragraph functions
110         added to visible_position files.
111         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Add tests for BR elements, which makes
112         tests to determine when to stop moving nodes more complete and correct. Also improved comments.
113         * khtml/editing/visible_position.cpp:
114         (khtml::isFirstVisiblePositionInParagraph): New function.
115         (khtml::isLastVisiblePositionInParagraph): New function.
116         * khtml/editing/visible_position.h: Update header accordingly.
117         * layout-tests/editing/deleting/delete-block-merge-contents-002-expected.txt: New results, slightly different from former
118         results but still correct.
119         * layout-tests/editing/deleting/delete-block-merge-contents-007-expected.txt: Ditto.
120         * layout-tests/editing/deleting/delete-block-merge-contents-018-expected.txt: Added.
121         * layout-tests/editing/deleting/delete-block-merge-contents-018.html: Added.
122         * layout-tests/editing/deleting/delete-block-merge-contents-019-expected.txt: Added.
123         * layout-tests/editing/deleting/delete-block-merge-contents-019.html: Added.
124         * layout-tests/editing/deleting/delete-block-merge-contents-020-expected.txt: Added.
125         * layout-tests/editing/deleting/delete-block-merge-contents-020.html: Added.
126         * layout-tests/editing/deleting/delete-block-merge-contents-021-expected.txt: Added.
127         * layout-tests/editing/deleting/delete-block-merge-contents-021.html: Added.
128         * layout-tests/editing/deleting/delete-line-014-expected.txt: These new results are actually better, and fix a bug.
129
130 2005-01-11  Richard Williamson   <rjw@apple.com>
131
132         Fixed 3922875.  Fall back to DOM object is EMBED element
133         has no associated runtime object.
134
135         Reviewed by Chris.
136
137         * khtml/ecma/kjs_dom.cpp:
138         (KJS::getRuntimeObject):
139         * khtml/ecma/kjs_html.cpp:
140         (KJS::HTMLDocument::tryGet):
141         (KJS::HTMLElement::tryGet):
142         (KJS::HTMLCollection::tryGet):
143         (KJS::HTMLCollection::getNamedItems):
144
145 2005-01-11  David Hyatt  <hyatt@apple.com>
146
147         Fix for 3882299, missing content on gibson.com.  Change our handling of " and ' in certain states of the parser to match
148         other browsers.
149         
150         Reviewed by Maciej
151
152         * khtml/html/htmltokenizer.cpp:
153         (khtml::HTMLTokenizer::parseTag):
154
155 2005-01-11  Chris Blumenberg  <cblu@apple.com>
156
157         Fixed: <rdar://problem/3930733> Mail prints second page of email blank
158
159         Reviewed by dave.
160
161         * khtml/rendering/render_canvas.cpp:
162         (RenderCanvas::paint): cache the print rect since the dirty rect can get changed during printing
163         * khtml/rendering/render_flow.cpp:
164         (RenderFlow::paintLines): removed null check since the print rect should never be null
165         * khtml/rendering/render_list.cpp:
166         (RenderListMarker::paint): ditto
167         * kwq/KWQKHTMLPart.mm:
168         (KWQKHTMLPart::adjustPageHeight): don't set the print rect here since this method is not called for the last page
169
170 2005-01-10  Ken Kocienda  <kocienda@apple.com>
171
172         Reviewed by Hyatt
173
174         Fix for this bug:
175         
176         <rdar://problem/3943648> extra line is inserted after pressing return within quoted text of reply
177
178         * khtml/editing/htmlediting.cpp:
179         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): This bug was the result of a 
180         simple coding mistake. A local variable was erroneously redefined in a deeper scope, and so the 
181         result calculated in that deeper scope was not available when tested.
182
183 2005-01-10  Ken Kocienda  <kocienda@apple.com>
184
185         Reviewed by John
186
187         Fix for this bug:
188         
189         <rdar://problem/3946852> Option-e goes to next line
190
191         * khtml/editing/htmlediting.cpp:
192         (khtml::ReplaceSelectionCommand::doApply): Tweak case used to determine when merging content
193         into the start line is done. We plan to change pretty substantially soon to better handle
194         the problem described in <rdar://problem/3937352> Quote level not maintained when copied 
195         and pasted within a Mail message. In the meantime, this change does no harm, and fixes the bug.
196
197 2005-01-10  Ken Kocienda  <kocienda@apple.com>
198
199         Reviewed by Darin
200
201         Fix for this bug:
202         
203         <rdar://problem/3907005> Applying block styles to a line of text can unexpectedly affect other lines
204
205         * khtml/editing/htmlediting.cpp:
206         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): New function which moves "paragraphs"
207         to their own blocks if needed so that a block style can be applied.
208         (khtml::CompositeEditCommand::isMailBlockquote): Moved this function to base class so it can be used more generally.
209         (khtml::ApplyStyleCommand::applyBlockStyle): Pass a node instead of a block to addBlockStyleIfNeeded().
210         (khtml::ApplyStyleCommand::addBlockStyleIfNeeded): Now accepts a node instead of a block for styling.
211         This function also now calls moveParagraphContentsToNewBlockIfNecessary() to make sure that only the current
212         paragraph is styled.
213         (khtml::SetNodeAttributeCommand::doUnapply): Should not assert on undo if old value of attribute was null.
214         Should remove attributue instead.
215         * khtml/editing/htmlediting.h: Touch function declarations accordingly.
216         * layout-tests/editing/style/create-block-for-style-001-expected.txt: Added.
217         * layout-tests/editing/style/create-block-for-style-001.html: Added.
218         * layout-tests/editing/style/create-block-for-style-002-expected.txt: Added.
219         * layout-tests/editing/style/create-block-for-style-002.html: Added.
220         * layout-tests/editing/style/create-block-for-style-003-expected.txt: Added.
221         * layout-tests/editing/style/create-block-for-style-003.html: Added.
222         * layout-tests/editing/style/create-block-for-style-004-expected.txt: Added.
223         * layout-tests/editing/style/create-block-for-style-004.html: Added.
224         * layout-tests/editing/style/create-block-for-style-005-expected.txt: Added.
225         * layout-tests/editing/style/create-block-for-style-005.html: Added.
226         * layout-tests/editing/style/create-block-for-style-006-expected.txt: Added.
227         * layout-tests/editing/style/create-block-for-style-006.html: Added.
228         * layout-tests/editing/style/create-block-for-style-007-expected.txt: Added.
229         * layout-tests/editing/style/create-block-for-style-007.html: Added.
230         * layout-tests/editing/style/create-block-for-style-008-expected.txt: Added.
231         * layout-tests/editing/style/create-block-for-style-008.html: Added.
232         * layout-tests/editing/style/create-block-for-style-009-expected.txt: Added.
233         * layout-tests/editing/style/create-block-for-style-009.html: Added.
234         * layout-tests/editing/style/create-block-for-style-010-expected.txt: Added.
235         * layout-tests/editing/style/create-block-for-style-010.html: Added.
236         * layout-tests/editing/style/create-block-for-style-011-expected.txt: Added.
237         * layout-tests/editing/style/create-block-for-style-011.html: Added.
238         * layout-tests/editing/style/create-block-for-style-012-expected.txt: Added.
239         * layout-tests/editing/style/create-block-for-style-012.html: Added.
240         * layout-tests/editing/style/create-block-for-style-013-expected.txt: Added.
241         * layout-tests/editing/style/create-block-for-style-013.html: Added.
242
243         Unrelated updates to these expected results.
244         * layout-tests/editing/inserting/insert-div-007-expected.txt
245         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
246
247 2005-01-10  Chris Blumenberg  <cblu@apple.com>
248
249         Fixed: <rdar://problem/3936844> Mail: Messages with rich text do not print
250
251         Reviewed by john.
252
253         * khtml/rendering/render_flow.cpp:
254         (RenderFlow::paintLines): don't do pagination work if printRect is not set
255         * khtml/rendering/render_list.cpp:
256         (RenderListMarker::paint): ditto
257
258 2005-01-10  David Harrison  <harrison@apple.com>
259
260         Reviewed by Darin.
261
262         * kwq/KWQTextUtilities.mm:
263         (currentTextBreakLocaleID):
264         Return empty string (AKA root locale) if locale pref can not be canonicalized.
265
266 2005-01-10  John Sullivan  <sullivan@apple.com>
267
268         Fixed broken Panther build.
269
270         * kwq/KWQTextUtilities.mm:
271         (currentTextBreakLocaleID):
272         This recently-added function was using code copy/pasted from CarbonCore UnicodeUtilities.
273         That code used a Tiger-only function, CFLocaleCreateCanonicalLanguageIdentifierFromString.
274         To fix the build, I added a BUILDING_ON_PANTHER #ifdef that avoids the call to the Tiger
275         function. However, the Tiger-only code was wrong; the string generated using 
276         CFLocaleCreateCanonicalLanguageIdentifierFromString was not used at all, so I fixed that
277         as well.
278
279 2005-01-09  David Harrison  <harrison@apple.com>
280
281         Reviewed by Ken Kocienda.
282
283         <rdar://problem/3786362> REGRESSION (Mail): pasted text loses one newline
284         
285         * khtml/editing/htmlediting.cpp:
286         (khtml::ReplaceSelectionCommand::doApply):
287         Tune check for need for insertParagraphSeparator when hasInterchangeNewline.
288
289 2005-01-09  Darin Adler  <darin@apple.com>
290
291         Reviewed by Harrison.
292
293         - fixed <rdar://problem/3939176> select() method does not work on <input type=search>
294
295         * khtml/html/html_formimpl.cpp: (DOM::HTMLInputElementImpl::select): Changed if statement
296         to a switch statement. Added SEARCH to the set of types that treat the renderer as a
297         RenderLineEdit.
298
299 2005-01-09  David Harrison  <harrison@apple.com>
300
301         Reviewed by Ken Kocienda.
302
303         <rdar://problem/3905066> REGRESSION (Mail): Hitting return key with caret in front of space causes space to become lost (resize fixes)
304
305         Problem was that InsertParagraphSeparatorCommand::doApply() was not collapsing
306         whitespace to a single non-breaking space when splitting a text node.
307
308         * khtml/editing/htmlediting.cpp:
309         (khtml::InsertParagraphSeparatorCommand::doApply):
310
311 2005-01-08  Kevin Decker  <kdecker@apple.com>
312
313         Reviewed by Ken.
314
315         Fixed: <rdar://problem/3924219> Calling setOuterHTML: on a DOMHTMLHtmlElement can crash a program
316
317         * khtml/html/html_elementimpl.cpp:
318         (HTMLElementImpl::setOuterHTML): Added a nil check for fragments who don't have parents.
319
320 2005-01-07  Maciej Stachowiak  <mjs@apple.com>
321
322         Reviewed by Darin.
323         
324         <rdar://problem/3807144> REGRESSION (125-TOT): my bank's website doesn't work (Societe Generale, socgen.com)
325
326         * Khtml/khtml_part.cpp:
327         (KHTMLPart::checkCompleted): If the document is NULL, assume this frame has
328         not started loading yet so it could not possibly be finishing here...
329         (KHTMLPart::stop): ...unless the part is explicitly stopped and there is still
330         no document, in this case we must have hit an error or been loading a non-HTML
331         frame.
332         * khtml/khtml_part.h:
333
334 2005-01-08  David Harrison  <harrison@apple.com>
335
336         Reviewed by Maciej.
337
338         <rdar://problem/3943415> REGRESSION (Mail): double-clicking past word selects previous word instead of only blank space
339         
340         * khtml/editing/selection.cpp:
341         (khtml::Selection::validate):
342         Tune word selections left/right choice to use right if on empty last line.
343
344 2005-01-07  David Harrison  <harrison@apple.com>
345
346         Reviewed by Darin.
347
348         <rdar://problem/3942619> AX: Support sentence ax attributes
349
350         Needed to use the unicode utilities properly.  Twas lame before.
351
352         * khtml/editing/visible_units.cpp:
353         (khtml::previousBoundary):
354         (khtml::nextBoundary):
355         (khtml::startOfWord):
356         (khtml::endOfWord):
357         (khtml::previousWordPosition):
358         (khtml::nextWordPosition):
359         (khtml::startOfSentence):
360         (khtml::endOfSentence):
361         (khtml::previousSentencePosition):
362         (khtml::nextSentencePosition):
363         * kwq/KWQAccObject.mm:
364         (-[KWQAccObject accessibilityAttributeNames]):
365         (-[KWQAccObject accessibilityAttributeValue:]):
366         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
367         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
368         * kwq/KWQTextUtilities.mm:
369         (currentTextBreakLocaleID):
370         (KWQFindSentenceBoundary):
371         (KWQFindNextSentenceFromIndex):
372
373 2005-01-07  Ken Kocienda  <kocienda@apple.com>
374
375         Reviewed by Kevin
376
377         Fix for these bugs:
378         
379         <rdar://problem/3939523> in some cases, text does not retain style info after pressing return twice
380         <rdar://problem/3944492> after pressing return twice, text is bold when it shouldn't be
381
382         * khtml/editing/htmlediting.cpp:
383         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion):
384         Merge the typing style with the computed style for the current position. Fixes both bugs.
385         * khtml/editing/htmlediting.h:
386         * layout-tests/editing/inserting/insert-div-023-expected.txt: Added.
387         * layout-tests/editing/inserting/insert-div-023.html: Added.
388         * layout-tests/editing/inserting/insert-div-024-expected.txt: Added.
389         * layout-tests/editing/inserting/insert-div-024.html: Added.
390
391 2005-01-07  David Hyatt  <hyatt@apple.com>
392
393         Fix for 3941364, make sure tables reset overflowWidth/Height when they lay out again.  Fixes the odd scrolling
394         behavior on worldofwarcraft.com.
395         
396         Reviewed by kevin
397
398         * khtml/rendering/render_table.cpp:
399         (RenderTable::layout):
400
401 2005-01-06  David Hyatt  <hyatt@apple.com>
402
403         Fix for 3932418 and 3920998, assertion failures caused by stray inline content inside tables.  Bulletproof the hit testing to
404         ignore inline flows in this case.
405         
406         Reviewed by kevin
407
408         * khtml/rendering/render_block.cpp:
409         (khtml::RenderBlock::nodeAtPoint):
410
411 2005-01-07  Ken Kocienda  <kocienda@apple.com>
412
413         Reviewed by Hyatt
414
415         Fix for this bug:
416         
417         <rdar://problem/3848412> for forwarded message, tabbing to message view scrolls to bottom of view
418
419         * kwq/KWQKHTMLPart.mm:
420         (KWQKHTMLPart::nextKeyViewInFrame): Don't scroll the focus node to visible if it is not
421         in the document, or if it is not a descendent of the document element. In the case of the bug,
422         since the selection has not yet been set up, the focus node passed here is the HTML element, and
423         that does not yield a rect that is useful to us here. So now, in the case the bug mentions, we do nothing.
424
425 2005-01-06  Kevin Decker  <kdecker@apple.com>
426
427         Reviewed by mjs.
428
429         Fixed: <rdar://problem/3932215> REGRESSION (125-177): iFrame example at developer.apple.com fails in Safari
430
431         * khtml/khtml_part.cpp:
432         (KHTMLPart::processObjectRequest): m_bComplete was never true for frames generated by Javascript due to our synchronous loading and as a result, scheduled redirects wouldn't fire in KHTMLPart::scheduleLocationChange().  By virtue of being an empty document, a document is complete.  In this special case it's safe at this point to call checkCompleted() which sets m_bComplete true. 
433
434 === Safari-178 ===
435
436 2005-01-06  David Harrison  <harrison@apple.com>
437
438         Reviewed by Chris.
439
440         (addendum to previous checkin for this bug) 
441         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
442
443         Fix line navigation.  Add AXUIElementForTextMarker.
444
445         * kwq/KWQAccObject.mm:
446         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
447         (-[KWQAccObject doAXUIElementForTextMarker:]):
448         (-[KWQAccObject doAXLineForTextMarker:]):
449         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
450         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
451         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
452         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
453         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
454
455 2005-01-06  Darin Adler  <darin@apple.com>
456
457         Reviewed by Ken.
458
459         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
460
461         (turns out the PLT regression was a false alarm)
462
463         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
464         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
465         much larger number.
466         * khtml/html/htmlparser.cpp:
467         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
468         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
469         to eliminate code that used ID_CLOSE_TAG for an array size.
470         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
471         that manages isindex to use deref instead of delete.
472         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
473         mistake of using ID_CLOSE_TAG for the array size too.
474         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
475         there and it would prevent custom tags from working. Added range check before using the forbidden
476         tag array with the token ID since custom tags will use index values past the end of the array.
477         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
478         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
479         createElement call is still here. Last time I left out a few form element types from this switch;
480         fixed now.
481         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
482         document if getTagID fails; this creates a unique per-document ID.
483
484         * khtml/misc/htmltags.c: Regenerated.
485         * khtml/misc/htmltags.h: Regenerated.
486
487         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
488         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
489         Also rewrote getTagName to work with the new scheme.
490
491 2005-01-06  David Harrison  <harrison@apple.com>
492         
493         Fixed Panther build.  Also, do not advertize sentence support since it is incomplete.
494         
495         * kwq/KWQAccObject.mm:
496         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
497         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
498         (-[KWQAccObject accessibilityIsAttributeSettable:]):
499
500 2005-01-06  David Harrison  <harrison@apple.com>
501
502         Reviewed by Dave Hyatt.
503
504         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
505         <rdar://problem/3588548> AX: tabbing does not work correctly with the screen reader and a focused link; need AXFocusedUIElement to work
506         
507         Many more AX attributes supported.  Numerous fixes to previous AX work.
508         
509         * khtml/editing/visible_units.cpp:
510         (khtml::startSentenceBoundary):
511         (khtml::startOfSentence):
512         (khtml::endSentenceBoundary):
513         (khtml::endOfSentence):
514         (khtml::previousSentencePositionBoundary):
515         (khtml::previousSentencePosition):
516         (khtml::nextSentencePositionBoundary):
517         (khtml::nextSentencePosition):
518         * khtml/editing/visible_units.h:
519         * khtml/khtmlview.cpp:
520         (KHTMLView::layout):
521         * khtml/misc/helper.cpp:
522         (khtml::findSentenceBoundary):
523         (khtml::nextSentenceFromIndex):
524         * khtml/misc/helper.h:
525         * khtml/misc/htmltags.c:
526         (hash_tag):
527         (findTag):
528         * khtml/rendering/render_container.cpp:
529         (RenderContainer::removeChildNode):
530         (RenderContainer::appendChildNode):
531         (RenderContainer::insertChildNode):
532         * khtml/rendering/render_object.cpp:
533         (RenderObject::remove):
534         * khtml/xml/dom_docimpl.cpp:
535         (DocumentImpl::getAccObjectCache):
536         (DocumentImpl::updateSelection):
537         (DocumentImpl::close):
538         (DocumentImpl::setFocusNode):
539         (DocumentImpl::parentDocument):
540         (DocumentImpl::topDocument):
541         * khtml/xml/dom_docimpl.h:
542         * kwq/KWQAccObject.mm:
543         (-[KWQAccObject accessibilityShouldUseUniqueId]):
544         (-[KWQAccObject detach]):
545         (-[KWQAccObject anchorElement]):
546         (-[KWQAccObject firstChild]):
547         (-[KWQAccObject lastChild]):
548         (-[KWQAccObject previousSibling]):
549         (-[KWQAccObject nextSibling]):
550         (-[KWQAccObject parentObject]):
551         (-[KWQAccObject value]):
552         (-[KWQAccObject accessibilityAttributeNames]):
553         (-[KWQAccObject accessibilityPerformAction:]):
554         (-[KWQAccObject textMarkerForVisiblePosition:]):
555         (-[KWQAccObject visiblePositionForTextMarker:]):
556         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
557         (-[KWQAccObject topDocument]):
558         (-[KWQAccObject topRenderer]):
559         (-[KWQAccObject topView]):
560         (-[KWQAccObject accessibilityAttributeValue:]):
561         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
562         (-[KWQAccObject doAXLineForTextMarker:]):
563         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
564         (-[KWQAccObject doAXStringForTextMarkerRange:]):
565         (-[KWQAccObject doAXTextMarkerForPosition:]):
566         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
567         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
568         (-[KWQAccObject doAXTextMarkerRangeForUnorderedTextMarkers:]):
569         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
570         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
571         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
572         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
573         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
574         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
575         (-[KWQAccObject doAXSentenceTextMarkerRangeForTextMarker:]):
576         (-[KWQAccObject doAXParagraphTextMarkerRangeForTextMarker:]):
577         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
578         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
579         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
580         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
581         (-[KWQAccObject doAXNextSentenceEndTextMarkerForTextMarker:]):
582         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
583         (-[KWQAccObject doAXNextParagraphEndTextMarkerForTextMarker:]):
584         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
585         (-[KWQAccObject doAXLengthForTextMarkerRange:]):
586         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
587         (-[KWQAccObject accessibilityHitTest:]):
588         (-[KWQAccObject accessibilityFocusedUIElement]):
589         (-[KWQAccObject accessibilityIsAttributeSettable:]):
590         (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
591         (-[KWQAccObject setAccObjectID:]):
592         (-[KWQAccObject removeAccObjectID]):
593         * kwq/KWQAccObjectCache.h:
594         * kwq/KWQAccObjectCache.mm:
595         (KWQAccObjectCache::setAccObject):
596         (KWQAccObjectCache::removeAccObject):
597         (KWQAccObjectCache::visiblePositionForTextMarker):
598         (KWQAccObjectCache::postNotificationToTopWebArea):
599         (KWQAccObjectCache::postNotification):
600         (KWQAccObjectCache::handleFocusedUIElementChanged):
601         * kwq/KWQKHTMLPart.mm:
602         (KWQKHTMLPart::respondToChangedContents):
603         * kwq/KWQTextUtilities.h:
604         * kwq/KWQTextUtilities.mm:
605         (KWQFindNextWordFromIndex):
606         (KWQFindSentenceBoundary):
607         (KWQFindNextSentenceFromIndex):
608         * kwq/WebCoreBridge.mm:
609         (-[WebCoreBridge accessibilityTree]):
610
611 2005-01-05  Darin Adler  <darin@apple.com>
612
613         Reviewed by Ken.
614
615         - re-landing a subset of my custom tag change that does not fix the bug, but also does
616           not introduce a performance regression
617
618         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
619         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
620
621         * khtml/editing/htmlediting.cpp:
622         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
623         per-document tags and is just better all around for things like the document.
624         (khtml::debugNode): Ditto.
625         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
626         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
627         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
628         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
629
630         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
631         non-HTML elements to be nested as desired.
632
633         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
634         * khtml/misc/htmlhashes.cpp:
635         (khtml::getTagID): Changed return type to unsigned short.
636         (khtml::getAttrID): Ditto.
637
638         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
639         * khtml/xml/dom_docimpl.cpp:
640         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
641         Also updated for a few tags that the parser handled but this did not.
642
643         * kwq/KWQRenderTreeDebug.cpp:
644         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
645         the tag ID directly, which only works for standard nodes.
646         (operator<<): Update to call getTagName.
647         (nodePositionRelativeToRoot): Ditto.
648         (writeSelection): Ditto.
649
650 2005-01-05  Ken Kocienda  <kocienda@apple.com>
651
652         Reviewed by Hyatt
653
654         Fix for this bug:
655         
656         <rdar://problem/3941203> REGRESSION (Mail): Paste inserts content in wrong place
657
658         * khtml/editing/htmlediting.cpp:
659         (khtml::ReplaceSelectionCommand::doApply): Some cleanup and refinement of the concepts used to make
660         this operation work correctly, particularly in the logic to figure out whether to merge content, and
661         also performing merges.
662         * khtml/editing/visible_position.cpp:
663         (khtml::isFirstVisiblePositionInBlock): Simplification of test used to make this determination.
664         * khtml/editing/visible_units.cpp:
665         (khtml::isStartOfParagraph): New helper, used in khtml::ReplaceSelectionCommand::doApply().
666         (khtml::isEndOfParagraph): Ditto.
667         * khtml/editing/visible_units.h: Declare new functions.
668
669 2005-01-04  Ken Kocienda  <kocienda@apple.com>
670
671         Reviewed by John
672
673         Fix for this bug:
674         
675         <rdar://problem/3926522> Pressing return in a quoted block inserts too many newlines
676
677         * khtml/editing/htmlediting.cpp:
678         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Call to insertBlockPlaceholderIfNeeded()
679         for the block we are adding was being done at the wrong time, which led to the placeholder remaining
680         in the document when it was not needed. This resulted in the extra space reported in the bug.
681
682 2005-01-04  Kevin Decker  <kdecker@apple.com>
683
684         Reviewed by Hyatt.
685
686         Fixed: <rdar://problem/3936879> nil-deref, crash in InlineFlowBox::nodeAtPoint closing DHTML menus at hrweb.apple.com
687
688         * khtml/rendering/render_block.cpp:
689         (khtml::RenderBlock::fillInlineSelectionGaps): Added a nil check. If there is no selection, don't try to get the selection's containing block. If we do, we'll crash. 
690
691 2005-01-04  David Hyatt  <hyatt@apple.com>
692
693         Fix for 3937203, force an update of the dashboard regions when scrollbars are added/removed.
694         
695         Reviewed by kevin
696
697         * khtml/rendering/render_layer.cpp:
698         (RenderLayer::updateScrollInfoAfterLayout):
699
700 2005-01-04  Ken Kocienda  <kocienda@apple.com>
701
702         Reviewed by John
703
704         Fix for these two bugs:
705         
706         <rdar://problem/3938935> REGRESSION (Mail): Pasting into an empty document mangles content
707         <rdar://problem/3939148> REGRESSION (Mail): Pasting mistakenly reverses lines
708
709         * khtml/editing/htmlediting.cpp:
710         (khtml::ReplaceSelectionCommand::doApply): For 3938935, add one more case to handle an empty document; merge
711         neither start nor end. For 3939148, improve the code which adjusts the insertion point during 
712         the process of pasting. It formerly handled only one of the possible cases.
713         * layout-tests/editing/pasteboard/paste-text-015-expected.txt: Added.
714         * layout-tests/editing/pasteboard/paste-text-015.html: Added.
715
716 2005-01-04  David Hyatt  <hyatt@apple.com>
717
718         Fix for 3936571, placeholder attribute should work for normal inputs for Dashboard.
719         
720         Reviewed by john
721
722         * khtml/rendering/render_form.cpp:
723         (RenderLineEdit::updateFromElement):
724         * kwq/KWQLineEdit.mm:
725         (QLineEdit::setPlaceholderString):
726
727 2005-01-04  David Hyatt  <hyatt@apple.com>
728
729         Fix for 3830936, hang on changeforamerica.com.  Make sure to ignore the style not yet available option when
730         returning pseudo-styles.
731         
732         Reviewed by john
733
734         * khtml/css/cssstyleselector.cpp:
735         (khtml::CSSStyleSelector::matchRulesForList):
736         (khtml::CSSStyleSelector::pseudoStyleForElement):
737         * khtml/rendering/render_style.cpp:
738         (RenderStyle::addPseudoStyle):
739
740 2005-01-04  Darin Adler  <darin@apple.com>
741
742         - rolled out my custom tag name change again -- it caused a 1 ms PLT regression
743
744         * khtml/css/cssstyleselector.cpp:
745         * khtml/editing/htmlediting.cpp:
746         * khtml/editing/selection.cpp:
747         * khtml/editing/visible_position.cpp:
748         * khtml/html/dtd.cpp:
749         * khtml/html/htmlparser.cpp:
750         * khtml/html/htmlparser.h:
751         * khtml/html/htmltokenizer.cpp:
752         * khtml/misc/htmlhashes.cpp:
753         * khtml/misc/htmlhashes.h:
754         * khtml/misc/htmltags.c:
755         * khtml/misc/htmltags.h:
756         * khtml/misc/maketags:
757         * khtml/xml/dom_docimpl.cpp:
758         * khtml/xml/dom_docimpl.h:
759         * khtml/xml/dom_nodeimpl.cpp:
760         * khtml/xml/dom_position.cpp:
761         * kwq/KWQRenderTreeDebug.cpp:
762
763 2005-01-04  Ken Kocienda  <kocienda@apple.com>
764
765         Reviewed by John
766
767         Fix for this bug:
768         
769         <rdar://problem/3927554> Style info applied to remainder of document after a newline is entered
770
771         * khtml/editing/htmlediting.cpp:
772         (khtml::InsertParagraphSeparatorCommand::doApply): Clean up and simplification in code that inserts
773         a paragraph separator. The bug was all about applying styles to the new paragraph that did not need
774         to be applied. Now the code will detect when at the end of a style run and will not move and apply 
775         that ending style to the new paragraph, though it will place that style into the typing style. This
776         seems to match NSText behavior.
777         * layout-tests/editing/inserting/insert-div-021-expected.txt: This test result exhibited the bug fixed 
778         here. The only reason it was not noticed is that the erroneously copied inline was a span, and so did
779         not have any visible effect on the document.
780         * layout-tests/editing/inserting/insert-div-022-expected.txt: Added.
781         * layout-tests/editing/inserting/insert-div-022.html: Added.
782
783 2005-01-04  David Hyatt  <hyatt@apple.com>
784
785         Fix for 3904562, make sure to clear the outline dictionary when drawing so that random focus rings dont get drawn
786         all over the place.
787         
788         Reviewed by john
789
790         * khtml/rendering/render_flow.cpp:
791         (RenderFlow::paintLines):
792
793 2005-01-03  David Hyatt  <hyatt@apple.com>
794
795         Fix for float painting regressions 3932524, 3931664, and 3933068.  Make the noPaint flag setting more
796         robust and make it work regardless of which objects get a layout or not.
797         
798         Reviewed by mjs
799
800         * khtml/rendering/render_block.cpp:
801         (khtml::RenderBlock::insertFloatingObject):
802         (khtml::RenderBlock::addOverhangingFloats):
803         (khtml::RenderBlock::addIntrudingFloats):
804         * khtml/rendering/render_block.h:
805         (khtml::RenderBlock::FloatingObject::FloatingObject):
806
807 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
808
809         Reviewed by Kevin.
810
811         <rdar://problem/3935390> Tiger 8A341: nil deref crash in DOM::NodeImpl::traverseNextNode
812         
813         * khtml/html/html_miscimpl.cpp:
814         (HTMLCollectionImpl::traverseNextItem): Assert that the starting point is not nil,
815         it should not ever be (now).
816         (HTMLCollectionImpl::item): When traversing items stop when we hit
817         nil, meaning the end to avoid triggering above assert (formerly crash).
818
819 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
820
821         Reviewed by John and Kevin.
822
823         <rdar://problem/3870317> REGRESSION(125.9-125.11) broken behavior at test.profoundlearning.com - used to
824         
825         * khtml/ecma/kjs_window.cpp:
826         (Window::get): Look up frame names before buitin window properties
827         to match other browsers. This regressed because we added a builtin
828         "toolbar" property but this site had a frame with that name.
829
830 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
831
832         Reviewed by Darin.
833
834         <rdar://problem/3888931> frame naming allows malicious site to bring up a window when you click on a link in another
835         
836         Added opener bridge method to help WebKit implement security check
837         for named frame visibility.
838         
839         * khtml/khtml_part.h:
840         * kwq/WebCoreBridge.h:
841         * kwq/WebCoreBridge.mm:
842         (-[WebCoreBridge opener]):
843
844 2005-01-03  Ken Kocienda  <kocienda@apple.com>
845
846         Reviewed by John
847
848         Fix for this bug:
849         
850         <rdar://problem/3933926> Tiger8A341: Mail crashes while forwarding embedded HTML message in -[WebCoreBridge ensureSelectionVisible]
851
852         * kwq/WebCoreBridge.mm:
853         (-[WebCoreBridge ensureSelectionVisible]): Put in some null checks to prevent crash experienced in bug.
854
855 2005-01-03  David Hyatt  <hyatt@apple.com>
856
857         Fix for 3936881, make sure positioned objects prooperly update y-position.
858         
859         Reviewed by john
860
861         * khtml/rendering/render_block.cpp:
862         (khtml::RenderBlock::layoutPositionedObjects):
863
864 2005-01-03  Ken Kocienda  <kocienda@apple.com>
865
866         Reviewed by Harrison
867         
868         Fix for this bug:
869         
870         <rdar://problem/3928250> REGRESSION (Mail): Typing style lost after hitting return key
871
872         * khtml/editing/htmlediting.cpp:
873         (khtml::InsertLineBreakCommand::preservesTypingStyle): Now implemented, returning yes for this command.
874         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Initialize new typing style member variable.
875         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Deref new typing style member variable.
876         (khtml::InsertParagraphSeparatorCommand::preservesTypingStyle): Now implemented, returning yes for this command.
877         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion): New function to set the typing style
878         (khtml::InsertParagraphSeparatorCommand::calculateAndSetTypingStyleAfterInsertion): Function called after the <p>
879         insertion is done. This function diffs the style created in setFullTypingStyleBeforeInsertion() with the style
880         of the new <p> and only sets those styles needed to preserve the style in effect before the insertion.
881         (khtml::InsertParagraphSeparatorCommand::doApply): Call new functions.
882         (khtml::TypingCommand::preservesTypingStyle): Now yes for inserting line breaks and paragraphs.
883          * khtml/editing/htmlediting.h: Declare new functions.
884
885 2004-12-25  Kevin Decker  <kdecker@apple.com>
886
887         Reviewed by Hyatt.
888
889         Fixed: <rdar://problem/3505072> hang in KHTMLParser::parseToken (consulting.soroos.net)
890         
891         * khtml/html/dtd.cpp: <label> needed a much higher priority such that it will close block elements.  Malformed HTML (ugh) is the only reason why we need to do this. 
892
893 2004-12-23  Darin Adler  <darin@apple.com>
894
895         Reviewed by Ken.
896
897         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
898
899         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
900         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
901
902         * khtml/editing/htmlediting.cpp:
903         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
904         per-document tags and is just better all around for things like the document.
905         (khtml::debugNode): Ditto.
906         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
907         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
908         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
909         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
910
911         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
912         non-HTML elements to be nested as desired.
913
914         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
915         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
916         much larger number.
917         * khtml/html/htmlparser.cpp:
918         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
919         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
920         to eliminate code that used ID_CLOSE_TAG for an array size.
921         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
922         that manages isindex to use deref instead of delete.
923         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
924         mistake of using ID_CLOSE_TAG for the array size too.
925         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
926         there and it would prevent custom tags from working. Added range check before using the forbidden
927         tag array with the token ID since custom tags will use index values past the end of the array.
928         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
929         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
930         createElement call is still here. Last time I left out a few form element types from this switch;
931         fixed now.
932         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
933         document if getTagID fails; this creates a unique per-document ID.
934
935         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
936         * khtml/misc/htmlhashes.cpp:
937         (khtml::getTagID): Changed return type to unsigned short.
938         (khtml::getAttrID): Ditto.
939
940         * khtml/misc/htmltags.c: Regenerated.
941         * khtml/misc/htmltags.h: Regenerated.
942
943         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
944         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
945         Also rewrote getTagName to work with the new scheme.
946
947         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
948         * khtml/xml/dom_docimpl.cpp:
949         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
950         Also updated for a few tags that the parser handled but this did not.
951
952         * kwq/KWQRenderTreeDebug.cpp:
953         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
954         the tag ID directly, which only works for standard nodes.
955         (operator<<): Update to call getTagName.
956         (nodePositionRelativeToRoot): Ditto.
957         (writeSelection): Ditto.
958
959 === Safari-177 ===
960
961 2004-12-22  Darin Adler  <darin@apple.com>
962
963         - rolled out my custom tag name change -- it broke amazon.com
964
965         * khtml/css/cssstyleselector.cpp:
966         * khtml/editing/htmlediting.cpp:
967         * khtml/editing/selection.cpp:
968         * khtml/editing/visible_position.cpp:
969         * khtml/html/dtd.cpp:
970         * khtml/html/htmlparser.cpp:
971         * khtml/html/htmlparser.h:
972         * khtml/html/htmltokenizer.cpp:
973         * khtml/misc/htmlhashes.cpp:
974         * khtml/misc/htmlhashes.h:
975         * khtml/misc/htmltags.c:
976         * khtml/misc/htmltags.h:
977         * khtml/misc/maketags:
978         * khtml/xml/dom_docimpl.cpp:
979         * khtml/xml/dom_docimpl.h:
980         * khtml/xml/dom_nodeimpl.cpp:
981         * khtml/xml/dom_position.cpp:
982         * kwq/KWQRenderTreeDebug.cpp:
983
984 2004-12-22  David Harrison  <harrison@apple.com>
985
986         Reviewed by Darin Adler.
987
988         * khtml/editing/selection.cpp:
989         (khtml::Selection::validate):
990         The selecting/deselecting bad behavior is because the Selection code that expands by words
991         had an inaccurate test for being at the end of the document (where double-clicking needs
992         to select the last word).  Fixed that check.
993
994 2004-12-22  Adele Amchan  <adele@apple.com>
995
996         Reviewed by Chris.
997
998         Fix for <rdar://problem/3911650> tabs at safeway.com stop working after a while
999
1000         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::scrollToAnchor): removed call to cancelRedirection 
1001           so that we match Firefox and WinIE behavior.
1002
1003 2004-12-22  Darin Adler  <darin@apple.com>
1004
1005         Reviewed by Ken.
1006
1007         - fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
1008
1009         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
1010         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
1011
1012         * khtml/editing/htmlediting.cpp:
1013         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
1014         per-document tags and is just better all around for things like the document.
1015         (khtml::debugNode): Ditto.
1016         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
1017         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
1018         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
1019         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
1020
1021         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
1022         non-HTML elements to be nested as desired.
1023
1024         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
1025         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
1026         much larger number.
1027         * khtml/html/htmlparser.cpp:
1028         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
1029         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
1030         to eliminate code that used ID_CLOSE_TAG for an array size.
1031         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
1032         that manages isindex to use deref instead of delete.
1033         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
1034         mistake of using ID_CLOSE_TAG for the array size too.
1035         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
1036         there and it would prevent custom tags from working. Added range check before using the forbidden
1037         tag array with the token ID since custom tags will use index values past the end of the array.
1038         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
1039         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
1040         createElement call is still here.
1041         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
1042         document if getTagID fails; this creates a unique per-document ID.
1043
1044         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
1045         * khtml/misc/htmlhashes.cpp:
1046         (khtml::getTagID): Changed return type to unsigned short.
1047         (khtml::getAttrID): Ditto.
1048
1049         * khtml/misc/htmltags.c: Regenerated.
1050         * khtml/misc/htmltags.h: Regenerated.
1051
1052         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
1053         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
1054         Also rewrote getTagName to work with the new scheme.
1055
1056         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
1057         * khtml/xml/dom_docimpl.cpp:
1058         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
1059         Also updated for a few tags that the parser handled but this did not.
1060
1061         * kwq/KWQRenderTreeDebug.cpp:
1062         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
1063         the tag ID directly, which only works for standard nodes.
1064         (operator<<): Update to call getTagName.
1065         (nodePositionRelativeToRoot): Ditto.
1066         (writeSelection): Ditto.
1067
1068 2004-12-21  David Harrison  <harrison@apple.com>
1069
1070         Reviewed by Ken Kocienda.
1071
1072         <rdar://problem/3924934> REGRESSION: double click at end of line selects start of next line
1073
1074         Problem was the TextIterator was not handling exitNode() from a P block properly.
1075         
1076         * khtml/editing/visible_text.cpp:
1077         (khtml::TextIterator::TextIterator):
1078         Add new param that specifies whether the iterator is for content or for searching.
1079         Search iterators do not prevent newlines at the beginning.
1080         (khtml::TextIterator::advance):
1081         Added some comments.
1082         (khtml::TextIterator::handleTextNode):
1083         Added some comments.
1084         (khtml::TextIterator::exitNode):
1085         Emit newline for P (and other) blocks with position following the block, instead of the m_lastTextNode.
1086         (khtml::TextIterator::emitCharacter):
1087         Added some comments.
1088         (khtml::TextIterator::range):
1089         Added some comments.
1090         (khtml::CharacterIterator::CharacterIterator):
1091         Specify search type TextIterator.
1092         (khtml::CharacterIterator::advance):
1093         * khtml/editing/visible_text.h:
1094         (khtml::):
1095         Add new TextIterator::TextIterator param that specifies whether the iterator is for content or for searching.
1096         * khtml/editing/visible_units.cpp:
1097         (khtml::nextWordBoundary):
1098         Specify search type TextIterator.
1099
1100 2004-12-21  David Harrison  <harrison@apple.com>
1101
1102         Reviewed by Ken Kocienda.
1103
1104         <rdar://problem/3924695> REGRESSION (Mail): double-clicking past end of line shows no selection, should select to EOL
1105         
1106         Problem was that RenderText::setSelectionState did not handle the SelectionStart case where start and end are the end of the line.
1107         Fixed by pretending the start == end-1 in that situation, as long as end > 0.
1108         
1109         * khtml/rendering/render_text.cpp:
1110         (RenderText::setSelectionState)
1111
1112 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
1113
1114         Reviewed by John.
1115
1116         <rdar://problem/3929187> WebKit needs to restrict access to certain window operations by domain
1117         
1118         * khtml/ecma/kjs_window.cpp:
1119         (Window::get): Change most window functions to be restricted by
1120         XSS domain check.
1121
1122 2004-12-21  Ken Kocienda  <kocienda@apple.com>
1123
1124         Reviewed by John
1125
1126         Fix for this bug:
1127         
1128         <rdar://problem/3928305> selecting an entire line and typing over causes new inserted text at top of document
1129
1130         * khtml/editing/htmlediting.cpp:
1131         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent): New function to detect case
1132         formerly undetected and unhandled. This is the crux of the bug fix.
1133         (khtml::DeleteSelectionCommand::doApply): Call insertPlaceholderForAncestorBlockContent() during
1134         execution of command.
1135         * khtml/editing/htmlediting.h: Declare new function.
1136         * layout-tests/editing/deleting/delete-3928305-fix-expected.txt: Added.
1137         * layout-tests/editing/deleting/delete-3928305-fix.html: Added.
1138
1139 2004-12-21  Ken Kocienda  <kocienda@apple.com>
1140
1141         Reviewed by me
1142
1143         * khtml/editing/htmlediting.cpp:
1144         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Note to self: Must compile code before
1145         checking in (aka must return false from function returning bool).
1146
1147 2004-12-21  Ken Kocienda  <kocienda@apple.com>
1148
1149         Reviewed by John
1150         
1151         Fix for this bug:
1152         
1153         <rdar://problem/3927752> Crash in khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded(DOM::NodeImpl*)
1154
1155         * khtml/editing/htmlediting.cpp:
1156         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Added some null checks.
1157         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Ditto.
1158
1159 2004-12-21  Ken Kocienda  <kocienda@apple.com>
1160
1161         Reviewed by Darin
1162
1163         * khtml/editing/htmlediting.cpp:
1164         (khtml::ReplacementFragment::mergeStartNode): Refine concept of how this node is found based on
1165         further experiements.
1166         (khtml::ReplaceSelectionCommand::doApply): Add a special case for determining merges that need to
1167         be done if the insertion point is in an empty block.
1168         * layout-tests/editing/pasteboard/paste-text-012-expected.txt: Added.
1169         * layout-tests/editing/pasteboard/paste-text-012.html: Added.
1170         * layout-tests/editing/pasteboard/paste-text-013-expected.txt: Added.
1171         * layout-tests/editing/pasteboard/paste-text-013.html: Added.
1172         * layout-tests/editing/pasteboard/paste-text-014-expected.txt: Added.
1173         * layout-tests/editing/pasteboard/paste-text-014.html: Added.
1174
1175 2004-12-21  Darin Adler  <darin@apple.com>
1176
1177         Reviewed by Ken.
1178
1179         - fixed <rdar://problem/3899133> text search in a Safari window takes a very long time on Tiger updates page (and some other pages)
1180
1181         * khtml/editing/visible_text.h: Add an "offset base node" parameter to emitCharacter, and also
1182         add a field to track it. Must make a few things mutable so we can update them in the range accessor.
1183         * khtml/editing/visible_text.cpp:
1184         (khtml::TextIterator::advance): Pass in base node and offsets rather than computing actual offsets
1185         using the node's index. We only compute the node index if actually asked for the range.
1186         (khtml::TextIterator::handleTextNode): Pass 0 for base node and set base node to 0 when setting
1187         up the offsets.
1188         (khtml::TextIterator::handleTextBox): Ditto.
1189         (khtml::TextIterator::handleReplacedElement): Pass base node and set base node instead of calling
1190         nodeIndex.
1191         (khtml::TextIterator::handleNonTextNode): Pass 0 for offset.
1192         (khtml::TextIterator::exitNode): More of the same.
1193         (khtml::TextIterator::emitCharacter): Ditto.
1194         (khtml::TextIterator::range): If an offset base node is stored, then get its node index, and then
1195         add that in to the offsets. Doing the work here guarantees it's done only once when doing a text search.
1196
1197         - another small fix
1198
1199         * khtml/khtml_part.cpp: Removed SPEED_DEBUG define. Not sure why it was on.
1200
1201 === Safari-176 ===
1202
1203 2004-12-20  Ken Kocienda  <kocienda@apple.com>
1204
1205         Reviewed by Darin
1206
1207         * khtml/editing/htmlediting.cpp:
1208         (khtml::DeleteSelectionCommand::moveNodesAfterNode): My one-liner for this bug introduced layout test
1209         regressions: <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
1210         Rolling out until I can develop a real fix.
1211
1212 2004-12-20  David Harrison  <harrison@apple.com>
1213
1214         Reviewed by Dave Hyatt.
1215         
1216         Initial checkin of AXTextMarkerRef support.
1217
1218         * khtml/xml/dom_docimpl.cpp:
1219         (DocumentImpl::updateSelection):
1220         (DocumentImpl::setFocusNode):
1221         * kwq/KWQAccObject.h:
1222         * kwq/KWQAccObject.mm:
1223         (-[KWQAccObject detach]):
1224         (-[KWQAccObject anchorElement]):
1225         (-[KWQAccObject addChildrenToArray:]):
1226         (-[KWQAccObject accessibilityAttributeNames]):
1227         (-[KWQAccObject accessibilityActionDescription:]):
1228         (-[KWQAccObject accessibilityPerformAction:]):
1229         (-[KWQAccObject textMarkerRangeFromMarkers:andEndMarker:]):
1230         (-[KWQAccObject textMarkerForVisiblePosition:]):
1231         (-[KWQAccObject visiblePositionForTextMarker:]):
1232         (-[KWQAccObject AXTextMarkerRangeCopyStartMarkerWrapper:]):
1233         (-[KWQAccObject AXTextMarkerRangeCopyEndMarkerWrapper:]):
1234         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
1235         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
1236         (-[KWQAccObject accessibilityAttributeValue:]):
1237         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
1238         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
1239         (-[KWQAccObject getSelectedTextMarkerRange]):
1240         (-[KWQAccObject doAXLineForTextMarker:]):
1241         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
1242         (-[KWQAccObject doAXStringForTextMarkerRange:]):
1243         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
1244         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
1245         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
1246         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
1247         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
1248         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
1249         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
1250         (-[KWQAccObject accessibilityFocusedUIElement]):
1251         (-[KWQAccObject clearChildren]):
1252         (-[KWQAccObject accObjectID]):
1253         (-[KWQAccObject setAccObjectID:]):
1254         (-[KWQAccObject removeAccObjectID]):
1255         * kwq/KWQAccObjectCache.h:
1256         * kwq/KWQAccObjectCache.mm:
1257         (KWQAccObjectCache::KWQAccObjectCache):
1258         (KWQAccObjectCache::~KWQAccObjectCache):
1259         (KWQAccObjectCache::getAccObjectID):
1260         (KWQAccObjectCache::removeAccObjectID):
1261         (KWQAccObjectCache::textMarkerForVisiblePosition):
1262         (KWQAccObjectCache::visiblePositionForTextMarker):
1263
1264 2004-12-19  Darin Adler  <darin@apple.com>
1265
1266         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added nil check.
1267
1268 2004-12-19  Darin Adler  <darin@apple.com>
1269
1270         Reviewed by Kevin.
1271
1272         - a garbage collection fix
1273
1274         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added a more-extensive comment and fixed the BUILDING_ON_PANTHER
1275         #ifndef to use #if (in practice, either is OK).
1276         * kwq/KWQKURL.mm: (KURL::getNSURL): Use KWQCFAutorelease instead of autorelease.
1277
1278 2004-12-17  David Hyatt  <hyatt@apple.com>
1279
1280         Fix for 3923255, specified percentage heights of divs with overflow auto inside tables not honored.
1281         
1282         Reviewed by kocienda
1283
1284         * khtml/rendering/render_box.cpp:
1285         (RenderBox::calcPercentageHeight):
1286         * khtml/rendering/render_table.cpp:
1287         (RenderTableSection::layoutRows):
1288
1289 2004-12-17  David Harrison  <harrison@apple.com>
1290
1291         Reviewed by Ken Kocienda.
1292
1293         <rdar://problem/3924930> REGRESSION: triple click does not select to end of line
1294         
1295         * khtml/editing/visible_units.cpp:
1296         (khtml::endOfParagraph):
1297         When includeLineBreak is true, allow traversal to next node after enclosingBlockFlowElement.
1298
1299 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1300
1301         Reviewed by Vicki
1302
1303         * khtml/editing/htmlediting.cpp:
1304         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Missed deleting some now-obsolete expcetion
1305         codes when I added the createBreakElement() function.
1306
1307 2004-12-17  Richard Williamson   <rjw@apple.com>
1308
1309         Set the floor of max cacheable object size to 40K.  This restores
1310         the long standing floor.  Lower floor deleteriously impacts the PLT.
1311         Reviewed by Hyatt.
1312
1313         * khtml/khtml_part.cpp:
1314         (KHTMLPart::checkCompleted):
1315         * khtml/misc/loader.cpp:
1316         (Cache::setSize):
1317
1318 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1319
1320         Reviewed by Hyatt
1321
1322         Fix for this bug:
1323         
1324         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
1325
1326         * khtml/editing/htmlediting.cpp:
1327         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Stop merging nodes when a <br> is hit.
1328         Formerly checked only for block boundary.
1329
1330 2004-12-17  David Harrison  <harrison@apple.com>
1331
1332         Reviewed by Darin.
1333
1334                 Add KWQCFAutorelease for autoreleasing CF objects.
1335         * kwq/KWQFoundationExtras.h:
1336         (KWQCFAutorelease):
1337         New.
1338
1339 2004-12-17  David Harrison  <harrison@apple.com>
1340
1341         Reviewed by Darin.
1342
1343                 Fix GC compatibility in getNSString.
1344
1345         * kwq/KWQString.mm:
1346         (QString::getNSString):
1347                 Use NSString allocator instead of CFString, so that autorelease works under GC.
1348
1349 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1350
1351         Reviewed by Hyatt
1352
1353         Fix for this bug:
1354         
1355         <rdar://problem/3890973> REGRESSION (Mail): Deleting reorders remaining text
1356
1357         * khtml/editing/htmlediting.cpp:
1358         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Added check to ensure that moving content will not
1359         move it after the <body> element.
1360
1361 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1362
1363         Reviewed by me
1364         
1365         Added new layout tests covering cases from recent bug fixes.
1366
1367         * layout-tests/editing/inserting/insert-div-018-expected.txt: Added.
1368         * layout-tests/editing/inserting/insert-div-018.html: Added.
1369         * layout-tests/editing/inserting/insert-div-019-expected.txt: Added.
1370         * layout-tests/editing/inserting/insert-div-019.html: Added.
1371         * layout-tests/editing/inserting/insert-div-020-expected.txt: Added.
1372         * layout-tests/editing/inserting/insert-div-020.html: Added.
1373         * layout-tests/editing/inserting/insert-div-021-expected.txt: Added.
1374         * layout-tests/editing/inserting/insert-div-021.html: Added.
1375
1376 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1377
1378         Reviewed by me
1379
1380         Changes in layout resulting from giving <p> elements no margin rather than 0.1em margin.
1381
1382         * layout-tests/editing/inserting/insert-div-013-expected.txt
1383         * layout-tests/editing/inserting/insert-div-014-expected.txt
1384
1385 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1386
1387         Reviewed by John
1388
1389         Fix for this bug:
1390         
1391         <rdar://problem/3925317> Increase quote in email and with cursor below the quote the new line appears above the quote
1392
1393         * khtml/editing/htmlediting.cpp:
1394         (khtml::InsertParagraphSeparatorCommand::doApply):
1395         * khtml/editing/visible_position.cpp: Refine rules for whether to use the starting node or the starting
1396         block as the reference node for the insertion of the new block.
1397         (khtml::isLastVisiblePositionInBlock): Tweak rules again. Descendants of following blocks should answer true.
1398         I worked this all out on the whiteboard this time. This should be the last tweak.
1399
1400 2004-12-17  Kevin Decker  <kdecker@apple.com>
1401
1402         Reviewed by Ken.
1403
1404         Fixed <rdar://problem/3824438> Need a clean way for Dashboard to detect when an XML parsing error occurs
1405
1406         * khtml/xml/xml_tokenizer.cpp:
1407         (khtml::XMLTokenizer::insertErrorMessageBlock): In the xml error report, instead of a generic <div>, use <parsererror> to match Mozilla.
1408
1409 2004-12-16  Ken Kocienda  <kocienda@apple.com>
1410
1411         Reviewed by Chris
1412
1413         Fix for this bug:
1414         
1415         <rdar://problem/3924888> REGRESSION (Mail): Hitting return key at end of line does not insert visible newline
1416
1417         * khtml/editing/htmlediting.cpp:
1418         (khtml::InsertParagraphSeparatorCommand::doApply): Tweaked code I added just before to fix 3924486, so that
1419         it checks the downstream node for the starting position.
1420
1421 2004-12-16  Ken Kocienda  <kocienda@apple.com>
1422
1423         Reviewed by Chris
1424
1425         Added new createBreakElement() function that makes creating a <br> element a one-liner.
1426         Converted all the code that used to call the DocumentImpl, and dealt with the exceptionCode,
1427         over to this new helper.
1428
1429         * khtml/editing/htmlediting.cpp:
1430         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Now uses new helper function.
1431         (khtml::InsertLineBreakCommand::doApply): Ditto.
1432         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
1433         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
1434         (khtml::ReplaceSelectionCommand::doApply): Ditto.
1435         (khtml::createBreakElement): New helper.
1436         * khtml/editing/htmlediting.h: Ditto.
1437
1438 2004-12-16  David Hyatt  <hyatt@apple.com>
1439
1440         Fix a bug where vertical-align values that depended on their parent's value went crazy if the parent was
1441         vertical-align top or bottom.  The bug is 3771007, bankofamerica's ebills page.
1442         
1443         Reviewed by kocienda
1444
1445         * khtml/rendering/render_object.cpp:
1446         (RenderObject::getVerticalPosition):
1447
1448 2004-12-16  Ken Kocienda  <kocienda@apple.com>
1449
1450         Reviewed by John
1451
1452         Fix for these bugs:
1453         
1454         <rdar://problem/3924486> REGRESSION (Mail): Hitting return key does not insert visible newline
1455         <rdar://problem/3924579> REGRESSION (Mail): After deleting, hitting return key does not insert visible newline
1456
1457         * khtml/editing/htmlediting.cpp:
1458         (khtml::InsertParagraphSeparatorCommand::doApply): For the first bug, detect when inserting a <p> will
1459         make a visible <br> collapse. For the second bug, move the code that inserts the new <p> after
1460         a check which may move the node used as the reference node for the insertion. Also change this code to
1461         insert the <p> after the last sibling of the starting position, to move it past the nodes we're going
1462         to want to shift into the new <p>.
1463
1464 2004-12-16  Darin Adler  <darin@apple.com>
1465
1466         Reviewed by Ken.
1467
1468         - use <p> elements rather than <br> when pasting plain text; also use margin of 0 rather than 0.1 em
1469           after talking this over with Dave and Ken
1470
1471         * khtml/editing/htmlediting.h: Added createDefaultParagraphElement and createBlockPlaceholderElement.
1472         * khtml/editing/htmlediting.cpp:
1473         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Use new createBlockPlaceholderElement
1474         helper so this can share code with the plain-text conversion code.
1475         (khtml::InsertParagraphSeparatorCommand::createParagraphElement): Use new createDefaultParagraphElement
1476         helper so this can share code with the plain-text conversion code.
1477         (khtml::createDefaultParagraphElement): Added.
1478         (khtml::createBlockPlaceholderElement): Added.
1479
1480         * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Use paragraphs rather than
1481         <br> elements for pasting plain text.
1482
1483         - regenerated these files with the newer gperf
1484
1485         * khtml/css/cssproperties.c: Regenerated.
1486         * khtml/css/cssvalues.c: Regenerated.
1487         * khtml/misc/htmlattrs.c: Regenerated.
1488         * khtml/misc/htmltags.c: Regenerated.
1489
1490 2004-12-16  Ken Kocienda  <kocienda@apple.com>
1491
1492         Reviewed by Hyatt
1493
1494         Fix for this bug:
1495         
1496         <rdar://problem/3924291> REGRESSION (Mail): Crash deleting content following a <p> element
1497
1498         * khtml/xml/dom_nodeimpl.cpp:
1499         (NodeImpl::enclosingInlineElement): Fixed problem in this function where recursive search for
1500         parent that is not an inline would skip past previous siblings of nodes which were blocks. Now
1501         it stops looking in this situation. This problem eventually caused the delete code to try to 
1502         merge a node under a descendent.
1503
1504 2004-12-16  Adele Amchan  <adele@apple.com>
1505
1506         Change by Richard, reviewed by me.
1507
1508         Fix for: <rdar://problem/3923983> background image decoding prevents page with 0Kb image from finishing to load
1509
1510         * khtml/misc/loader.cpp: (CachedImage::data): Added call to notifyFinished so the 0Kb image case finishes loading.
1511
1512 2004-12-16  Adele Amchan  <adele@apple.com>
1513
1514         Reviewed by Chris.
1515
1516         Fix for: <rdar://problem/3534824> VIP: some navigation links on safeway.com don't work due to a JavaScript quirk
1517
1518         Added a call to ObjectImp::get before Window::get just returns Undefined.  
1519         This was preventing us from getting the toString function from a Window object.
1520
1521         * khtml/ecma/kjs_window.cpp: (Window::get):
1522
1523 2004-12-16  Ken Kocienda  <kocienda@apple.com>
1524
1525         Reviewed by John
1526         
1527         Fix for this bug:
1528         
1529         <rdar://problem/3918351> REGRESSION (Mail, 173-175+): Return before first char of line leaves insertion point in wrong place
1530         
1531         * khtml/editing/htmlediting.cpp:
1532         (khtml::InsertParagraphSeparatorCommand::doApply): Basically, did a rewrite of this function
1533         to do a better job than it was doing before. Added several test cases to prove I am on a 
1534         better track.
1535         * khtml/editing/visible_position.cpp:
1536         (khtml::isFirstVisiblePositionInBlock): Tweaked the rules a bit to fix an issue very similar to the
1537         leaving-the-bar-node case problem I just fixed in a recent checkin (relevant markup: <p>foo</p>bar).
1538         This function was returning true for the first position in "bar". Wrong. Also tightened up other 
1539         rule: Should not report true when relationship between blocks cannot be determined.
1540         (khtml::isLastVisiblePositionInBlock): Tightened up rule as above: Should not report true 
1541         when relationship between blocks cannot be determined.
1542         * layout-tests/editing/inserting/insert-div-010-expected.txt: Added.
1543         * layout-tests/editing/inserting/insert-div-010.html: Added.
1544         * layout-tests/editing/inserting/insert-div-011-expected.txt: Added.
1545         * layout-tests/editing/inserting/insert-div-011.html: Added.
1546         * layout-tests/editing/inserting/insert-div-012-expected.txt: Added.
1547         * layout-tests/editing/inserting/insert-div-012.html: Added.
1548         * layout-tests/editing/inserting/insert-div-013-expected.txt: Added.
1549         * layout-tests/editing/inserting/insert-div-013.html: Added.
1550         * layout-tests/editing/inserting/insert-div-014-expected.txt: Added.
1551         * layout-tests/editing/inserting/insert-div-014.html: Added.
1552         * layout-tests/editing/inserting/insert-div-015-expected.txt: Added.
1553         * layout-tests/editing/inserting/insert-div-015.html: Added.
1554         * layout-tests/editing/inserting/insert-div-016-expected.txt: Added.
1555         * layout-tests/editing/inserting/insert-div-016.html: Added.
1556         * layout-tests/editing/inserting/insert-div-017-expected.txt: Added.
1557         * layout-tests/editing/inserting/insert-div-017.html: Added.
1558             
1559 2004-12-16  Ken Kocienda  <kocienda@apple.com>
1560
1561         Reviewed by me
1562         
1563         Added a layout test based on my last checkin.
1564
1565         * layout-tests/editing/selection/move-by-word-001-expected.txt: Added.
1566         * layout-tests/editing/selection/move-by-word-001.html: Added.
1567
1568 2004-12-16  Ken Kocienda  <kocienda@apple.com>
1569
1570         Reviewed by John
1571
1572         Fix for this bug:
1573         
1574         <rdar://problem/3917929> REGRESSION (Mail): Command-left-arrow leaves insertion point too high after specific steps
1575
1576         * khtml/editing/visible_text.cpp:
1577         (khtml::SimplifiedBackwardsTextIterator::advance): Add new check for leaving a text node and iterating
1578         backwards into a different block that is an descendent of the block containing the text node (as in leaving 
1579         the "bar" node in this example: <p>foo</p>bar).
1580         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode): Call new emitNewlineForBROrText helper.
1581         (khtml::SimplifiedBackwardsTextIterator::emitNewlineForBROrText): Factor out code from handleNonTextNode, since
1582         it is called from there, and now also from advance().
1583
1584 2004-12-15  Darin Adler  <darin@apple.com>
1585
1586         Reviewed by Ken.
1587         
1588         - fixed problem where plain-text would put a blank line between each <p> even when they have no margins
1589
1590         * khtml/editing/visible_text.cpp: (khtml::TextIterator::exitNode): Add more checks and only set the
1591         "add one more newline" flag if the margin is sufficient. A more complete fix would ignore the node
1592         type altogether and use the render tree instead.
1593
1594 2004-12-14  John Sullivan  <sullivan@apple.com>
1595
1596         Reviewed by Ken.
1597         
1598         - rest of WebCore fix for <rdar://problem/3790011> undoable operations all say "Undo" 
1599         in the menu, no specific action names
1600
1601         * khtml/editing/edit_actions.h: new header, contains EditAction enum
1602         (renamed from HTMLEditAction, formerly in htmlediting.h)
1603
1604         * ForwardingHeaders/editing/edit_actions.h: new forwarding header
1605         
1606         * khtml/editing/htmlediting.h:
1607         removed HTMLEditAction enum in favor of including edit_actions.h; added khtml::
1608         namespace to EditAction usages; added m_editingAction ivar to ApplyStyleCommand
1609
1610         * khtml/editing/htmlediting.cpp:
1611         (khtml::EditCommandPtr::editingAction):
1612         update for enum name change
1613         (khtml::EditCommand::editingAction):
1614         ditto
1615         (khtml::ApplyStyleCommand::ApplyStyleCommand):
1616         added editingAction parameter to this constructor
1617         (khtml::ApplyStyleCommand::editingAction):
1618         return new ivar
1619         (khtml::DeleteSelectionCommand::editingAction):
1620         update for enum name change
1621         (khtml::MoveSelectionCommand::editingAction):
1622         ditto
1623         (khtml::TypingCommand::editingAction):
1624         ditto
1625         (khtml::ReplaceSelectionCommand::editingAction):
1626         ditto
1627         
1628         * khtml/khtml_part.h:
1629         added EditAction parameter to applyStyle and computeAndSetTypingStyle
1630         * khtml/khtml_part.cpp:
1631         (KHTMLPart::computeAndSetTypingStyle):
1632         added EditAction parameter
1633         (KHTMLPart::applyStyle):
1634         ditto
1635
1636         * kwq/KWQKHTMLPart.mm:
1637         (KWQKHTMLPart::registerCommandForUndoOrRedo):
1638         do the cast from EditAction to WebUndoAction a different way to match other code
1639         
1640         * kwq/WebCoreBridge.h:
1641         * kwq/WebCoreBridge.mm:
1642         (-[WebCoreBridge setTypingStyle:withUndoAction:]):
1643         added WebUndoAction parameter, passed into ApplyStyleCommand constructor
1644         (-[WebCoreBridge applyStyle:withUndoAction:]):
1645         ditto
1646
1647         * WebCore.pbproj/project.pbxproj:
1648         updated for new files
1649
1650 2004-12-14  David Hyatt  <hyatt@apple.com>
1651
1652         Fix for 3562458, rowspan and colspan converted to ints so that large values will work for them.  Remove
1653         the ridiculous 1024 limit on the span values.
1654
1655         * khtml/html/html_tableimpl.cpp:
1656         (HTMLTableCellElementImpl::parseHTMLAttribute):
1657         * khtml/rendering/render_table.cpp:
1658         (RenderTableCell::collapsedBottomBorder):
1659         * khtml/rendering/render_table.h:
1660         (khtml::RenderTableCell::colSpan):
1661         (khtml::RenderTableCell::setColSpan):
1662         (khtml::RenderTableCell::rowSpan):
1663         (khtml::RenderTableCell::setRowSpan):
1664         (khtml::RenderTableCol::span):
1665         (khtml::RenderTableCol::setSpan):
1666
1667 2004-12-14  David Hyatt  <hyatt@apple.com>
1668
1669         Make sure <col> and <colgroup> can have spans updated dynamically as well.
1670         
1671         Reviewed by rjw
1672
1673         * khtml/html/html_tableimpl.cpp:
1674         (HTMLTableColElementImpl::parseHTMLAttribute):
1675         * khtml/rendering/render_table.cpp:
1676         (RenderTableCell::updateFromElement):
1677         (RenderTableCol::updateFromElement):
1678
1679 2004-12-14  David Hyatt  <hyatt@apple.com>
1680
1681         Fix for 3833123, setting a cell's colspan does not update rendering like it should.
1682         
1683         Reviewed by rjw
1684
1685         * khtml/html/html_tableimpl.cpp:
1686         (HTMLTableCellElementImpl::parseHTMLAttribute):
1687         * khtml/rendering/render_table.cpp:
1688         (RenderTableCell::RenderTableCell):
1689         (RenderTableCell::updateFromElement):
1690
1691 2004-12-14  Chris Blumenberg  <cblu@apple.com>
1692
1693         Fixed: <rdar://problem/3864536> crash copying text from other apps and pasting in a sticky in dashboard
1694
1695         Reviewed by hyatt.
1696
1697         * khtml/editing/markup.cpp:
1698         (khtml::createFragmentFromText): ref and deref the fragment since calling appendChild can completely deref it
1699
1700 2004-12-14  David Hyatt  <hyatt@apple.com>
1701
1702         Fix for 3785211. Make sure to do a layout with the old position before doing a layout after changing to the new position.
1703         This is actually a regression from my positioned object DHTML optimization.
1704         
1705         Reviewed by kocienda
1706
1707         * khtml/rendering/render_object.cpp:
1708         (RenderObject::setStyle):
1709
1710 2004-12-14  David Hyatt  <hyatt@apple.com>
1711
1712         Make sure the class attribute works when newlines are present in the attribute.
1713
1714         Reviewed by kocienda
1715
1716         * khtml/html/html_elementimpl.cpp:
1717         (HTMLNamedAttrMapImpl::parseClassAttribute):
1718
1719 2004-12-14  David Hyatt  <hyatt@apple.com>
1720
1721         Fix for 3724938, float element is duplicated and paints twice.  The logic for when to paint floats was
1722         actually fairly screwed up.  This patch simplifies the logic and makes addOverhangingFloats easier to
1723         read by splitting it into two separate functions.
1724         
1725         Reviewed by kocienda
1726
1727         * khtml/rendering/render_block.cpp:
1728         (khtml::RenderBlock::layoutBlockChildren):
1729         (khtml::RenderBlock::clearFloats):
1730         (khtml::RenderBlock::addOverhangingFloats):
1731         (khtml::RenderBlock::addIntrudingFloats):
1732         * khtml/rendering/render_block.h:
1733
1734 2004-12-14  John Sullivan  <sullivan@apple.com>
1735
1736         Reviewed by Ken.
1737         
1738         - added Undo action names for Cut, Paste, and Drag
1739
1740         * khtml/editing/htmlediting.h:
1741         * khtml/editing/htmlediting.cpp:
1742         (khtml::DeleteSelectionCommand::editingAction):
1743         overridden to return HTMLEditActionCut
1744         (khtml::MoveSelectionCommand::editingAction):
1745         overridden to return HTMLEditActionDrag
1746         (khtml::ReplaceSelectionCommand::editingAction):
1747         overridden to return HTMLEditActionPaste
1748
1749 2004-12-14  John Sullivan  <sullivan@apple.com>
1750
1751         Reviewed by Ken.
1752         
1753         - architecture for WebCore part of fix for <rdar://problem/3790011> undoable operations all say "Undo" in the menu, 
1754         no specific action names
1755           
1756         The remaining step is to make each EditCommand subclass override editingAction() to return an
1757         appropriate value. (Unfortunately the mapping between subclass and user-distinguishable action
1758         is not completely straightforward, so this next step isn't trivial.)
1759
1760         * khtml/editing/htmlediting.h:
1761         new enum for HTMLEditAction
1762
1763         * khtml/editing/htmlediting.cpp:
1764         (khtml::EditCommandPtr::editingAction):
1765         new method, calls through to EditCommand
1766         (khtml::EditCommand::editingAction):
1767         new method for subclasses to override, returns HTMLEditActionUnspecified at this level
1768         (khtml::TypingCommand::editingAction):
1769         proof of concept override, returns HTMLEditActionTyping
1770                 
1771         * kwq/KWQKHTMLPart.h:
1772         declare new private bottleneck method registerCommandForUndoOrRedo
1773         * kwq/KWQKHTMLPart.mm:
1774         (KWQKHTMLPart::registerCommandForUndoOrRedo):
1775         new bottleneck method to reduce code duplication; now calls over the bridge
1776         to get the localized string to use for the Undo action name
1777         (KWQKHTMLPart::registerCommandForUndo):
1778         now calls new bottleneck method
1779         (KWQKHTMLPart::registerCommandForRedo):
1780         now calls new bottleneck method
1781         
1782         * kwq/WebCoreBridge.h:
1783         new enum for WebUndoAction, maps directly to HTMLEditAction.
1784         Declaration of nameForUndoAction:
1785
1786 2004-12-14  Darin Adler  <darin@apple.com>
1787
1788         Reviewed by John.
1789
1790         - added a bunch of missing nil checks; our old version of inherits used to work for nil (by accident)
1791
1792         * khtml/rendering/render_frames.cpp:
1793         (RenderPart::~RenderPart): Check widget for nil.
1794         (RenderPart::setWidget): Ditto.
1795         (RenderFrame::slotViewCleared): Ditto.
1796         (RenderPartObject::slotViewCleared): Ditto.
1797
1798 2004-12-13  Darin Adler  <darin@apple.com>
1799
1800         Reviewed by Ken.
1801
1802         - moved markup-related functions into new sources files in the editing directory
1803         - removed all of the uses of dynamic_cast, preparing to turn off RTTI to make our code smaller and slightly faster
1804
1805         * ForwardingHeaders/editing/markup.h: Added.
1806         * khtml/editing/markup.h: Added.
1807         * khtml/editing/markup.cpp: Added.
1808
1809         * WebCore.pbproj/project.pbxproj: Added markup.h/cpp.
1810
1811         * khtml/dom/dom_node.cpp: (Node::toHTML): Call createMarkup since there's no toHTML in NodeImpl any more.
1812         * khtml/html/html_elementimpl.cpp:
1813         (HTMLElementImpl::innerHTML): Changed to call createMarkup.
1814         (HTMLElementImpl::outerHTML): Ditto.
1815
1816         * khtml/ecma/kjs_window.cpp:
1817         (Window::retrieveWindow): Comment out assert that uses dynamic_cast.
1818         (Window::retrieveActive): Ditto.
1819
1820         * khtml/editing/htmlediting.h: Added forward class declaration needed now that I removed one elsewhere.
1821         * khtml/xml/dom_docimpl.h: Ditto.
1822
1823         * khtml/khtml_part.cpp:
1824         (KHTMLPart::slotDebugDOMTree): Use createMarkup instead of toHTML.
1825         (KHTMLPart::processObjectRequest): Use inherits instead of dynamic_cast.
1826
1827         * khtml/rendering/render_image.cpp: (RenderImage::paint): Add an explicit QChar conversion so this code
1828         still works even with the additional replace overloads added to QString.
1829         * kwq/KWQTextCodec.mm: (QTextCodec::fromUnicode): Ditto.
1830
1831         * khtml/rendering/render_object.h: Removed the version of arenaDelete that does not take an object
1832         base pointer, because it used dynamic_cast in its implementation. Made the other version public.
1833         * khtml/rendering/render_object.cpp: Ditto.
1834         * khtml/rendering/render_replaced.cpp: (RenderWidget::deref): Pass object base pointer to arenaDelete.
1835
1836         * khtml/xml/dom2_rangeimpl.h: Removed extra parameters from toHTML, and unneeded includes and declarations.
1837         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::toHTML): Changed to call createMarkup, and moved all
1838         the support code into markup.cpp.
1839
1840         * khtml/xml/dom_nodeimpl.h: Moved toHTML and related functions into markup.cpp.
1841         * khtml/xml/dom_nodeimpl.cpp: Ditto.
1842
1843         * khtml/xml/dom_position.cpp:
1844         (DOM::startPosition): Implemented the version of this that takes a RangeImpl. Also added null checks
1845         so these return null positions rather than raising exceptions.
1846         (DOM::endPosition): Ditto.
1847
1848         * khtml/khtmlview.h: Added an APPLE_CHANGES function so inherits can detect this class without dynamic_cast.
1849         * kwq/KWQFrame.h: Ditto.
1850         * kwq/KWQFrame.mm: (QFrame::isQFrame): Ditto.
1851         * kwq/KWQKPartsPart.h: Ditto.
1852         * kwq/KWQKPartsPart.mm: (KParts::ReadOnlyPart::isKPartsReadOnlyPart): Ditto.
1853         * kwq/KWQScrollView.h: Ditto.
1854         * kwq/KWQScrollView.mm: (QScrollView::isQScrollView): Ditto.
1855         * kwq/KWQKHTMLPart.h: Ditto.
1856         * kwq/KWQKHTMLPart.mm:
1857         (KHTMLView::isKHTMLView): Ditto.
1858         (KWQKHTMLPart::setTitle): Added an explicit QChar conversion so this code still works even with the additional
1859         replace overloads added to QString.
1860         (KWQKHTMLPart::setStatusBarText): Ditto.
1861         (KWQKHTMLPart::runJavaScriptAlert): Ditto.
1862         (KWQKHTMLPart::runJavaScriptConfirm): Ditto.
1863         (KWQKHTMLPart::runJavaScriptPrompt): Ditto.
1864         (KWQKHTMLPart::attributedString): Ditto.
1865         (KWQKHTMLPart::isCharacterSmartReplaceExempt): Ditto.
1866         (KWQKHTMLPart::isKHTMLPart): That dynamic_cast thing (see above).
1867
1868         * kwq/KWQObject.h: Added virtual methods for the few cases where we need dynamic_cast-like behavior.
1869         * kwq/KWQObject.mm:
1870         (QObject::inherits): Changed to not use dynamic cast.
1871         (QObject::isKHTMLPart): Added. Returns false.
1872         (QObject::isKHTMLView): Ditto.
1873         (QObject::isKPartsReadOnlyPart): Ditto.
1874         (QObject::isQFrame): Ditto.
1875         (QObject::isQScrollView): Ditto.
1876
1877         * kwq/KWQRenderTreeDebug.cpp:
1878         (write): Changed to use inherits rather than dynamic_cast.
1879         (writeSelection): Ditto.
1880
1881         * kwq/KWQSlot.mm: (KWQSlot::call): Call through to the version with just a job pointer parameter rather
1882         than going straight on to the "no parameters at all" version.
1883
1884         * kwq/KWQString.h:
1885         * kwq/KWQString.mm: (QString::replace): Added overloads.
1886         * kwq/WebCoreBridge.mm:
1887         (-[WebCoreBridge markupStringFromNode:nodes:]): Changed to call functions in markup.h.
1888         (-[WebCoreBridge markupStringFromRange:nodes:]): Ditto.
1889         (-[WebCoreBridge selectedString]): Added an explicit QChar conversion so this code still works even with
1890         the additional replace overloads added to QString.
1891         (-[WebCoreBridge stringForRange:]): Ditto.
1892         (-[WebCoreBridge copyDOMNode:copier:]): Changed to call functions in markup.h.
1893         (-[WebCoreBridge elementAtPoint:]): QChar conversion.
1894         (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]): Changed to call functions in markup.h.
1895         (-[WebCoreBridge documentFragmentWithText:]): Changed to call functions in markup.h.
1896
1897 2004-12-13  Ken Kocienda  <kocienda@apple.com>
1898
1899         Reviewed by John
1900
1901         Fix for this bug:
1902         
1903         <rdar://problem/3917956> REGRESSION (Mail): pasting can leave insertion point inside pasted text
1904
1905         * khtml/editing/htmlediting.cpp:
1906         (khtml::ReplaceSelectionCommand::doApply): Fix coding mistake. Calculations of bool flag based on 
1907         leading and trailing whitespace positions was reversed! I must have introduced this error recently
1908         when changing around this code.
1909
1910 2004-12-13  David Hyatt  <hyatt@apple.com>
1911
1912         Fix for 3915787, macobserver doesn't paint.  floatRect() needed to be const in the base class.  Also hit-testing
1913         and painting was using the wrong rect when setting up the x/y of the rect.
1914         
1915         Reviewed by mjs
1916
1917         * khtml/rendering/render_block.cpp:
1918         (khtml::RenderBlock::paint):
1919         (khtml::RenderBlock::nodeAtPoint):
1920         * khtml/rendering/render_object.h:
1921         (khtml::RenderObject::floatRect):
1922
1923 2004-12-13  Ken Kocienda  <kocienda@apple.com>
1924
1925         Reviewed by John
1926
1927         Fix for this bug:
1928         
1929         <rdar://problem/3917863> REGRESSION (Mail): pasting two lines of plain text copied from an RTF document results in two styles
1930
1931         Code to figuire out the end node to merge was missing the font tag in the second paragraph
1932         written out by AppKit convert-to-HTML function. I refined the algorithm to be smarter.
1933
1934         * khtml/editing/htmlediting.cpp:
1935         (khtml::ReplacementFragment::mergeEndNode): Refine algorithm used to walk through the fragment being pasted
1936         looking for the node that is the last inline in the last block of the fragment. The old algorithm was 
1937         insufficiently powerful.
1938         (khtml::ReplacementFragment::enclosingBlock): New helper function.
1939         * khtml/editing/htmlediting.h: Add declaration for new helper function.
1940         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: Added.
1941         * layout-tests/editing/pasteboard/paste-text-011.html: Added.
1942
1943 2004-12-13  Ken Kocienda  <kocienda@apple.com>
1944
1945         Reviewed by John
1946
1947         WebCore side of fix for this bug:
1948         
1949         <rdar://problem/3768372> REGRESSION (Mail): paste of text ending in whitespace loses whitespace
1950
1951         Note that we are coordinating with Doug Davidson on the AppKit team to make a complete fix for this
1952         bug. This change involves our half of the needed changes.
1953         
1954         Note that a lot of this change has to do with changing code to use a <br> element instead of
1955         a comment node as the mechanism to annotate HTML with information used to fix the bug. In some
1956         other places, code to handle comments in markup can be removed since we do not use comments for
1957         such annotations after this change.
1958
1959         * khtml/editing/htmlediting.cpp: Remove isComment() helper; no longer needed.
1960         (khtml::ReplacementFragment::ReplacementFragment): Change m_hasInterchangeNewlineComment name to m_hasInterchangeNewline.
1961         (khtml::ReplacementFragment::isInterchangeNewlineNode): Name changed from isInterchangeNewlineComment.
1962         (khtml::ReplacementFragment::isInterchangeConvertedSpaceSpan): Local variable name convertedSpaceSpanClass changed to
1963         convertedSpaceSpanClassString to match other uses of the idiom used here.
1964         (khtml::ReplaceSelectionCommand::doApply): Change hasInterchangeNewlineComment() name to hasInterchangeNewline().
1965         * khtml/editing/htmlediting.h: Change names as noted in .cpp file. Remove isComment() helper; no longer needed.
1966         (khtml::ReplacementFragment::hasInterchangeNewline):  Change hasInterchangeNewlineComment() name to hasInterchangeNewline().
1967         * khtml/html/html_elementimpl.cpp:
1968         (HTMLElementImpl::createContextualFragment): No longer has includeCommentsInDOM flag; no longer needed as we do not
1969         annotate fragments with comments any longer.
1970         * khtml/html/html_elementimpl.h: Ditto.
1971         * khtml/xml/dom2_rangeimpl.cpp: Remove addCommentToHTMLMarkup() helper. No longer needed.
1972         (DOM::interchangeNewlineMarkupString): New helper to return <br> element markup we use to annotate content for interchange.
1973         (DOM::RangeImpl::toHTML): No longer uses addCommentToHTMLMarkup; now calls interchangeNewlineMarkupString(). Remove
1974         spurious semi-colon.
1975         * khtml/xml/dom2_rangeimpl.h: Remove obsolete addCommentToHTMLMarkup() function and EAddToMarkup enum.
1976         * kwq/WebCoreBridge.mm:
1977         (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]): No longer pass bool to ask for including comments
1978         in DOM when calling createContextualFragment().
1979
1980 2004-12-10  John Sullivan  <sullivan@apple.com>
1981
1982         fixed deployment build bustage that John Louch ran into
1983
1984         * kwq/KWQTextEdit.mm:
1985         (QTextEdit::setScrollBarModes):
1986         move bool declaration inside exception-handling block to avoid obscure
1987         compiler error
1988
1989 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
1990
1991         Reviewed by Richard.
1992
1993         <rdar://problem/3907484> REGRESSION (125-173): crash when KWQTextField is dealloc'ed while setting focus (profoundlearning.com)
1994         
1995         * kwq/KWQWidget.mm:
1996         (QWidget::setFocus): Handle the case where setting focus removed
1997         us from the superview - this can happen due to style changes on
1998         focus change.
1999
2000 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2001
2002         Reviewed by Hyatt
2003
2004         Fix for this bug:
2005         
2006         <rdar://problem/3915008> REGRESSION (Mail): Too much white space between lines separated by carriage returns
2007
2008         There are a number of interesting things we could do to fix this bug, including SPI and involving
2009         the WebKit delegate, etc., however it seems reasonable to start with a hard-coded default that
2010         will fix the bug in the general case until such time as we can come up with more specific
2011         solutions. 
2012         
2013         So, I added a helper method to create <p> elements with an inline style that sets top and bottom margins
2014         to 0.1em.
2015
2016         * khtml/editing/htmlediting.cpp:
2017         (khtml::InsertParagraphSeparatorCommand::createParagraphElement): New factory method to create
2018         paragraph elements to insert. Also adds style information to keep the <p> from having "too-big" margins.
2019         (khtml::InsertParagraphSeparatorCommand::doApply): Call new factory method.
2020         * khtml/editing/htmlediting.h: Add createParagraphElement() declaration.
2021
2022 2004-12-10  Darin Adler  <darin@apple.com>
2023
2024         Reviewed by Hyatt.
2025
2026         - fixed <rdar://problem/3910419> setting style={overflow:hidden} for <textarea> does not prevent appearance of scrollbars
2027
2028         * khtml/rendering/render_form.h: Remove now-unneeded wrap parameter.
2029         * khtml/rendering/render_form.cpp:
2030         (RenderSubmitButton::rawText): Convert to QChar explicitly.
2031         (RenderLineEdit::updateFromElement): Ditto.
2032         (RenderLineEdit::slotTextChanged): Ditto.
2033         (RenderSelect::updateFromElement): Ditto.
2034         (TextAreaWidget::TextAreaWidget): Moved out most of the initialization since it's not something
2035         that requires a derived class. Now we don't use this class at all for WebCore, but they still
2036         have it for KDE.
2037         (TextAreaWidget::event): Moved out the ifdefs.
2038         (RenderTextArea::RenderTextArea): Moved setting code from TextAreaWidget here. Put a bunch that
2039         we don't need at all inside !APPLE_CHANGES, and removed the setting for scroll bars, since that's
2040         now done in setStyle.
2041         (RenderTextArea::handleFocusOut): Use type QTextEdit instead of TextAreaWidget since that's all
2042         that's needed and WebCore no longer has TextAreaWidget.
2043         (RenderTextArea::calcMinMaxWidth): Ditto.
2044         (RenderTextArea::setStyle): Add code to set scroll bar modes based on wrap setting combined with
2045         overflow style.
2046         (RenderTextArea::updateFromElement): Use type QTextEdit.
2047         (RenderTextArea::text): Ditto.
2048         (RenderTextArea::select): Ditto.
2049
2050         * kwq/KWQTextArea.mm:
2051         (-[KWQTextArea _configureTextViewForWordWrapMode]): Don't set horizontal scroller visibility here,
2052         since it's now handled by QTextEdit.
2053         (-[KWQTextArea initWithFrame:]): Don't set vertical scroller visibility or scroller auto-hiding.
2054
2055         * kwq/KWQTextEdit.h: Add setScrollBarModes function to be used instead of separate setter for
2056         the horizontal and vertical mode; needed because AppKit switches "autohide" for both at once.
2057         * kwq/KWQTextEdit.mm: (QTextEdit::setScrollBarModes): Added.
2058
2059 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2060
2061         Reviewed by Darin
2062
2063         Fix for this bug:
2064         
2065         <rdar://problem/3915047> HItting return in empty document inserts <p> but 
2066         insertion point does not move
2067
2068         * khtml/editing/htmlediting.cpp:
2069         (khtml::InsertParagraphSeparatorCommand::doApply): The issue is that the
2070         code to insert the <p> element for the return is not detecting the fact
2071         that the document is empty. Inserting a <p> into an empty body will not
2072         "add a new line" as the user expects. With this change, we'll add a second 
2073         <p> when the root editable element has no rendered kids.
2074
2075 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
2076
2077         Reviewed by John.
2078
2079         <rdar://problem/3912979> REGRESSION (125-173): repro crash in HTMLCollectionImpl code (www.clubtravel.ie)
2080
2081         * khtml/html/html_miscimpl.cpp:
2082         (HTMLCollectionImpl::traverseNextItem): Pass base when traversing
2083         the initial one step, otherwise we might inadvertantly step
2084         outside the collection base, thereby causing assertion failures or
2085         other badness later.
2086
2087 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2088
2089         Reviewed by Chris
2090
2091         * khtml/editing/htmlediting.cpp:
2092         (khtml::InsertParagraphSeparatorCommand::doApply): There is a starting block which is supposed to 
2093         act as the root node for this operation. However, a loop was incorrectly coded, and a parent node
2094         search could escape this node. Also, one other piece to code to move nodes to the new <p> element
2095         should do nothing if the starting point for the selection is itself the starting block.
2096         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Similar changes, in spirit, to the above
2097         function, though the names and concepts are slightly different.
2098
2099 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
2100
2101         Reviewed by Ken.
2102
2103         <rdar://problem/3907705> REGRESSION (172-173): DHTML menus are broken at hrweb.apple.com
2104         
2105         * khtml/dom/html_document.cpp:
2106         (HTMLDocument::nameableItems): New method, wrapper for HTMLCollection creation.
2107         * khtml/dom/html_document.h:
2108         * khtml/ecma/kjs_html.cpp:
2109         (KJS::HTMLDocument::tryGet): use doc.nameableItems(), not doc.all()!
2110         * khtml/html/html_miscimpl.cpp:
2111         (HTMLCollectionImpl::traverseNextItem): Added new DOC_NAMEABLE_ITEMS type, this represents
2112         the items that can be accessed directly as a document propery, in particular forms, images,
2113         objects, applets and embeds.
2114         (HTMLCollectionImpl::updateNameCache): Fix some nameCache/idCache confusion.
2115         (HTMLFormCollectionImpl::updateNameCache): Ditto.
2116         * khtml/html/html_miscimpl.h:
2117         (DOM::HTMLCollectionImpl::): Added new type.
2118
2119 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2120
2121         Reviewed by John
2122
2123         Fix for this bug:
2124         
2125         <rdar://problem/3914779> REGRESSION (Mail): Cannot arrow navigate to position before last character on text-wrapped line
2126
2127         * khtml/rendering/render_text.cpp:
2128         (RenderText::caretRect): Code was not detecting space at the end of a line correctly. Now it does.
2129
2130 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2131
2132         Reviewed by John
2133
2134         Fix for this bug:
2135
2136         <rdar://problem/3914755> REGRESSION (Mail): Insertion point disappears after pasting paragraph
2137
2138         * khtml/editing/htmlediting.cpp:
2139         (khtml::ReplaceSelectionCommand::doApply): Selection could end up in a "placeholder" node
2140         that was removed from the document when pasting. This caused the disappearance. Now this
2141         is detected, and the selection is shifted to a node that is in the document.
2142
2143 2004-12-09  Richard Williamson   <rjw@apple.com>
2144
2145         Check to disable threaded decoding during
2146         layout tests wasn't invoking function, just checking address of 
2147         function, which would always return true.
2148         
2149         * kwq/WebCoreImageRendererFactory.m:
2150         (+[WebCoreImageRendererFactory shouldUseThreadedDecoding]):
2151
2152 2004-12-09  David Hyatt  <hyatt@apple.com>
2153
2154         Fix for 3892686, left/top overflow was not being propagated properly up to containing blocks because of a math
2155         error.
2156
2157         Also fix a bug I noticed on the same page where relative position offsets were not being added in properly for
2158         all inlines when repainting.
2159         
2160         Reviewed by rjw
2161
2162         * khtml/rendering/render_block.cpp:
2163         (khtml::RenderBlock::layoutBlockChildren):
2164         * khtml/rendering/render_flow.cpp:
2165         (RenderFlow::getAbsoluteRepaintRect):
2166
2167 2004-12-09  David Hyatt  <hyatt@apple.com>
2168
2169         Fix for 3867545, finance.yahoo.com lays out incorrectly.  Add a quirk that will prevent tables from moving
2170         down below floats when there is insufficient space.  Instead we will match Gecko and just spill out of the
2171         containing block to the right.  This appears to be the more common desired behavior, despite being wrong.
2172         WinIE sometimes wraps and sometimes doesn't, but it's really hard for us to match its inconsistency.
2173         
2174         Reviewed by john
2175
2176         * khtml/rendering/render_block.cpp:
2177         (khtml::RenderBlock::getClearDelta):
2178         * layout-tests/apple-only/base/www.cnn.com/index-expected.txt:
2179         * layout-tests/apple-only/base/www.ebay.com/index-expected.txt:
2180         * layout-tests/apple-only/base/www.excite.com/index-expected.txt:
2181         * layout-tests/fast/block/margin-collapse/102-expected.txt:
2182         * layout-tests/fast/block/margin-collapse/102.html:
2183
2184 2004-12-09  Richard Williamson   <rjw@apple.com>
2185
2186         Fixed <rdar://problem/3914078> worldclock crashing gc related
2187
2188         Use ProtectedValue for Context2D instance members.
2189
2190         Reviewed by Maciej.
2191
2192         * khtml/ecma/kjs_html.h:
2193
2194 2004-12-09  John Sullivan  <sullivan@apple.com>
2195
2196         Reviewed by Dave.
2197         
2198         - fixed <rdar://problem/3731099> Move AXTitle string for image elements to AXDescription
2199
2200         * kwq/KWQAccObject.mm:
2201         (-[KWQAccObject title]): moved image alt tag code out of here
2202         (-[KWQAccObject accessibilityDescription]): moved image alt tag code into this new method
2203         (-[KWQAccObject accessibilityAttributeNames]): include AXDescription in the set of attributes
2204         that ordinary elements return; this means that ordinary elements that aren't images will return
2205         a nil description, which isn't ideal, but is in keeping with the way the rest of these attributes
2206         work here.
2207         (-[KWQAccObject accessibilityAttributeValue:]):
2208         call accessibilityDescription when asked for AXDescription
2209
2210 2004-12-09  Ken Kocienda  <kocienda@apple.com>
2211
2212         Reviewed by Harrison
2213
2214         Fix for this bug:
2215         
2216         <rdar://problem/3910425> REGRESSION (Mail): Crash in ReplaceSelectionCommand; selection is empty, leading to null deref
2217
2218         * khtml/editing/htmlediting.cpp:
2219         (khtml::MoveSelectionCommand::doApply): The node representing the destination for the move may have
2220         been deleted. If this is the case, set the destination to the node the delete command provides in
2221         its ending selection.
2222
2223 === Safari-175 ===
2224
2225 2004-12-09  Ken Kocienda  <kocienda@apple.com>
2226
2227         Reviewed by John
2228         
2229         Fix for this bug:
2230         
2231         <rdar://problem/3912841> REGRESSION (173-TOT): Some images report 0x0 dimensions on layout tests, causes spurious test failures
2232
2233         The new threaded image decoding capability can throw off layout tests. The issue is that the decoding
2234         callback may not be delivered before the program asks for the dimensions of an image in order to
2235         wrote the layout dimensions. More generally, I think we need to ensure that there are no races in
2236         layout tests, so I have added a flag to the render tree debug code that we can set when debugging.
2237
2238         * kwq/KWQRenderTreeDebug.cpp:
2239         (debuggingRenderTree): New function. Returns flag which tells whether the program is debugging the render tree.
2240         (externalRepresentation): Sets debuggingRenderTree flag to true;
2241         * kwq/KWQRenderTreeDebug.h:
2242         * kwq/WebCoreImageRendererFactory.m:
2243         (+[WebCoreImageRendererFactory shouldUseThreadedDecoding]): Checks debuggingRenderTree flag and will not
2244         do threaded decoding in any case if the flag is set.
2245
2246 2004-12-09  Chris Blumenberg  <cblu@apple.com>
2247
2248         Fix for busting XMLHTTPRequest.
2249
2250         Reviewed by kocienda.
2251
2252         * khtml/misc/loader.cpp:
2253         (Loader::servePendingRequests): pass true for deliverAllData
2254         * kwq/KWQKJob.h:
2255         (KIO::get): take deliverAllData param
2256         (KIO::http_post): ditto
2257         * kwq/KWQKJobClasses.h:
2258         * kwq/KWQKJobClasses.mm:
2259         (KIO::TransferJob::TransferJob): if deliverAllData, create signal with data param
2260         (KIO::TransferJob::emitResult): if deliverAllData, call signal with data param
2261
2262 2004-12-09  Ken Kocienda  <kocienda@apple.com>
2263
2264         Reviewed by John
2265
2266         <rdar://problem/3911011> REGRESSION (Mail): Spaces at end of line causing word wrap lost when copied/pasted
2267
2268         * khtml/xml/dom_nodeimpl.cpp:
2269         (NodeImpl::renderedText): Fixed the code so that spaces at the end of lines are not skipped.
2270
2271 2004-12-07  Richard Williamson   <rjw@apple.com>
2272
2273         Support threaded image decoding on machines w/ > 2 CPUs.
2274
2275         Reviewed by Maciej and Chris.
2276
2277         * khtml/misc/loader.cpp:
2278         (CachedImageCallback::notifyUpdate):
2279         (CachedImageCallback::notifyFinished):
2280         (CachedImageCallback::notifyDecodingError):
2281         (CachedImageCallback::handleError):
2282         (CachedImageCallback::clear):
2283         (CachedImage::CachedImage):
2284         (CachedImage::clear):
2285         (CachedImage::data):
2286         (CachedImage::checkNotify):
2287         (Loader::servePendingRequests):
2288         (Loader::slotFinished):
2289         (Loader::numRequests):
2290         (Loader::cancelRequests):
2291         (Loader::removeBackgroundDecodingRequest):
2292         * khtml/misc/loader.h:
2293         (khtml::CachedImageCallback::CachedImageCallback):
2294         (khtml::CachedImageCallback::ref):
2295         (khtml::CachedImageCallback::deref):
2296         (khtml::CachedImage::decoderCallback):
2297         * khtml/rendering/render_object.cpp:
2298         (RenderObject::setPixmap):
2299         * kwq/KWQPixmap.h:
2300         * kwq/KWQPixmap.mm:
2301         (-[WebImageCallback initWithCallback:khtml::]):
2302         (-[WebImageCallback _commonTermination]):
2303         (-[WebImageCallback dealloc]):
2304         (-[WebImageCallback finalize]):
2305         (-[WebImageCallback notify]):
2306         (-[WebImageCallback setImageSourceStatus:]):
2307         (-[WebImageCallback status]):
2308         (QPixmap::shouldUseThreadedDecoding):
2309         (QPixmap::receivedData):
2310         * kwq/WebCoreImageRenderer.h:
2311         * kwq/WebCoreImageRendererFactory.h:
2312         * kwq/WebCoreImageRendererFactory.m:
2313         (+[WebCoreImageRendererFactory shouldUseThreadedDecoding]):
2314         (+[WebCoreImageRendererFactory setShouldUseThreadedDecoding:]):
2315
2316 2004-12-07  Ken Kocienda  <kocienda@apple.com>
2317
2318         Reviewed by John
2319
2320         * khtml/editing/htmlediting.cpp:
2321         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Fix a problem with my
2322         change in thei code yesterday. Call to insertBlockPlaceholderIfNeeded() must be done
2323         after new block has been inserted, otherwise a crash can result. Shuffle down call 
2324         to insertBlockPlaceholderIfNeeded() a couple of lines (where the node is inserted), 
2325         and all is good.
2326
2327 2004-12-07  Ken Kocienda  <kocienda@apple.com>
2328
2329         Reviewed by John
2330
2331         Fix for this bug:
2332         
2333         <rdar://problem/3907422> REGRESSION (Mail): Pasting quoted content can place content after body element
2334
2335         * khtml/editing/htmlediting.cpp:
2336         (khtml::ReplaceSelectionCommand::doApply): Detect when the body element is the "reference block" used
2337         for determining the location for inserting content. Do not allow an insert before or after if the
2338         reference block is the body. Perform insertNodeAt(0) and appendNode, respectively, in the block-is-body case.
2339         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt: Added.
2340         * layout-tests/editing/inserting/insert-3907422-fix.html: Added.
2341
2342 2004-12-07  Darin Adler  <darin@apple.com>
2343
2344         Reviewed by Don.
2345
2346         - fixed <rdar://problem/3908701> REGRESSION: Cursor does not change to "hand" over active links
2347
2348         * kwq/KWQEvent.mm: (positionForEvent): Add NSMouseMoved to list of events that have mouse location.
2349
2350 2004-12-07  Ken Kocienda  <kocienda@apple.com>
2351
2352         Reviewed by John
2353
2354         Changed name of constant from KHTMLInterchangeNewline to AppleInterchangeNewline.
2355         I discussed this with Hyatt and he agreed that going with "Apple" names was OK.
2356
2357         * khtml/editing/html_interchange.h: Name change, as described above.
2358         * khtml/editing/htmlediting.cpp:
2359         (khtml::ReplacementFragment::isInterchangeNewlineComment): Ditto.
2360         * khtml/xml/dom2_rangeimpl.cpp:
2361         (DOM::RangeImpl::toHTML): Ditto.
2362
2363 2004-12-07  Ken Kocienda  <kocienda@apple.com>
2364
2365         Reviewed by me
2366         
2367         Added a couple more layout tests.
2368
2369         * layout-tests/editing/deleting/delete-line-013-expected.txt: Added.
2370         * layout-tests/editing/deleting/delete-line-013.html: Added.
2371         * layout-tests/editing/deleting/delete-line-014-expected.txt: Added.
2372         * layout-tests/editing/deleting/delete-line-014.html: Added.
2373
2374 2004-12-06  Maciej Stachowiak  <mjs@apple.com>
2375
2376         Reviewed by Hyatt.
2377
2378         - fixed <rdar://problem/3906974> assertion failure in QWidget::beforeMouseDown clicking on <select multiple>
2379         
2380         * kwq/KWQListBox.mm:
2381         (QListBox::QListBox): Initialize KWQListBoxScrollView with this.
2382         (-[KWQListBoxScrollView initWithListBox:]): Make this class a KWQWidgetHolder.
2383         (-[KWQListBoxScrollView widget]): See above.
2384         (-[KWQTableView mouseDown:]): Pass outerView rather than self to beforeMouseDown and
2385         afterMouseDown, to avoid triggering an assertion failure.
2386
2387 2004-12-06  David Hyatt  <hyatt@apple.com>
2388
2389         Fix for 3615411, the linesAppended optimization was old and broken, and it's easier with the new code fixes
2390         made by me, kocienda and harrison to just remove it.
2391         
2392         Reviewed by mjs
2393
2394         * khtml/rendering/bidi.cpp:
2395         (khtml::RenderBlock::layoutInlineChildren):
2396         * khtml/rendering/render_block.cpp:
2397         (khtml:::RenderFlow):
2398         * khtml/rendering/render_block.h:
2399         * khtml/rendering/render_flow.cpp:
2400         (RenderFlow::dirtyLinesFromChangedChild):
2401
2402 2004-12-06  David Hyatt  <hyatt@apple.com>
2403
2404         Fix for 3787133, some web pages print with many blank pages.  Make sure to use the real page print rect and
2405         not a damage rect that can be changed when intersected with the clip regions of the web page.
2406         
2407         Reviewed by john
2408
2409         * khtml/rendering/render_canvas.h:
2410         (khtml::RenderCanvas::printRect):
2411         (khtml::RenderCanvas::setPrintRect):
2412         * khtml/rendering/render_flow.cpp:
2413         (RenderFlow::paintLines):
2414         * khtml/rendering/render_list.cpp:
2415         (RenderListMarker::paint):
2416         * kwq/KWQKHTMLPart.mm:
2417         (KWQKHTMLPart::adjustPageHeight):
2418
2419 2004-12-06  David Harrison  <harrison@apple.com>
2420
2421         Reviewed by Ken Kocienda and Dave Hyatt (OOPS!).
2422
2423                 <rdar://problem/3849947> Typing after pasting line does not appear until after window resize.
2424                 
2425                 
2426         * khtml/rendering/render_flow.cpp:
2427         (RenderFlow::dirtyLinesFromChangedChild):
2428                 Dirty the line above because new child can inval the cached line break position of previous line.
2429
2430 2004-12-06  David Hyatt  <hyatt@apple.com>
2431
2432         Fix for 3254464, radio buttons do not work for quiz on netscape.com.  Left/top overflow needed to be implemented.
2433         This also fixes 3106907, link hover color only partially set on rollover and the more general architecture bug
2434         3126929, handle top/left overflow.
2435
2436         This patch also fixes 3902891, scroll bar of position:fixed content moves when a page is scrolled.
2437
2438         Finally, the Emerson regression 3869718 (error involving computing the rightmost/lowest position of overflow:auto
2439         regions and web pages) has been fixed.
2440         
2441         Reviewed by mjs
2442
2443         * khtml/rendering/bidi.cpp:
2444         (khtml::RenderBlock::computeHorizontalPositionsForLine):
2445         (khtml::RenderBlock::checkLinesForOverflow):
2446         * khtml/rendering/render_block.cpp:
2447         (khtml:::RenderFlow):
2448         (khtml::RenderBlock::overflowHeight):
2449         (khtml::RenderBlock::overflowWidth):
2450         (khtml::RenderBlock::overflowLeft):
2451         (khtml::RenderBlock::overflowTop):
2452         (khtml::RenderBlock::overflowRect):
2453         (khtml::RenderBlock::layoutBlock):
2454         (khtml::RenderBlock::layoutBlockChildren):
2455         (khtml::RenderBlock::paint):
2456         (khtml::RenderBlock::floatRect):
2457         (khtml::RenderBlock::lowestPosition):
2458         (khtml::RenderBlock::rightmostPosition):
2459         (khtml::RenderBlock::leftmostPosition):
2460         (khtml::RenderBlock::nodeAtPoint):
2461         * khtml/rendering/render_block.h:
2462         * khtml/rendering/render_box.h:
2463         (khtml::RenderBox::borderBox):
2464         (khtml::RenderBox::borderTopExtra):
2465         (khtml::RenderBox::borderBottomExtra):
2466         * khtml/rendering/render_layer.cpp:
2467         (RenderLayer::paintScrollbars):
2468         (mustExamineRenderer):
2469         (RenderLayer::intersectsDamageRect):
2470         (RenderLayer::containsPoint):
2471         * khtml/rendering/render_line.cpp:
2472         (khtml::InlineFlowBox::placeBoxesHorizontally):
2473         (khtml::InlineFlowBox::verticallyAlignBoxes):
2474         * khtml/rendering/render_line.h:
2475         (khtml::InlineBox::leftOverflow):
2476         (khtml::InlineBox::rightOverflow):
2477         (khtml::InlineFlowBox::setVerticalOverflowPositions):
2478         (khtml::RootInlineBox::RootInlineBox):
2479         (khtml::RootInlineBox::leftOverflow):
2480         (khtml::RootInlineBox::rightOverflow):
2481         (khtml::RootInlineBox::setVerticalOverflowPositions):
2482         (khtml::RootInlineBox::setHorizontalOverflowPositions):
2483         * khtml/rendering/render_object.h:
2484         (khtml::RenderObject::borderBox):
2485         (khtml::RenderObject::overflowLeft):
2486         (khtml::RenderObject::overflowTop):
2487         (khtml::RenderObject::overflowRect):
2488         (khtml::RenderObject::floatRect):
2489         * khtml/rendering/render_table.cpp:
2490         (RenderTable::layout):
2491         (RenderTable::paint):
2492         (RenderTable::paintBoxDecorations):
2493         (RenderTable::calcMinMaxWidth):
2494         * khtml/rendering/render_table.h:
2495         (khtml::RenderTableCell::borderTopExtra):
2496         (khtml::RenderTableCell::borderBottomExtra):
2497         * kwq/KWQRect.h:
2498         * kwq/KWQRect.mm:
2499         (QRect::inflate):
2500
2501 2004-12-06  Maciej Stachowiak  <mjs@apple.com>
2502
2503         Reviewed by John.
2504
2505         - fixed <rdar://problem/3903797> scripts can cause other frames/windows to execute arbitrary script using javascript: URLs
2506         
2507         I changed all unprotected places that can navigate a different
2508         window or frame from script to check for a javascript: URL, and if
2509         found, to check for safety using cross-site-script rules. 
2510
2511         I considered a few other possible exploits and made no change:
2512
2513         - document.location is already protected because the document
2514         object itself is protected
2515
2516         - frame.src, frame.location, iframe.src and targetted links are
2517         all safe because setting the URL of a frame to a javascript: URL
2518         executes the script in the context of the parent
2519
2520         * khtml/ecma/kjs_window.cpp:
2521         (WindowFunc::tryCall):
2522         (Location::put):
2523         (LocationFunc::tryCall):
2524
2525 2004-12-06  Ken Kocienda  <kocienda@apple.com>
2526
2527         Reviewed by Maciej
2528
2529         Fix for this bug:
2530         
2531         <rdar://problem/3890955> 8A314: Forward delete sometimes fails to delete the selected quoted text
2532
2533         * khtml/editing/htmlediting.cpp:
2534         (khtml::DeleteSelectionCommand::handleSpecialCaseBRDelete): Fixed bonehead coding mistake in the
2535         check for one of the special cases being checked for in this function. The specific case 
2536         intends to check for a selection that is only a <br> after a block ends (as in </div><br>). If it
2537         sees such markup, it deletes only the <br> and bails. However, this code would run in *any*
2538         case where a selection ended in a <br> after a block and would not delete any part of the
2539         selection preceding the <br>. Bad. I have tightened the check to see that only a <br> is
2540         selected.
2541
2542         Fixing the bug above was accomplished with an additional call to DOM::Position::downstream. This
2543         new use of the function exposed this bug:
2544         
2545         <rdar://problem/3907666> Incorrectly coded loop in Position::downstream can lead to infinite loop
2546
2547         * khtml/xml/dom_position.cpp:
2548         (DOM::Position::downstream): I am ashamed of my first cut at this. Rewrote the loop so it does 
2549         not have this fatal flaw. It is a much better design as well.
2550         
2551         * layout-tests/editing/deleting/delete-3800834-fix-expected.txt: Changes made this test
2552         have what I consider to be a better result. Going with it.
2553
2554 2004-12-06  Chris Blumenberg  <cblu@apple.com>
2555
2556         Fixed: <rdar://problem/3871718> REGRESSION (125-168): text marked bold with font that does not have bold variant copies as non-bold
2557
2558         Reviewed by hyatt.
2559
2560         * kwq/DOM.mm:
2561         (-[DOMElement _font]): new SPI for AppKit
2562         * kwq/DOMPrivate.h:
2563
2564 2004-12-06  Darin Adler  <darin@apple.com>
2565
2566         Reviewed by Maciej.
2567
2568         - fixed <rdar://problem/3906327> Select All of a large document is slow (>15 secs on my machine for attached specimen)
2569
2570         * kwq/KWQScrollView.mm: (QScrollView::updateContents): Intersect with visibleRect before calling through
2571         to NSView to dirty; NSView could also be more efficient in this case (I filed 3906343).
2572
2573 2004-12-06  John Sullivan  <sullivan@apple.com>
2574
2575         Darin found what appears to be the real leak that we were falsely blaming
2576         on the 'leaks' tool (3880245). I made the change, and ran layout tests and PLT to make
2577         sure nothing barfed.
2578
2579         * khtml/css/cssparser.cpp:
2580         (CSSParser::parseValue):
2581         call clearProperties() instead of just setting numParsedProperties to 0
2582         (CSSParser::parseDeclaration):
2583         ditto
2584         (CSSParser::createStyleDeclaration):
2585         ditto
2586
2587 2004-12-06  Ken Kocienda  <kocienda@apple.com>
2588
2589         Reviewed by me
2590         
2591         New layout tests.
2592
2593         * layout-tests/editing/inserting/insert-div-001-expected.txt: Added.
2594         * layout-tests/editing/inserting/insert-div-001.html: Added.
2595         * layout-tests/editing/inserting/insert-div-002-expected.txt: Added.
2596         * layout-tests/editing/inserting/insert-div-002.html: Added.
2597         * layout-tests/editing/inserting/insert-div-003-expected.txt: Added.
2598         * layout-tests/editing/inserting/insert-div-003.html: Added.
2599         * layout-tests/editing/inserting/insert-div-004-expected.txt: Added.
2600         * layout-tests/editing/inserting/insert-div-004.html: Added.
2601         * layout-tests/editing/inserting/insert-div-005-expected.txt: Added.
2602         * layout-tests/editing/inserting/insert-div-005.html: Added.
2603         * layout-tests/editing/inserting/insert-div-006-expected.txt: Added.
2604         * layout-tests/editing/inserting/insert-div-006.html: Added.
2605         * layout-tests/editing/inserting/insert-div-007-expected.txt: Added.
2606         * layout-tests/editing/inserting/insert-div-007.html: Added.
2607         * layout-tests/editing/inserting/insert-div-008-expected.txt: Added.
2608         * layout-tests/editing/inserting/insert-div-008.html: Added.
2609         * layout-tests/editing/inserting/insert-div-009-expected.txt: Added.
2610         * layout-tests/editing/inserting/insert-div-009.html: Added.
2611
2612 2004-12-06  Ken Kocienda  <kocienda@apple.com>
2613
2614         Reviewed by Harrison
2615
2616         Fix for this bug:
2617         
2618         <rdar://problem/3906948> REGRESSION (Mail): Insert paragraph code can make the insertion point "stick" in place.
2619
2620         * khtml/editing/htmlediting.cpp:
2621         (khtml::InsertParagraphSeparatorCommand::doApply): Call insertBlockPlaceholderIfNeeded(), passing block
2622         being added to this function. This ensures that the added block has a height.
2623         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
2624
2625 2004-12-06  Ken Kocienda  <kocienda@apple.com>
2626  
2627         Reviewed by John
2628         
2629         * khtml/dom/dom_string.cpp:
2630         (DOM::DOMString::substring): Expose method already on DOMStrimgImpl.
2631         * khtml/dom/dom_string.h: Ditto.
2632         * khtml/editing/htmlediting.cpp:
2633         (khtml::CompositeEditCommand::rebalanceWhitespace): New helper to create and execute a
2634         RebalanceWhitespaceCommand instance.
2635         (khtml::DeleteSelectionCommand::doApply): Call rebalanceWhitespace() after running command.
2636         (khtml::InsertLineBreakCommand::doApply): Ditto.
2637         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
2638         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
2639         (khtml::InsertTextCommand::input): Ditto.
2640         (khtml::RebalanceWhitespaceCommand::RebalanceWhitespaceCommand): New command.
2641         (khtml::RebalanceWhitespaceCommand::~RebalanceWhitespaceCommand): Ditto.
2642         (khtml::RebalanceWhitespaceCommand::doApply): Ditto.
2643         (khtml::RebalanceWhitespaceCommand::doUnapply): Ditto.
2644         (khtml::RebalanceWhitespaceCommand::preservesTypingStyle): Ditto.
2645         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Ditto.
2646         * khtml/editing/htmlediting.h: Ditto.
2647         (khtml::RebalanceWhitespaceCommand::): Ditto.
2648
2649 2004-12-05  Darin Adler  <darin@apple.com>
2650
2651         - fixed small problem in my check-in from yesterday
2652
2653         * kwq/KWQEvent.mm:
2654         (positionForEvent): Get location from event without raising exception if it's the wrong type.
2655         (clickCountForEvent): Same, for clickCount.
2656         (QMouseEvent::QMouseEvent): Use the new helper functions so this can be constructed even with
2657         the wrong type of NSEvent. Required for cases where a keyboard event causes a "click" and we need
2658         to synthesize a QMouseEvent for KHTML internal use, using the key down NSEvent.
2659
2660 2004-12-04  Darin Adler  <darin@apple.com>
2661
2662         Reviewed by John.
2663
2664         - fixed <rdar://problem/3878329> REGRESSION (169-170): colors are wrong for my.yahoo.com due to CSS background parsing changes
2665
2666         * khtml/css/cssparser.cpp: (CSSParser::parseBackgroundShorthand): Changed function so it doesn't rely on the position
2667         attribute being at the end of the array and then moved position attribute before color attribute so it takes precedence.
2668         Since "0" can be both the X coordinate of a position and a legal color (meaning black), we need to do position first.
2669
2670         - fixed <rdar://problem/3760869> click events for input type=button or type=checkbox don't have flags like shiftKey set
2671
2672         * khtml/rendering/render_form.h: Remove unused RenderFormElement fields.
2673         * khtml/rendering/render_form.cpp:
2674         (RenderFormElement::RenderFormElement): Take out code to set a bunch of unused fields.
2675         (RenderFormElement::slotClicked): Change to create the QMouseEvent from the actual mouse event rather than
2676         creating it with all the flags set to 0, using the new QMouseEvent constructor that does so.
2677
2678         * kwq/KWQEvent.h: Added constructor that takes no parameters which uses the current event from AppKit.
2679         Made the click count getter const and added an isDoubleClick that matches the logic used elsewhere.
2680         Added a fixState helper method so the constructors can save code.
2681         * kwq/KWQEvent.mm:
2682         (QMouseEvent::QMouseEvent): Factored out the state-fixing code that was in the two existing constructors
2683         and added a third constructor that uses the "current event" from AppKit (used above).
2684         (QMouseEvent::fixState): Compute state and click count based on event type.
2685
2686         - fixed first symptom of <rdar://problem/3830936> REGRESSION (125-165): crash due to null font family, hang at changeforamerica.com
2687
2688         * kwq/KWQFontFamily.mm: (KWQFontFamily::getNSFamily): Handle empty strings specially so we don't run into trouble when
2689         the family name is a null string. This prevents the crash, but there are still other problems that may have the same
2690         underlying cause in CSS.
2691
2692         - fixed <rdar://problem/3829808> Safari crashes when adding a DOM node that was removed from an XMLHTTP request result
2693
2694         * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::insertedIntoDocument):
2695         Added nil check before calling scheduleRelayout. This is new code so the nil-dereference is a recent regression.
2696
2697 2004-12-03  Chris Blumenberg  <cblu@apple.com>
2698
2699         New fixes for:
2700         <rdar://problem/3685766> WebDataSource is missing subresources when they use cached WebCore data
2701         <rdar://problem/3722434> REGRESSION?: Assertion failure trying to drag image in iframe (itapema.sc.gov.br)
2702         <rdar://problem/3903173> REGRESSION (172-TOT): assertion failure and crash in slotAllData logging into hotmail account
2703         <rdar://problem/3902749> REGRESSION (Tiger): missing image symbol does not appear
2704
2705         Reviewed by darin, rjw, kocienda.
2706
2707         * khtml/misc/loader.cpp:
2708         (CachedObject::~CachedObject):
2709         (CachedCSSStyleSheet::checkNotify):
2710         (Loader::servePendingRequests):
2711         (Loader::slotFinished):
2712         (Loader::slotReceivedResponse):
2713         (Cache::requestImage):
2714         (Cache::requestScript):
2715         * khtml/misc/loader.h:
2716         (khtml::CachedObject::CachedObject):
2717         (khtml::CachedObject::response):
2718         (khtml::CachedObject::allData):
2719         * kwq/KWQKJobClasses.h:
2720         * kwq/KWQKJobClasses.mm:
2721         (KIO::TransferJobPrivate::TransferJobPrivate):
2722         (KIO::TransferJobPrivate::~TransferJobPrivate):
2723         (KIO::TransferJob::TransferJob):
2724         (KIO::TransferJob::assembleResponseHeaders):
2725         (KIO::TransferJob::retrieveCharset):
2726         (KIO::TransferJob::emitResult):
2727         (KIO::TransferJob::emitReceivedResponse):
2728         * kwq/KWQLoader.h:
2729         * kwq/KWQLoader.mm:
2730         (KWQHeaderStringFromDictionary):
2731         (KWQCheckCacheObjectStatus):
2732         (KWQIsResponseURLEqualToURL):
2733         (KWQResponseURL):
2734         (KWQResponseMIMEType):
2735         (KWQCacheObjectExpiresTime):
2736         (khtml::CachedObject::setResponse):
2737         (khtml::CachedObject::setAllData):
2738         * kwq/KWQPixmap.h:
2739         * kwq/KWQPixmap.mm:
2740         (QPixmap::QPixmap):
2741         * kwq/KWQResourceLoader.mm:
2742         (-[KWQResourceLoader finishJobAndHandle:]):
2743         (-[KWQResourceLoader cancel]):
2744         (-[KWQResourceLoader reportError]):
2745         (-[KWQResourceLoader finishWithData:]):
2746         * kwq/KWQSignal.h:
2747         * kwq/KWQSignal.mm:
2748         (KWQSignal::call):
2749         * kwq/KWQSlot.h:
2750         * kwq/KWQSlot.mm:
2751         (KWQSlot::KWQSlot):
2752         (KWQSlot::call):
2753         * kwq/WebCoreBridge.h:
2754         * kwq/WebCoreResourceLoader.h:
2755
2756 2004-12-04  Darin Adler  <darin@apple.com>
2757
2758         Reviewed by John.
2759
2760         - fixed <rdar://problem/3876093> REGRESSION (166-167): Setting slider control's value from JavaScript has no effect (breaks RSS)
2761
2762         * khtml/rendering/render_form.cpp:
2763         (RenderSlider::updateFromElement): Call setValue to update the value of the DOM element rather than
2764         modifying the m_value data member directly. We don't use m_value at all for sliders now, and in fact
2765         the code relies on the fact that m_value is null. Setting m_value to a non-null value was causing the bug.
2766         (RenderSlider::slotSliderValueChanged): Ditto.
2767
2768 2004-12-03  John Sullivan  <sullivan@apple.com>
2769
2770         Reviewed by Ken.
2771         
2772         - fixed <rdar://problem/3889411> REGRESSION (125-172): repro crash in 
2773         khtml::BackgroundLayer::cullEmptyLayers
2774
2775         * khtml/rendering/render_style.cpp:
2776         (BackgroundLayer::cullEmptyLayers):
2777         added missing nil check
2778
2779 === Safari-173 ===
2780
2781 2004-12-03  Ken Kocienda  <kocienda@apple.com>
2782
2783         Reviewed by me
2784
2785         Roll out some recent changes by Chris that caused a performance regression.
2786         Fix is in hand, but it is a little risky this close to a submission. So,
2787         we have decided to roll back the change with the regression and roll in
2788         the new code after we submit.
2789
2790         * khtml/css/cssproperties.c:
2791         (hash_prop):
2792         (findProp):
2793         * khtml/css/cssvalues.c:
2794         (hash_val):
2795         (findValue):
2796         * khtml/misc/htmlattrs.c:
2797         (hash_attr):
2798         (findAttr):
2799         * khtml/misc/htmltags.c:
2800         (hash_tag):
2801         (findTag):
2802         * khtml/misc/loader.cpp:
2803         (CachedObject::~CachedObject):
2804         (CachedObject::setResponse):
2805         (CachedCSSStyleSheet::checkNotify):
2806         (Loader::servePendingRequests):
2807         (Loader::slotFinished):
2808         (Loader::slotReceivedResponse):
2809         (Cache::requestImage):
2810         (Cache::requestScript):
2811         * khtml/misc/loader.h:
2812         (khtml::CachedObject::CachedObject):
2813         (khtml::CachedObject::response):
2814         * kwq/KWQKJobClasses.h:
2815         * kwq/KWQKJobClasses.mm:
2816         (KIO::TransferJobPrivate::TransferJobPrivate):
2817         (KIO::TransferJobPrivate::~TransferJobPrivate):
2818         (KIO::TransferJob::TransferJob):
2819         (KIO::TransferJob::assembleResponseHeaders):
2820         (KIO::TransferJob::retrieveCharset):
2821         (KIO::TransferJob::emitResult):
2822         (KIO::TransferJob::emitReceivedResponse):
2823         * kwq/KWQLoader.h:
2824         * kwq/KWQLoader.mm:
2825         (KWQHeaderStringFromDictionary):
2826         (KWQCheckCacheObjectStatus):
2827         (KWQRetainResponse):
2828         (KWQReleaseResponse):
2829         (KWQIsResponseURLEqualToURL):
2830         (KWQResponseURL):
2831         (KWQResponseMIMEType):
2832         (KWQResponseTextEncodingName):
2833         (KWQResponseHeaderString):
2834         (KWQCacheObjectExpiresTime):
2835         (KWQLoader::KWQLoader):
2836         * kwq/KWQPixmap.h:
2837         * kwq/KWQPixmap.mm:
2838         (QPixmap::QPixmap):
2839         * kwq/KWQResourceLoader.mm:
2840         (-[KWQResourceLoader finishJobAndHandle]):
2841         (-[KWQResourceLoader cancel]):
2842         (-[KWQResourceLoader reportError]):
2843         (-[KWQResourceLoader finish]):
2844         * kwq/KWQSignal.h:
2845         * kwq/KWQSignal.mm:
2846         (KWQSignal::call):
2847         * kwq/KWQSlot.h:
2848         * kwq/KWQSlot.mm:
2849         (KWQSlot::KWQSlot):
2850         (KWQSlot::call):
2851         * kwq/WebCoreBridge.h:
2852         * kwq/WebCoreResourceLoader.h:
2853
2854 2004-12-03  John Sullivan  <sullivan@apple.com>
2855
2856         Reviewed by Chris.
2857         
2858         - fixed <rdar://problem/3903990> can't tab to all items on www.google.com any more (other pages too?)
2859
2860         * kwq/KWQKHTMLPart.mm:
2861         (KWQKHTMLPart::nextKeyViewInFrameHierarchy):
2862         when checking whether we moved the focus to another view, make sure we didn't "move" it to
2863         our documentView, because that's no move at all.
2864
2865 2004-12-03  Darin Adler  <darin@apple.com>
2866
2867         Reviewed by Vicki.
2868
2869         - fixed <rdar://problem/3901109> REGRESSION (171-172): repro crash in DOM::NodeImpl::setChanged at chick-fil-a.com
2870
2871         * khtml/css/css_valueimpl.cpp: (DOM::CSSMutableStyleDeclarationImpl::CSSMutableStyleDeclarationImpl):
2872         Added missing initialization for base class and node pointer.
2873
2874         - fixed a few places that could leave dangling node pointers
2875
2876         * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::~HTMLBodyElementImpl):
2877         Clear out the node pointer when the node is destroyed.
2878         * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::~HTMLElementImpl): Ditto.
2879
2880 2004-12-03  Chris Blumenberg  <cblu@apple.com>
2881
2882         Fix for performance regression. My original patch added a signal for passing the data of a resource to its WebCore cache object. This patch passes the data with the preexisting "finished" symbol so we make less calls. 
2883         Fixed: <rdar://problem/3903173> REGRESSION (172-TOT): assertion failure and crash in slotAllData logging into hotmail account
2884
2885         Reviewed by rjw.
2886
2887         * khtml/misc/loader.cpp:
2888         (Loader::servePendingRequests): pass data param to slotFinished, removed allData signal
2889         (Loader::slotFinished): take data param
2890         * khtml/misc/loader.h:
2891         * kwq/KWQKJobClasses.h:
2892         * kwq/KWQKJobClasses.mm:
2893         (KIO::TransferJob::TransferJob): have m_result take a data param, removed m_allData
2894         (KIO::TransferJob::emitResult): take data param and pass it
2895         * kwq/KWQResourceLoader.mm:
2896         (-[KWQResourceLoader finishJobAndHandle:]): take data param and pass it
2897         (-[KWQResourceLoader cancel]): pass nil for data
2898         (-[KWQResourceLoader reportError]): ditto
2899         (-[KWQResourceLoader finishWithData:]): pass data
2900         * kwq/KWQSlot.mm:
2901         (KWQSlot::KWQSlot): pass data param to slotFinished
2902         (KWQSlot::call): added support for slotFinished_Loader, removed slotAllData
2903
2904 2004-12-03  Ken Kocienda  <kocienda@apple.com>
2905
2906         Reviewed by John
2907
2908         Did some clean up in the Position class as a result of trying to write some new layout
2909         tests and discovering a bug along the way.
2910
2911         I removed these three functions from the Position class:
2912         
2913         1. bool isFirstRenderedPositionOnLine() const;
2914         2. bool isLastRenderedPositionOnLine() const;
2915         3. static bool renderersOnDifferentLine(RenderObject *r1, long o1, RenderObject *r2, long o2);
2916         4. bool inFirstEditableInRootEditableElement() const;
2917
2918         The first two have replacements in the VisiblePosition class, and some code has been
2919         moved to use these new variants. The third function was a helper used only by these
2920         first two function, and can be removed as well. The fourth function was not used by anyone.
2921
2922         * khtml/editing/htmlediting.cpp:
2923         (khtml::InsertTextCommand::input): Change over to use VisiblePosition isFirstVisiblePositionOnLine().
2924         * khtml/editing/visible_position.cpp:
2925         (khtml::visiblePositionsOnDifferentLines): Added an additional check for blocks to this function.
2926         Incorrect results were being returned when asking about positions at the starts of blocks.
2927         * khtml/xml/dom_position.cpp:
2928         (DOM::Position::previousCharacterPosition): Change over to use VisiblePosition isFirstVisiblePositionOnLine().
2929         (DOM::Position::nextCharacterPosition): Change over to use VisiblePosition isLastVisiblePositionOnLine().
2930         (DOM::Position::rendersInDifferentPosition): Removed use of #3 helper in a log message. We can live without it.
2931         * khtml/xml/dom_position.h: Update header for deletions.
2932
2933 2004-12-03  Ken Kocienda  <kocienda@apple.com>
2934
2935         Reviewed by John
2936
2937         Terminology change in execCommand command identifiers. Specifically, the name of 
2938         "InsertNewline" command has been changed to "InsertLineBreak". This matches the 
2939         terminology used by AppKit. It is also more accurate, since the insertion of a
2940         "br" element is what the command does. The inspiration for this change is so the 
2941         -insertNewline AppKit method can be mapped to insert a new "div" element in 
2942         a document and avoid ambiguity with what the javascript editing command does.
2943         
2944         * khtml/editing/jsediting.cpp
2945         * layout-tests/editing/deleting/delete-tab-004.html
2946         * layout-tests/editing/editing.js
2947         * layout-tests/editing/inserting/insert-3654864-fix.html
2948         * layout-tests/editing/inserting/insert-3659587-fix.html
2949         * layout-tests/editing/inserting/insert-3775316-fix.html
2950         * layout-tests/editing/inserting/insert-3800346-fix.html
2951         * layout-tests/editing/inserting/insert-br-001.html
2952         * layout-tests/editing/inserting/insert-br-002.html
2953         * layout-tests/editing/inserting/insert-br-003.html
2954         * layout-tests/editing/inserting/insert-br-004.html
2955         * layout-tests/editing/inserting/insert-br-005.html
2956         * layout-tests/editing/inserting/insert-br-006.html
2957         * layout-tests/editing/inserting/insert-br-007.html
2958         * layout-tests/editing/inserting/insert-br-008.html
2959         * layout-tests/editing/inserting/insert-tab-004.html
2960         * layout-tests/editing/inserting/insert-text-with-newlines.html
2961         * layout-tests/editing/pasteboard/paste-text-010.html
2962
2963 2004-12-02  Ken Kocienda  <kocienda@apple.com>
2964
2965         Reviewed by John
2966
2967         Fix for this bug:
2968         
2969         <rdar://problem/3786362> REGRESSION (Mail): pasted text loses one newline
2970
2971         * khtml/editing/htmlediting.cpp:
2972         (khtml::InsertLineBreakCommand::doApply): Added check for strict mode before adding an extra br element
2973         at the end of a block. This is only necessary in quirks mode. Also, lower-case "br" used to make element.
2974         (khtml::ReplaceSelectionCommand::doApply): If the replacement adds a br element as the last element
2975         in a block and the document is in quirks mode, add an additional br to make the one in the 
2976         replacement content show up. This turns out to be much the same logic as is done in InsertLineBreakCommand.
2977         * layout-tests/editing/inserting/insert-3786362-fix-expected.txt: Added.
2978         * layout-tests/editing/inserting/insert-3786362-fix.html: Added.
2979
2980 2004-12-02  Richard Williamson   <rjw@apple.com>
2981
2982         Fixed <rdar://problem/3841332> REGRESSION (125.9-167u): repro crash in -[KWQPageState invalidate] involving .Mac images
2983
2984         Ensure that the document is cleared when leaving a non-HTML page.  This ensures that
2985         the b/f cache won't incorrectly trash the previous state when restoring.
2986
2987         Reviewed by John.
2988
2989         * kwq/WebCoreBridge.h:
2990         * kwq/WebCoreBridge.mm:
2991         (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
2992         (-[WebCoreBridge canCachePage]):
2993         (-[WebCoreBridge clear]):
2994
2995 2004-12-02  Ken Kocienda  <kocienda@apple.com>
2996
2997         Reviewed by Richard
2998
2999         Fix for this bug:
3000         
3001         <rdar://problem/3857775> 8A293: Mail.app crashes converting copy-pasted text into plain text
3002
3003         * khtml/xml/dom2_rangeimpl.cpp:
3004         (DOM::RangeImpl::commonAncestorContainer): Return the document element if no common ancestor container
3005         was found. This can happen in cases where the DOM was built from malformed markup (as in the case
3006         of this bug where there is content after the body tag). Did a little code clean up as well.
3007         (DOM::RangeImpl::compareBoundaryPoints): Made code more robust by adding some null checks.
3008
3009 2004-12-02  Ken Kocienda  <kocienda@apple.com>
3010
3011         Reviewed by Chris
3012
3013         Fix for this bug:
3014         
3015         <rdar://problem/3668157> REGRESSION (Mail): shift-click deselects when selection was created right-to-left
3016
3017         * khtml/khtml_part.cpp:
3018         (KHTMLPart::handleMousePressEventSingleClick): Use RangeImpl::compareBoundaryPoints
3019         to figure out which end of the selection to extend.
3020
3021 2004-12-02  David Harrison  <harrison@apple.com>
3022
3023         Reviewed by Ken Kocienda.
3024
3025                 <rdar://problem/3834917> REGRESSION (Mail): double-clicking blank line selects end of previous line
3026                 Fixed originally reported bug plus the case of double-clicking whitespace at the beginning of a line, which has a similar result.
3027
3028         * khtml/editing/visible_text.cpp:
3029         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
3030         (khtml::SimplifiedBackwardsTextIterator::handleTextNode):
3031         (khtml::SimplifiedBackwardsTextIterator::handleReplacedElement):
3032         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode):
3033         (khtml::SimplifiedBackwardsTextIterator::emitCharacter):
3034         Distinguish BR from whitespace.
3035         * khtml/editing/visible_text.h:
3036         Distinguish BR from whitespace.
3037         * khtml/editing/visible_units.cpp:
3038         (khtml::previousWordBoundary):
3039         Use UPSTREAM visible position now that SimplifiedBackwardsTextIterator distinguishes BR from whitespace.  Otherwise, double-clicking at end of line would result in caret selection at start of next line. 
3040
3041 2004-12-02  Ken Kocienda  <kocienda@apple.com>
3042
3043         Reviewed by John
3044
3045         Fix for this bug:
3046         
3047         <rdar://problem/3900996> Crash dragging past end of contentEditable DIV, at DOM::RangeImpl::pastEndNode() const + 24
3048
3049         * khtml/xml/dom_position.cpp:
3050         (DOM::Position::equivalentRangeCompliantPosition): Fixed this function so that it constrains the offset
3051         of the position to be >= 0 and <= number of kids of its node. Not doing this constraining led to a DOM
3052         exception trying to use a Position returned from this function to set the boundary point of a Range (which
3053         eventually led to the crash). Since this crash happened, it seems like this function was failing in its
3054         contract to return a range-compliant position, hence the need for this fix.
3055
3056 2004-12-01  Ken Kocienda  <kocienda@apple.com>
3057
3058         Reviewed by me
3059
3060         Moving code only.
3061
3062         * khtml/editing/htmlediting.cpp: Move ReplaceSelectionCommand into alphabetical order with
3063         regard to other editing commands. The class had a name change ages ago, and it was never
3064         moved.
3065         * khtml/editing/htmlediting.h: Ditto.
3066
3067 2004-12-01  Ken Kocienda  <kocienda@apple.com>
3068
3069         Reviewed by Hyatt
3070         
3071         Some improvements for paste, including some new code to annotate
3072         whitespace when writing to the pasteboard to ensure that the meaning
3073         of the markup on the pasteboard is unambiguous.
3074         
3075         There is also new code for reading this annotated markup from the pasteboard,
3076         removing the nodes that were added only to prevent ambiguity.
3077
3078         * WebCore.pbproj/project.pbxproj: Added html_interchange.h and html_interchange.cpp files.
3079         The header should have been added earlier, but I did not do so.
3080         * khtml/editing/html_interchange.cpp: Added.
3081         (convertHTMLTextToInterchangeFormat):
3082         * khtml/editing/html_interchange.h: Added some new constants for use with whitespace annotations.
3083         * khtml/editing/htmlediting.cpp:
3084         (khtml::ReplacementFragment::ReplacementFragment): Now looks for and removes annotations added for whitespace.
3085         Also fixed a bug in the code that counts blocks in a fragment.
3086         (khtml::ReplacementFragment::isInterchangeConvertedSpaceSpan): New helper. Recognizes annotation spans.
3087         (khtml::ReplacementFragment::insertNodeBefore): New helper.
3088         (khtml::ReplaceSelectionCommand::doApply): Fixed a bug in the code that sets the start position
3089         for the replacement after deleting. This was causing a bug when pasting at the end of a block.
3090         * khtml/editing/htmlediting.h: Add some new declarations.
3091         * khtml/xml/dom2_rangeimpl.cpp:
3092         (DOM::RangeImpl::toHTML): Calls to startMarkup now pass true for the new annotate flag.
3093         * khtml/xml/dom_nodeimpl.cpp:
3094         (NodeImpl::stringValueForRange): New helper.
3095         (NodeImpl::renderedText): New helper to return only the rendered text in a node.
3096         (NodeImpl::startMarkup): Now takes an additional flag to control whether interchange annotations
3097         should be added. Called by the paste code.
3098         * khtml/xml/dom_nodeimpl.h: Added and modified function declarations.
3099
3100         New test to check the khtml::ReplaceSelectionCommand::doApply fix.
3101         * layout-tests/editing/pasteboard/paste-text-010-expected.txt: Added.
3102         * layout-tests/editing/pasteboard/paste-text-010.html: Added.
3103
3104 2004-11-30  Chris Blumenberg  <cblu@apple.com>
3105
3106         * ChangeLog: removed conflict marker
3107
3108 2004-11-30  Chris Blumenberg  <cblu@apple.com>
3109
3110         Fixed:
3111         <rdar://problem/3685766> WebDataSource is missing subresources when they use cached WebCore data
3112         <rdar://problem/3722434> REGRESSION?: Assertion failure trying to drag image in iframe (itapema.sc.gov.br)
3113
3114         Reviewed by darin.
3115
3116         * khtml/misc/loader.cpp:
3117         (CachedObject::~CachedObject): release m_allData
3118         (CachedObject::setAllData): new
3119         (Loader::servePendingRequests): connect slotAllData
3120         (Loader::slotAllData): new
3121         (Cache::requestImage): tweak
3122         * khtml/misc/loader.h:
3123         (khtml::CachedObject::CachedObject): set allData to 0
3124         (khtml::CachedObject::allData): new
3125         * kwq/KWQKJobClasses.h:
3126         * kwq/KWQKJobClasses.mm:
3127         (KIO::TransferJob::TransferJob): set m_allData
3128         (KIO::TransferJob::emitAllData): new
3129         * kwq/KWQLoader.mm:
3130         (KWQCheckCacheObjectStatus): pass WebKit the data instead of the length of the resource
3131         * kwq/KWQResourceLoader.mm:
3132         (-[KWQResourceLoader finishWithData:]): renamed to pass all data for the resource
3133         * kwq/KWQSlot.mm:
3134         (KWQSlot::KWQSlot): support for slotAllData
3135         (KWQSlot::call):
3136         * kwq/WebCoreBridge.h:
3137         * kwq/WebCoreResourceLoader.h:
3138
3139 2004-11-30  Maciej Stachowiak  <mjs@apple.com>
3140
3141         Reviewed by John.
3142
3143 2004-11-30  Maciej Stachowiak  <mjs@apple.com>
3144
3145         Reviewed by John.
3146
3147         <rdar://problem/3805311> REGRESSION (159-163): onload in dynamically written document not called (causes blank search page at Japanese EPP site, many others)
3148
3149         * khtml/khtml_part.cpp:
3150         (KHTMLPart::begin): call setParsing on document here after opening
3151         - from now on we'll only set parsing to true for a document open
3152         caused by page loading, not a programmatic one.
3153         * khtml/xml/dom_docimpl.cpp:
3154         (DocumentImpl::open): don't setParsing to true here any more.
3155
3156 2004-11-30  Maciej Stachowiak  <mjs@apple.com>
3157
3158         Reviewed by John.
3159
3160         - fix recent regression from collection perf fixes.
3161         
3162         * khtml/html/html_miscimpl.cpp:
3163         (HTMLFormCollectionImpl::updateNameCache): Look up the name
3164         attribute in the name cache, not the id cache (d'oh!)
3165
3166 2004-11-30  Darin Adler  <darin@apple.com>
3167
3168         Reviewed by Ken.
3169
3170         - rolled in a KDE fix for a problem that may underlie a number of crashes
3171
3172         * khtml/xml/dom2_rangeimpl.cpp: (RangeImpl::compareBoundaryPoints): Rolled in a change from
3173         the KDE guys to fix a subtle problem. Code said "n = n =".
3174
3175         - rolled in a KDE fix for a containingBlock crash
3176
3177         * khtml/rendering/render_object.cpp: Roll in a change from KDE that adds frameset to the list of
3178         elements that can not be a containingBlock. They said this fixes a crash, although I did not look
3179         into that further.
3180
3181         - fixed <rdar://problem/3884660> 8A305: Repro crash in QScrollBar::setValue (affects Safari RSS)
3182
3183         * kwq/KWQButton.mm:
3184         (-[KWQButton initWithQButton:]): Set up target and action here instead of in caller.
3185         (-[KWQButton detachQButton]): Added.
3186         (-[KWQButton sendConsumedMouseUpIfNeeded]): Check button for nil instead of checking target.
3187         (-[KWQButton mouseDown:]): Add calls to QWidget::beforeMouseDown/afterMouseDown.
3188         (-[KWQButton widget]): Added.
3189         (-[KWQButton becomeFirstResponder]): Added check to handle when button is 0.
3190         (-[KWQButton resignFirstResponder]): Ditto.
3191         (-[KWQButton canBecomeKeyView]): Ditto.
3192         (QButton::QButton): Remove target and action setup; handled in KWQButton now.
3193         (QButton::~QButton): Call detachQButton instead of setTarget:nil.
3194
3195         * kwq/KWQComboBox.mm:
3196         (QComboBox::~QComboBox): Call detachQComboBox.
3197         (-[KWQPopUpButtonCell detachQComboBox]): Added.
3198         (-[KWQPopUpButtonCell trackMouse:inRect:ofView:untilMouseUp:]): Handle case where box is 0.
3199         (-[KWQPopUpButtonCell setHighlighted:]): Ditto.
3200         (-[KWQPopUpButton action:]): Ditto.
3201         (-[KWQPopUpButton widget]): Tweaked.
3202         (-[KWQPopUpButton mouseDown:]): Added. Calls QWidget::beforeMouseDown/afterMouseDown.
3203         (-[KWQPopUpButton becomeFirstResponder]): Handle case where widget is 0.
3204         (-[KWQPopUpButton resignFirstResponder]): Ditto.
3205         (-[KWQPopUpButton canBecomeKeyView]): Ditto.
3206
3207         * kwq/KWQLineEdit.mm: (QLineEdit::~QLineEdit): Updated to use new detachQLineEdit name.
3208
3209         * kwq/KWQListBox.mm:
3210         (-[KWQTableView mouseDown:]): Added. Calls QWidget::beforeMouseDown/afterMouseDown.
3211
3212         * kwq/KWQScrollBar.h: Removed m_scroller field.
3213         * kwq/KWQScrollBar.mm:
3214         (-[KWQScrollBar initWithQScrollBar:]): Rearranged a little bit.
3215         (-[KWQScrollBar detachQScrollBar]): Added.
3216         (-[KWQScrollBar widget]): Added.
3217         (-[KWQScrollBar mouseDown:]): Added.  Calls QWidget::beforeMouseDown and afterMouseDown.
3218         (QScrollBar::QScrollBar): Changed to no longer set m_scroller.
3219         (QScrollBar::~QScrollBar): Changed to call detachQScrollBar. No longer calls removeFromSuperview.
3220         (QScrollBar::setValue): Chagned to use getView instad of m_scrollBar.
3221         (QScrollBar::setKnobProportion): Ditto.
3222         (QScrollBar::scrollbarHit): Ditto.
3223
3224         * kwq/KWQScrollView.mm:
3225         (QScrollView::addChild): Changed to call QWidget to add to superview to accomodate the
3226         hack where we don't remove right away when doing mouse tracking.
3227         (QScrollView::removeChild): Changed to call QWidget to remove from superview to accomodate
3228         the hack where we don't add right away when doing mouse tracking.
3229
3230         * kwq/KWQSlider.h: Added destructor.
3231         * kwq/KWQSlider.mm:
3232         (-[KWQSlider initWithQSlider:]): Tweaked a little.
3233         (-[KWQSlider detachQSlider]): Added.
3234         (-[KWQSlider mouseDown:]): Added call to QWidget::beforeMouseDown/afterMouseDown.
3235         (-[KWQSlider widget]): Added.
3236         (QSlider::~QSlider): Added. Calls detachQSlider.
3237
3238         * kwq/KWQTextArea.h: Added detachQTextEdit method.
3239         * kwq/KWQTextArea.mm:
3240         (-[KWQTextArea detachQTextEdit]): Added.
3241         (-[KWQTextArea textDidChange:]): Added check for widget of 0.
3242         (-[KWQTextArea becomeFirstResponder]): Ditto.
3243         (-[KWQTextArea nextKeyView]): Ditto.
3244         (-[KWQTextArea previousKeyView]): Ditto.
3245         (-[KWQTextArea drawRect:]): Ditto.
3246         (-[KWQTextAreaTextView insertTab:]): Ditto.
3247         (-[KWQTextAreaTextView insertBacktab:]): Ditto.
3248         (-[KWQTextAreaTextView shouldDrawInsertionPoint]): Ditto.
3249         (-[KWQTextAreaTextView selectedTextAttributes]): Ditto.
3250         (-[KWQTextAreaTextView mouseDown:]): Ditto.
3251         (-[KWQTextAreaTextView keyDown:]): Ditto.
3252         (-[KWQTextAreaTextView keyUp:]): Ditto.
3253
3254         * kwq/KWQTextEdit.h: Added ~QTextEdit.
3255         * kwq/KWQTextEdit.mm: (QTextEdit::~QTextEdit): Added. Calls detachQTextEdit.
3256
3257         * kwq/KWQTextField.h: Changed invalidate to detachQLineEdit.
3258         * kwq/KWQTextField.mm: (-[KWQTextFieldController detachQLineEdit]): Changed.
3259
3260         * kwq/KWQWidget.h: Added addToSuperview/removeFromSuperview for use from QScrollView.
3261         Added beforeMouseDown and afterMouseDown for use in widget implementations.
3262         Removed unused hasMouseTracking function.
3263         * kwq/KWQWidget.mm:
3264         (QWidget::QWidget): Initialize two new fields.
3265         (QWidget::~QWidget): Added code to remove view when widget is destroyed.
3266         (QWidget::getOuterView): Remove unneeded exception blocking since we're just caling superview.
3267         (QWidget::addToSuperview): Added.
3268         (QWidget::removeFromSuperview): Added.
3269         (QWidget::beforeMouseDown): Added.
3270         (QWidget::afterMouseDown): Added.
3271
3272         * khtml/rendering/render_layer.cpp:
3273         (RenderLayer::setHasHorizontalScrollbar): Remove parent parameter; let addChild call addSubview:.
3274         (RenderLayer::setHasVerticalScrollbar): Ditto.
3275
3276 2004-11-30  Ken Kocienda  <kocienda@apple.com>
3277
3278         Reviewed by John
3279
3280         Fix for this bug:
3281         
3282         <rdar://problem/3863031> REGRESSION (Mail): caret continues flashing while mouse is down
3283
3284         * khtml/khtml_part.cpp:
3285         (KHTMLPart::timerEvent): Add a check for whether the mouse is down. Keep the caret drawn
3286         with no blink if it is.
3287
3288 2004-11-30  Ken Kocienda  <kocienda@apple.com>
3289
3290         Reviewed by John
3291
3292         Fix for this bug:
3293         
3294         <rdar://problem/3861602> cursor gets lost trying to backspace to delete a form control
3295
3296         * khtml/khtml_part.cpp:
3297         (KHTMLPart::setFocusNodeIfNeeded): This function would clear the selection if a <button>
3298         or <input type=image> was checked for focus since these elements are keyboard-focusable,
3299         but not mouse focusable. Also, this function did not work hard enough to set the focused
3300         node, and was content to clear it if the first element checked failed the test, rather
3301         than looking more at parents. This would have the effect of clearing, then resetting the
3302         focus on a DIV containing a button or image with content on either side of it in the
3303         process of arrowing over such content.
3304
3305 2004-11-30  Ken Kocienda  <kocienda@apple.com>
3306
3307         Reviewed by John
3308
3309         * khtml/editing/htmlediting.cpp:
3310         (khtml::ReplaceSelectionCommand::doApply): Fix smart replace, which I (knowingly) broke with yesterday's checkin.
3311         Also, call updateLayout() in one more place to prevent stale information being returned from caretMaxOffset().
3312         * khtml/khtml_part.cpp:
3313         (KHTMLPart::isCharacterSmartReplaceExempt): Make this virtual and always return true. This gets rid of an
3314         ugly APPLE_CHANGES block and use of KWQ(part) in ReplaceSelectionCommand.
3315         * khtml/khtml_part.h: To help out with the isCharacterSmartReplaceExempt cleanup, add declaration.
3316         * kwq/KWQKHTMLPart.h: To help out with the isCharacterSmartReplaceExempt cleanup, make 
3317         isCharacterSmartReplaceExempt virtual.
3318
3319 2004-11-30  Ken Kocienda  <kocienda@apple.com>
3320
3321         Reviewed by me
3322
3323         * khtml/editing/htmlediting.cpp:
3324         (khtml::ReplacementFragment::mergeEndNode): Fixed one-line coding mistake that created an endless loop.
3325         Seemed simple enough to land without review.
3326
3327 2004-11-29  Ken Kocienda  <kocienda@apple.com>
3328
3329         Reviewed by&nb