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