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