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