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