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