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