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