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