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