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