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