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