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