Add layout test for large rowspans.
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2004-12-14  David Hyatt  <hyatt@apple.com>
2
3         Fix for 3562458, rowspan and colspan converted to ints so that large values will work for them.  Remove
4         the ridiculous 1024 limit on the span values.
5
6         * khtml/html/html_tableimpl.cpp:
7         (HTMLTableCellElementImpl::parseHTMLAttribute):
8         * khtml/rendering/render_table.cpp:
9         (RenderTableCell::collapsedBottomBorder):
10         * khtml/rendering/render_table.h:
11         (khtml::RenderTableCell::colSpan):
12         (khtml::RenderTableCell::setColSpan):
13         (khtml::RenderTableCell::rowSpan):
14         (khtml::RenderTableCell::setRowSpan):
15         (khtml::RenderTableCol::span):
16         (khtml::RenderTableCol::setSpan):
17
18 2004-12-14  David Hyatt  <hyatt@apple.com>
19
20         Make sure <col> and <colgroup> can have spans updated dynamically as well.
21         
22         Reviewed by rjw
23
24         * khtml/html/html_tableimpl.cpp:
25         (HTMLTableColElementImpl::parseHTMLAttribute):
26         * khtml/rendering/render_table.cpp:
27         (RenderTableCell::updateFromElement):
28         (RenderTableCol::updateFromElement):
29
30 2004-12-14  David Hyatt  <hyatt@apple.com>
31
32         Fix for 3833123, setting a cell's colspan does not update rendering like it should.
33         
34         Reviewed by rjw
35
36         * khtml/html/html_tableimpl.cpp:
37         (HTMLTableCellElementImpl::parseHTMLAttribute):
38         * khtml/rendering/render_table.cpp:
39         (RenderTableCell::RenderTableCell):
40         (RenderTableCell::updateFromElement):
41
42 2004-12-14  Chris Blumenberg  <cblu@apple.com>
43
44         Fixed: <rdar://problem/3864536> crash copying text from other apps and pasting in a sticky in dashboard
45
46         Reviewed by hyatt.
47
48         * khtml/editing/markup.cpp:
49         (khtml::createFragmentFromText): ref and deref the fragment since calling appendChild can completely deref it
50
51 2004-12-14  David Hyatt  <hyatt@apple.com>
52
53         Fix for 3785211. Make sure to do a layout with the old position before doing a layout after changing to the new position.
54         This is actually a regression from my positioned object DHTML optimization.
55         
56         Reviewed by kocienda
57
58         * khtml/rendering/render_object.cpp:
59         (RenderObject::setStyle):
60
61 2004-12-14  David Hyatt  <hyatt@apple.com>
62
63         Make sure the class attribute works when newlines are present in the attribute.
64
65         Reviewed by kocienda
66
67         * khtml/html/html_elementimpl.cpp:
68         (HTMLNamedAttrMapImpl::parseClassAttribute):
69
70 2004-12-14  David Hyatt  <hyatt@apple.com>
71
72         Fix for 3724938, float element is duplicated and paints twice.  The logic for when to paint floats was
73         actually fairly screwed up.  This patch simplifies the logic and makes addOverhangingFloats easier to
74         read by splitting it into two separate functions.
75         
76         Reviewed by kocienda
77
78         * khtml/rendering/render_block.cpp:
79         (khtml::RenderBlock::layoutBlockChildren):
80         (khtml::RenderBlock::clearFloats):
81         (khtml::RenderBlock::addOverhangingFloats):
82         (khtml::RenderBlock::addIntrudingFloats):
83         * khtml/rendering/render_block.h:
84
85 2004-12-14  John Sullivan  <sullivan@apple.com>
86
87         Reviewed by Ken.
88         
89         - added Undo action names for Cut, Paste, and Drag
90
91         * khtml/editing/htmlediting.h:
92         * khtml/editing/htmlediting.cpp:
93         (khtml::DeleteSelectionCommand::editingAction):
94         overridden to return HTMLEditActionCut
95         (khtml::MoveSelectionCommand::editingAction):
96         overridden to return HTMLEditActionDrag
97         (khtml::ReplaceSelectionCommand::editingAction):
98         overridden to return HTMLEditActionPaste
99
100 2004-12-14  John Sullivan  <sullivan@apple.com>
101
102         Reviewed by Ken.
103         
104         - architecture for WebCore part of fix for <rdar://problem/3790011> undoable operations all say "Undo" in the menu, 
105         no specific action names
106           
107         The remaining step is to make each EditCommand subclass override editingAction() to return an
108         appropriate value. (Unfortunately the mapping between subclass and user-distinguishable action
109         is not completely straightforward, so this next step isn't trivial.)
110
111         * khtml/editing/htmlediting.h:
112         new enum for HTMLEditAction
113
114         * khtml/editing/htmlediting.cpp:
115         (khtml::EditCommandPtr::editingAction):
116         new method, calls through to EditCommand
117         (khtml::EditCommand::editingAction):
118         new method for subclasses to override, returns HTMLEditActionUnspecified at this level
119         (khtml::TypingCommand::editingAction):
120         proof of concept override, returns HTMLEditActionTyping
121                 
122         * kwq/KWQKHTMLPart.h:
123         declare new private bottleneck method registerCommandForUndoOrRedo
124         * kwq/KWQKHTMLPart.mm:
125         (KWQKHTMLPart::registerCommandForUndoOrRedo):
126         new bottleneck method to reduce code duplication; now calls over the bridge
127         to get the localized string to use for the Undo action name
128         (KWQKHTMLPart::registerCommandForUndo):
129         now calls new bottleneck method
130         (KWQKHTMLPart::registerCommandForRedo):
131         now calls new bottleneck method
132         
133         * kwq/WebCoreBridge.h:
134         new enum for WebUndoAction, maps directly to HTMLEditAction.
135         Declaration of nameForUndoAction:
136
137 2004-12-14  Darin Adler  <darin@apple.com>
138
139         Reviewed by John.
140
141         - added a bunch of missing nil checks; our old version of inherits used to work for nil (by accident)
142
143         * khtml/rendering/render_frames.cpp:
144         (RenderPart::~RenderPart): Check widget for nil.
145         (RenderPart::setWidget): Ditto.
146         (RenderFrame::slotViewCleared): Ditto.
147         (RenderPartObject::slotViewCleared): Ditto.
148
149 2004-12-13  Darin Adler  <darin@apple.com>
150
151         Reviewed by Ken.
152
153         - moved markup-related functions into new sources files in the editing directory
154         - removed all of the uses of dynamic_cast, preparing to turn off RTTI to make our code smaller and slightly faster
155
156         * ForwardingHeaders/editing/markup.h: Added.
157         * khtml/editing/markup.h: Added.
158         * khtml/editing/markup.cpp: Added.
159
160         * WebCore.pbproj/project.pbxproj: Added markup.h/cpp.
161
162         * khtml/dom/dom_node.cpp: (Node::toHTML): Call createMarkup since there's no toHTML in NodeImpl any more.
163         * khtml/html/html_elementimpl.cpp:
164         (HTMLElementImpl::innerHTML): Changed to call createMarkup.
165         (HTMLElementImpl::outerHTML): Ditto.
166
167         * khtml/ecma/kjs_window.cpp:
168         (Window::retrieveWindow): Comment out assert that uses dynamic_cast.
169         (Window::retrieveActive): Ditto.
170
171         * khtml/editing/htmlediting.h: Added forward class declaration needed now that I removed one elsewhere.
172         * khtml/xml/dom_docimpl.h: Ditto.
173
174         * khtml/khtml_part.cpp:
175         (KHTMLPart::slotDebugDOMTree): Use createMarkup instead of toHTML.
176         (KHTMLPart::processObjectRequest): Use inherits instead of dynamic_cast.
177
178         * khtml/rendering/render_image.cpp: (RenderImage::paint): Add an explicit QChar conversion so this code
179         still works even with the additional replace overloads added to QString.
180         * kwq/KWQTextCodec.mm: (QTextCodec::fromUnicode): Ditto.
181
182         * khtml/rendering/render_object.h: Removed the version of arenaDelete that does not take an object
183         base pointer, because it used dynamic_cast in its implementation. Made the other version public.
184         * khtml/rendering/render_object.cpp: Ditto.
185         * khtml/rendering/render_replaced.cpp: (RenderWidget::deref): Pass object base pointer to arenaDelete.
186
187         * khtml/xml/dom2_rangeimpl.h: Removed extra parameters from toHTML, and unneeded includes and declarations.
188         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::toHTML): Changed to call createMarkup, and moved all
189         the support code into markup.cpp.
190
191         * khtml/xml/dom_nodeimpl.h: Moved toHTML and related functions into markup.cpp.
192         * khtml/xml/dom_nodeimpl.cpp: Ditto.
193
194         * khtml/xml/dom_position.cpp:
195         (DOM::startPosition): Implemented the version of this that takes a RangeImpl. Also added null checks
196         so these return null positions rather than raising exceptions.
197         (DOM::endPosition): Ditto.
198
199         * khtml/khtmlview.h: Added an APPLE_CHANGES function so inherits can detect this class without dynamic_cast.
200         * kwq/KWQFrame.h: Ditto.
201         * kwq/KWQFrame.mm: (QFrame::isQFrame): Ditto.
202         * kwq/KWQKPartsPart.h: Ditto.
203         * kwq/KWQKPartsPart.mm: (KParts::ReadOnlyPart::isKPartsReadOnlyPart): Ditto.
204         * kwq/KWQScrollView.h: Ditto.
205         * kwq/KWQScrollView.mm: (QScrollView::isQScrollView): Ditto.
206         * kwq/KWQKHTMLPart.h: Ditto.
207         * kwq/KWQKHTMLPart.mm:
208         (KHTMLView::isKHTMLView): Ditto.
209         (KWQKHTMLPart::setTitle): Added an explicit QChar conversion so this code still works even with the additional
210         replace overloads added to QString.
211         (KWQKHTMLPart::setStatusBarText): Ditto.
212         (KWQKHTMLPart::runJavaScriptAlert): Ditto.
213         (KWQKHTMLPart::runJavaScriptConfirm): Ditto.
214         (KWQKHTMLPart::runJavaScriptPrompt): Ditto.
215         (KWQKHTMLPart::attributedString): Ditto.
216         (KWQKHTMLPart::isCharacterSmartReplaceExempt): Ditto.
217         (KWQKHTMLPart::isKHTMLPart): That dynamic_cast thing (see above).
218
219         * kwq/KWQObject.h: Added virtual methods for the few cases where we need dynamic_cast-like behavior.
220         * kwq/KWQObject.mm:
221         (QObject::inherits): Changed to not use dynamic cast.
222         (QObject::isKHTMLPart): Added. Returns false.
223         (QObject::isKHTMLView): Ditto.
224         (QObject::isKPartsReadOnlyPart): Ditto.
225         (QObject::isQFrame): Ditto.
226         (QObject::isQScrollView): Ditto.
227
228         * kwq/KWQRenderTreeDebug.cpp:
229         (write): Changed to use inherits rather than dynamic_cast.
230         (writeSelection): Ditto.
231
232         * kwq/KWQSlot.mm: (KWQSlot::call): Call through to the version with just a job pointer parameter rather
233         than going straight on to the "no parameters at all" version.
234
235         * kwq/KWQString.h:
236         * kwq/KWQString.mm: (QString::replace): Added overloads.
237         * kwq/WebCoreBridge.mm:
238         (-[WebCoreBridge markupStringFromNode:nodes:]): Changed to call functions in markup.h.
239         (-[WebCoreBridge markupStringFromRange:nodes:]): Ditto.
240         (-[WebCoreBridge selectedString]): Added an explicit QChar conversion so this code still works even with
241         the additional replace overloads added to QString.
242         (-[WebCoreBridge stringForRange:]): Ditto.
243         (-[WebCoreBridge copyDOMNode:copier:]): Changed to call functions in markup.h.
244         (-[WebCoreBridge elementAtPoint:]): QChar conversion.
245         (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]): Changed to call functions in markup.h.
246         (-[WebCoreBridge documentFragmentWithText:]): Changed to call functions in markup.h.
247
248 2004-12-13  Ken Kocienda  <kocienda@apple.com>
249
250         Reviewed by John
251
252         Fix for this bug:
253         
254         <rdar://problem/3917956> REGRESSION (Mail): pasting can leave insertion point inside pasted text
255
256         * khtml/editing/htmlediting.cpp:
257         (khtml::ReplaceSelectionCommand::doApply): Fix coding mistake. Calculations of bool flag based on 
258         leading and trailing whitespace positions was reversed! I must have introduced this error recently
259         when changing around this code.
260
261 2004-12-13  David Hyatt  <hyatt@apple.com>
262
263         Fix for 3915787, macobserver doesn't paint.  floatRect() needed to be const in the base class.  Also hit-testing
264         and painting was using the wrong rect when setting up the x/y of the rect.
265         
266         Reviewed by mjs
267
268         * khtml/rendering/render_block.cpp:
269         (khtml::RenderBlock::paint):
270         (khtml::RenderBlock::nodeAtPoint):
271         * khtml/rendering/render_object.h:
272         (khtml::RenderObject::floatRect):
273
274 2004-12-13  Ken Kocienda  <kocienda@apple.com>
275
276         Reviewed by John
277
278         Fix for this bug:
279         
280         <rdar://problem/3917863> REGRESSION (Mail): pasting two lines of plain text copied from an RTF document results in two styles
281
282         Code to figuire out the end node to merge was missing the font tag in the second paragraph
283         written out by AppKit convert-to-HTML function. I refined the algorithm to be smarter.
284
285         * khtml/editing/htmlediting.cpp:
286         (khtml::ReplacementFragment::mergeEndNode): Refine algorithm used to walk through the fragment being pasted
287         looking for the node that is the last inline in the last block of the fragment. The old algorithm was 
288         insufficiently powerful.
289         (khtml::ReplacementFragment::enclosingBlock): New helper function.
290         * khtml/editing/htmlediting.h: Add declaration for new helper function.
291         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: Added.
292         * layout-tests/editing/pasteboard/paste-text-011.html: Added.
293
294 2004-12-13  Ken Kocienda  <kocienda@apple.com>
295
296         Reviewed by John
297
298         WebCore side of fix for this bug:
299         
300         <rdar://problem/3768372> REGRESSION (Mail): paste of text ending in whitespace loses whitespace
301
302         Note that we are coordinating with Doug Davidson on the AppKit team to make a complete fix for this
303         bug. This change involves our half of the needed changes.
304         
305         Note that a lot of this change has to do with changing code to use a <br> element instead of
306         a comment node as the mechanism to annotate HTML with information used to fix the bug. In some
307         other places, code to handle comments in markup can be removed since we do not use comments for
308         such annotations after this change.
309
310         * khtml/editing/htmlediting.cpp: Remove isComment() helper; no longer needed.
311         (khtml::ReplacementFragment::ReplacementFragment): Change m_hasInterchangeNewlineComment name to m_hasInterchangeNewline.
312         (khtml::ReplacementFragment::isInterchangeNewlineNode): Name changed from isInterchangeNewlineComment.
313         (khtml::ReplacementFragment::isInterchangeConvertedSpaceSpan): Local variable name convertedSpaceSpanClass changed to
314         convertedSpaceSpanClassString to match other uses of the idiom used here.
315         (khtml::ReplaceSelectionCommand::doApply): Change hasInterchangeNewlineComment() name to hasInterchangeNewline().
316         * khtml/editing/htmlediting.h: Change names as noted in .cpp file. Remove isComment() helper; no longer needed.
317         (khtml::ReplacementFragment::hasInterchangeNewline):  Change hasInterchangeNewlineComment() name to hasInterchangeNewline().
318         * khtml/html/html_elementimpl.cpp:
319         (HTMLElementImpl::createContextualFragment): No longer has includeCommentsInDOM flag; no longer needed as we do not
320         annotate fragments with comments any longer.
321         * khtml/html/html_elementimpl.h: Ditto.
322         * khtml/xml/dom2_rangeimpl.cpp: Remove addCommentToHTMLMarkup() helper. No longer needed.
323         (DOM::interchangeNewlineMarkupString): New helper to return <br> element markup we use to annotate content for interchange.
324         (DOM::RangeImpl::toHTML): No longer uses addCommentToHTMLMarkup; now calls interchangeNewlineMarkupString(). Remove
325         spurious semi-colon.
326         * khtml/xml/dom2_rangeimpl.h: Remove obsolete addCommentToHTMLMarkup() function and EAddToMarkup enum.
327         * kwq/WebCoreBridge.mm:
328         (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]): No longer pass bool to ask for including comments
329         in DOM when calling createContextualFragment().
330
331 2004-12-10  John Sullivan  <sullivan@apple.com>
332
333         fixed deployment build bustage that John Louch ran into
334
335         * kwq/KWQTextEdit.mm:
336         (QTextEdit::setScrollBarModes):
337         move bool declaration inside exception-handling block to avoid obscure
338         compiler error
339
340 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
341
342         Reviewed by Richard.
343
344         <rdar://problem/3907484> REGRESSION (125-173): crash when KWQTextField is dealloc'ed while setting focus (profoundlearning.com)
345         
346         * kwq/KWQWidget.mm:
347         (QWidget::setFocus): Handle the case where setting focus removed
348         us from the superview - this can happen due to style changes on
349         focus change.
350
351 2004-12-10  Ken Kocienda  <kocienda@apple.com>
352
353         Reviewed by Hyatt
354
355         Fix for this bug:
356         
357         <rdar://problem/3915008> REGRESSION (Mail): Too much white space between lines separated by carriage returns
358
359         There are a number of interesting things we could do to fix this bug, including SPI and involving
360         the WebKit delegate, etc., however it seems reasonable to start with a hard-coded default that
361         will fix the bug in the general case until such time as we can come up with more specific
362         solutions. 
363         
364         So, I added a helper method to create <p> elements with an inline style that sets top and bottom margins
365         to 0.1em.
366
367         * khtml/editing/htmlediting.cpp:
368         (khtml::InsertParagraphSeparatorCommand::createParagraphElement): New factory method to create
369         paragraph elements to insert. Also adds style information to keep the <p> from having "too-big" margins.
370         (khtml::InsertParagraphSeparatorCommand::doApply): Call new factory method.
371         * khtml/editing/htmlediting.h: Add createParagraphElement() declaration.
372
373 2004-12-10  Darin Adler  <darin@apple.com>
374
375         Reviewed by Hyatt.
376
377         - fixed <rdar://problem/3910419> setting style={overflow:hidden} for <textarea> does not prevent appearance of scrollbars
378
379         * khtml/rendering/render_form.h: Remove now-unneeded wrap parameter.
380         * khtml/rendering/render_form.cpp:
381         (RenderSubmitButton::rawText): Convert to QChar explicitly.
382         (RenderLineEdit::updateFromElement): Ditto.
383         (RenderLineEdit::slotTextChanged): Ditto.
384         (RenderSelect::updateFromElement): Ditto.
385         (TextAreaWidget::TextAreaWidget): Moved out most of the initialization since it's not something
386         that requires a derived class. Now we don't use this class at all for WebCore, but they still
387         have it for KDE.
388         (TextAreaWidget::event): Moved out the ifdefs.
389         (RenderTextArea::RenderTextArea): Moved setting code from TextAreaWidget here. Put a bunch that
390         we don't need at all inside !APPLE_CHANGES, and removed the setting for scroll bars, since that's
391         now done in setStyle.
392         (RenderTextArea::handleFocusOut): Use type QTextEdit instead of TextAreaWidget since that's all
393         that's needed and WebCore no longer has TextAreaWidget.
394         (RenderTextArea::calcMinMaxWidth): Ditto.
395         (RenderTextArea::setStyle): Add code to set scroll bar modes based on wrap setting combined with
396         overflow style.
397         (RenderTextArea::updateFromElement): Use type QTextEdit.
398         (RenderTextArea::text): Ditto.
399         (RenderTextArea::select): Ditto.
400
401         * kwq/KWQTextArea.mm:
402         (-[KWQTextArea _configureTextViewForWordWrapMode]): Don't set horizontal scroller visibility here,
403         since it's now handled by QTextEdit.
404         (-[KWQTextArea initWithFrame:]): Don't set vertical scroller visibility or scroller auto-hiding.
405
406         * kwq/KWQTextEdit.h: Add setScrollBarModes function to be used instead of separate setter for
407         the horizontal and vertical mode; needed because AppKit switches "autohide" for both at once.
408         * kwq/KWQTextEdit.mm: (QTextEdit::setScrollBarModes): Added.
409
410 2004-12-10  Ken Kocienda  <kocienda@apple.com>
411
412         Reviewed by Darin
413
414         Fix for this bug:
415         
416         <rdar://problem/3915047> HItting return in empty document inserts <p> but 
417         insertion point does not move
418
419         * khtml/editing/htmlediting.cpp:
420         (khtml::InsertParagraphSeparatorCommand::doApply): The issue is that the
421         code to insert the <p> element for the return is not detecting the fact
422         that the document is empty. Inserting a <p> into an empty body will not
423         "add a new line" as the user expects. With this change, we'll add a second 
424         <p> when the root editable element has no rendered kids.
425
426 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
427
428         Reviewed by John.
429
430         <rdar://problem/3912979> REGRESSION (125-173): repro crash in HTMLCollectionImpl code (www.clubtravel.ie)
431
432         * khtml/html/html_miscimpl.cpp:
433         (HTMLCollectionImpl::traverseNextItem): Pass base when traversing
434         the initial one step, otherwise we might inadvertantly step
435         outside the collection base, thereby causing assertion failures or
436         other badness later.
437
438 2004-12-10  Ken Kocienda  <kocienda@apple.com>
439
440         Reviewed by Chris
441
442         * khtml/editing/htmlediting.cpp:
443         (khtml::InsertParagraphSeparatorCommand::doApply): There is a starting block which is supposed to 
444         act as the root node for this operation. However, a loop was incorrectly coded, and a parent node
445         search could escape this node. Also, one other piece to code to move nodes to the new <p> element
446         should do nothing if the starting point for the selection is itself the starting block.
447         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Similar changes, in spirit, to the above
448         function, though the names and concepts are slightly different.
449
450 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
451
452         Reviewed by Ken.
453
454         <rdar://problem/3907705> REGRESSION (172-173): DHTML menus are broken at hrweb.apple.com
455         
456         * khtml/dom/html_document.cpp:
457         (HTMLDocument::nameableItems): New method, wrapper for HTMLCollection creation.
458         * khtml/dom/html_document.h:
459         * khtml/ecma/kjs_html.cpp:
460         (KJS::HTMLDocument::tryGet): use doc.nameableItems(), not doc.all()!
461         * khtml/html/html_miscimpl.cpp:
462         (HTMLCollectionImpl::traverseNextItem): Added new DOC_NAMEABLE_ITEMS type, this represents
463         the items that can be accessed directly as a document propery, in particular forms, images,
464         objects, applets and embeds.
465         (HTMLCollectionImpl::updateNameCache): Fix some nameCache/idCache confusion.
466         (HTMLFormCollectionImpl::updateNameCache): Ditto.
467         * khtml/html/html_miscimpl.h:
468         (DOM::HTMLCollectionImpl::): Added new type.
469
470 2004-12-10  Ken Kocienda  <kocienda@apple.com>
471
472         Reviewed by John
473
474         Fix for this bug:
475         
476         <rdar://problem/3914779> REGRESSION (Mail): Cannot arrow navigate to position before last character on text-wrapped line
477
478         * khtml/rendering/render_text.cpp:
479         (RenderText::caretRect): Code was not detecting space at the end of a line correctly. Now it does.
480
481 2004-12-10  Ken Kocienda  <kocienda@apple.com>
482
483         Reviewed by John
484
485         Fix for this bug:
486
487         <rdar://problem/3914755> REGRESSION (Mail): Insertion point disappears after pasting paragraph
488
489         * khtml/editing/htmlediting.cpp:
490         (khtml::ReplaceSelectionCommand::doApply): Selection could end up in a "placeholder" node
491         that was removed from the document when pasting. This caused the disappearance. Now this
492         is detected, and the selection is shifted to a node that is in the document.
493
494 2004-12-09  Richard Williamson   <rjw@apple.com>
495
496         Check to disable threaded decoding during
497         layout tests wasn't invoking function, just checking address of 
498         function, which would always return true.
499         
500         * kwq/WebCoreImageRendererFactory.m:
501         (+[WebCoreImageRendererFactory shouldUseThreadedDecoding]):
502
503 2004-12-09  David Hyatt  <hyatt@apple.com>
504
505         Fix for 3892686, left/top overflow was not being propagated properly up to containing blocks because of a math
506         error.
507
508         Also fix a bug I noticed on the same page where relative position offsets were not being added in properly for
509         all inlines when repainting.
510         
511         Reviewed by rjw
512
513         * khtml/rendering/render_block.cpp:
514         (khtml::RenderBlock::layoutBlockChildren):
515         * khtml/rendering/render_flow.cpp:
516         (RenderFlow::getAbsoluteRepaintRect):
517
518 2004-12-09  David Hyatt  <hyatt@apple.com>
519
520         Fix for 3867545, finance.yahoo.com lays out incorrectly.  Add a quirk that will prevent tables from moving
521         down below floats when there is insufficient space.  Instead we will match Gecko and just spill out of the
522         containing block to the right.  This appears to be the more common desired behavior, despite being wrong.
523         WinIE sometimes wraps and sometimes doesn't, but it's really hard for us to match its inconsistency.
524         
525         Reviewed by john
526
527         * khtml/rendering/render_block.cpp:
528         (khtml::RenderBlock::getClearDelta):
529         * layout-tests/apple-only/base/www.cnn.com/index-expected.txt:
530         * layout-tests/apple-only/base/www.ebay.com/index-expected.txt:
531         * layout-tests/apple-only/base/www.excite.com/index-expected.txt:
532         * layout-tests/fast/block/margin-collapse/102-expected.txt:
533         * layout-tests/fast/block/margin-collapse/102.html:
534
535 2004-12-09  Richard Williamson   <rjw@apple.com>
536
537         Fixed <rdar://problem/3914078> worldclock crashing gc related
538
539         Use ProtectedValue for Context2D instance members.
540
541         Reviewed by Maciej.
542
543         * khtml/ecma/kjs_html.h:
544
545 2004-12-09  John Sullivan  <sullivan@apple.com>
546
547         Reviewed by Dave.
548         
549         - fixed <rdar://problem/3731099> Move AXTitle string for image elements to AXDescription
550
551         * kwq/KWQAccObject.mm:
552         (-[KWQAccObject title]): moved image alt tag code out of here
553         (-[KWQAccObject accessibilityDescription]): moved image alt tag code into this new method
554         (-[KWQAccObject accessibilityAttributeNames]): include AXDescription in the set of attributes
555         that ordinary elements return; this means that ordinary elements that aren't images will return
556         a nil description, which isn't ideal, but is in keeping with the way the rest of these attributes
557         work here.
558         (-[KWQAccObject accessibilityAttributeValue:]):
559         call accessibilityDescription when asked for AXDescription
560
561 2004-12-09  Ken Kocienda  <kocienda@apple.com>
562
563         Reviewed by Harrison
564
565         Fix for this bug:
566         
567         <rdar://problem/3910425> REGRESSION (Mail): Crash in ReplaceSelectionCommand; selection is empty, leading to null deref
568
569         * khtml/editing/htmlediting.cpp:
570         (khtml::MoveSelectionCommand::doApply): The node representing the destination for the move may have
571         been deleted. If this is the case, set the destination to the node the delete command provides in
572         its ending selection.
573
574 === Safari-175 ===
575
576 2004-12-09  Ken Kocienda  <kocienda@apple.com>
577
578         Reviewed by John
579         
580         Fix for this bug:
581         
582         <rdar://problem/3912841> REGRESSION (173-TOT): Some images report 0x0 dimensions on layout tests, causes spurious test failures
583
584         The new threaded image decoding capability can throw off layout tests. The issue is that the decoding
585         callback may not be delivered before the program asks for the dimensions of an image in order to
586         wrote the layout dimensions. More generally, I think we need to ensure that there are no races in
587         layout tests, so I have added a flag to the render tree debug code that we can set when debugging.
588
589         * kwq/KWQRenderTreeDebug.cpp:
590         (debuggingRenderTree): New function. Returns flag which tells whether the program is debugging the render tree.
591         (externalRepresentation): Sets debuggingRenderTree flag to true;
592         * kwq/KWQRenderTreeDebug.h:
593         * kwq/WebCoreImageRendererFactory.m:
594         (+[WebCoreImageRendererFactory shouldUseThreadedDecoding]): Checks debuggingRenderTree flag and will not
595         do threaded decoding in any case if the flag is set.
596
597 2004-12-09  Chris Blumenberg  <cblu@apple.com>
598
599         Fix for busting XMLHTTPRequest.
600
601         Reviewed by kocienda.
602
603         * khtml/misc/loader.cpp:
604         (Loader::servePendingRequests): pass true for deliverAllData
605         * kwq/KWQKJob.h:
606         (KIO::get): take deliverAllData param
607         (KIO::http_post): ditto
608         * kwq/KWQKJobClasses.h:
609         * kwq/KWQKJobClasses.mm:
610         (KIO::TransferJob::TransferJob): if deliverAllData, create signal with data param
611         (KIO::TransferJob::emitResult): if deliverAllData, call signal with data param
612
613 2004-12-09  Ken Kocienda  <kocienda@apple.com>
614
615         Reviewed by John
616
617         <rdar://problem/3911011> REGRESSION (Mail): Spaces at end of line causing word wrap lost when copied/pasted
618
619         * khtml/xml/dom_nodeimpl.cpp:
620         (NodeImpl::renderedText): Fixed the code so that spaces at the end of lines are not skipped.
621
622 2004-12-07  Richard Williamson   <rjw@apple.com>
623
624         Support threaded image decoding on machines w/ > 2 CPUs.
625
626         Reviewed by Maciej and Chris.
627
628         * khtml/misc/loader.cpp:
629         (CachedImageCallback::notifyUpdate):
630         (CachedImageCallback::notifyFinished):
631         (CachedImageCallback::notifyDecodingError):
632         (CachedImageCallback::handleError):
633         (CachedImageCallback::clear):
634         (CachedImage::CachedImage):
635         (CachedImage::clear):
636         (CachedImage::data):
637         (CachedImage::checkNotify):
638         (Loader::servePendingRequests):
639         (Loader::slotFinished):
640         (Loader::numRequests):
641         (Loader::cancelRequests):
642         (Loader::removeBackgroundDecodingRequest):
643         * khtml/misc/loader.h:
644         (khtml::CachedImageCallback::CachedImageCallback):
645         (khtml::CachedImageCallback::ref):
646         (khtml::CachedImageCallback::deref):
647         (khtml::CachedImage::decoderCallback):
648         * khtml/rendering/render_object.cpp:
649         (RenderObject::setPixmap):
650         * kwq/KWQPixmap.h:
651         * kwq/KWQPixmap.mm:
652         (-[WebImageCallback initWithCallback:khtml::]):
653         (-[WebImageCallback _commonTermination]):
654         (-[WebImageCallback dealloc]):
655         (-[WebImageCallback finalize]):
656         (-[WebImageCallback notify]):
657         (-[WebImageCallback setImageSourceStatus:]):
658         (-[WebImageCallback status]):
659         (QPixmap::shouldUseThreadedDecoding):
660         (QPixmap::receivedData):
661         * kwq/WebCoreImageRenderer.h:
662         * kwq/WebCoreImageRendererFactory.h:
663         * kwq/WebCoreImageRendererFactory.m:
664         (+[WebCoreImageRendererFactory shouldUseThreadedDecoding]):
665         (+[WebCoreImageRendererFactory setShouldUseThreadedDecoding:]):
666
667 2004-12-07  Ken Kocienda  <kocienda@apple.com>
668
669         Reviewed by John
670
671         * khtml/editing/htmlediting.cpp:
672         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Fix a problem with my
673         change in thei code yesterday. Call to insertBlockPlaceholderIfNeeded() must be done
674         after new block has been inserted, otherwise a crash can result. Shuffle down call 
675         to insertBlockPlaceholderIfNeeded() a couple of lines (where the node is inserted), 
676         and all is good.
677
678 2004-12-07  Ken Kocienda  <kocienda@apple.com>
679
680         Reviewed by John
681
682         Fix for this bug:
683         
684         <rdar://problem/3907422> REGRESSION (Mail): Pasting quoted content can place content after body element
685
686         * khtml/editing/htmlediting.cpp:
687         (khtml::ReplaceSelectionCommand::doApply): Detect when the body element is the "reference block" used
688         for determining the location for inserting content. Do not allow an insert before or after if the
689         reference block is the body. Perform insertNodeAt(0) and appendNode, respectively, in the block-is-body case.
690         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt: Added.
691         * layout-tests/editing/inserting/insert-3907422-fix.html: Added.
692
693 2004-12-07  Darin Adler  <darin@apple.com>
694
695         Reviewed by Don.
696
697         - fixed <rdar://problem/3908701> REGRESSION: Cursor does not change to "hand" over active links
698
699         * kwq/KWQEvent.mm: (positionForEvent): Add NSMouseMoved to list of events that have mouse location.
700
701 2004-12-07  Ken Kocienda  <kocienda@apple.com>
702
703         Reviewed by John
704
705         Changed name of constant from KHTMLInterchangeNewline to AppleInterchangeNewline.
706         I discussed this with Hyatt and he agreed that going with "Apple" names was OK.
707
708         * khtml/editing/html_interchange.h: Name change, as described above.
709         * khtml/editing/htmlediting.cpp:
710         (khtml::ReplacementFragment::isInterchangeNewlineComment): Ditto.
711         * khtml/xml/dom2_rangeimpl.cpp:
712         (DOM::RangeImpl::toHTML): Ditto.
713
714 2004-12-07  Ken Kocienda  <kocienda@apple.com>
715
716         Reviewed by me
717         
718         Added a couple more layout tests.
719
720         * layout-tests/editing/deleting/delete-line-013-expected.txt: Added.
721         * layout-tests/editing/deleting/delete-line-013.html: Added.
722         * layout-tests/editing/deleting/delete-line-014-expected.txt: Added.
723         * layout-tests/editing/deleting/delete-line-014.html: Added.
724
725 2004-12-06  Maciej Stachowiak  <mjs@apple.com>
726
727         Reviewed by Hyatt.
728
729         - fixed <rdar://problem/3906974> assertion failure in QWidget::beforeMouseDown clicking on <select multiple>
730         
731         * kwq/KWQListBox.mm:
732         (QListBox::QListBox): Initialize KWQListBoxScrollView with this.
733         (-[KWQListBoxScrollView initWithListBox:]): Make this class a KWQWidgetHolder.
734         (-[KWQListBoxScrollView widget]): See above.
735         (-[KWQTableView mouseDown:]): Pass outerView rather than self to beforeMouseDown and
736         afterMouseDown, to avoid triggering an assertion failure.
737
738 2004-12-06  David Hyatt  <hyatt@apple.com>
739
740         Fix for 3615411, the linesAppended optimization was old and broken, and it's easier with the new code fixes
741         made by me, kocienda and harrison to just remove it.
742         
743         Reviewed by mjs
744
745         * khtml/rendering/bidi.cpp:
746         (khtml::RenderBlock::layoutInlineChildren):
747         * khtml/rendering/render_block.cpp:
748         (khtml:::RenderFlow):
749         * khtml/rendering/render_block.h:
750         * khtml/rendering/render_flow.cpp:
751         (RenderFlow::dirtyLinesFromChangedChild):
752
753 2004-12-06  David Hyatt  <hyatt@apple.com>
754
755         Fix for 3787133, some web pages print with many blank pages.  Make sure to use the real page print rect and
756         not a damage rect that can be changed when intersected with the clip regions of the web page.
757         
758         Reviewed by john
759
760         * khtml/rendering/render_canvas.h:
761         (khtml::RenderCanvas::printRect):
762         (khtml::RenderCanvas::setPrintRect):
763         * khtml/rendering/render_flow.cpp:
764         (RenderFlow::paintLines):
765         * khtml/rendering/render_list.cpp:
766         (RenderListMarker::paint):
767         * kwq/KWQKHTMLPart.mm:
768         (KWQKHTMLPart::adjustPageHeight):
769
770 2004-12-06  David Harrison  <harrison@apple.com>
771
772         Reviewed by Ken Kocienda and Dave Hyatt (OOPS!).
773
774                 <rdar://problem/3849947> Typing after pasting line does not appear until after window resize.
775                 
776                 
777         * khtml/rendering/render_flow.cpp:
778         (RenderFlow::dirtyLinesFromChangedChild):
779                 Dirty the line above because new child can inval the cached line break position of previous line.
780
781 2004-12-06  David Hyatt  <hyatt@apple.com>
782
783         Fix for 3254464, radio buttons do not work for quiz on netscape.com.  Left/top overflow needed to be implemented.
784         This also fixes 3106907, link hover color only partially set on rollover and the more general architecture bug
785         3126929, handle top/left overflow.
786
787         This patch also fixes 3902891, scroll bar of position:fixed content moves when a page is scrolled.
788
789         Finally, the Emerson regression 3869718 (error involving computing the rightmost/lowest position of overflow:auto
790         regions and web pages) has been fixed.
791         
792         Reviewed by mjs
793
794         * khtml/rendering/bidi.cpp:
795         (khtml::RenderBlock::computeHorizontalPositionsForLine):
796         (khtml::RenderBlock::checkLinesForOverflow):
797         * khtml/rendering/render_block.cpp:
798         (khtml:::RenderFlow):
799         (khtml::RenderBlock::overflowHeight):
800         (khtml::RenderBlock::overflowWidth):
801         (khtml::RenderBlock::overflowLeft):
802         (khtml::RenderBlock::overflowTop):
803         (khtml::RenderBlock::overflowRect):
804         (khtml::RenderBlock::layoutBlock):
805         (khtml::RenderBlock::layoutBlockChildren):
806         (khtml::RenderBlock::paint):
807         (khtml::RenderBlock::floatRect):
808         (khtml::RenderBlock::lowestPosition):
809         (khtml::RenderBlock::rightmostPosition):
810         (khtml::RenderBlock::leftmostPosition):
811         (khtml::RenderBlock::nodeAtPoint):
812         * khtml/rendering/render_block.h:
813         * khtml/rendering/render_box.h:
814         (khtml::RenderBox::borderBox):
815         (khtml::RenderBox::borderTopExtra):
816         (khtml::RenderBox::borderBottomExtra):
817         * khtml/rendering/render_layer.cpp:
818         (RenderLayer::paintScrollbars):
819         (mustExamineRenderer):
820         (RenderLayer::intersectsDamageRect):
821         (RenderLayer::containsPoint):
822         * khtml/rendering/render_line.cpp:
823         (khtml::InlineFlowBox::placeBoxesHorizontally):
824         (khtml::InlineFlowBox::verticallyAlignBoxes):
825         * khtml/rendering/render_line.h:
826         (khtml::InlineBox::leftOverflow):
827         (khtml::InlineBox::rightOverflow):
828         (khtml::InlineFlowBox::setVerticalOverflowPositions):
829         (khtml::RootInlineBox::RootInlineBox):
830         (khtml::RootInlineBox::leftOverflow):
831         (khtml::RootInlineBox::rightOverflow):
832         (khtml::RootInlineBox::setVerticalOverflowPositions):
833         (khtml::RootInlineBox::setHorizontalOverflowPositions):
834         * khtml/rendering/render_object.h:
835         (khtml::RenderObject::borderBox):
836         (khtml::RenderObject::overflowLeft):
837         (khtml::RenderObject::overflowTop):
838         (khtml::RenderObject::overflowRect):
839         (khtml::RenderObject::floatRect):
840         * khtml/rendering/render_table.cpp:
841         (RenderTable::layout):
842         (RenderTable::paint):
843         (RenderTable::paintBoxDecorations):
844         (RenderTable::calcMinMaxWidth):
845         * khtml/rendering/render_table.h:
846         (khtml::RenderTableCell::borderTopExtra):
847         (khtml::RenderTableCell::borderBottomExtra):
848         * kwq/KWQRect.h:
849         * kwq/KWQRect.mm:
850         (QRect::inflate):
851
852 2004-12-06  Maciej Stachowiak  <mjs@apple.com>
853
854         Reviewed by John.
855
856         - fixed <rdar://problem/3903797> scripts can cause other frames/windows to execute arbitrary script using javascript: URLs
857         
858         I changed all unprotected places that can navigate a different
859         window or frame from script to check for a javascript: URL, and if
860         found, to check for safety using cross-site-script rules. 
861
862         I considered a few other possible exploits and made no change:
863
864         - document.location is already protected because the document
865         object itself is protected
866
867         - frame.src, frame.location, iframe.src and targetted links are
868         all safe because setting the URL of a frame to a javascript: URL
869         executes the script in the context of the parent
870
871         * khtml/ecma/kjs_window.cpp:
872         (WindowFunc::tryCall):
873         (Location::put):
874         (LocationFunc::tryCall):
875
876 2004-12-06  Ken Kocienda  <kocienda@apple.com>
877
878         Reviewed by Maciej
879
880         Fix for this bug:
881         
882         <rdar://problem/3890955> 8A314: Forward delete sometimes fails to delete the selected quoted text
883
884         * khtml/editing/htmlediting.cpp:
885         (khtml::DeleteSelectionCommand::handleSpecialCaseBRDelete): Fixed bonehead coding mistake in the
886         check for one of the special cases being checked for in this function. The specific case 
887         intends to check for a selection that is only a <br> after a block ends (as in </div><br>). If it
888         sees such markup, it deletes only the <br> and bails. However, this code would run in *any*
889         case where a selection ended in a <br> after a block and would not delete any part of the
890         selection preceding the <br>. Bad. I have tightened the check to see that only a <br> is
891         selected.
892
893         Fixing the bug above was accomplished with an additional call to DOM::Position::downstream. This
894         new use of the function exposed this bug:
895         
896         <rdar://problem/3907666> Incorrectly coded loop in Position::downstream can lead to infinite loop
897
898         * khtml/xml/dom_position.cpp:
899         (DOM::Position::downstream): I am ashamed of my first cut at this. Rewrote the loop so it does 
900         not have this fatal flaw. It is a much better design as well.
901         
902         * layout-tests/editing/deleting/delete-3800834-fix-expected.txt: Changes made this test
903         have what I consider to be a better result. Going with it.
904
905 2004-12-06  Chris Blumenberg  <cblu@apple.com>
906
907         Fixed: <rdar://problem/3871718> REGRESSION (125-168): text marked bold with font that does not have bold variant copies as non-bold
908
909         Reviewed by hyatt.
910
911         * kwq/DOM.mm:
912         (-[DOMElement _font]): new SPI for AppKit
913         * kwq/DOMPrivate.h:
914
915 2004-12-06  Darin Adler  <darin@apple.com>
916
917         Reviewed by Maciej.
918
919         - fixed <rdar://problem/3906327> Select All of a large document is slow (>15 secs on my machine for attached specimen)
920
921         * kwq/KWQScrollView.mm: (QScrollView::updateContents): Intersect with visibleRect before calling through
922         to NSView to dirty; NSView could also be more efficient in this case (I filed 3906343).
923
924 2004-12-06  John Sullivan  <sullivan@apple.com>
925
926         Darin found what appears to be the real leak that we were falsely blaming
927         on the 'leaks' tool (3880245). I made the change, and ran layout tests and PLT to make
928         sure nothing barfed.
929
930         * khtml/css/cssparser.cpp:
931         (CSSParser::parseValue):
932         call clearProperties() instead of just setting numParsedProperties to 0
933         (CSSParser::parseDeclaration):
934         ditto
935         (CSSParser::createStyleDeclaration):
936         ditto
937
938 2004-12-06  Ken Kocienda  <kocienda@apple.com>
939
940         Reviewed by me
941         
942         New layout tests.
943
944         * layout-tests/editing/inserting/insert-div-001-expected.txt: Added.
945         * layout-tests/editing/inserting/insert-div-001.html: Added.
946         * layout-tests/editing/inserting/insert-div-002-expected.txt: Added.
947         * layout-tests/editing/inserting/insert-div-002.html: Added.
948         * layout-tests/editing/inserting/insert-div-003-expected.txt: Added.
949         * layout-tests/editing/inserting/insert-div-003.html: Added.
950         * layout-tests/editing/inserting/insert-div-004-expected.txt: Added.
951         * layout-tests/editing/inserting/insert-div-004.html: Added.
952         * layout-tests/editing/inserting/insert-div-005-expected.txt: Added.
953         * layout-tests/editing/inserting/insert-div-005.html: Added.
954         * layout-tests/editing/inserting/insert-div-006-expected.txt: Added.
955         * layout-tests/editing/inserting/insert-div-006.html: Added.
956         * layout-tests/editing/inserting/insert-div-007-expected.txt: Added.
957         * layout-tests/editing/inserting/insert-div-007.html: Added.
958         * layout-tests/editing/inserting/insert-div-008-expected.txt: Added.
959         * layout-tests/editing/inserting/insert-div-008.html: Added.
960         * layout-tests/editing/inserting/insert-div-009-expected.txt: Added.
961         * layout-tests/editing/inserting/insert-div-009.html: Added.
962
963 2004-12-06  Ken Kocienda  <kocienda@apple.com>
964
965         Reviewed by Harrison
966
967         Fix for this bug:
968         
969         <rdar://problem/3906948> REGRESSION (Mail): Insert paragraph code can make the insertion point "stick" in place.
970
971         * khtml/editing/htmlediting.cpp:
972         (khtml::InsertParagraphSeparatorCommand::doApply): Call insertBlockPlaceholderIfNeeded(), passing block
973         being added to this function. This ensures that the added block has a height.
974         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
975
976 2004-12-06  Ken Kocienda  <kocienda@apple.com>
977  
978         Reviewed by John
979         
980         * khtml/dom/dom_string.cpp:
981         (DOM::DOMString::substring): Expose method already on DOMStrimgImpl.
982         * khtml/dom/dom_string.h: Ditto.
983         * khtml/editing/htmlediting.cpp:
984         (khtml::CompositeEditCommand::rebalanceWhitespace): New helper to create and execute a
985         RebalanceWhitespaceCommand instance.
986         (khtml::DeleteSelectionCommand::doApply): Call rebalanceWhitespace() after running command.
987         (khtml::InsertLineBreakCommand::doApply): Ditto.
988         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
989         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
990         (khtml::InsertTextCommand::input): Ditto.
991         (khtml::RebalanceWhitespaceCommand::RebalanceWhitespaceCommand): New command.
992         (khtml::RebalanceWhitespaceCommand::~RebalanceWhitespaceCommand): Ditto.
993         (khtml::RebalanceWhitespaceCommand::doApply): Ditto.
994         (khtml::RebalanceWhitespaceCommand::doUnapply): Ditto.
995         (khtml::RebalanceWhitespaceCommand::preservesTypingStyle): Ditto.
996         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Ditto.
997         * khtml/editing/htmlediting.h: Ditto.
998         (khtml::RebalanceWhitespaceCommand::): Ditto.
999
1000 2004-12-05  Darin Adler  <darin@apple.com>
1001
1002         - fixed small problem in my check-in from yesterday
1003
1004         * kwq/KWQEvent.mm:
1005         (positionForEvent): Get location from event without raising exception if it's the wrong type.
1006         (clickCountForEvent): Same, for clickCount.
1007         (QMouseEvent::QMouseEvent): Use the new helper functions so this can be constructed even with
1008         the wrong type of NSEvent. Required for cases where a keyboard event causes a "click" and we need
1009         to synthesize a QMouseEvent for KHTML internal use, using the key down NSEvent.
1010
1011 2004-12-04  Darin Adler  <darin@apple.com>
1012
1013         Reviewed by John.
1014
1015         - fixed <rdar://problem/3878329> REGRESSION (169-170): colors are wrong for my.yahoo.com due to CSS background parsing changes
1016
1017         * khtml/css/cssparser.cpp: (CSSParser::parseBackgroundShorthand): Changed function so it doesn't rely on the position
1018         attribute being at the end of the array and then moved position attribute before color attribute so it takes precedence.
1019         Since "0" can be both the X coordinate of a position and a legal color (meaning black), we need to do position first.
1020
1021         - fixed <rdar://problem/3760869> click events for input type=button or type=checkbox don't have flags like shiftKey set
1022
1023         * khtml/rendering/render_form.h: Remove unused RenderFormElement fields.
1024         * khtml/rendering/render_form.cpp:
1025         (RenderFormElement::RenderFormElement): Take out code to set a bunch of unused fields.
1026         (RenderFormElement::slotClicked): Change to create the QMouseEvent from the actual mouse event rather than
1027         creating it with all the flags set to 0, using the new QMouseEvent constructor that does so.
1028
1029         * kwq/KWQEvent.h: Added constructor that takes no parameters which uses the current event from AppKit.
1030         Made the click count getter const and added an isDoubleClick that matches the logic used elsewhere.
1031         Added a fixState helper method so the constructors can save code.
1032         * kwq/KWQEvent.mm:
1033         (QMouseEvent::QMouseEvent): Factored out the state-fixing code that was in the two existing constructors
1034         and added a third constructor that uses the "current event" from AppKit (used above).
1035         (QMouseEvent::fixState): Compute state and click count based on event type.
1036
1037         - fixed first symptom of <rdar://problem/3830936> REGRESSION (125-165): crash due to null font family, hang at changeforamerica.com
1038
1039         * kwq/KWQFontFamily.mm: (KWQFontFamily::getNSFamily): Handle empty strings specially so we don't run into trouble when
1040         the family name is a null string. This prevents the crash, but there are still other problems that may have the same
1041         underlying cause in CSS.
1042
1043         - fixed <rdar://problem/3829808> Safari crashes when adding a DOM node that was removed from an XMLHTTP request result
1044
1045         * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::insertedIntoDocument):
1046         Added nil check before calling scheduleRelayout. This is new code so the nil-dereference is a recent regression.
1047
1048 2004-12-03  Chris Blumenberg  <cblu@apple.com>
1049
1050         New fixes for:
1051         <rdar://problem/3685766> WebDataSource is missing subresources when they use cached WebCore data
1052         <rdar://problem/3722434> REGRESSION?: Assertion failure trying to drag image in iframe (itapema.sc.gov.br)
1053         <rdar://problem/3903173> REGRESSION (172-TOT): assertion failure and crash in slotAllData logging into hotmail account
1054         <rdar://problem/3902749> REGRESSION (Tiger): missing image symbol does not appear
1055
1056         Reviewed by darin, rjw, kocienda.
1057
1058         * khtml/misc/loader.cpp:
1059         (CachedObject::~CachedObject):
1060         (CachedCSSStyleSheet::checkNotify):
1061         (Loader::servePendingRequests):
1062         (Loader::slotFinished):
1063         (Loader::slotReceivedResponse):
1064         (Cache::requestImage):
1065         (Cache::requestScript):
1066         * khtml/misc/loader.h:
1067         (khtml::CachedObject::CachedObject):
1068         (khtml::CachedObject::response):
1069         (khtml::CachedObject::allData):
1070         * kwq/KWQKJobClasses.h:
1071         * kwq/KWQKJobClasses.mm:
1072         (KIO::TransferJobPrivate::TransferJobPrivate):
1073         (KIO::TransferJobPrivate::~TransferJobPrivate):
1074         (KIO::TransferJob::TransferJob):
1075         (KIO::TransferJob::assembleResponseHeaders):
1076         (KIO::TransferJob::retrieveCharset):
1077         (KIO::TransferJob::emitResult):
1078         (KIO::TransferJob::emitReceivedResponse):
1079         * kwq/KWQLoader.h:
1080         * kwq/KWQLoader.mm:
1081         (KWQHeaderStringFromDictionary):
1082         (KWQCheckCacheObjectStatus):
1083         (KWQIsResponseURLEqualToURL):
1084         (KWQResponseURL):
1085         (KWQResponseMIMEType):
1086         (KWQCacheObjectExpiresTime):
1087         (khtml::CachedObject::setResponse):
1088         (khtml::CachedObject::setAllData):
1089         * kwq/KWQPixmap.h:
1090         * kwq/KWQPixmap.mm:
1091         (QPixmap::QPixmap):
1092         * kwq/KWQResourceLoader.mm:
1093         (-[KWQResourceLoader finishJobAndHandle:]):
1094         (-[KWQResourceLoader cancel]):
1095         (-[KWQResourceLoader reportError]):
1096         (-[KWQResourceLoader finishWithData:]):
1097         * kwq/KWQSignal.h:
1098         * kwq/KWQSignal.mm:
1099         (KWQSignal::call):
1100         * kwq/KWQSlot.h:
1101         * kwq/KWQSlot.mm:
1102         (KWQSlot::KWQSlot):
1103         (KWQSlot::call):
1104         * kwq/WebCoreBridge.h:
1105         * kwq/WebCoreResourceLoader.h:
1106
1107 2004-12-04  Darin Adler  <darin@apple.com>
1108
1109         Reviewed by John.
1110
1111         - fixed <rdar://problem/3876093> REGRESSION (166-167): Setting slider control's value from JavaScript has no effect (breaks RSS)
1112
1113         * khtml/rendering/render_form.cpp:
1114         (RenderSlider::updateFromElement): Call setValue to update the value of the DOM element rather than
1115         modifying the m_value data member directly. We don't use m_value at all for sliders now, and in fact
1116         the code relies on the fact that m_value is null. Setting m_value to a non-null value was causing the bug.
1117         (RenderSlider::slotSliderValueChanged): Ditto.
1118
1119 2004-12-03  John Sullivan  <sullivan@apple.com>
1120
1121         Reviewed by Ken.
1122         
1123         - fixed <rdar://problem/3889411> REGRESSION (125-172): repro crash in 
1124         khtml::BackgroundLayer::cullEmptyLayers
1125
1126         * khtml/rendering/render_style.cpp:
1127         (BackgroundLayer::cullEmptyLayers):
1128         added missing nil check
1129
1130 === Safari-173 ===
1131
1132 2004-12-03  Ken Kocienda  <kocienda@apple.com>
1133
1134         Reviewed by me
1135
1136         Roll out some recent changes by Chris that caused a performance regression.
1137         Fix is in hand, but it is a little risky this close to a submission. So,
1138         we have decided to roll back the change with the regression and roll in
1139         the new code after we submit.
1140
1141         * khtml/css/cssproperties.c:
1142         (hash_prop):
1143         (findProp):
1144         * khtml/css/cssvalues.c:
1145         (hash_val):
1146         (findValue):
1147         * khtml/misc/htmlattrs.c:
1148         (hash_attr):
1149         (findAttr):
1150         * khtml/misc/htmltags.c:
1151         (hash_tag):
1152         (findTag):
1153         * khtml/misc/loader.cpp:
1154         (CachedObject::~CachedObject):
1155         (CachedObject::setResponse):
1156         (CachedCSSStyleSheet::checkNotify):
1157         (Loader::servePendingRequests):
1158         (Loader::slotFinished):
1159         (Loader::slotReceivedResponse):
1160         (Cache::requestImage):
1161         (Cache::requestScript):
1162         * khtml/misc/loader.h:
1163         (khtml::CachedObject::CachedObject):
1164         (khtml::CachedObject::response):
1165         * kwq/KWQKJobClasses.h:
1166         * kwq/KWQKJobClasses.mm:
1167         (KIO::TransferJobPrivate::TransferJobPrivate):
1168         (KIO::TransferJobPrivate::~TransferJobPrivate):
1169         (KIO::TransferJob::TransferJob):
1170         (KIO::TransferJob::assembleResponseHeaders):
1171         (KIO::TransferJob::retrieveCharset):
1172         (KIO::TransferJob::emitResult):
1173         (KIO::TransferJob::emitReceivedResponse):
1174         * kwq/KWQLoader.h:
1175         * kwq/KWQLoader.mm:
1176         (KWQHeaderStringFromDictionary):
1177         (KWQCheckCacheObjectStatus):
1178         (KWQRetainResponse):
1179         (KWQReleaseResponse):
1180         (KWQIsResponseURLEqualToURL):
1181         (KWQResponseURL):
1182         (KWQResponseMIMEType):
1183         (KWQResponseTextEncodingName):
1184         (KWQResponseHeaderString):
1185         (KWQCacheObjectExpiresTime):
1186         (KWQLoader::KWQLoader):
1187         * kwq/KWQPixmap.h:
1188         * kwq/KWQPixmap.mm:
1189         (QPixmap::QPixmap):
1190         * kwq/KWQResourceLoader.mm:
1191         (-[KWQResourceLoader finishJobAndHandle]):
1192         (-[KWQResourceLoader cancel]):
1193         (-[KWQResourceLoader reportError]):
1194         (-[KWQResourceLoader finish]):
1195         * kwq/KWQSignal.h:
1196         * kwq/KWQSignal.mm:
1197         (KWQSignal::call):
1198         * kwq/KWQSlot.h:
1199         * kwq/KWQSlot.mm:
1200         (KWQSlot::KWQSlot):
1201         (KWQSlot::call):
1202         * kwq/WebCoreBridge.h:
1203         * kwq/WebCoreResourceLoader.h:
1204
1205 2004-12-03  John Sullivan  <sullivan@apple.com>
1206
1207         Reviewed by Chris.
1208         
1209         - fixed <rdar://problem/3903990> can't tab to all items on www.google.com any more (other pages too?)
1210
1211         * kwq/KWQKHTMLPart.mm:
1212         (KWQKHTMLPart::nextKeyViewInFrameHierarchy):
1213         when checking whether we moved the focus to another view, make sure we didn't "move" it to
1214         our documentView, because that's no move at all.
1215
1216 2004-12-03  Darin Adler  <darin@apple.com>
1217
1218         Reviewed by Vicki.
1219
1220         - fixed <rdar://problem/3901109> REGRESSION (171-172): repro crash in DOM::NodeImpl::setChanged at chick-fil-a.com
1221
1222         * khtml/css/css_valueimpl.cpp: (DOM::CSSMutableStyleDeclarationImpl::CSSMutableStyleDeclarationImpl):
1223         Added missing initialization for base class and node pointer.
1224
1225         - fixed a few places that could leave dangling node pointers
1226
1227         * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::~HTMLBodyElementImpl):
1228         Clear out the node pointer when the node is destroyed.
1229         * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::~HTMLElementImpl): Ditto.
1230
1231 2004-12-03  Chris Blumenberg  <cblu@apple.com>
1232
1233         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. 
1234         Fixed: <rdar://problem/3903173> REGRESSION (172-TOT): assertion failure and crash in slotAllData logging into hotmail account
1235
1236         Reviewed by rjw.
1237
1238         * khtml/misc/loader.cpp:
1239         (Loader::servePendingRequests): pass data param to slotFinished, removed allData signal
1240         (Loader::slotFinished): take data param
1241         * khtml/misc/loader.h:
1242         * kwq/KWQKJobClasses.h:
1243         * kwq/KWQKJobClasses.mm:
1244         (KIO::TransferJob::TransferJob): have m_result take a data param, removed m_allData
1245         (KIO::TransferJob::emitResult): take data param and pass it
1246         * kwq/KWQResourceLoader.mm:
1247         (-[KWQResourceLoader finishJobAndHandle:]): take data param and pass it
1248         (-[KWQResourceLoader cancel]): pass nil for data
1249         (-[KWQResourceLoader reportError]): ditto
1250         (-[KWQResourceLoader finishWithData:]): pass data
1251         * kwq/KWQSlot.mm:
1252         (KWQSlot::KWQSlot): pass data param to slotFinished
1253         (KWQSlot::call): added support for slotFinished_Loader, removed slotAllData
1254
1255 2004-12-03  Ken Kocienda  <kocienda@apple.com>
1256
1257         Reviewed by John
1258
1259         Did some clean up in the Position class as a result of trying to write some new layout
1260         tests and discovering a bug along the way.
1261
1262         I removed these three functions from the Position class:
1263         
1264         1. bool isFirstRenderedPositionOnLine() const;
1265         2. bool isLastRenderedPositionOnLine() const;
1266         3. static bool renderersOnDifferentLine(RenderObject *r1, long o1, RenderObject *r2, long o2);
1267         4. bool inFirstEditableInRootEditableElement() const;
1268
1269         The first two have replacements in the VisiblePosition class, and some code has been
1270         moved to use these new variants. The third function was a helper used only by these
1271         first two function, and can be removed as well. The fourth function was not used by anyone.
1272
1273         * khtml/editing/htmlediting.cpp:
1274         (khtml::InsertTextCommand::input): Change over to use VisiblePosition isFirstVisiblePositionOnLine().
1275         * khtml/editing/visible_position.cpp:
1276         (khtml::visiblePositionsOnDifferentLines): Added an additional check for blocks to this function.
1277         Incorrect results were being returned when asking about positions at the starts of blocks.
1278         * khtml/xml/dom_position.cpp:
1279         (DOM::Position::previousCharacterPosition): Change over to use VisiblePosition isFirstVisiblePositionOnLine().
1280         (DOM::Position::nextCharacterPosition): Change over to use VisiblePosition isLastVisiblePositionOnLine().
1281         (DOM::Position::rendersInDifferentPosition): Removed use of #3 helper in a log message. We can live without it.
1282         * khtml/xml/dom_position.h: Update header for deletions.
1283
1284 2004-12-03  Ken Kocienda  <kocienda@apple.com>
1285
1286         Reviewed by John
1287
1288         Terminology change in execCommand command identifiers. Specifically, the name of 
1289         "InsertNewline" command has been changed to "InsertLineBreak". This matches the 
1290         terminology used by AppKit. It is also more accurate, since the insertion of a
1291         "br" element is what the command does. The inspiration for this change is so the 
1292         -insertNewline AppKit method can be mapped to insert a new "div" element in 
1293         a document and avoid ambiguity with what the javascript editing command does.
1294         
1295         * khtml/editing/jsediting.cpp
1296         * layout-tests/editing/deleting/delete-tab-004.html
1297         * layout-tests/editing/editing.js
1298         * layout-tests/editing/inserting/insert-3654864-fix.html
1299         * layout-tests/editing/inserting/insert-3659587-fix.html
1300         * layout-tests/editing/inserting/insert-3775316-fix.html
1301         * layout-tests/editing/inserting/insert-3800346-fix.html
1302         * layout-tests/editing/inserting/insert-br-001.html
1303         * layout-tests/editing/inserting/insert-br-002.html
1304         * layout-tests/editing/inserting/insert-br-003.html
1305         * layout-tests/editing/inserting/insert-br-004.html
1306         * layout-tests/editing/inserting/insert-br-005.html
1307         * layout-tests/editing/inserting/insert-br-006.html
1308         * layout-tests/editing/inserting/insert-br-007.html
1309         * layout-tests/editing/inserting/insert-br-008.html
1310         * layout-tests/editing/inserting/insert-tab-004.html
1311         * layout-tests/editing/inserting/insert-text-with-newlines.html
1312         * layout-tests/editing/pasteboard/paste-text-010.html
1313
1314 2004-12-02  Ken Kocienda  <kocienda@apple.com>
1315
1316         Reviewed by John
1317
1318         Fix for this bug:
1319         
1320         <rdar://problem/3786362> REGRESSION (Mail): pasted text loses one newline
1321
1322         * khtml/editing/htmlediting.cpp:
1323         (khtml::InsertLineBreakCommand::doApply): Added check for strict mode before adding an extra br element
1324         at the end of a block. This is only necessary in quirks mode. Also, lower-case "br" used to make element.
1325         (khtml::ReplaceSelectionCommand::doApply): If the replacement adds a br element as the last element
1326         in a block and the document is in quirks mode, add an additional br to make the one in the 
1327         replacement content show up. This turns out to be much the same logic as is done in InsertLineBreakCommand.
1328         * layout-tests/editing/inserting/insert-3786362-fix-expected.txt: Added.
1329         * layout-tests/editing/inserting/insert-3786362-fix.html: Added.
1330
1331 2004-12-02  Richard Williamson   <rjw@apple.com>
1332
1333         Fixed <rdar://problem/3841332> REGRESSION (125.9-167u): repro crash in -[KWQPageState invalidate] involving .Mac images
1334
1335         Ensure that the document is cleared when leaving a non-HTML page.  This ensures that
1336         the b/f cache won't incorrectly trash the previous state when restoring.
1337
1338         Reviewed by John.
1339
1340         * kwq/WebCoreBridge.h:
1341         * kwq/WebCoreBridge.mm:
1342         (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
1343         (-[WebCoreBridge canCachePage]):
1344         (-[WebCoreBridge clear]):
1345
1346 2004-12-02  Ken Kocienda  <kocienda@apple.com>
1347
1348         Reviewed by Richard
1349
1350         Fix for this bug:
1351         
1352         <rdar://problem/3857775> 8A293: Mail.app crashes converting copy-pasted text into plain text
1353
1354         * khtml/xml/dom2_rangeimpl.cpp:
1355         (DOM::RangeImpl::commonAncestorContainer): Return the document element if no common ancestor container
1356         was found. This can happen in cases where the DOM was built from malformed markup (as in the case
1357         of this bug where there is content after the body tag). Did a little code clean up as well.
1358         (DOM::RangeImpl::compareBoundaryPoints): Made code more robust by adding some null checks.
1359
1360 2004-12-02  Ken Kocienda  <kocienda@apple.com>
1361
1362         Reviewed by Chris
1363
1364         Fix for this bug:
1365         
1366         <rdar://problem/3668157> REGRESSION (Mail): shift-click deselects when selection was created right-to-left
1367
1368         * khtml/khtml_part.cpp:
1369         (KHTMLPart::handleMousePressEventSingleClick): Use RangeImpl::compareBoundaryPoints
1370         to figure out which end of the selection to extend.
1371
1372 2004-12-02  David Harrison  <harrison@apple.com>
1373
1374         Reviewed by Ken Kocienda.
1375
1376                 <rdar://problem/3834917> REGRESSION (Mail): double-clicking blank line selects end of previous line
1377                 Fixed originally reported bug plus the case of double-clicking whitespace at the beginning of a line, which has a similar result.
1378
1379         * khtml/editing/visible_text.cpp:
1380         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
1381         (khtml::SimplifiedBackwardsTextIterator::handleTextNode):
1382         (khtml::SimplifiedBackwardsTextIterator::handleReplacedElement):
1383         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode):
1384         (khtml::SimplifiedBackwardsTextIterator::emitCharacter):
1385         Distinguish BR from whitespace.
1386         * khtml/editing/visible_text.h:
1387         Distinguish BR from whitespace.
1388         * khtml/editing/visible_units.cpp:
1389         (khtml::previousWordBoundary):
1390         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. 
1391
1392 2004-12-02  Ken Kocienda  <kocienda@apple.com>
1393
1394         Reviewed by John
1395
1396         Fix for this bug:
1397         
1398         <rdar://problem/3900996> Crash dragging past end of contentEditable DIV, at DOM::RangeImpl::pastEndNode() const + 24
1399
1400         * khtml/xml/dom_position.cpp:
1401         (DOM::Position::equivalentRangeCompliantPosition): Fixed this function so that it constrains the offset
1402         of the position to be >= 0 and <= number of kids of its node. Not doing this constraining led to a DOM
1403         exception trying to use a Position returned from this function to set the boundary point of a Range (which
1404         eventually led to the crash). Since this crash happened, it seems like this function was failing in its
1405         contract to return a range-compliant position, hence the need for this fix.
1406
1407 2004-12-01  Ken Kocienda  <kocienda@apple.com>
1408
1409         Reviewed by me
1410
1411         Moving code only.
1412
1413         * khtml/editing/htmlediting.cpp: Move ReplaceSelectionCommand into alphabetical order with
1414         regard to other editing commands. The class had a name change ages ago, and it was never
1415         moved.
1416         * khtml/editing/htmlediting.h: Ditto.
1417
1418 2004-12-01  Ken Kocienda  <kocienda@apple.com>
1419
1420         Reviewed by Hyatt
1421         
1422         Some improvements for paste, including some new code to annotate
1423         whitespace when writing to the pasteboard to ensure that the meaning
1424         of the markup on the pasteboard is unambiguous.
1425         
1426         There is also new code for reading this annotated markup from the pasteboard,
1427         removing the nodes that were added only to prevent ambiguity.
1428
1429         * WebCore.pbproj/project.pbxproj: Added html_interchange.h and html_interchange.cpp files.
1430         The header should have been added earlier, but I did not do so.
1431         * khtml/editing/html_interchange.cpp: Added.
1432         (convertHTMLTextToInterchangeFormat):
1433         * khtml/editing/html_interchange.h: Added some new constants for use with whitespace annotations.
1434         * khtml/editing/htmlediting.cpp:
1435         (khtml::ReplacementFragment::ReplacementFragment): Now looks for and removes annotations added for whitespace.
1436         Also fixed a bug in the code that counts blocks in a fragment.
1437         (khtml::ReplacementFragment::isInterchangeConvertedSpaceSpan): New helper. Recognizes annotation spans.
1438         (khtml::ReplacementFragment::insertNodeBefore): New helper.
1439         (khtml::ReplaceSelectionCommand::doApply): Fixed a bug in the code that sets the start position
1440         for the replacement after deleting. This was causing a bug when pasting at the end of a block.
1441         * khtml/editing/htmlediting.h: Add some new declarations.
1442         * khtml/xml/dom2_rangeimpl.cpp:
1443         (DOM::RangeImpl::toHTML): Calls to startMarkup now pass true for the new annotate flag.
1444         * khtml/xml/dom_nodeimpl.cpp:
1445         (NodeImpl::stringValueForRange): New helper.
1446         (NodeImpl::renderedText): New helper to return only the rendered text in a node.
1447         (NodeImpl::startMarkup): Now takes an additional flag to control whether interchange annotations
1448         should be added. Called by the paste code.
1449         * khtml/xml/dom_nodeimpl.h: Added and modified function declarations.
1450
1451         New test to check the khtml::ReplaceSelectionCommand::doApply fix.
1452         * layout-tests/editing/pasteboard/paste-text-010-expected.txt: Added.
1453         * layout-tests/editing/pasteboard/paste-text-010.html: Added.
1454
1455 2004-11-30  Chris Blumenberg  <cblu@apple.com>
1456
1457         * ChangeLog: removed conflict marker
1458
1459 2004-11-30  Chris Blumenberg  <cblu@apple.com>
1460
1461         Fixed:
1462         <rdar://problem/3685766> WebDataSource is missing subresources when they use cached WebCore data
1463         <rdar://problem/3722434> REGRESSION?: Assertion failure trying to drag image in iframe (itapema.sc.gov.br)
1464
1465         Reviewed by darin.
1466
1467         * khtml/misc/loader.cpp:
1468         (CachedObject::~CachedObject): release m_allData
1469         (CachedObject::setAllData): new
1470         (Loader::servePendingRequests): connect slotAllData
1471         (Loader::slotAllData): new
1472         (Cache::requestImage): tweak
1473         * khtml/misc/loader.h:
1474         (khtml::CachedObject::CachedObject): set allData to 0
1475         (khtml::CachedObject::allData): new
1476         * kwq/KWQKJobClasses.h:
1477         * kwq/KWQKJobClasses.mm:
1478         (KIO::TransferJob::TransferJob): set m_allData
1479         (KIO::TransferJob::emitAllData): new
1480         * kwq/KWQLoader.mm:
1481         (KWQCheckCacheObjectStatus): pass WebKit the data instead of the length of the resource
1482         * kwq/KWQResourceLoader.mm:
1483         (-[KWQResourceLoader finishWithData:]): renamed to pass all data for the resource
1484         * kwq/KWQSlot.mm:
1485         (KWQSlot::KWQSlot): support for slotAllData
1486         (KWQSlot::call):
1487         * kwq/WebCoreBridge.h:
1488         * kwq/WebCoreResourceLoader.h:
1489
1490 2004-11-30  Maciej Stachowiak  <mjs@apple.com>
1491
1492         Reviewed by John.
1493
1494 2004-11-30  Maciej Stachowiak  <mjs@apple.com>
1495
1496         Reviewed by John.
1497
1498         <rdar://problem/3805311> REGRESSION (159-163): onload in dynamically written document not called (causes blank search page at Japanese EPP site, many others)
1499
1500         * khtml/khtml_part.cpp:
1501         (KHTMLPart::begin): call setParsing on document here after opening
1502         - from now on we'll only set parsing to true for a document open
1503         caused by page loading, not a programmatic one.
1504         * khtml/xml/dom_docimpl.cpp:
1505         (DocumentImpl::open): don't setParsing to true here any more.
1506
1507 2004-11-30  Maciej Stachowiak  <mjs@apple.com>
1508
1509         Reviewed by John.
1510
1511         - fix recent regression from collection perf fixes.
1512         
1513         * khtml/html/html_miscimpl.cpp:
1514         (HTMLFormCollectionImpl::updateNameCache): Look up the name
1515         attribute in the name cache, not the id cache (d'oh!)
1516
1517 2004-11-30  Darin Adler  <darin@apple.com>
1518
1519         Reviewed by Ken.
1520
1521         - rolled in a KDE fix for a problem that may underlie a number of crashes
1522
1523         * khtml/xml/dom2_rangeimpl.cpp: (RangeImpl::compareBoundaryPoints): Rolled in a change from
1524         the KDE guys to fix a subtle problem. Code said "n = n =".
1525
1526         - rolled in a KDE fix for a containingBlock crash
1527
1528         * khtml/rendering/render_object.cpp: Roll in a change from KDE that adds frameset to the list of
1529         elements that can not be a containingBlock. They said this fixes a crash, although I did not look
1530         into that further.
1531
1532         - fixed <rdar://problem/3884660> 8A305: Repro crash in QScrollBar::setValue (affects Safari RSS)
1533
1534         * kwq/KWQButton.mm:
1535         (-[KWQButton initWithQButton:]): Set up target and action here instead of in caller.
1536         (-[KWQButton detachQButton]): Added.
1537         (-[KWQButton sendConsumedMouseUpIfNeeded]): Check button for nil instead of checking target.
1538         (-[KWQButton mouseDown:]): Add calls to QWidget::beforeMouseDown/afterMouseDown.
1539         (-[KWQButton widget]): Added.
1540         (-[KWQButton becomeFirstResponder]): Added check to handle when button is 0.
1541         (-[KWQButton resignFirstResponder]): Ditto.
1542         (-[KWQButton canBecomeKeyView]): Ditto.
1543         (QButton::QButton): Remove target and action setup; handled in KWQButton now.
1544         (QButton::~QButton): Call detachQButton instead of setTarget:nil.
1545
1546         * kwq/KWQComboBox.mm:
1547         (QComboBox::~QComboBox): Call detachQComboBox.
1548         (-[KWQPopUpButtonCell detachQComboBox]): Added.
1549         (-[KWQPopUpButtonCell trackMouse:inRect:ofView:untilMouseUp:]): Handle case where box is 0.
1550         (-[KWQPopUpButtonCell setHighlighted:]): Ditto.
1551         (-[KWQPopUpButton action:]): Ditto.
1552         (-[KWQPopUpButton widget]): Tweaked.
1553         (-[KWQPopUpButton mouseDown:]): Added. Calls QWidget::beforeMouseDown/afterMouseDown.
1554         (-[KWQPopUpButton becomeFirstResponder]): Handle case where widget is 0.
1555         (-[KWQPopUpButton resignFirstResponder]): Ditto.
1556         (-[KWQPopUpButton canBecomeKeyView]): Ditto.
1557
1558         * kwq/KWQLineEdit.mm: (QLineEdit::~QLineEdit): Updated to use new detachQLineEdit name.
1559
1560         * kwq/KWQListBox.mm:
1561         (-[KWQTableView mouseDown:]): Added. Calls QWidget::beforeMouseDown/afterMouseDown.
1562
1563         * kwq/KWQScrollBar.h: Removed m_scroller field.
1564         * kwq/KWQScrollBar.mm:
1565         (-[KWQScrollBar initWithQScrollBar:]): Rearranged a little bit.
1566         (-[KWQScrollBar detachQScrollBar]): Added.
1567         (-[KWQScrollBar widget]): Added.
1568         (-[KWQScrollBar mouseDown:]): Added.  Calls QWidget::beforeMouseDown and afterMouseDown.
1569         (QScrollBar::QScrollBar): Changed to no longer set m_scroller.
1570         (QScrollBar::~QScrollBar): Changed to call detachQScrollBar. No longer calls removeFromSuperview.
1571         (QScrollBar::setValue): Chagned to use getView instad of m_scrollBar.
1572         (QScrollBar::setKnobProportion): Ditto.
1573         (QScrollBar::scrollbarHit): Ditto.
1574
1575         * kwq/KWQScrollView.mm:
1576         (QScrollView::addChild): Changed to call QWidget to add to superview to accomodate the
1577         hack where we don't remove right away when doing mouse tracking.
1578         (QScrollView::removeChild): Changed to call QWidget to remove from superview to accomodate
1579         the hack where we don't add right away when doing mouse tracking.
1580
1581         * kwq/KWQSlider.h: Added destructor.
1582         * kwq/KWQSlider.mm:
1583         (-[KWQSlider initWithQSlider:]): Tweaked a little.
1584         (-[KWQSlider detachQSlider]): Added.
1585         (-[KWQSlider mouseDown:]): Added call to QWidget::beforeMouseDown/afterMouseDown.
1586         (-[KWQSlider widget]): Added.
1587         (QSlider::~QSlider): Added. Calls detachQSlider.
1588
1589         * kwq/KWQTextArea.h: Added detachQTextEdit method.
1590         * kwq/KWQTextArea.mm:
1591         (-[KWQTextArea detachQTextEdit]): Added.
1592         (-[KWQTextArea textDidChange:]): Added check for widget of 0.
1593         (-[KWQTextArea becomeFirstResponder]): Ditto.
1594         (-[KWQTextArea nextKeyView]): Ditto.
1595         (-[KWQTextArea previousKeyView]): Ditto.
1596         (-[KWQTextArea drawRect:]): Ditto.
1597         (-[KWQTextAreaTextView insertTab:]): Ditto.
1598         (-[KWQTextAreaTextView insertBacktab:]): Ditto.
1599         (-[KWQTextAreaTextView shouldDrawInsertionPoint]): Ditto.
1600         (-[KWQTextAreaTextView selectedTextAttributes]): Ditto.
1601         (-[KWQTextAreaTextView mouseDown:]): Ditto.
1602         (-[KWQTextAreaTextView keyDown:]): Ditto.
1603         (-[KWQTextAreaTextView keyUp:]): Ditto.
1604
1605         * kwq/KWQTextEdit.h: Added ~QTextEdit.
1606         * kwq/KWQTextEdit.mm: (QTextEdit::~QTextEdit): Added. Calls detachQTextEdit.
1607
1608         * kwq/KWQTextField.h: Changed invalidate to detachQLineEdit.
1609         * kwq/KWQTextField.mm: (-[KWQTextFieldController detachQLineEdit]): Changed.
1610
1611         * kwq/KWQWidget.h: Added addToSuperview/removeFromSuperview for use from QScrollView.
1612         Added beforeMouseDown and afterMouseDown for use in widget implementations.
1613         Removed unused hasMouseTracking function.
1614         * kwq/KWQWidget.mm:
1615         (QWidget::QWidget): Initialize two new fields.
1616         (QWidget::~QWidget): Added code to remove view when widget is destroyed.
1617         (QWidget::getOuterView): Remove unneeded exception blocking since we're just caling superview.
1618         (QWidget::addToSuperview): Added.
1619         (QWidget::removeFromSuperview): Added.
1620         (QWidget::beforeMouseDown): Added.
1621         (QWidget::afterMouseDown): Added.
1622
1623         * khtml/rendering/render_layer.cpp:
1624         (RenderLayer::setHasHorizontalScrollbar): Remove parent parameter; let addChild call addSubview:.
1625         (RenderLayer::setHasVerticalScrollbar): Ditto.
1626
1627 2004-11-30  Ken Kocienda  <kocienda@apple.com>
1628
1629         Reviewed by John
1630
1631         Fix for this bug:
1632         
1633         <rdar://problem/3863031> REGRESSION (Mail): caret continues flashing while mouse is down
1634
1635         * khtml/khtml_part.cpp:
1636         (KHTMLPart::timerEvent): Add a check for whether the mouse is down. Keep the caret drawn
1637         with no blink if it is.
1638
1639 2004-11-30  Ken Kocienda  <kocienda@apple.com>
1640
1641         Reviewed by John
1642
1643         Fix for this bug:
1644         
1645         <rdar://problem/3861602> cursor gets lost trying to backspace to delete a form control
1646
1647         * khtml/khtml_part.cpp:
1648         (KHTMLPart::setFocusNodeIfNeeded): This function would clear the selection if a <button>
1649         or <input type=image> was checked for focus since these elements are keyboard-focusable,
1650         but not mouse focusable. Also, this function did not work hard enough to set the focused
1651         node, and was content to clear it if the first element checked failed the test, rather
1652         than looking more at parents. This would have the effect of clearing, then resetting the
1653         focus on a DIV containing a button or image with content on either side of it in the
1654         process of arrowing over such content.
1655
1656 2004-11-30  Ken Kocienda  <kocienda@apple.com>
1657
1658         Reviewed by John
1659
1660         * khtml/editing/htmlediting.cpp:
1661         (khtml::ReplaceSelectionCommand::doApply): Fix smart replace, which I (knowingly) broke with yesterday's checkin.
1662         Also, call updateLayout() in one more place to prevent stale information being returned from caretMaxOffset().
1663         * khtml/khtml_part.cpp:
1664         (KHTMLPart::isCharacterSmartReplaceExempt): Make this virtual and always return true. This gets rid of an
1665         ugly APPLE_CHANGES block and use of KWQ(part) in ReplaceSelectionCommand.
1666         * khtml/khtml_part.h: To help out with the isCharacterSmartReplaceExempt cleanup, add declaration.
1667         * kwq/KWQKHTMLPart.h: To help out with the isCharacterSmartReplaceExempt cleanup, make 
1668         isCharacterSmartReplaceExempt virtual.
1669
1670 2004-11-30  Ken Kocienda  <kocienda@apple.com>
1671
1672         Reviewed by me
1673
1674         * khtml/editing/htmlediting.cpp:
1675         (khtml::ReplacementFragment::mergeEndNode): Fixed one-line coding mistake that created an endless loop.
1676         Seemed simple enough to land without review.
1677
1678 2004-11-29  Ken Kocienda  <kocienda@apple.com>
1679
1680         Reviewed by Chris
1681     
1682         Rewrite of paste code (specifically the ReplaceSelectionCommand class). Many more cases
1683         are handled correctly now, including selections that span multiple blocks, and cases
1684         where content on the pasteboard ends in newlines (or what appear to be newlines to a
1685         user, really block ends or BRs). I also made one small, but important change in the 
1686         copy code to annotate the markup written to the pasteboard to support these selections 
1687         ending in newlines.
1688
1689         New header that defines a couple of constants used in copying and pasting.
1690
1691         * ForwardingHeaders/editing/html_interchange.h: Added.
1692         * khtml/editing/html_interchange.h: Added.
1693         
1694         Rewrite of the ReplaceSelectionCommand. There are several new helper functions, as well
1695         as a new helper class, ReplacementFragment, which encapsulates information and functions
1696         pertaining to a document fragment that is being inserted into a document.
1697         
1698         * khtml/editing/htmlediting.cpp:
1699         (khtml::ReplacementFragment::ReplacementFragment):
1700         (khtml::ReplacementFragment::~ReplacementFragment):
1701         (khtml::ReplacementFragment::firstChild): Simple accessor.
1702         (khtml::ReplacementFragment::lastChild): Ditto.
1703         (khtml::ReplacementFragment::mergeStartNode): Looks at the nodes in a fragment and determines
1704         the starting node to use for merging into the block containing the start of the selection.
1705         (khtml::ReplacementFragment::mergeEndNode): Same as above, but for the end of the selection.
1706         (khtml::ReplacementFragment::pruneEmptyNodes): Simple helper.
1707         (khtml::ReplacementFragment::isInterchangeNewlineComment): Determines if a node is the
1708         special annotation comment added in by the copy code.
1709         (khtml::ReplacementFragment::removeNode): Simple helper.
1710         (khtml::isComment): Simple helper.
1711         (khtml::isProbablyBlock): Determines if a node is of a type that is usually rendered as a block.
1712         I would like to do better than this some day, but this check will hold us until I can do better.
1713         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand):
1714         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand):
1715         (khtml::ReplaceSelectionCommand::doApply):
1716         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Figures out the right ending selection.
1717         * khtml/editing/htmlediting.h: Declarations for the new ReplacementFragment class.
1718         (khtml::ReplacementFragment::root):
1719         (khtml::ReplacementFragment::type):
1720         (khtml::ReplacementFragment::isEmpty):
1721         (khtml::ReplacementFragment::isSingleTextNode):
1722         (khtml::ReplacementFragment::isTreeFragment):
1723         (khtml::ReplacementFragment::hasMoreThanOneBlock):
1724         (khtml::ReplacementFragment::hasLogicalNewlineAtEnd):
1725         
1726         This smaller set of changes markup generation to add the newline annotation described in the
1727         comment at the start of this entry.
1728         
1729         * khtml/xml/dom2_rangeimpl.cpp:
1730         (DOM::RangeImpl::addCommentToHTMLMarkup): Simple helper.
1731         (DOM::RangeImpl::toHTML): Added new EAnnotateForInterchange default argument to control whether
1732         comment annotations are added to the markup generated.
1733         * khtml/xml/dom2_rangeimpl.h: Add some new declarations.
1734         * kwq/WebCoreBridge.mm:
1735         (-[WebCoreBridge markupStringFromRange:nodes:]): Request that markup resulting from call to 
1736         DOM::RangeImpl::toHTML uses annotations when generating.
1737         
1738         New tests.        
1739
1740         * layout-tests/editing/pasteboard/paste-text-001-expected.txt: Added.
1741         * layout-tests/editing/pasteboard/paste-text-001.html: Added.
1742         * layout-tests/editing/pasteboard/paste-text-002-expected.txt: Added.
1743         * layout-tests/editing/pasteboard/paste-text-002.html: Added.
1744         * layout-tests/editing/pasteboard/paste-text-003-expected.txt: Added.
1745         * layout-tests/editing/pasteboard/paste-text-003.html: Added.
1746         * layout-tests/editing/pasteboard/paste-text-004-expected.txt: Added.
1747         * layout-tests/editing/pasteboard/paste-text-004.html: Added.
1748         * layout-tests/editing/pasteboard/paste-text-005-expected.txt: Added.
1749         * layout-tests/editing/pasteboard/paste-text-005.html: Added.
1750         * layout-tests/editing/pasteboard/paste-text-006-expected.txt: Added.
1751         * layout-tests/editing/pasteboard/paste-text-006.html: Added.
1752         * layout-tests/editing/pasteboard/paste-text-007-expected.txt: Added.
1753         * layout-tests/editing/pasteboard/paste-text-007.html: Added.
1754         * layout-tests/editing/pasteboard/paste-text-008-expected.txt: Added.
1755         * layout-tests/editing/pasteboard/paste-text-008.html: Added.
1756         * layout-tests/editing/pasteboard/paste-text-009-expected.txt: Added.
1757         * layout-tests/editing/pasteboard/paste-text-009.html: Added.
1758
1759 2004-11-29  Ken Kocienda  <kocienda@apple.com>
1760
1761         Reviewed by Harrison
1762
1763         Made two small changes that make it possible for comments to have DOM nodes made for them
1764         when pasting. This relies on some earlier work I did some days ago.
1765
1766         * khtml/xml/dom_nodeimpl.cpp:
1767         (NodeImpl::startMarkup): Get the string from the comment.
1768         * kwq/WebCoreBridge.mm:
1769         (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]): Did some very minor
1770         rearranging. Now passes a flag when creating a contextual fragment, requesting that comments
1771         be included in the DOM.
1772
1773 2004-11-29  Ken Kocienda  <kocienda@apple.com>
1774
1775         Reviewed by Harrison
1776
1777         Added some new helpers to the VisiblePosition class. I will begin to use these when I check in
1778         my improved paste code.
1779
1780         * khtml/editing/visible_position.cpp:
1781         (khtml::blockRelationship)
1782         (khtml::visiblePositionsInDifferentBlocks)
1783         (khtml::isFirstVisiblePositionInBlock)
1784         (khtml::isFirstVisiblePositionInNode)
1785         (khtml::isLastVisiblePositionInBlock)
1786         * khtml/editing/visible_position.h
1787
1788 2004-11-29  Ken Kocienda  <kocienda@apple.com>
1789
1790         Reviewed by Harrison
1791
1792         * khtml/xml/dom_position.cpp:
1793         (DOM::Position::downstream): Fix a bug in downstream that prevented a call with DoNotStayInBlock
1794         specified from obeying that directive. The old code would stop at an outer block boundary in
1795         the case where that block had a block as its first child. The correct behavior is to drill into
1796         that inner block (and continue on drilling down, if possible), to find the correct position.
1797
1798 2004-11-29  Ken Kocienda  <kocienda@apple.com>
1799
1800         Reviewed by Harrison
1801
1802         Small improvements to the node-display debugging helpers.
1803
1804         * khtml/xml/dom_nodeimpl.cpp:
1805         (NodeImpl::displayTree): Make the rootNode be this if there is no rootEditableElement.
1806         * khtml/xml/dom_nodeimpl.h: Make displayNode take a default argument of "" for its string.
1807
1808 2004-11-29  Ken Kocienda  <kocienda@apple.com>
1809
1810         Reviewed by Harrison
1811
1812         * khtml/editing/htmlediting.cpp:
1813         (khtml::DeleteSelectionCommand::handleGeneralDelete): The downstream position in this function 
1814         may need to be adjusted when deleting text off the front part of a text node. This fixes a problem 
1815         I discovered while improving the paste command, where the insertion poitn wound up in the wrong
1816         place after the delete. 
1817
1818 2004-11-29  Ken Kocienda  <kocienda@apple.com>
1819
1820         Reviewed by Harrison
1821
1822         Add a new helper function to insert a paragraph separator. Will be used in my
1823         upcoming paste improvments.
1824
1825         * khtml/editing/htmlediting.cpp: Added function
1826         (khtml::CompositeEditCommand::insertParagraphSeparator)
1827         * khtml/editing/htmlediting.h: Ditto.
1828
1829 2004-11-23  David Harrison  <harrison@apple.com>
1830
1831         Added various comments.
1832
1833         * khtml/editing/htmlediting.cpp:
1834         (khtml::StyleChange::init):
1835         (khtml::ApplyStyleCommand::doApply):
1836         (khtml::ApplyStyleCommand::applyBlockStyle):
1837         (khtml::ApplyStyleCommand::applyInlineStyle):
1838
1839 2004-11-23  David Hyatt  <hyatt@apple.com>
1840
1841         Hit testing in table cells with top/bottom space from vertical alignment didn't work.  I forgot about the
1842         super-secret yPos() lie that table cells do.  Use m_y instead of yPos().
1843
1844         * khtml/rendering/render_block.cpp:
1845         (khtml::RenderBlock::nodeAtPoint):
1846
1847 2004-11-22  David Hyatt  <hyatt@apple.com>
1848
1849         Make sure you can use document.createElement to make a <canvas> element.
1850
1851         * khtml/xml/dom_docimpl.cpp:
1852         (DocumentImpl::createHTMLElement):
1853
1854 2004-11-22  Maciej Stachowiak  <mjs@apple.com>
1855
1856         Reviewed by Dave.
1857
1858         <rdar://problem/3492044> performing JavaScript operations on form elements is slower than WinIE (HTMLFormCollection)
1859         <rdar://problem/3489679> selecting an item on the Apache bugzilla query page is very slow (HTMLFormCollection)
1860         <rdar://problem/3477810> checking 80 check boxes with JavaScript is 10x slower than in IE (HTMLFormCollection)
1861         <rdar://problem/3760962> JavaScript that toggles checkboxes is slow (HTMLCollection,HTMLFormCollection)
1862         
1863         * khtml/ecma/kjs_html.cpp:
1864         (KJS::HTMLDocument::tryGet):
1865         * khtml/html/html_formimpl.cpp:
1866         (DOM::HTMLFormElementImpl::HTMLFormElementImpl):
1867         (DOM::HTMLFormElementImpl::~HTMLFormElementImpl):
1868         * khtml/html/html_formimpl.h:
1869         * khtml/html/html_miscimpl.cpp:
1870         (HTMLCollectionImpl::HTMLCollectionImpl):
1871         (HTMLCollectionImpl::~HTMLCollectionImpl):
1872         (HTMLCollectionImpl::CollectionInfo::CollectionInfo):
1873         (HTMLCollectionImpl::CollectionInfo::reset):
1874         (HTMLCollectionImpl::resetCollectionInfo):
1875         (HTMLCollectionImpl::checkForNameMatch):
1876         (appendToVector):
1877         (HTMLCollectionImpl::updateNameCache):
1878         (HTMLCollectionImpl::namedItems):
1879         (HTMLFormCollectionImpl::HTMLFormCollectionImpl):
1880         (HTMLFormCollectionImpl::~HTMLFormCollectionImpl):
1881         (HTMLFormCollectionImpl::item):
1882         (HTMLFormCollectionImpl::updateNameCache):
1883         * khtml/html/html_miscimpl.h:
1884
1885 2004-11-22  David Hyatt  <hyatt@apple.com>
1886
1887         Improve the WebCore cache so that the maximum cacheable object size is scaled based off the total cache
1888         size.
1889         
1890         Reviewed by mjs
1891
1892         * khtml/misc/loader.cpp:
1893         (CachedObject::finish):
1894         (Cache::flush):
1895         (Cache::setSize):
1896         * khtml/misc/loader.h:
1897         (khtml::Cache::maxCacheableObjectSize):
1898
1899 2004-11-22  David Hyatt  <hyatt@apple.com>
1900
1901         Fix for 3673381, huge directory listing so slow it seems like a hang.  Rework painting and hit testing so that
1902         it crawls the line box tree instead of the render tree.  This allows more precise intersection/containment testing
1903         that lets us short circuit earlier when painting and hit testing.
1904         
1905         Reviewed by mjs
1906
1907         * khtml/khtml_part.cpp:
1908         (KHTMLPart::isPointInsideSelection):
1909         * khtml/rendering/render_block.cpp:
1910         (khtml::RenderBlock::paint):
1911         (khtml::RenderBlock::paintChildren):
1912         (khtml::RenderBlock::paintObject):
1913         (khtml::RenderBlock::paintFloats):
1914         (khtml::RenderBlock::nodeAtPoint):
1915         * khtml/rendering/render_block.h:
1916         * khtml/rendering/render_box.cpp:
1917         (RenderBox::nodeAtPoint):
1918         * khtml/rendering/render_box.h:
1919         * khtml/rendering/render_br.h:
1920         * khtml/rendering/render_canvas.cpp:
1921         (RenderCanvas::paint):
1922         * khtml/rendering/render_flow.cpp:
1923         (RenderFlow::paintLines):
1924         (RenderFlow::hitTestLines):
1925         (RenderFlow::caretRect):
1926         (RenderFlow::addFocusRingRects):
1927         (RenderFlow::paintFocusRing):
1928         (RenderFlow::paintOutlines):
1929         (RenderFlow::paintOutlineForLine):
1930         * khtml/rendering/render_flow.h:
1931         * khtml/rendering/render_frames.cpp:
1932         (RenderFrameSet::nodeAtPoint):
1933         * khtml/rendering/render_frames.h:
1934         * khtml/rendering/render_image.cpp:
1935         (RenderImage::nodeAtPoint):
1936         * khtml/rendering/render_image.h:
1937         * khtml/rendering/render_inline.cpp:
1938         (RenderInline::paint):
1939         (RenderInline::nodeAtPoint):
1940         * khtml/rendering/render_inline.h:
1941         * khtml/rendering/render_layer.cpp:
1942         (RenderLayer::paintLayer):
1943         (RenderLayer::hitTest):
1944         (RenderLayer::hitTestLayer):
1945         * khtml/rendering/render_layer.h:
1946         * khtml/rendering/render_line.cpp:
1947         (khtml::InlineBox::paint):
1948         (khtml::InlineBox::nodeAtPoint):
1949         (khtml::InlineFlowBox::flowObject):
1950         (khtml::InlineFlowBox::nodeAtPoint):
1951         (khtml::InlineFlowBox::paint):
1952         (khtml::InlineFlowBox::paintBackgrounds):
1953         (khtml::InlineFlowBox::paintBackground):
1954         (khtml::InlineFlowBox::paintBackgroundAndBorder):
1955         (khtml::InlineFlowBox::paintDecorations):
1956         (khtml::EllipsisBox::paint):
1957         (khtml::EllipsisBox::nodeAtPoint):
1958         (khtml::RootInlineBox::paintEllipsisBox):
1959         (khtml::RootInlineBox::paint):
1960         (khtml::RootInlineBox::nodeAtPoint):
1961         * khtml/rendering/render_line.h:
1962         (khtml::InlineRunBox::paintBackgroundAndBorder):
1963         * khtml/rendering/render_object.cpp:
1964         (RenderObject::hitTest):
1965         (RenderObject::setInnerNode):
1966         (RenderObject::nodeAtPoint):
1967         * khtml/rendering/render_object.h:
1968         (khtml::RenderObject::PaintInfo::PaintInfo):
1969         (khtml::RenderObject::PaintInfo::~PaintInfo):
1970         (khtml::RenderObject::paintingRootForChildren):
1971         (khtml::RenderObject::shouldPaintWithinRoot):
1972         * khtml/rendering/render_table.cpp:
1973         (RenderTable::layout):
1974         (RenderTable::paint):
1975         * khtml/rendering/render_text.cpp:
1976         (simpleDifferenceBetweenColors):
1977         (correctedTextColor):
1978         (InlineTextBox::nodeAtPoint):
1979         (InlineTextBox::paint):
1980         (InlineTextBox::selectionStartEnd):
1981         (InlineTextBox::paintSelection):
1982         (InlineTextBox::paintMarkedTextBackground):
1983         (InlineTextBox::paintDecoration):
1984         (RenderText::posOfChar):
1985         * khtml/rendering/render_text.h:
1986         (khtml::RenderText::paint):
1987         (khtml::RenderText::layout):
1988         (khtml::RenderText::nodeAtPoint):
1989         * khtml/xml/dom2_eventsimpl.cpp:
1990         (MouseEventImpl::computeLayerPos):
1991         * khtml/xml/dom_docimpl.cpp:
1992         (DocumentImpl::prepareMouseEvent):
1993         * kwq/KWQAccObject.mm:
1994         (-[KWQAccObject accessibilityHitTest:]):
1995         * kwq/KWQKHTMLPart.mm:
1996         (KWQKHTMLPart::scrollOverflowWithScrollWheelEvent):
1997         (KWQKHTMLPart::eventMayStartDrag):
1998         (KWQKHTMLPart::khtmlMouseMoveEvent):
1999         * kwq/WebCoreBridge.mm:
2000         (-[WebCoreBridge elementAtPoint:]):
2001         (-[WebCoreBridge _positionForPoint:]):
2002
2003 2004-11-22  Maciej Stachowiak  <mjs@apple.com>
2004
2005         Reviewed by Dave.
2006
2007         <rdar://problem/3890961> selecting an item on the Apache bugzilla query page can be sped up 10% (HTMLFormCollection)
2008         <rdar://problem/3890958> JavaScript that toggles checkboxes can be improved 73% (HTMLCollection,HTMLFormCollection)
2009
2010         This avoids the O(N^2) penalty for named item traversal for form collections.
2011
2012         It also combines the item traversal logic for all non-form
2013         collection operations into a single traverseNextItem
2014         function. This avoids having 5 copies of the big switch statement
2015         for this.
2016
2017         Also fixed a bug that prevented the last form element from being removed properly.
2018         
2019         * khtml/html/html_formimpl.cpp:
2020         (DOM::removeFromVector):
2021         * khtml/dom/html_misc.cpp:
2022         (HTMLCollection::namedItems):
2023         * khtml/dom/html_misc.h:
2024         * khtml/ecma/kjs_html.cpp:
2025         (KJS::HTMLCollection::getNamedItems):
2026         * khtml/html/html_miscimpl.cpp:
2027         (HTMLCollectionImpl::traverseNextItem):
2028         (HTMLCollectionImpl::calcLength):
2029         (HTMLCollectionImpl::length):
2030         (HTMLCollectionImpl::item):
2031         (HTMLCollectionImpl::nextItem):
2032         (HTMLCollectionImpl::checkForNameMatch):
2033         (HTMLCollectionImpl::namedItem):
2034         (HTMLCollectionImpl::namedItems):
2035         (HTMLCollectionImpl::nextNamedItem):
2036         (HTMLFormCollectionImpl::calcLength):
2037         (HTMLFormCollectionImpl::namedItem):
2038         (HTMLFormCollectionImpl::nextNamedItem):
2039         (HTMLFormCollectionImpl::namedItems):
2040         * khtml/html/html_miscimpl.h:
2041
2042 2004-11-22  Ken Kocienda  <kocienda@apple.com>
2043
2044         Reviewed by Harrison
2045
2046         Change around the way we block the Javascript "Paste" command identifier from
2047         being available. Formerly, this was done with an ifdef we never compiled in.
2048         Now, this is done with a couple of cheap runtime checks. The advantage is that
2049         we can now compile this command into development builds, and still yet switch
2050         on the command in deployment builds through the use of WebCore SPI so we can
2051         write and run layout tests with all of our builds.
2052
2053         * khtml/editing/jsediting.cpp:
2054         (DOM::JSEditor::queryCommandSupported): Checks state of paste command in case
2055         command being queried is the paste command. 
2056         (DOM::JSEditor::setSupportsPasteCommand): New SPI to turn on paste command.
2057         * khtml/editing/jsediting.h: Ditto.
2058         * khtml/khtml_part.cpp:
2059         (KHTMLPart::pasteFromPasteboard): Added.
2060         (KHTMLPart::canPaste): Added.
2061         * kwq/KWQKHTMLPart.mm:
2062         (KHTMLPart::canPaste): Added.
2063         * kwq/KWQRenderTreeDebug.cpp:
2064         (externalRepresentation): Turn on paste command.
2065         * kwq/WebCoreBridge.h: Add canPaste call so WebKit can fill in the answer.
2066
2067 2004-11-21  Maciej Stachowiak  <mjs@apple.com>
2068
2069         Reviewed by Richard.
2070
2071         <rdar://problem/3889655> HTMLCollectionImpl should use traverseNextNode to improve speed and save recursion
2072         
2073         * khtml/html/html_miscimpl.cpp:
2074         (HTMLCollectionImpl::calcLength):
2075         (HTMLCollectionImpl::getItem):
2076         (HTMLCollectionImpl::item):
2077         (HTMLCollectionImpl::nextItem):
2078         (HTMLCollectionImpl::getNamedItem):
2079         (HTMLCollectionImpl::namedItem):
2080         (HTMLCollectionImpl::nextNamedItemInternal):
2081         (HTMLFormCollectionImpl::nextNamedItemInternal):
2082
2083 2004-11-19  Maciej Stachowiak  <mjs@apple.com>
2084
2085         Reviewed by Darin.
2086
2087         <rdar://problem/3482935> JavaScript so slow it seems like a hang (hrweb.apple.com) (HTMLCollection?)
2088         <rdar://problem/3759149> PeopleSoft page in Safari twice as slow as Mozilla engine (HTMLFormCollection)
2089         <rdar://problem/3888368> selecting an item on the Apache bugzilla query page can be improved 95% (HTMLFormCollection)
2090
2091         Many optimizations to HTMLFormCollection. Iterating it should not
2092         be N^2 any more, though finding items by name could still be.
2093         
2094         * khtml/html/html_formimpl.cpp:
2095         (DOM::HTMLFormElementImpl::~HTMLFormElementImpl):
2096         (DOM::HTMLFormElementImpl::length):
2097         (DOM::HTMLFormElementImpl::submitClick):
2098         (DOM::HTMLFormElementImpl::formData):
2099         (DOM::HTMLFormElementImpl::submit):
2100         (DOM::HTMLFormElementImpl::reset):
2101         (DOM::HTMLFormElementImpl::radioClicked):
2102         (DOM::appendToVector):
2103         (DOM::removeFromVector):
2104         (DOM::HTMLFormElementImpl::registerFormElement):
2105         (DOM::HTMLFormElementImpl::removeFormElement):
2106         (DOM::HTMLFormElementImpl::makeFormElementDormant):
2107         (DOM::HTMLFormElementImpl::registerImgElement):
2108         (DOM::HTMLFormElementImpl::removeImgElement):
2109         * khtml/html/html_formimpl.h:
2110         * khtml/html/html_miscimpl.cpp:
2111         (HTMLFormCollectionImpl::FormCollectionInfo::FormCollectionInfo):
2112         (void::HTMLFormCollectionImpl::FormCollectionInfo::reset):
2113         (HTMLFormCollectionImpl::resetCollectionInfo):
2114         (HTMLFormCollectionImpl::calcLength):
2115         (HTMLFormCollectionImpl::item):
2116         (HTMLFormCollectionImpl::getNamedItem):
2117         (HTMLFormCollectionImpl::getNamedFormItem):
2118         (HTMLFormCollectionImpl::firstItem):
2119         (HTMLFormCollectionImpl::nextItem):
2120         * khtml/html/html_miscimpl.h:
2121         (DOM::HTMLFormCollectionImpl::~HTMLFormCollectionImpl):
2122         * khtml/xml/dom_elementimpl.cpp:
2123         (ElementImpl::setAttribute):
2124         (ElementImpl::setAttributeMap):
2125         * kwq/KWQPtrVector.h:
2126         (QPtrVector::findRef):
2127         * kwq/KWQVectorImpl.h:
2128         * kwq/KWQVectorImpl.mm:
2129         (KWQVectorImpl::findRef):
2130         * kwq/WebCoreBridge.mm:
2131         (-[WebCoreBridge elementWithName:inForm:]):
2132         (-[WebCoreBridge controlsInForm:]):
2133
2134 2004-11-19  David Harrison  <harrison@apple.com>
2135
2136         Reviewed by Ken and Darin.
2137
2138         <rdar://problem/3856215> Cannot remove bold from the beginning of a message
2139
2140         Problem is that KHTMLPart::computeAndSetTypingStyle always looked upstream
2141         for the existing style, but in this case (hitting cmd-B with caret at top of
2142         file) there is nothing upstream.  Changed this to use the VisiblePosition
2143         deepEquivalent instead.
2144         
2145         * khtml/khtml_part.cpp:
2146         (KHTMLPart::computeAndSetTypingStyle):
2147
2148 === Safari-172 ===
2149
2150 2004-11-19  Maciej Stachowiak  <mjs@apple.com>
2151
2152         Reviewed by Darin.
2153
2154         <rdar://problem/3864151> REGRESSION (125-167): Chrysler.com never stops loading
2155         
2156         * khtml/xml/dom_docimpl.cpp:
2157         (DocumentImpl::close): Don't fire the onload handler if there is a
2158         redirect pending. This is a very long-standing bug that was masked
2159         by our previously incorrect redirect logic. It used to be that an
2160         older redirect would always win. Recently we changed things so
2161         that a newer redirect would win, but a script that causes a
2162         redirect would stop parsing once complete (so if there are two
2163         redirects in the same script, the latter wins). However, we should
2164         have also prevented onload in this case. Testing with other
2165         browsers shows that onload handlers do not run at all when there
2166         is a pending redirect.
2167
2168 2004-11-19  Ken Kocienda  <kocienda@apple.com>
2169
2170         Reviewed by Harrison
2171
2172         Fix some object lifetime issues in these two commands. This fixes some crashes
2173         I am seeing in some new code I am working on, but have not yet reproduced otherwise.
2174
2175         * khtml/editing/htmlediting.cpp:
2176         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): No longer deref nodes
2177         in the ancestor list. They are not ref'ed when put on list. D'uh.
2178         (khtml::InsertParagraphSeparatorCommand::doApply): Ref all cloned nodes that are created by the command
2179         before putting them on the cloned nodes list. This are still deref'ed in the destructor.
2180         (khtml::InsertParagraphSeparatorInQuotedContentCommand::~InsertParagraphSeparatorInQuotedContentCommand): Ditto
2181         destructor comment.
2182         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto doApply comment.
2183
2184 2004-11-19  Ken Kocienda  <kocienda@apple.com>
2185
2186         Reviewed by Harrison
2187
2188         Fix for this bug:
2189         
2190         <rdar://problem/3655241> setTypingStyle: does not set the real typing style, and typingStyle does not return it
2191
2192         * khtml/khtml_part.cpp:
2193         (KHTMLPart::computeAndSetTypingStyle): New helper that does the work of reducing a passed-in style
2194         declaration given the current selection, and then sets the minimum necessary style as the typing
2195         style on the part.
2196         (KHTMLPart::applyStyle): Call new computeAndSetTypingStyle. The guts of computeAndSetTypingStyle used
2197         to be here in the selection-as-caret case. But now [WebCoreBridge setTypingStyle:] needs this code
2198         as well.
2199         * khtml/khtml_part.h: Declare new computeAndSetTypingStyle() function.
2200         * kwq/WebCoreBridge.h: Declare new typingStyle and setTypingStyle: methods.
2201         * kwq/WebCoreBridge.mm: 
2202         (-[WebCoreBridge typingStyle]): Calls through to the part to retrieve the typing style.
2203         (-[WebCoreBridge setTypingStyle:]): Calls through to the part to set the typing style.
2204
2205 2004-11-18  David Harrison  <harrison@apple.com>
2206
2207         Reviewed by Darin.
2208         
2209         Back out part of Darin's fix for <rdar://problem/3885729>, because the new exception gets triggered
2210         by Mail.app. Filed <rdar://problem/3886832> against Mail.app.
2211
2212         * kwq/DOM-CSS.mm:
2213         (-[DOMCSSStyleDeclaration setProperty:::]):
2214
2215 2004-11-18  Chris Blumenberg  <cblu@apple.com>
2216
2217         Fixed: <rdar://problem/3587481> Bug Reporter Login Page: Password AutoFill does not work reliably
2218
2219         Reviewed by john.
2220
2221         * kwq/KWQKHTMLPart.mm:
2222         (KWQKHTMLPart::currentForm): just return the current form, don't scan the entire document looking for a form if there is no current form
2223
2224 2004-11-18  Maciej Stachowiak  <mjs@apple.com>
2225
2226         Reviewed by Chris.
2227
2228         - fix recursive item traversal, use traverseNextNode() instead of
2229         the buggy hand-rolled traversal.
2230
2231         * khtml/xml/dom_nodeimpl.cpp:
2232         (NodeListImpl::recursiveItem):
2233
2234 2004-11-17  Darin Adler  <darin@apple.com>
2235
2236         Reviewed by Ken.
2237
2238         - fixed <rdar://problem/3885744> crash with XMLHttpRequest test page (reported by KDE folks)
2239
2240         * khtml/ecma/xmlhttprequest.cpp: (KJS::XMLHttpRequest::slotFinished):
2241         Rolled in fix from KDE; make sure to set job to 0 before calling changeState.
2242
2243         - fixed <rdar://problem/3885729> attempting to modify a computed style does nothing, but should raise a DOM exception
2244         - fixed <rdar://problem/3885731> style declarations use too many malloc blocks; switch to QValueList
2245         - fixed <rdar://problem/3885739> DOM::NodeImpl accessor in DOM::Node class is hot; should be inlined
2246         - changed NodeImpl calls like replaceChild to always ref/deref the parameter; this is a better way to fix
2247           an entire category of leaks we have been fixing one by one recently
2248         - changed computed styles so they hold a reference to the DOM node; the old code could end up with a
2249           stale RenderObject pointer, although I never saw it do that in practice
2250         - implemented the length and item methods for computed styles
2251         - implemented querying additional properties in computed styles (29 more)
2252
2253         * khtml/khtml_part.h: Update forward declaration of CSSMutableStyleDeclarationImpl since it's
2254         now a separate class rather than a typedef. Changed the parameter type of setTypingStyle to
2255         take a mutable style.
2256         * khtml/khtml_part.cpp:
2257         (KHTMLPart::setTypingStyle): Change parameter to take a mutable style.
2258         (KHTMLPart::applyStyle): Add code to make a mutable style in case we are passed
2259         a computed style; also change some types to mutable style.
2260         (updateState): Update iteration of CSSProperty objects in a style declaration to use
2261         the new valuesIterator interface.
2262         (KHTMLPart::selectionHasStyle): Add a call to makeMutable.
2263         (KHTMLPart::selectionStartHasStyle): Add call to makeMutable and update iteration.
2264         (editingStyle): Change type to mutable style, and simplify the style-creation calls,
2265         including accomodating the exception code that setCssText has now.
2266         (KHTMLPart::applyEditingStyleToElement): Change types to mutable style.
2267         (KHTMLPart::removeEditingStyleFromElement): Change code to call setChanged only if removing
2268         the style attributes really was a change, although it's not an important optimization it's
2269         good to do it right.
2270
2271         * khtml/css/css_base.h: Remove unneeded setParsedValue method.
2272         * khtml/css/css_base.cpp: Remove unneeded setParsedValue method. All the places that were
2273         calling it were already removing the old property explicitly, so the code in here to remove
2274         the property again was redundant.
2275
2276         * khtml/css/css_computedstyle.h: Updated virtual functions for changes to parameters in base class.
2277         Moved all the "set"-type functions so they are private. Store a node pointer instead of a renderer.
2278         * khtml/css/css_computedstyle.cpp:
2279         (DOM::CSSComputedStyleDeclarationImpl::CSSComputedStyleDeclarationImpl): Hold a reference to
2280         the node we compute style for, so we don't end up with a pointer to a deallocated RenderObject.
2281         Before we had no guarantee the object would outlast us.
2282         (DOM::CSSComputedStyleDeclarationImpl::setCssText): Add exception parameter, and set the
2283         exception to NO_MODIFICATION_ALLOWED_ERR.
2284         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Update to use node pointer rather
2285         than renderer pointer. Added implementation for box-align, box-direction, box-flex, box-flex-group,
2286         box-lines, box-ordinal-group, box-orient, box-pack, caption-side, clear, cursor, direction,
2287         list-style-image, list-style-position, list-style-type, marquee-direction, marquee-repetition,
2288         marquee-style, user-modify, opacity, orphans, outline-style, page-break-after, page-break-before,
2289         page-break-inside, position, unicode-bidi, widows, z-index.
2290         (DOM::CSSComputedStyleDeclarationImpl::removeProperty): Add exception parameter, and set the
2291         exception to NO_MODIFICATION_ALLOWED_ERR.
2292         (DOM::CSSComputedStyleDeclarationImpl::setProperty): Ditto.
2293         (DOM::CSSComputedStyleDeclarationImpl::length): Implemented.
2294         (DOM::CSSComputedStyleDeclarationImpl::item): Implemented, calls getPropertyValue.
2295         (DOM::CSSComputedStyleDeclarationImpl::copyInheritableProperties): Changed return type to
2296         CSSMutableStyleDeclarationImpl.
2297         (DOM::CSSComputedStyleDeclarationImpl::copy): Added.
2298         (DOM::CSSComputedStyleDeclarationImpl::makeMutable): Added.
2299
2300         * khtml/css/css_ruleimpl.h: Update forward declaration of CSSMutableStyleDeclarationImpl since it's
2301         now a separate class rather than a typedef.
2302         * khtml/css/cssparser.h: Ditto.
2303
2304         * khtml/css/css_valueimpl.h: Refactor CSSStyleDeclarationImpl into two classes. New derived class
2305         CSSMutableStyleDeclarationImpl has the guts, and the base class has only some virtual functions.
2306         Removed a bunch of redundant stuff from other classes in this file too.
2307         (DOM::DashboardRegionImpl::setNext): Ref new before deref'ing old to handle the set-to-same case.
2308         (DOM::CSSProperty::CSSProperty): Added new overload so you can create a CSSProperty with initial values.
2309         (DOM::CSSProperty::operator=): Added.
2310         (DOM::CSSProperty::setValue): Use ref-before-deref pattern to simplify slightly.
2311
2312         * khtml/css/css_valueimpl.cpp:
2313         (DOM::CSSStyleDeclarationImpl::CSSStyleDeclarationImpl): Remove uneeded things.
2314         (DOM::CSSStyleDeclarationImpl::isStyleDeclaration): Put here now that it's no longer inline.
2315         (DOM::CSSMutableStyleDeclarationImpl::CSSMutableStyleDeclarationImpl): Added.
2316         (DOM::CSSMutableStyleDeclarationImpl::operator=): Added.
2317         (DOM::CSSMutableStyleDeclarationImpl::~CSSMutableStyleDeclarationImpl): Updated.
2318         (DOM::CSSMutableStyleDeclarationImpl::getPropertyValue): Removed now-uneeded check.
2319         (DOM::CSSMutableStyleDeclarationImpl::get4Values): Moved here from base class.
2320         (DOM::CSSMutableStyleDeclarationImpl::getShortHandValue): Ditto.
2321         (DOM::CSSMutableStyleDeclarationImpl::getPropertyCSSValue): Update to use QValueList instead of QPtrList.
2322         (DOM::CSSMutableStyleDeclarationImpl::removeProperty): Added exception parameter, updated for QValueList.
2323         (DOM::CSSMutableStyleDeclarationImpl::setChanged): Moved here from base class.
2324         (DOM::CSSMutableStyleDeclarationImpl::getPropertyPriority): Update to use QValueList.
2325         (DOM::CSSMutableStyleDeclarationImpl::setProperty): Added more overloads to match new parameters.
2326         (DOM::CSSMutableStyleDeclarationImpl::setStringProperty): Update to use QValueList.
2327         (DOM::CSSMutableStyleDeclarationImpl::setImageProperty): Ditto.
2328         (DOM::CSSMutableStyleDeclarationImpl::parseProperty): Remove unneeded initialization code due to QValueList.
2329         (DOM::CSSMutableStyleDeclarationImpl::addParsedProperties): Added.
2330         (DOM::CSSMutableStyleDeclarationImpl::setLengthProperty): Moved here from base class.
2331         (DOM::CSSMutableStyleDeclarationImpl::length): Update to use QValueList.
2332         (DOM::CSSMutableStyleDeclarationImpl::item): Moved here from base class.
2333         (DOM::CSSMutableStyleDeclarationImpl::cssText): Return empty string rather than null string when there are
2334         no styles in the list. Update to use QValueList.
2335         (DOM::CSSMutableStyleDeclarationImpl::setCssText): Update to use QValueList and to take an exceptionCode
2336         parameter and set it.
2337         (DOM::CSSMutableStyleDeclarationImpl::merge): Update to use QValueList.
2338         (DOM::CSSStyleDeclarationImpl::diff): Update to use QValueList.
2339         (DOM::CSSMutableStyleDeclarationImpl::copyBlockProperties): Moved here from base class. Change return type.
2340         (DOM::CSSStyleDeclarationImpl::copyPropertiesInSet): Update to use QValueList and use stack, not new/delete.
2341         (DOM::CSSMutableStyleDeclarationImpl::makeMutable): Added.
2342         (DOM::CSSMutableStyleDeclarationImpl::copy): Added.
2343
2344         * khtml/css/cssparser.cpp:
2345         (CSSParser::parseValue): Changed to use addParsedProperties.
2346         (CSSParser::parseDeclaration): Ditto.
2347         (CSSParser::createStyleDeclaration): Use new constructor to create declaration in a more efficient manner.
2348
2349         * khtml/css/cssproperties.in: Removed unused font-size-adjust and -khtml-flow-mode.
2350         * khtml/css/cssproperties.c: Regenerated.
2351         * khtml/css/cssproperties.h: Regenerated.
2352
2353         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::applyDeclarations):
2354         Updated to use QValueList interface to CSSMutableStyleDeclarationImpl.
2355
2356         * khtml/dom/css_value.cpp:
2357         (DOM::CSSStyleDeclaration::cssText): Removed unneeded cast.
2358         (DOM::CSSStyleDeclaration::setCssText): Added exception code handling.
2359         (DOM::CSSStyleDeclaration::getPropertyValue): Changed to call getPropertyValue directly instead of
2360         first doing getPropertyCSSValue and then doing cssText.
2361         (DOM::CSSStyleDeclaration::getPropertyCSSValue): Removed unneeded cast.
2362         (DOM::CSSStyleDeclaration::removeProperty): Added exception code handling. 
2363         (DOM::CSSStyleDeclaration::setProperty): Added exception code handling.
2364         (DOM::CSSStyleDeclaration::length): Removed unneeded cast.
2365         (DOM::CSSStyleDeclaration::item): Removed unneeded cast.
2366         (DOM::CSSStyleDeclaration::parentRule): Removed unneeded cast.
2367         (DOM::CSSValue::setCssText): Removed strange non-implementation (still not implemented).
2368
2369         * khtml/dom/dom_node.h: Made isNull and handle functions inline.
2370         * khtml/dom/dom_node.cpp: Ditto.
2371
2372         * khtml/editing/htmlediting.h: Change some types to mutable style.
2373         * khtml/editing/htmlediting.cpp:
2374         (khtml::EditCommandPtr::typingStyle): Change return type to mutable style.
2375         (khtml::EditCommandPtr::setTypingStyle): Change parameter to mutable style.
2376         (khtml::StyleChange::init): Convert parameter to mutable style. Update to use QValueList.
2377         (khtml::EditCommand::assignTypingStyle): Change parameter to mutable type.
2378         (khtml::EditCommand::setTypingStyle): Ditto.
2379         (khtml::ApplyStyleCommand::ApplyStyleCommand): Convert parameter to mutable style.
2380         (khtml::ApplyStyleCommand::doApply): Change local variables to mutable style.
2381         (khtml::ApplyStyleCommand::applyBlockStyle): Change parameter to mutable style.
2382         (khtml::ApplyStyleCommand::applyInlineStyle): Ditto.
2383         (khtml::ApplyStyleCommand::isHTMLStyleNode): Ditto.
2384         (khtml::ApplyStyleCommand::removeCSSStyle): Ditto. Also update to use QValueList.
2385         (khtml::ApplyStyleCommand::removeBlockStyle): Change parameter to mutable style.
2386         (khtml::ApplyStyleCommand::removeInlineStyle): Ditto.
2387         (khtml::ApplyStyleCommand::addBlockStyleIfNeeded): Ditto.
2388         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): Ditto.
2389         (khtml::InsertLineBreakCommand::doApply): Convert locals to mutable style.
2390         (khtml::InsertTextCommand::prepareForTextInsertion): Ditto.
2391         (khtml::RemoveCSSPropertyCommand::RemoveCSSPropertyCommand): Convert parameter to mutable style.
2392
2393         * khtml/editing/jsediting.cpp: Convert types to mutable styles where we create styles.
2394         * khtml/html/html_baseimpl.h: Change type to mutable style.
2395         * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::createLinkDecl): Ditto.
2396
2397         * khtml/html/html_elementimpl.h: Make CSSMappedAttributeDeclarationImpl use the mutable style
2398         class as a base class, and change types to mutable style as needed.
2399         * khtml/html/html_elementimpl.cpp:
2400         (HTMLElementImpl::createInlineStyleDecl): Change type to mutable style.
2401         (HTMLElementImpl::parseHTMLAttribute): Call parseProperty method.
2402         (HTMLElementImpl::getInlineStyleDecl): Change type to mutable style.
2403         (HTMLElementImpl::additionalAttributeStyleDecl): Ditto.
2404         (HTMLElementImpl::createContextualFragment): Add ref/deref to fix potential node leak.
2405         (HTMLElementImpl::setInnerHTML): Remove ref/deref pair because this leak is now fixed by changes
2406         to appendChild.
2407         (HTMLElementImpl::setOuterHTML): Remove ref/deref pair because this leak is now fixed by changes
2408         to replaceChild.
2409
2410         * khtml/html/html_tableimpl.h: Change types to mutable style.
2411         * khtml/html/html_tableimpl.cpp:
2412         (HTMLTableElementImpl::additionalAttributeStyleDecl): Change type to mutable style.
2413         (HTMLTableElementImpl::getSharedCellDecl): Change type to mutable style.
2414         (HTMLTableCellElementImpl::additionalAttributeStyleDecl): Change type to mutable style.
2415
2416         * khtml/html/htmlparser.cpp:
2417         (KHTMLParser::parseToken): Use a local variable to protect the node by ref'ing it. This is better
2418         than using an explicit delete to make the node go away, and is required for compatibility with the
2419         changes to the NodeImpl functions.
2420         (KHTMLParser::insertNode): Ditto.
2421         (KHTMLParser::createHead): Get rid of explicit delete, no longer needed because of changes to
2422         the NodeImpl functions.
2423
2424         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::createCSSStyleDeclaration): Call simpler constructor
2425         now that there's no need to make the property list explictly.
2426
2427         * kwq/DOM-CSS.mm:
2428         (-[DOMCSSStyleDeclaration setCssText:]): Raise exception when appropriate.
2429         (-[DOMCSSStyleDeclaration removeProperty:]): Ditto.
2430         (-[DOMCSSStyleDeclaration setProperty:::]): Dito.
2431
2432         * khtml/xml/dom_nodeimpl.cpp:
2433         (NodeImpl::insertBefore): Always do a ref/deref, so callers don't have to worry about whether the
2434         function succeeded or not for ownership purposes.
2435         (NodeImpl::replaceChild): Ditto.
2436         (NodeImpl::appendChild): Ditto.
2437         (NodeBaseImpl::insertBefore): Ditto.
2438         (NodeBaseImpl::replaceChild): Ditto.
2439         (NodeBaseImpl::appendChild): Ditto.
2440         (NodeBaseImpl::addChild): Ditto.
2441
2442         * WebCore-tests.exp: Removed CSSStyleDeclaration::length; not sure why it was in here.
2443         * WebCore-combined.exp: Regenerated.
2444
2445 2004-11-18  Maciej Stachowiak  <mjs@apple.com>
2446
2447         still even more build fixing
2448
2449         * khtml/html/html_miscimpl.cpp:
2450         (HTMLCollectionImpl::resetCollectionInfo):
2451
2452 2004-11-18  Maciej Stachowiak  <mjs@apple.com>
2453
2454         more build fixing
2455
2456         * khtml/html/html_miscimpl.cpp:
2457         (HTMLCollectionImpl::resetCollectionInfo):
2458
2459 2004-11-18  Maciej Stachowiak  <mjs@apple.com>
2460
2461         Fixed build problem.
2462
2463         * khtml/html/html_miscimpl.h:
2464         (DOM::HTMLCollectionImpl::CollectionInfo::CollectionInfo): it's haslength, not hasLenght.
2465
2466 2004-11-18  Maciej Stachowiak  <mjs@apple.com>
2467
2468         Reviewed by Ken.
2469
2470         - merged and cleaned up HTMLCollection and HTMLFormCollection speedups from konqueror
2471
2472         <rdar://problem/3822992> VIP: Program listings pages at directv.com take a really long time to load [HTMLCollection]
2473         <rdar://problem/3701991> Safari unresponsive loading (www.maxim-ic.com) (HTMLCollection)
2474
2475         This is also a start on fixing 5 other bugs, but those need additional work to make
2476         HTMLFormCollection fast.
2477
2478         * khtml/html/html_documentimpl.h:
2479         (DOM::HTMLDocumentImpl::collectionInfo):
2480         * khtml/html/html_formimpl.cpp:
2481         (DOM::HTMLFormElementImpl::~HTMLFormElementImpl):
2482         (DOM::HTMLFormElementImpl::isURLAttribute):
2483         (DOM::HTMLFormElementImpl::registerImgElement):
2484         (DOM::HTMLFormElementImpl::removeImgElement):
2485         * khtml/html/html_formimpl.h:
2486         * khtml/html/html_imageimpl.cpp:
2487         (HTMLImageElementImpl::HTMLImageElementImpl):
2488         (HTMLImageElementImpl::~HTMLImageElementImpl):
2489         * khtml/html/html_imageimpl.h:
2490         * khtml/html/html_miscimpl.cpp:
2491         (HTMLCollectionImpl::HTMLCollectionImpl):
2492         (HTMLCollectionImpl::~HTMLCollectionImpl):
2493         (HTMLCollectionImpl::updateCollectionInfo):
2494         (HTMLCollectionImpl::length):
2495         (HTMLCollectionImpl::item):
2496         (HTMLCollectionImpl::firstItem):
2497         (HTMLCollectionImpl::nextItem):
2498         (HTMLCollectionImpl::namedItem):
2499         (HTMLCollectionImpl::nextNamedItemInternal):
2500         (HTMLFormCollectionImpl::getNamedFormItem):
2501         * khtml/html/html_miscimpl.h:
2502         (DOM::HTMLCollectionImpl::):
2503         (DOM::HTMLCollectionImpl::CollectionInfo::CollectionInfo):
2504         * khtml/html/htmlparser.cpp:
2505         (KHTMLParser::getElement):
2506         * khtml/xml/dom_docimpl.cpp:
2507         (DocumentImpl::DocumentImpl):
2508         * khtml/xml/dom_docimpl.h:
2509         (DOM::DocumentImpl::incDOMTreeVersion):
2510         (DOM::DocumentImpl::domTreeVersion):
2511         * khtml/xml/dom_nodeimpl.cpp:
2512         (NodeImpl::attach):
2513         (NodeImpl::detach):
2514
2515 2004-11-18  Kevin Decker  <kdecker@apple.com>
2516
2517         Reviewed by Chris.
2518
2519         fixed: <rdar://problem/3841842> getPropertyID expensive
2520
2521         * kwq/DOM-CSS.mm:
2522         (getPropertyID): avoid unnecessary memory allocations by using a fixed-sized stack based buffer.
2523
2524 2004-11-17  David Hyatt  <hyatt@apple.com>
2525
2526         Improve responsiveness by being willing to break out of the tokenizer.  (This patch was landed already
2527         and subsequently backed out).
2528         
2529         Reviewed by kocienda
2530
2531         * khtml/html/html_baseimpl.cpp:
2532         (HTMLBodyElementImpl::insertedIntoDocument):
2533         * khtml/html/htmltokenizer.cpp:
2534         (khtml::HTMLTokenizer::reset):
2535         (khtml::HTMLTokenizer::scriptHandler):
2536         (khtml::HTMLTokenizer::scriptExecution):
2537         (khtml::HTMLTokenizer::write):
2538         (khtml::HTMLTokenizer::continueProcessing):
2539         (khtml::HTMLTokenizer::timerEvent):
2540         (khtml::HTMLTokenizer::notifyFinished):
2541         * khtml/html/htmltokenizer.h:
2542         * khtml/khtmlview.cpp:
2543         (KHTMLViewPrivate::KHTMLViewPrivate):
2544         (KHTMLViewPrivate::reset):
2545         (KHTMLView::clear):
2546         (KHTMLView::layout):
2547         (KHTMLView::timerEvent):
2548         (KHTMLView::scheduleRelayout):
2549         (KHTMLView::layoutPending):
2550         (KHTMLView::haveDelayedLayoutScheduled):
2551         (KHTMLView::unscheduleRelayout):
2552         * khtml/khtmlview.h:
2553         * khtml/xml/dom_docimpl.cpp:
2554         (DocumentImpl::DocumentImpl):
2555         (DocumentImpl::close):
2556         (DocumentImpl::setParsing):
2557         (DocumentImpl::shouldScheduleLayout):
2558         (DocumentImpl::minimumLayoutDelay):
2559         (DocumentImpl::write):
2560         (DocumentImpl::finishParsing):
2561         (DocumentImpl::stylesheetLoaded):
2562         (DocumentImpl::updateStyleSelector):
2563         * khtml/xml/dom_docimpl.h:
2564         (DOM::DocumentImpl::parsing):
2565         * kwq/KWQDateTime.mm:
2566         (KWQUIEventTime::uiEventPending):
2567
2568 2004-11-17  David Harrison  <harrison@apple.com>
2569
2570         Reviewed by Ken Kocienda.
2571         
2572         Make sure previousLineStart is non-null before calling compareBoundaryPoints.
2573         Treat null case as meaning no post-move merge is needed.
2574
2575         * khtml/editing/htmlediting.cpp:
2576         (khtml::DeleteSelectionCommand::initializePositionData):
2577
2578 2004-11-17  David Harrison  <harrison@apple.com>
2579         
2580         Added displayNode and displayTree methods for debugging.  Fixed comment typo in dispatchChildRemovalEvents.
2581         * khtml/xml/dom_nodeimpl.cpp:
2582         (NodeImpl::displayNode):
2583         (NodeImpl::displayTree):
2584         (NodeBaseImpl::dispatchChildRemovalEvents):
2585         * khtml/xml/dom_nodeimpl.h:
2586
2587 2004-11-16  John Sullivan  <sullivan@apple.com>
2588
2589         Reviewed by Richard.
2590         
2591         - fixed <rdar://problem/3881929> 32 byte leak in editingStyle() in KHTMLPart (one-time only)
2592
2593         * khtml/khtml_part.cpp:
2594         (editingStyle):
2595         delete the list we created when we're done with it
2596
2597 2004-11-16  Ken Kocienda  <kocienda@apple.com>
2598
2599         Reviewed by John
2600         
2601         It is unwise to use the QPtrList autodelete feature on shared objects like DOM nodes.
2602         Instead, I replaced this with a helper function that derefs DOM nodes stored in a 
2603         QPtrList when the list goes out of scope.
2604
2605         * khtml/editing/htmlediting.cpp:
2606         (khtml::derefNodesInList): New helper to deref DOM nodes stored in a QPtrList.
2607         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): No longer set lists to autodelete.
2608         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Call new derefNodesInList helper.
2609         (khtml::InsertParagraphSeparatorInQuotedContentCommand::InsertParagraphSeparatorInQuotedContentCommand):  
2610         No longer set lists to autodelete.
2611         (khtml::InsertParagraphSeparatorInQuotedContentCommand::~InsertParagraphSeparatorInQuotedContentCommand):
2612          Call new derefNodesInList helper.
2613         * khtml/editing/htmlediting.h: Add virtual destructor for InsertParagraphSeparatorCommand. It had no need
2614         of one before, but now it does.
2615
2616 2004-11-15  David Harrison  <harrison@apple.com>
2617
2618         Reviewed by Chris and Darin.
2619         
2620         <rdar://problem/3880304> Non-linear performance hit for style changes
2621
2622         * khtml/xml/dom_nodeimpl.cpp:
2623         (NodeImpl::traverseNextNode):
2624         (NodeImpl::traverseNextSibling):
2625         (NodeImpl::traversePreviousNodePostOrder):
2626         Return 0 rather than traversing beyond stayWithin when this == stayWithin.
2627         Add asserts that stayWithin is an ancestor of the returned node.
2628
2629 2004-11-15  Darin Adler  <darin@apple.com>
2630
2631         Reviewed by Ken.
2632
2633         - fixed <rdar://problem/3880036> Many leaks from CSSComputedStyleDeclarationImpl::getPropertyCSSValue, seen in Mail and Blot
2634
2635         * khtml/css/css_computedstyle.cpp:
2636         (DOM::CSSComputedStyleDeclarationImpl::getPropertyValue): Ref and deref the value returned from getPropertyCSSValue,
2637         since there's no guarantee it's already ref'd.
2638         * khtml/css/css_valueimpl.cpp:
2639         (CSSStyleDeclarationImpl::getPropertyValue): Wrap result in a CSSValue to ref/deref.
2640         (CSSStyleDeclarationImpl::get4Values): Ref/deref explicitly.
2641         (CSSStyleDeclarationImpl::getShortHandValue): Ditto.
2642         (CSSStyleDeclarationImpl::merge): Ditto.
2643         (CSSStyleDeclarationImpl::diff): Ditto.
2644         * khtml/editing/htmlediting.cpp:
2645         (khtml::StyleChange::currentlyHasStyle): Ditto.
2646         (khtml::ApplyStyleCommand::removeCSSStyle): Ditto.
2647         * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::parseHTMLAttribute): Ditto.
2648         * khtml/html/html_tableimpl.cpp: (HTMLTableElementImpl::parseHTMLAttribute): Ditto.
2649
2650 2004-11-15  Darin Adler  <darin@apple.com>
2651
2652         Reviewed by Ken.
2653
2654         Use separate mutable style and computed style types as appropriate.
2655         For now this should have no effect, but it prepares us for refactoring later.
2656         Also remove some unnecessary "DOM::" prefixes and in one case factor out
2657         some shared code.
2658
2659         * khtml/khtml_part.cpp:
2660         (KHTMLPart::typingStyle):
2661         (KHTMLPart::setTypingStyle):
2662         (updateState):
2663         (KHTMLPart::selectionHasStyle):
2664         (KHTMLPart::selectionStartHasStyle):
2665         (KHTMLPart::selectionComputedStyle):
2666         * khtml/khtml_part.h:
2667         * khtml/khtmlpart_p.h:
2668
2669         * khtml/css/css_base.h:
2670         * khtml/css/css_ruleimpl.cpp:
2671         (CSSStyleRuleImpl::setDeclaration):
2672         * khtml/css/css_ruleimpl.h:
2673         (DOM::CSSFontFaceRuleImpl::style):
2674         (DOM::CSSPageRuleImpl::style):
2675         (DOM::CSSStyleRuleImpl::style):
2676         (DOM::CSSStyleRuleImpl::declaration):
2677         * khtml/css/css_valueimpl.h:
2678         (DOM::CSSPrimitiveValueImpl::):
2679         * khtml/css/cssparser.cpp:
2680         (CSSParser::parseValue):
2681         (CSSParser::parseColor):
2682         (CSSParser::parseDeclaration):
2683         (CSSParser::createStyleDeclaration):
2684         * khtml/css/cssparser.h:
2685         * khtml/css/cssstyleselector.cpp:
2686         (khtml::CSSStyleSelector::addMatchedDeclaration):
2687         (khtml::CSSStyleSelector::matchRulesForList):
2688         (khtml::CSSStyleSelector::styleForElement):
2689         (khtml::CSSStyleSelector::applyDeclarations):
2690         * khtml/css/cssstyleselector.h:
2691         * khtml/css/parser.cpp:
2692         * khtml/css/parser.y:
2693         * khtml/dom/css_rule.h:
2694         * khtml/dom/css_stylesheet.h:
2695         * khtml/dom/css_value.h:
2696         * khtml/dom/dom2_views.cpp:
2697         * khtml/xml/dom2_viewsimpl.cpp:
2698         (DOM::AbstractViewImpl::getComputedStyle):
2699         * khtml/xml/dom_docimpl.cpp:
2700         (DocumentImpl::importNode):
2701         (DocumentImpl::setStyleSheet):
2702         * khtml/xml/dom_docimpl.h:
2703         * khtml/xml/dom_xmlimpl.cpp:
2704         (DOM::ProcessingInstructionImpl::setStyleSheet):
2705         * khtml/xml/dom_xmlimpl.h:
2706
2707         * khtml/dom/css_value.cpp:
2708         (DOM::throwException): Added.
2709         (DOM::CSSStyleDeclaration::setCssText): Call throwException, but always on 0 for now.
2710         The real thing is coming with the next change to refactor.
2711         (DOM::CSSPrimitiveValue::setFloatValue): Call throwException.
2712         (DOM::CSSPrimitiveValue::setStringValue): Ditto.
2713
2714 2004-11-15  Darin Adler  <darin@apple.com>
2715
2716         Reviewed by Ken.
2717
2718         - fixed <rdar://problem/3878489> REGRESSION: modifying attribute of <textarea> blows away edited text (breaks simplemachines.org forum)
2719
2720         * khtml/xml/dom_nodeimpl.h: Added boolean "children changed" parameter to
2721         dispatchSubtreeModifiedEvent, so it can be called in cases where only the
2722         node's attributes changed without sending a misleading childrenChanged call,
2723         but the childrenChanged call can happen at the exact right moment.
2724         * khtml/xml/dom_nodeimpl.cpp: Removed some uneeded "DOM::".
2725         (NodeImpl::dispatchSubtreeModifiedEvent): Only call "children changed" if
2726         the boolean true is passed in.
2727
2728         * khtml/xml/dom_elementimpl.cpp:
2729         (NamedAttrMapImpl::addAttribute): Pass false for "children changed".
2730         (NamedAttrMapImpl::removeAttribute): Ditto.
2731
2732 2004-11-15  John Sullivan  <sullivan@apple.com>
2733
2734         Reviewed by Ken.
2735         
2736         - fixed <rdar://problem/3880075> leak in CSSStyleDeclarationImpl::copyPropertiesInSet, 
2737         seen often in Mail and Blot
2738
2739         * khtml/css/css_valueimpl.cpp:
2740         (CSSStyleDeclarationImpl::copyPropertiesInSet):
2741         delete temporary list after we're done using it
2742
2743 2004-11-15  Richard Williamson   <rjw@apple.com>
2744
2745         Fixed leak (3879883) that John found.  Early return leaked
2746         allocated instance.
2747
2748         Reviewed by John.
2749
2750         * khtml/css/css_computedstyle.cpp:
2751         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
2752
2753 2004-11-15  Ken Kocienda  <kocienda@apple.com>
2754
2755         Reviewed by John
2756
2757         Fix for this bug:
2758         
2759         <rdar://problem/3879569> Many leaks in EditCommand mechanism, seen in Mail
2760
2761         Fixed a couple of object lifetime issues. The EditCommand class used to hold an
2762         EditCommandPtr to its parent, but this caused a a reference cycle in composite 
2763         commands as the children held a ref to their parent. Now, the parent variable
2764         is a non-retained reference to an EditCommand *. It would be nice to have a 
2765         weak reference to the parent or even override deref in composite commands (but I
2766         can't since deref() is not virtual). However, this should be OK since any
2767         dangling parent pointer is a sign of a bigger object lifetime problem that
2768         would need to be addressed anyway.
2769
2770         * khtml/css/css_valueimpl.cpp:
2771         (CSSStyleDeclarationImpl::CSSStyleDeclarationImpl): Fix bug in constructor that takes a 
2772         QPtrList<CSSProperty> *. List values must be copied into newly-allocated list, rather than
2773         just assigning the list variable passed in to the local list variable, or the list will be 
2774         double-deleted.
2775         * khtml/editing/htmlediting.cpp:
2776         (khtml::EditCommand::setStartingSelection): No longer call get(). m_parent is no longer a smart pointer.
2777         (khtml::EditCommand::setEndingSelection): Ditto.
2778         (khtml::EditCommand::assignTypingStyle): Short-circuit if passed in style is identical to current style.
2779         Unrelated to the change, but saves some ref's and deref's.
2780         (khtml::EditCommand::setTypingStyle): No longer call get(). m_parent is no longer a smart pointer.
2781         * khtml/editing/htmlediting.h: Change m_parent to a EditCommand *. Was an EditCommandPtr. Using an
2782         EditCommandPtr caused a reference cycle in composite commands as the children held a ref to their parent.
2783         (khtml::EditCommand::parent): No longer call get(). m_parent is no longer a smart pointer.
2784
2785 2004-11-15  Maciej Stachowiak  <mjs@apple.com>
2786
2787         Reviewed by Kevin.
2788
2789         <rdar://problem/3807080> Safari so slow it seems like a hang accessing a page on an IBM website
2790         
2791         * khtml/xml/dom_nodeimpl.cpp:
2792         (NodeListImpl::NodeListImpl): Initialize isItemCacheValid, renamed isCacheValid to
2793         isLengthCacheValid.
2794         (NodeListImpl::recursiveLength): Adjusted for rename.
2795         (NodeListImpl::recursiveItem): Cache the last item accessed and its offset.
2796         If the same offset is looked up again, just return it, otherwise, if looking up
2797         a later offset, start at the last item and proceed from there.
2798         (NodeListImpl::itemById): Apply the special document optimization to all
2799         nodes that are either a document or in a document - just walk up to make
2800         sure the node found by ID has the root node as an ancestor.
2801         (NodeListImpl::rootNodeSubtreeModified): Adjust both cache bits.
2802         * khtml/xml/dom_nodeimpl.h: Prototype new stuff.
2803
2804 2004-11-15  John Sullivan  <sullivan@apple.com>
2805
2806         Reviewed by Ken.
2807         
2808         - fixed <rdar://problem/3879539> leak of NSString after pasting into editable HTML (e.g. Mail)
2809
2810         * kwq/KWQKHTMLPart.mm:
2811         (KWQKHTMLPart::documentFragmentWithText):
2812         release mutable copy of string after we're done using it
2813
2814 2004-11-14  Kevin Decker  <kdecker@apple.com>
2815
2816         Reviewed by mjs.
2817
2818         fixed: <rdar://problem/3823038> LEAK: huge leak in DOM::HTMLElementImpl::createContextualFragment(DOM::DOMString const&, bool)
2819
2820         * khtml/html/html_elementimpl.cpp:
2821         (HTMLElementImpl::setInnerHTML): uses the ref counting system to deallocate fragments instead of explicitly invoking a destructor.
2822         (HTMLElementImpl::setOuterHTML): function is responsible for derefing the fragment prior to returning. Now it does.
2823
2824 2004-11-13  Maciej Stachowiak  <mjs@apple.com>
2825
2826         Reviewed by Kevin.
2827
2828         <rdar://problem/3878766> VIP: Program listings pages at directv.com takes 75% of time traversing NodeLists
2829
2830         * khtml/dom/dom_node.cpp:
2831         (NodeList::itemById): New method, just forward to impl.
2832         * khtml/dom/dom_node.h: Prototype it.
2833         * khtml/ecma/kjs_dom.cpp:
2834         (DOMNodeList::tryGet): Instead of looping over the whole list to do by-id access,
2835         let the NodeList do it. The NodeList might be able to do it more efficiently.
2836         * khtml/xml/dom_nodeimpl.cpp:
2837         (NodeListImpl::itemById): Optimize for the case where the NodeList
2838         covers the whole document. In this case, just use getElementById,
2839         then check that the element satisfies the list criteria.
2840         (ChildNodeListImpl::nodeMatches): Return true only if the node is our child.
2841         (TagNodeListImpl::TagNodeListImpl): Irrelevant change to reformat initializers.
2842         * khtml/xml/dom_nodeimpl.h:
2843
2844 2004-11-12  Maciej Stachowiak  <mjs@apple.com>
2845
2846         Reviewed by Gramps.
2847
2848         - fixed another bug in the last checkin, isCacheValid was unitialized, resulting in
2849         sometimes using a huge bogus length value.
2850         
2851         * khtml/xml/dom_nodeimpl.cpp:
2852         (NodeListImpl::NodeListImpl): Initialize isCacheValid.
2853
2854 2004-11-12  Darin Adler  <darin@apple.com>
2855
2856         Reviewed by Maciej.
2857
2858         - fixed an infinite loop in that last check-in
2859
2860         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::notifyLocalNodeListsSubtreeModified):
2861         Added a ++i to the loop so it won't get stuck on the first element in the list.
2862
2863 2004-11-12  Maciej Stachowiak  <mjs@apple.com>
2864
2865         Reviewed by Kevin.
2866
2867         - fixed <rdar://problem/3878183> Safari is 77% slower than it should be on a page on an IBM website due to NodeListImpl length
2868         
2869         I fixed this by changing NodeLists to cache their length, but
2870         invalidate it whenever there is a change in the DOM subtree at
2871         which they are rooted. This makes NodeListImpl::recursiveLength()
2872         drop completely off the profile, since we were repeatedly getting
2873         a length for the same NodeList over and over.
2874         
2875         * khtml/xml/dom_nodeimpl.cpp:
2876         (NodeImpl::NodeImpl):
2877         (NodeImpl::~NodeImpl):
2878         (NodeImpl::registerNodeList):
2879         (NodeImpl::unregisterNodeList):
2880         (NodeImpl::notifyLocalNodeListsSubtreeModified):
2881         (NodeImpl::notifyNodeListsSubtreeModified):
2882         (NodeImpl::dispatchSubtreeModifiedEvent):
2883         (NodeListImpl::NodeListImpl):
2884         (NodeListImpl::~NodeListImpl):
2885         (NodeListImpl::recursiveLength):
2886         (NodeListImpl::recursiveItem):
2887         (NodeListImpl::rootNodeSubtreeModified):
2888         (ChildNodeListImpl::ChildNodeListImpl):
2889         (ChildNodeListImpl::length):
2890         (ChildNodeListImpl::item):
2891         (TagNodeListImpl::TagNodeListImpl):
2892         (TagNodeListImpl::length):
2893         (TagNodeListImpl::item):
2894         (NameNodeListImpl::NameNodeListImpl):
2895         (NameNodeListImpl::length):
2896         (NameNodeListImpl::item):
2897         * khtml/xml/dom_nodeimpl.h:
2898
2899 2004-11-12  Darin Adler  <darin@apple.com>
2900
2901         Reviewed by Maciej.
2902
2903         - various small cleanups
2904
2905         * khtml/xml/dom_docimpl.h: Added policyBaseURL and setPolicyBaseURL.
2906         * khtml/html/html_documentimpl.h: Removed policyBaseURL and setPolicyBaseURL.
2907
2908         * khtml/xml/xml_tokenizer.h: Marked isWaitingForScripts const.
2909         * khtml/xml/xml_tokenizer.cpp: (khtml::XMLTokenizer::isWaitingForScripts): Marked const.
2910         * khtml/html/htmltokenizer.h: Marked isWaitingForScripts const.
2911         * khtml/html/htmltokenizer.cpp:
2912         (khtml::HTMLTokenizer::isWaitingForScripts): Marked const.
2913         (khtml::HTMLTokenizer::setOnHold): Took out extraneous line of code.
2914
2915         * khtml/khtml_part.h: Removed docImpl function.
2916         * khtml/khtml_part.cpp: Ditto.
2917
2918         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close): Simplified code that implements
2919         the "redirect during onload" optimization. Now uses isScheduledLocationChangePending.
2920
2921         * kwq/KWQKHTMLPart.h: Removed now-unused _firstResponderAtMouseDownTime.
2922         * kwq/KWQKHTMLPart.mm: Removed _firstResponderAtMouseDownTime (forgot to land this
2923         part of the change last time, which is why the build broke).
2924         (KWQKHTMLPart::updatePolicyBaseURL): Use xmlDocImpl instead of docImpl.
2925         (KWQKHTMLPart::setPolicyBaseURL): Ditto.
2926         (KWQKHTMLPart::keyEvent): Ditto.
2927         (KWQKHTMLPart::dispatchCPPEvent): Ditto.
2928         (KWQKHTMLPart::bodyBackgroundColor): Ditto.
2929
2930 2004-11-12  Chris Blumenberg  <cblu@apple.com>
2931
2932         <rdar://problem/3843312> REGRESSION: Tabbing into content area puts insertion point at start, should go to where it last was
2933
2934         Reviewed by rjw.
2935
2936         * kwq/KWQKHTMLPart.mm:
2937         (KWQKHTMLPart::nextKeyViewInFrameHierarchy): only blow away selection when another view is focused
2938
2939 === Safari-171 ===
2940
2941 2004-11-12  Darin Adler  <darin@apple.com>
2942
2943         Reviewed by Kevin.
2944
2945         - fixed a couple places that would not work for XML documents
2946
2947         * khtml/ecma/kjs_window.cpp:
2948         (Window::isSafeScript): Use xmlDocImpl instead of docImpl, since the function we're using
2949         is present on the base class.
2950         (WindowFunc::tryCall): More of the same.
2951
2952 2004-11-12  Darin Adler  <darin@apple.com>
2953
2954         - land versions of these files generated by the newer gperf
2955
2956         People building on Panther will continue to see these files modified.
2957         A workaround would be to install the newer gperf on our Tiger build machines.
2958
2959         * khtml/css/cssproperties.c: Regenerated.
2960         * khtml/css/cssvalues.c: Regenerated.
2961         * khtml/html/doctypes.cpp: Regenerated.
2962         * khtml/html/kentities.c: Regenerated.
2963         * khtml/misc/htmlattrs.c: Regenerated.
2964         * khtml/misc/htmltags.c: Regenerated.
2965         * kwq/KWQColorData.c: Regenerated.
2966
2967 2004-11-11  Richard Williamson   <rjw@apple.com>
2968         
2969         Fix build horkage from previous checkin.
2970                 
2971         * kwq/KWQKHTMLPart.h:
2972
2973 2004-11-11  Darin Adler  <darin@apple.com>
2974
2975         Reviewed by John.
2976
2977         - fixed <rdar://problem/3846152> REGRESSION (125-166): can't drag text out of <input type=text> fields
2978
2979         * kwq/WebCoreBridge.h: Added wasFirstResponderAtMouseDownTime: method.
2980
2981         * kwq/KWQKHTMLPart.h: Removed _firstResponderAtMouseDownTime.
2982         * kwq/KWQKHTMLPart.mm:
2983         (KWQKHTMLPart::passWidgetMouseDownEventToWidget): Use the new wasFirstResponderAtMouseDownTime:
2984         method on the bridge instead of _firstResponderAtMouseDownTime. This will return YES for the case where
2985         we started with the NSTextField as first responder, and then took focus away and gave it back, which
2986         makes dragging text work again.
2987         (KWQKHTMLPart::mouseDown): Removed code to set _firstResponderAtMouseDownTime.
2988
2989 2004-11-11  David Hyatt  <hyatt@apple.com>
2990
2991         Disable the tokenizer deferral, since it hurts the PLT by 3% or so.
2992         
2993         Reviewed by vicki
2994
2995         * khtml/html/htmltokenizer.cpp:
2996         (khtml::HTMLTokenizer::continueProcessing):
2997
2998 2004-11-11  Ken Kocienda  <kocienda@apple.com>
2999
3000         Reviewed by Maciej
3001
3002         * khtml/editing/htmlediting.cpp:
3003         (khtml::InsertLineBreakCommand::doApply): Use new isLastVisiblePositionInBlock() helper instead
3004         of old isLastInBlock() member function on VisiblePosition. This is a cosmetic change in keeping
3005         with the prevailing style for the VisiblePosition class.
3006         * khtml/editing/htmlediting.h: Move isLastVisiblePositionInNode() function to visible_position.[cpp|h] files. 
3007         * khtml/editing/visible_position.cpp: Removed isLastInBlock() helper. Renamed to isLastVisiblePositionInBlock().
3008         (khtml::visiblePositionsInDifferentBlocks): New helper method.
3009         (khtml::isLastVisiblePositionInBlock): Ditto.
3010         (khtml::isLastVisiblePositionInNode): Ditto.
3011         * khtml/editing/visible_position.h: Add declarations for new functions.
3012
3013 2004-11-11  Ken Kocienda  <kocienda@apple.com>
3014
3015         Reviewed by Hyatt
3016
3017         * khtml/editing/htmlediting.cpp:
3018         (khtml::CompositeEditCommand::deleteInsignificantText): Call new compareBoundaryPoints convenience.
3019         (khtml::ApplyStyleCommand::removeBlockStyle): Ditto.
3020         (khtml::ApplyStyleCommand::removeInlineStyle): Ditto.
3021         (khtml::ApplyStyleCommand::nodeFullySelected): Ditto.
3022         (khtml::DeleteSelectionCommand::initializePositionData): Ditto.
3023         * khtml/xml/dom2_rangeimpl.cpp:
3024         (DOM::RangeImpl::compareBoundaryPoints): New convenience variant of this function which takes two Position objects.
3025         * khtml/xml/dom2_rangeimpl.h: Ditto.
3026
3027 2004-11-11  Ken Kocienda  <kocienda@apple.com>
3028
3029         Reviewed by Harrison
3030
3031         Some improvements to deleting when complete lines are selected.
3032
3033         * khtml/editing/htmlediting.cpp:
3034         (khtml::DeleteSelectionCommand::initializePositionData): Detect when the line containing
3035         the end of a selection is fully selected. Turn off block merging in this case.
3036         (khtml::DeleteSelectionCommand::handleSpecialCaseBRDelete): Fix a bug in the check for
3037         whether a BR immediately followed a block. The old code could erroneously skip nodes.
3038         (khtml::DeleteSelectionCommand::handleGeneralDelete): Add a case for when the entire
3039         start block is selected. This new code will now delete this block in one call, rather
3040         than iterating over each child.
3041         * khtml/editing/visible_position.cpp:
3042         (khtml::visiblePositionsOnDifferentLines): New helper called in initializePositionData()
3043         to do the work mentioned above in the comment for that function.
3044         (khtml::isFirstVisiblePositionOnLine): Ditto.
3045         (khtml::isLastVisiblePositionOnLine): Ditto.
3046         * khtml/editing/visible_position.h: Add new functions.
3047         * layout-tests/editing/deleting/delete-line-001-expected.txt: Added.
3048         * layout-tests/editing/deleting/delete-line-001.html: Added.
3049         * layout-tests/editing/deleting/delete-line-002-expected.txt: Added.
3050         * layout-tests/editing/deleting/delete-line-002.html: Added.
3051         * layout-tests/editing/deleting/delete-line-003-expected.txt: Added.
3052         * layout-tests/editing/deleting/delete-line-003.html: Added.
3053         * layout-tests/editing/deleting/delete-line-004-expected.txt: Added.
3054         * layout-tests/editing/deleting/delete-line-004.html: Added.
3055         * layout-tests/editing/deleting/delete-line-005-expected.txt: Added.
3056         * layout-tests/editing/deleting/delete-line-005.html: Added.
3057         * layout-tests/editing/deleting/delete-line-006-expected.txt: Added.
3058         * layout-tests/editing/deleting/delete-line-006.html: Added.
3059         * layout-tests/editing/deleting/delete-line-007-expected.txt: Added.
3060         * layout-tests/editing/deleting/delete-line-007.html: Added.
3061         * layout-tests/editing/deleting/delete-line-008-expected.txt: Added.
3062         * layout-tests/editing/deleting/delete-line-008.html: Added.
3063         * layout-tests/editing/deleting/delete-line-009-expected.txt: Added.
3064         * layout-tests/editing/deleting/delete-line-009.html: Added.
3065         * layout-tests/editing/deleting/delete-line-010-expected.txt: Added.
3066         * layout-tests/editing/deleting/delete-line-010.html: Added.
3067         * layout-tests/editing/deleting/delete-line-011-expected.txt: Added.
3068         * layout-tests/editing/deleting/delete-line-011.html: Added.
3069         * layout-tests/editing/deleting/delete-line-012-expected.txt: Added.
3070         * layout-tests/editing/deleting/delete-line-012.html: Added.
3071
3072 2004-11-11  Ken Kocienda  <kocienda@apple.com>
3073
3074         Reviewed by Adele
3075
3076         * khtml/editing/htmlediting.cpp:
3077         (khtml::DeleteSelectionCommand::initializePositionData): Add some comments and a new piece of debugging output.
3078
3079 2004-11-11  Ken Kocienda  <kocienda@apple.com>
3080
3081         Reviewed by John
3082
3083         Fix for these bugs:
3084
3085         <rdar://problem/3875618> REGRESSION (Mail): Hitting down arrow with full line selected skips line (br case)
3086         <rdar://problem/3875641> REGRESSION (Mail): Hitting down arrow with full line selected skips line (div case)
3087
3088         * khtml/editing/selection.cpp:
3089         (khtml::Selection::modifyMovingRightForward): Fixed by juggling the position as the starting point for
3090         the next line position when necessary.
3091         * layout-tests/editing/selection/move-3875618-fix-expected.txt: Added.
3092         * layout-tests/editing/selection/move-3875618-fix.html: Added.
3093         * layout-tests/editing/selection/move-3875641-fix-expected.txt: Added.
3094         * layout-tests/editing/selection/move-3875641-fix.html: Added.
3095
3096 2004-11-11  Ken Kocienda  <kocienda@apple.com>
3097
3098         Reviewed by John
3099
3100         Improved some function names, at John's urging. No changes to the
3101         functions themselves.
3102         
3103         canPerformSpecialCaseAllContentDelete() --> handleSpecialCaseAllContentDelete()
3104         canPerformSpecialCaseBRDelete() --> handleSpecialCaseBRDelete()
3105         performGeneralDelete() --> handleGeneralDelete()
3106
3107         * khtml/editing/htmlediting.cpp:
3108         (khtml::DeleteSelectionCommand::handleSpecialCaseAllContentDelete)
3109         (khtml::DeleteSelectionCommand::handleSpecialCaseBRDelete)
3110         (khtml::DeleteSelectionCommand::handleGeneralDelete)
3111         (khtml::DeleteSelectionCommand::doApply)
3112         * khtml/editing/htmlediting.h
3113
3114 2004-11-11  Ken Kocienda  <kocienda@apple.com>
3115
3116         Reviewed by John
3117         
3118         Updated some layout test results that changed as a result of my last checking.
3119         Added a new test that has been in my tree for a few days.
3120
3121         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt:
3122         * layout-tests/editing/deleting/delete-3800834-fix-expected.txt:
3123         * layout-tests/editing/inserting/insert-3851164-fix-expected.txt: Added.
3124         * layout-tests/editing/inserting/insert-3851164-fix.html: Added.
3125
3126 2004-11-11  Ken Kocienda  <kocienda@apple.com>
3127
3128         Reviewed by John
3129
3130         * khtml/editing/htmlediting.cpp:
3131         (khtml::debugNode): New debugging helper.
3132         (khtml::DeleteSelectionCommand::initializePositionData): No longer call obsoleted
3133         startPositionForDelete() and endPositionForDelete() functions. Just use the 
3134         m_selectionToDelete object to determine start and end positions for the delete.
3135         (khtml::DeleteSelectionCommand::canPerformSpecialCaseAllContentDelete): New
3136         function that creates a special case for deleting all the content in a root
3137         editable element.
3138         (khtml::DeleteSelectionCommand::doApply): Call canPerformSpecialCaseAllContentDelete()
3139         function before BR special case and the general case delete functions.
3140         * khtml/editing/htmlediting.h: Updated for changed functions.
3141
3142 2004-11-10  Kevin Decker  <kdecker@apple.com>
3143
3144         Reviewed by mjs.
3145         
3146         Fixed <rdar://problem/3875011> DOMNodeList::tryGet() performs unnecessary (and expensive) dom tree traversals. Improved a loop from 2-n-squared to just n-squared.  
3147
3148         * khtml/ecma/kjs_dom.cpp:
3149         (DOMNodeList::tryGet): Got rid of an unnecessary node traversal. 
3150
3151 2004-11-10  Ken Kocienda  <kocienda@apple.com>
3152
3153         Reviewed by Chris
3154
3155         * khtml/editing/htmlediting.cpp:
3156         (khtml::DeleteSelectionCommand::initializePositionData): Move position adjustments for
3157         smart delete from the two functions below to here. There was an unnecessary double 
3158         calculation of the leading and trailing whitespace positions. Also refined the trailing
3159         case so it only acts when the leading position is null (which seems to match TextEdit in
3160         my tests). Also removed some unnecessary copying of Position objects.
3161         (khtml::DeleteSelectionCommand::startPositionForDelete): Move out smart delete adjustment
3162         from here.
3163         (khtml::DeleteSelectionCommand::endPositionForDelete): Ditto.
3164
3165 2004-11-10  Ken Kocienda  <kocienda@apple.com>
3166
3167         Reviewed by Harrison
3168
3169         (khtml::DeleteSelectionCommand::performGeneralDelete): Add some more comments to
3170         make things more clear.
3171         * khtml/editing/selection.cpp:
3172         (khtml::Selection::toRange): Fixed the upstream and downstream calls so that the 
3173         resulting positions do not cross block boundaries. This was a bug and caused some
3174         delete problems when whole blocks were selected. I will be addressing that issue
3175         more fully in upcoming changes.
3176
3177 2004-11-10  Ken Kocienda  <kocienda@apple.com>
3178
3179         Reviewed by Harrison
3180
3181         Some cleanups and fixes in upstream and downstream functions. 
3182         
3183         Removed redundant checks for isBlockFlow() when calling enclosingBlockFlowElement(). 
3184         Blocks do not need to skip the call to enclosingBlockFlowElement() for fear that the 
3185         block's enclosing block will be returned. 
3186         
3187         Remove code from upstream that confined the serach to block boundaries outside of
3188         the code which runs in the StayInBlock case. This code was redundant, and caused
3189         incorrect results to be returned in the DoNotStayInBlock case.
3190         
3191         In downstream, the check for crossing into a new block should use the equivalentDeepPosition()
3192         node, not the the this pointer's node.
3193
3194         * khtml/xml/dom_position.cpp:
3195         (DOM::Position::upstream)
3196         (DOM::Position::downstream)
3197
3198 2004-11-09  David Hyatt  <hyatt@apple.com>
3199
3200         Fix for 3873234, Safari UI is unresponsive when parsing multiple HTML docs and 3873233, Safari hangs when
3201         loading large local files.
3202         
3203         Reviewed by mjs
3204
3205         * khtml/html/htmltokenizer.cpp:
3206         (khtml::HTMLTokenizer::HTMLTokenizer):
3207         (khtml::HTMLTokenizer::reset):
3208         (khtml::HTMLTokenizer::write):
3209         (khtml::HTMLTokenizer::stopped):
3210         (khtml::HTMLTokenizer::processingData):
3211         (khtml::HTMLTokenizer::continueProcessing):
3212         (khtml::HTMLTokenizer::timerEvent):
3213         (khtml::HTMLTokenizer::allDataProcessed):
3214         (khtml::HTMLTokenizer::end):
3215         (khtml::HTMLTokenizer::finish):
3216         (khtml::HTMLTokenizer::notifyFinished):
3217         * khtml/html/htmltokenizer.h:
3218         * khtml/khtml_part.cpp:
3219         (KHTMLPart::slotFinished):
3220         (KHTMLPart::end):
3221         (KHTMLPart::stop):
3222         * khtml/khtml_part.h:
3223         (KHTMLPart::tokenizerProcessedData):
3224         * khtml/khtmlview.cpp:
3225         * khtml/xml/dom_docimpl.cpp:
3226         * khtml/xml/xml_tokenizer.h:
3227         (khtml::Tokenizer::stopped):
3228         (khtml::Tokenizer::processingData):
3229         * kwq/KWQDateTime.h:
3230         * kwq/KWQDateTime.mm:
3231         (QDateTime::secsTo):
3232         (KWQUIEventTime::uiEventPending):
3233         * kwq/KWQKHTMLPart.h:
3234         * kwq/KWQKHTMLPart.mm:
3235         (KWQKHTMLPart::tokenizerProcessedData):
3236         * kwq/WebCoreBridge.h:
3237         * kwq/WebCoreBridge.mm:
3238         (-[WebCoreBridge stop]):
3239         (-[WebCoreBridge numPendingOrLoadingRequests]):
3240         (-[WebCoreBridge doneProcessingData]):
3241
3242 2004-11-09  David Harrison  <harrison@apple.com>
3243
3244         Reviewed by Ken Kocienda.
3245
3246                 <rdar://problem/3865837> Wrong text style after delete to start of document
3247                 
3248         * khtml/editing/htmlediting.cpp:
3249         (khtml::DeleteSelectionCommand::saveTypingStyleState):
3250         Sample computedStyle of m_selectionToDelete.start instead of m_downstreamStart.
3251
3252 2004-11-09  Richard Williamson   <rjw@apple.com>
3253
3254         Fixed <rdar://problem/3872440> NSTimer prematurely released.
3255
3256         Reviewed by Darin.
3257
3258         * kwq/KWQTimer.mm:
3259         (QTimer::fire):
3260         * kwq/KWQWidget.mm:
3261         (QWidget::paint):
3262
3263 2004-11-09  Chris Blumenberg  <cblu@apple.com>
3264
3265         Reviewed by vicki.
3266
3267         * WebCore.pbproj/project.pbxproj: explicitly link against libxml2.2.6.14.dylib since the version number has been bumped
3268
3269 2004-11-08  David Harrison  <harrison@apple.com>
3270
3271         Reviewed by Ken Kocienda.
3272
3273                 <rdar://problem/3865854> Deleting first line deletes all lines
3274                 
3275         * khtml/editing/htmlediting.cpp:
3276         (khtml::DeleteSelectionCommand::performGeneralDelete):
3277         Problem was that the code that deletes fully selected m_downstreamEnd.node() by deleting one
3278         of its ancestors, failed to end the loop that deletes all fully selected nodes.  Also,
3279         fixed this code to clear m_trailingWhitespaceValid.  Also removed dead m_endingPosition
3280         update because it is handled in calculateEndingPosition now.
3281         * layout-tests/editing/deleting/delete-3865854-fix-expected.txt: Added.
3282         * layout-tests/editing/deleting/delete-3865854-fix.html: Added.
3283
3284 2004-11-08  Ken Kocienda  <kocienda@apple.com>
3285
3286         Reviewed by Hyatt
3287
3288         * khtml/html/html_elementimpl.cpp:
3289         (HTMLElementImpl::createContextualFragment): Now takes flag to control whether comments
3290         are added to the DOM.
3291         * khtml/html/html_elementimpl.h: Ditto.
3292         * khtml/html/htmlparser.cpp:
3293         (KHTMLParser::KHTMLParser): Ditto.
3294         (KHTMLParser::getElement): Remove ifdef for comment processing. Replace with flag check.
3295         * khtml/html/htmlparser.h: Add flag to constructor so callers can request comment nodes.
3296         * khtml/html/htmltokenizer.cpp:
3297         (khtml::HTMLTokenizer::HTMLTokenizer): Add flag to constructor so callers can request comment nodes.
3298         (khtml::HTMLTokenizer::parseComment): Fix code to handle parsing out comment text correctly.
3299         There were a couple of indexing errors that resulted in the comment text containing part of the 
3300         comment markers.
3301         (khtml::HTMLTokenizer::processToken): Don't let token id be reset to ID_TEXT if token is a comment.
3302         * khtml/html/htmltokenizer.h:  Add flag to constructor so callers can request comment nodes.
3303
3304 2004-11-08  Chris Blumenberg  <cblu@apple.com>
3305
3306         Fixed: <rdar://problem/3870907> WebCore unnecessary links against JavaVM and Security
3307
3308         Reviewed by darin.
3309
3310         * WebCore.pbproj/project.pbxproj: stop unnecessary linking
3311         * khtml/html/html_objectimpl.h: don't unnecessarily include JavaVM header
3312         * kwq/KWQKHTMLPart.h: ditto
3313
3314 2004-11-08  Darin Adler  <darin@apple.com>
3315
3316         Reviewed by John.
3317
3318         - fixed <rdar://problem/3825966> 8A274 Safari crashes closing window: QTimer::fire() with MallocStackLogging and MallocScribble enabled
3319
3320         * kwq/KWQTimer.mm: (QTimer::fire): Re