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