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