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