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