05cafe491a8243d972f58b10278c0c11e22b28c3
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2004-08-31  Ken Kocienda  <kocienda@apple.com>
2
3         Reviewed by me
4
5         * layout-tests/editing/editing.js: Modified typeCharacterCommand so it can accept a character
6         as an argument.
7
8 2004-08-31  Ken Kocienda  <kocienda@apple.com>
9
10         Reviewed by Hyatt
11
12         Fix for these bugs:
13
14         <rdar://problem/3777629> REGRESSION (Mail): can't delete blank lines in quoted text in HTML mail replies
15         <rdar://problem/3780309> REGRESSION (Mail): can't delete past an empty span in a particular test case
16         <rdar://problem/3780315> REGRESSION (Mail): right arrow works incorrectly in a particular test case with an empty span
17         <rdar://problem/3780320> REGRESSION (Mail): left arrow works incorrectly in a particular test case with an empty span
18         <rdar://problem/3780336> REGRESSION (Mail): down arrow fails in a reduction of a Mail reply test case (seems to be inside a span)
19
20         * khtml/xml/dom_position.cpp:
21         (DOM::Position::upstream): If this position's node is a block, use it for the StayInBlock case, not the block's
22         enclosing block.
23         (DOM::Position::downstream): Ditto.
24         (DOM::Position::inRenderedContent): Refine the case for non-text nodes. This was erroneously returning true
25         for any empty element (like <span></span>).
26         * khtml/xml/dom_positioniterator.cpp: Change the following four functions to consider all nodes, not just
27         leaves of the DOM tree. This is a step towards making this iteration less cranky and unpredictable, and
28         was necessary to do now to keep the inRenderedContent() change above from breaking editign layout tests.
29         (DOM::PositionIterator::peekPrevious)
30         (DOM::PositionIterator::peekNext)
31         (DOM::PositionIterator::atStart)
32         (DOM::PositionIterator::atEnd)
33         * kwq/KWQKHTMLPart.mm:
34         (KWQKHTMLPart::fontForCurrentPosition): Check that the position being checked is an element and that the
35         element is in rendered content. I ran across some null-check failures while I was coding this fix, and
36         the additions seem prudent.
37         
38         Updated these layout tests with new results.
39         
40         * layout-tests/editing/deleting/delete-3608430-fix-expected.txt:
41         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt:
42         * layout-tests/editing/deleting/delete-block-contents-001-expected.txt:
43         * layout-tests/editing/deleting/delete-block-contents-002-expected.txt:
44         * layout-tests/editing/deleting/delete-block-contents-003-expected.txt:
45         * layout-tests/editing/deleting/delete-image-004-expected.txt:
46         * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt:
47         * layout-tests/editing/editing.js:
48         * layout-tests/editing/execCommand/boldSelection-expected.txt:
49         * layout-tests/editing/execCommand/italicizeByCharacter-expected.txt:
50         * layout-tests/editing/execCommand/modifyForeColorByCharacter-expected.txt:
51         * layout-tests/editing/execCommand/print-expected.txt:
52         * layout-tests/editing/execCommand/selectAll-expected.txt:
53         * layout-tests/editing/selection/extend-by-character-002-expected.txt:
54         * layout-tests/editing/selection/extend-by-character-004-expected.txt:
55         * layout-tests/editing/selection/extend-by-character-005-expected.txt:
56         * layout-tests/editing/selection/extend-by-character-006-expected.txt:
57         * layout-tests/editing/selection/select-all-001-expected.txt:
58         * layout-tests/editing/selection/select-all-002-expected.txt:
59         * layout-tests/editing/selection/select-all-003-expected.txt:
60
61 2004-08-30  Darin Adler  <darin@apple.com>
62
63         Reviewed by John.
64
65         - fixed <rdar://problem/3637519> REGRESSION (125-128): unrepro crash in QListBox::sizeForNumberOfLines at istweb.apple.com
66
67         * kwq/KWQListBox.h: Added a clearCachedTextRenderers function.
68         * kwq/KWQListBox.mm:
69         (itemTextRenderer): Change to use globals that are outside the function, and added retain calls.
70         (groupLabelTextRenderer): Ditto.
71         (QListBox::clearCachedTextRenderers): Release global text renderers and nil out the globals.
72
73         * kwq/WebCoreBridge.h: Removed updateAllViews; not needed any more.
74         * kwq/WebCoreBridge.mm: Ditto.
75
76         * kwq/WebCoreTextRendererFactory.h: Added a clearCaches method.
77         * kwq/WebCoreTextRendererFactory.mm:
78         (-[WebCoreTextRendererFactory clearCaches]): Added. Tells all the views to repaint after clearing the cached
79         text renderers from KWQListBox. To be more elegant, we could generalize the KWQListBox trick, but for now why bother?
80
81         * kwq/WebCoreTextRendererFactory.m: Removed. I needed to put some C++ code in here, so changed the extension to .mm.
82         * WebCore.pbproj/project.pbxproj: Removed WebCoreTextRendererFactory.m, and added WebCoreTextRendererFactory.mm.
83
84 2004-08-30  Darin Adler  <darin@apple.com>
85
86         Reviewed by John.
87
88         - fixed <rdar://problem/3528538> can paste a Return character into the Search field at amazon.com, other browsers won't
89
90         * kwq/KWQTextField.mm: (-[KWQTextFieldController controlTextDidChange:]):
91         Truncate text before the first line break.
92
93 2004-08-30  Darin Adler  <darin@apple.com>
94
95         * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertOneChunkUsingTEC):
96         Added some more assertions I used to track down what looks like a TEC bug.
97
98 2004-08-30  Darin Adler  <darin@apple.com>
99
100         Reviewed by Ken.
101
102         - fixed <rdar://problem/3779122> No accesskey support on LABEL element
103
104         * khtml/html/html_formimpl.h: Change type of m_currValue to DOMString. Should have been done
105         as part of my form data check-in, but harmless to do now. Add accessKeyAction function for
106         HTMLLabelElementImpl.
107         * khtml/html/html_formimpl.cpp:
108         (DOM::HTMLButtonElementImpl::parseHTMLAttribute): Remove conversion of DOMString to QString
109         for m_currValue.
110         (DOM::HTMLLabelElementImpl::formElement): If there's no "for" attribute, search children for
111         the first control.
112         (DOM::HTMLLabelElementImpl::accessKeyAction): Forward the accesskey action to the formElement.
113
114 2004-08-30  Darin Adler  <darin@apple.com>
115
116         Reviewed by Dave.
117
118         - fixed <rdar://problem/3303968> final newline character omitted from <textarea> when parsing a new page
119
120         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::processListing): Handle newline pending
121         cases as well as space and tab pending spaces at the end of this function. This seems right for
122         both scripts and text areas; it's not clear why omittiing the LF is ever needed. Tested by running
123         all the layout tests; no regressions.
124
125         - fixed <rdar://problem/3552736> word wrapped text fields that blur/focus when you type move the insertion point strangely (vtext.com)
126
127         * khtml/rendering/render_form.cpp: (RenderTextArea::updateFromElement): Call text() instead of
128         calling widget->text() directly. This prevents this function from running in cases where the
129         text didn't really change for text areas in wrap mode.
130
131 2004-08-30  Darin Adler  <darin@apple.com>
132
133         Reviewed by Dave.
134
135         - got rid of ERROR message when running layout tests by implementing text-transform in computed style
136
137         * khtml/css/css_computedstyle.cpp:
138         (DOM::numberAsString): Added. Helper that returns "1" rather then "1.0" for integer values.
139         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Fixed use of tabs instead of
140         spaces. Fixed switch statements so they don't use default so we get errors if we leave
141         a case out. Changed callers to use numberAsString instead of QString::number. Added implementation
142         of CSS_PROP_TEXT_TRANSFORM. Added code to prevent falling through to next property when no item
143         in a switch statement matches.
144
145 2004-08-30  Darin Adler  <darin@apple.com>
146
147         Reviewed by Chris.
148
149         - did work to prepare for uploading files incrementally when submitting forms
150
151         * khtml/misc/formdata.h: Added. Class for holding form data inside WebCore.
152         * khtml/misc/formdata.cpp: Added.
153
154         * khtml/html/html_formimpl.h: Added the FormDataList type, changed the formData function parameters
155         and made it private, renamed the encoding method to appendFormData and changed the parameters around.
156         * khtml/html/html_formimpl.cpp:
157         (DOM::FormDataList): Added. Class that replaces the old use of QValueList<QCString> for form data.
158         Later we'll change it to accomodate filenames too.
159         (DOM::HTMLFormElementImpl::formData): Changed code to use FormDataList intsead of the old encodingList.
160         Also changed to return the "OK" result as the function result and put the form data into something
161         passed as an "out" parameter; the old way was the other way around.
162         (DOM::HTMLFormElementImpl::submit): Change to use FormData rather than a QByteArray when getting the
163         form data to submit.
164         (DOM::HTMLButtonElementImpl::appendFormData): Rename from encoding, and use the new appendData function
165         instead of the old way of doing += to put data on the list.
166         (DOM::HTMLInputElementImpl::appendFormData): Ditto.
167         (DOM::HTMLSelectElementImpl::appendFormData): Ditto.
168         (DOM::HTMLKeygenElementImpl::appendFormData): Ditto.
169         (DOM::HTMLTextAreaElementImpl::appendFormData): Ditto.
170         (DOM::FormDataList::FormDataList): Added.
171         (DOM::FormDataList::appendString): Added.
172         (DOM::FormDataList::begin): Added.
173         (DOM::FormDataList::end): Added.
174
175         * khtml/khtml_part.h: Changed the type of the submitForm parameter to FormData instead of QByteArray.
176         * khtml/khtmlpart_p.h: Changed the type of the submitFormData data member to FormData instead of QByteArray.
177         * khtml/khtml_part.cpp: (KHTMLPart::submitForm): Called the new flattenToString function in all the
178         code that handles mailto forms. Called the new flatten function in the non-Apple code path.
179
180         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::submitForm): Pass NSArray for form data instead of NSData.
181
182         * kwq/KWQKJob.h: Use FormData instead of QByteArray. A couple other small cleanups.
183         * kwq/KWQKJobClasses.h: Ditto.
184         * kwq/KWQKJobClasses.mm:
185         (KIO::TransferJobPrivate::TransferJobPrivate): Ditto.
186         (KIO::TransferJob::TransferJob): Ditto.
187         (KIO::TransferJob::postData): Ditto.
188         * kwq/KWQKPartsBrowserExtension.h: Ditto.
189         * kwq/KWQLoader.mm:
190         (KWQServeRequest): Ditto.
191         (KWQServeSynchronousRequest): Ditto.
192
193         * kwq/KWQFormData.h: Added. A function to convert KHTML form data into an NSArray for communication
194         with the WebKit side.
195         * kwq/KWQFormData.mm: Added.
196
197         * kwq/WebCoreBridge.h: Pass NSArray instead of NSData for form data.
198
199         * kwq/KWQArrayImpl.h: Added a detach member function. The old version would do unnecessary work when
200         detach was called on an array that had exactly one reference.
201         * kwq/KWQArrayImpl.mm: (KWQArrayImpl::detach): Added.
202         * kwq/KWQMemArray.h: (QMemArray::detach): Call through to KWQArrayImpl.
203
204         * kwq/KWQValueList.h:
205         (QValueList::first): Added overload for non-const.
206         (QValueList::last): Ditto.
207
208         * ForwardingHeaders/misc/formdata.h: Added.
209         * WebCore.pbproj/project.pbxproj: Added formdata.h, formdata.cpp, KWQFormData.h, and KWQFormData.cpp.
210
211         * WebCore-tests.exp: Updated for changes to QValueList, and re-sorted.
212         * WebCore-combined.exp: Regenerated.
213
214 2004-08-30  Darin Adler  <darin@apple.com>
215
216         Reviewed by Ken.
217
218         - improved multiple submit logic in preparation for making command-click on a form
219           button load a form in another frame
220
221         * kwq/KWQKHTMLPart.h: Added const to a bunch of member functions for cleanup.
222         Added prepareForUserAction member function.
223         * kwq/KWQKHTMLPart.mm:
224         (KWQKHTMLPart::submitForm): Simplified logic and removed special case for "http" and "https".
225         (KWQKHTMLPart::renderer): Added const.
226         (KWQKHTMLPart::keyEvent): Added call to prepareForUserAction.
227         (KWQKHTMLPart::lastEventIsMouseUp): Added const.
228         (KWQKHTMLPart::eventMayStartDrag): Added const.
229         (KWQKHTMLPart::mouseDown): Added call to prepareForUserAction.
230         (KWQKHTMLPart::overrideMediaType): Added const.
231         (KWQKHTMLPart::canGoBackOrForward): Added const.
232         (KWQKHTMLPart::prepareForUserAction): Added. Clears _submittedFormURL.
233         * kwq/KWQAccObject.mm: (-[KWQAccObject accessibilityPerformAction:]): Added call to prepareForUserAction.
234
235 2004-08-30  Ken Kocienda  <kocienda@apple.com>
236
237         Reviewed by John
238
239         Fix for this bug:
240
241         <rdar://problem/3762231> REGRESSION (Mail): tab key inserts a single space
242
243         * khtml/editing/htmlediting_impl.cpp:
244         (khtml::isTab): New helper. Checks a DOMString to see if it is one character and
245         that character is a tab.
246         (khtml::InputTextCommandImpl::execute): Trap tabs before handling insertion of
247         other kinds of whitespace. Treat a tab like four spaces. Rearrange the code to
248         update the ending position after the text insertion to cover the new tab case
249         where the amount of advance is not the same as the number of character in the
250         passed-in DOMString (i.e. tabs expand to four characters).
251         
252 2004-08-27  Ken Kocienda  <kocienda@apple.com>
253
254         Reviewed by Chris
255
256         Fix for this bug:
257         
258         <rdar://problem/3779706> plain text on pasteboard loses indentation when pasted into Blot
259
260         * kwq/KWQKHTMLPart.h:
261         * kwq/KWQKHTMLPart.mm:
262         (KWQKHTMLPart::documentFragmentWithText): New function that takes over the code from
263         KWQKHTMLPart and improves it to handle converting tabs and spaces for suitable
264         display in HTML.
265         * kwq/WebCoreBridge.mm:
266         (-[WebCoreBridge documentFragmentWithText:]): Move smarts from here to KWQKHTMLPart.
267
268 2004-08-27  Maciej Stachowiak  <mjs@apple.com>
269
270         Reviewed by John.
271
272         <rdar://problem/3778314> REGRESSION: Can't proceed to survey questions on Lominger's Apple website
273
274         Because we will stop parsing when there is a pending redirection,
275         avoid setting one if no navigation would actually take place
276         because the number of steps is out of range.
277         
278         * khtml/khtml_part.cpp:
279         (KHTMLPart::scheduleHistoryNavigation):
280         * kwq/KWQKHTMLPart.h:
281         * kwq/KWQKHTMLPart.mm:
282         (KWQKHTMLPart::canGoBackOrForward):
283         * kwq/KWQKPartsBrowserInterface.h:
284         * kwq/WebCoreBridge.h:
285
286 2004-08-27  Maciej Stachowiak  <mjs@apple.com>
287
288         Reviewed by Chris.
289
290         - fixed <rdar://problem/3778043> REGRESSION: innerHTML is broken, breaks automated iBench testing
291         - also fixed outerHTML, which would spill over past the node for whch it was supposed to get HTML
292         
293         * khtml/html/html_elementimpl.cpp:
294         (HTMLElementImpl::outerHTML):
295         * khtml/xml/dom2_rangeimpl.cpp:
296         (DOM::RangeImpl::toHTML):
297         * khtml/xml/dom_nodeimpl.cpp:
298         (NodeImpl::toHTML):
299         (NodeImpl::recursive_toString):
300         (NodeImpl::recursive_toHTML):
301         * khtml/xml/dom_nodeimpl.h:
302         * kwq/WebCoreBridge.mm:
303         (-[WebCoreBridge markupStringFromNode:nodes:]):
304
305         - added new layout tests to cover the problems I fixed
306         
307         * layout-tests/fast/innerHTML/001-expected.txt: Added.
308         * layout-tests/fast/innerHTML/001.html: Added.
309         * layout-tests/fast/innerHTML/002-expected.txt: Added.
310         * layout-tests/fast/innerHTML/002.html: Added.
311         * layout-tests/fast/innerHTML/003-expected.txt: Added.
312         * layout-tests/fast/innerHTML/003.html: Added.
313
314 2004-08-27  David Hyatt  <hyatt@apple.com>
315
316         Fix for 3739239, getComputedStyle of top not being implemented broke a site that checked for it.
317         
318         Reviewed by kocienda
319
320         * khtml/css/css_computedstyle.cpp:
321         (DOM::valueForLength):
322         (DOM::CSSComputedStyleDeclarationImpl::getPositionOffsetValue):
323         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
324         * khtml/css/css_computedstyle.h:
325
326 2004-08-27  John Sullivan  <sullivan@apple.com>
327
328         Reviewed by Ken.
329         
330         Tweaked option-tab handling to match good suggestion from Tim Omernick of OmniWeb
331
332         * kwq/KWQTextArea.mm:
333         removed override of textDidChange:
334         (-[KWQTextAreaTextView keyDown:]):
335         moved option-tab handling that was in textDidChange to here. Rearranged existing code
336         a little for clarity.
337
338 2004-08-27  Adele Amchan  <adele@apple.com>
339
340         Reviewed by Darin.
341
342         Fix for:
343         <rdar://problem/3689949> Provide contentWindow access on an iframe
344
345         * khtml/ecma/kjs_html.cpp:
346         (KJS::HTMLElement::getValueProperty): added cases for contentWindow for frames and iframes
347         * khtml/ecma/kjs_html.h: added contentWindow to the list of properties for frames and iframes
348         * khtml/ecma/kjs_html.lut.h: regenerated file
349         * khtml/html/html_baseimpl.cpp:
350         (HTMLFrameElementImpl::contentPart): factored out old contentDocument code to return KHTMLPart for frame
351         (HTMLFrameElementImpl::contentDocument): now just gets the contentDocument from contentPart
352         * khtml/html/html_baseimpl.h: added declaration for contentPart
353
354 === Safari-161 ===
355
356 2004-08-27  Ken Kocienda  <kocienda@apple.com>
357
358         Reviewed by Darin
359
360         Fix for this bug:
361         
362         <rdar://problem/3778059> Odd behaviour when editing between blockquote elements
363
364         * khtml/editing/htmlediting_impl.cpp:
365         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): This function should not move
366         the selection out of the current block, ever. This is exactly what the bug reported.
367         What was I thinking? Now, the code looks at the passed-in position and then the equivalent
368         upstream and downstream positions to see if the selection can be placed there after the
369         delete, and settles on the block containing the passed-in position as a fallback.
370         * layout-tests/editing/inserting/insert-3778059-fix-expected.txt: Added.
371         * layout-tests/editing/inserting/insert-3778059-fix.html: Added.
372
373 2004-08-26  Richard Williamson   <rjw@apple.com>
374
375         Boiler plate for canvas gradients and patterns.
376
377         Reviewed by John.
378
379         * khtml/ecma/kjs_html.cpp:
380         (KJS::Context2DFunction::tryCall):
381         (Context2D::tryPut):
382         (Context2D::~Context2D):
383         (KJS::GradientFunction::tryCall):
384         (Gradient::Gradient):
385         (Gradient::tryGet):
386         (Gradient::getValueProperty):
387         (Gradient::tryPut):
388         (Gradient::putValue):
389         (Gradient::~Gradient):
390         (ImagePattern::ImagePattern):
391         (ImagePattern::tryGet):
392         (ImagePattern::getValueProperty):
393         (ImagePattern::tryPut):
394         (ImagePattern::putValue):
395         (ImagePattern::~ImagePattern):
396         * khtml/ecma/kjs_html.h:
397         (KJS::Gradient::toBoolean):
398         (KJS::Gradient::classInfo):
399         (KJS::Gradient::):
400         (KJS::ImagePattern::toBoolean):
401         (KJS::ImagePattern::classInfo):
402         (KJS::ImagePattern::):
403         * khtml/ecma/kjs_html.lut.h:
404         (KJS::):
405
406 2004-08-26  Ken Kocienda  <kocienda@apple.com>
407
408         Reviewed by John
409
410         Fix for this bug:
411         
412         <rdar://problem/3777899> REGRESSION (Mail): only first of several misspelled words separated by 
413         carriage returns is marked
414
415         * khtml/editing/htmlediting_impl.cpp:
416         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): Give the spellchecker a slightly larger 
417         selection to work with while typing. This should preclude bugs of this type.
418
419 2004-08-26  Ken Kocienda  <kocienda@apple.com>
420
421         Reviewed by Chris
422         
423         Fix for this bug:
424         
425         <rdar://problem/3777804> Deleting all content in a document can result in giant tall-as-window insertion point
426
427         * khtml/rendering/render_box.cpp:
428         (RenderBox::caretPos): Always use the font height for calculating the caret height in 
429         non-replaced elements (like blocks), rather than the height of the box.
430
431 2004-08-26  Ken Kocienda  <kocienda@apple.com>
432
433         Silly me. Forgot to add this file before.
434
435         * layout-tests/editing/inserting/insert-3775316-fix-expected.txt: Added.
436
437 2004-08-26  David Hyatt  <hyatt@apple.com>
438
439         Fix for 3777172, crash from nested colgroup.  Don't allow nested table sections or col groups.
440         
441         Reviewed by darin
442
443         * khtml/html/htmlparser.cpp:
444         (KHTMLParser::insertNode):
445
446 2004-08-26  Ken Kocienda  <kocienda@apple.com>
447
448         Reviewed by Hyatt
449
450         Fix for this bug:
451         
452         <rdar://problem/3775316> document sprouts an extra newline character at the end
453
454         * khtml/editing/htmlediting_impl.cpp:
455         (khtml::InputNewlineCommandImpl::doApply): There was in insufficient check
456         in the code which adds extra BR elements at the ends of blocks, which we do 
457         to work around the fact that BR elements, when they are the last element in a
458         block, do not render. Now the code sees whether there already is one of these
459         extra BR's in the document and won't add and "extra" extra. 
460         * layout-tests/editing/inserting/insert-3775316-fix.html: Added.
461
462 2004-08-26  David Hyatt  <hyatt@apple.com>
463
464         Fix for 3710721 and 3504114, crashes because of bad ownership model for list markers.
465         
466         Reviewed by mjs
467
468         * khtml/rendering/render_container.cpp:
469         (RenderContainer::detach):
470         * khtml/rendering/render_list.cpp:
471         (RenderListItem::setStyle):
472         (RenderListItem::detach):
473         (RenderListItem::updateMarkerLocation):
474         * khtml/rendering/render_list.h:
475
476 2004-08-26  Ken Kocienda  <kocienda@apple.com>
477
478         Reviewed by John
479
480         * khtml/editing/htmlediting_impl.cpp:
481         (khtml::ApplyStyleCommandImpl::doApply): Remove the StayInBlock modifier from the
482         call to upstream when passing the start position to removeStyle(). This makes the
483         start position sufficiently upstream so that all relevant style tags are removed.
484         (khtml::ApplyStyleCommandImpl::removeStyle): Pass the start position to nodeFullySelected.
485         (khtml::ApplyStyleCommandImpl::nodeFullySelected): Change interface so start position
486         for calculation is passed in, rather than recalculating it every time.
487         * khtml/editing/htmlediting_impl.h: nodeFullySelected interface change.
488         * khtml/xml/dom_position.h: Add a comment about the working of upstream() and
489         downstream().
490
491 2004-08-26  Ken Kocienda  <kocienda@apple.com>
492
493         Fix garbled contenteditable attribute. I must have checked
494         this in with a typo.
495
496         * layout-tests/editing/deleting/delete-3775172-fix.html
497
498 2004-08-25  Kevin Decker  <kdecker@apple.com>
499
500         Reviewed by John and Maciej.
501
502         - Fixes SAP bug <rdar://problem/3751295> Personalize link at the
503         top gives an error in the pop-up window. 
504
505         * khtml/ecma/kjs_window.cpp:
506         (WindowFunc::tryCall): Passes a referrer to KHTMLPart::begin() 
507
508 2004-08-25  Richard Williamson   <rjw@apple.com>
509
510         Updated to <canvas> API to match the spec.  (Still need
511         to implement gradients and patterns.)
512
513         Reviewed by Ken.
514
515         * khtml/ecma/kjs_html.cpp:
516         (KJS::Context2DFunction::tryCall):
517         (Context2D::getValueProperty):
518         (Context2D::drawingContext):
519         (Context2D::colorRefFromValue):
520         (Context2D::colorFromValue):
521         (Context2D::setShadow):
522         (Context2D::putValue):
523         (Context2D::save):
524         (Context2D::restore):
525         (Context2D::Context2D):
526         * khtml/ecma/kjs_html.h:
527         (KJS::Context2D::):
528         * khtml/ecma/kjs_html.lut.h:
529         (KJS::):
530
531 2004-08-25  Ken Kocienda  <kocienda@apple.com>
532
533         * layout-tests/editing/deleting/delete-3775172-fix.html: Wrong version of test checked in
534         a moment ago.
535
536 2004-08-25  Ken Kocienda  <kocienda@apple.com>
537
538         Added test case for <rdar://problem/3775172> Blot crashes after typing one character then deleting it
539
540         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt: Added.
541         * layout-tests/editing/deleting/delete-3775172-fix.html: Added.
542
543 2004-08-25  Ken Kocienda  <kocienda@apple.com>
544
545         * layout-tests/editing/style/style-3690704-fix-expected.txt: Fewer styling spans added
546         on this test as a result of the previously-checked-in fix.
547
548 2004-08-25  Ken Kocienda  <kocienda@apple.com>
549
550         Reviewed by John
551
552         Fix for this bug:
553         
554         <rdar://problem/3775214> BR elements cause unnecessary spans to be added when applying style
555
556         * khtml/editing/htmlediting_impl.cpp:
557         (khtml::ApplyStyleCommandImpl::doApply): BR elements can be grouped more liberally with other nodes
558         now in the iteration when attempting to find nodes that can be styled together with one span.
559         * layout-tests/editing/style/style-3690704-fix-expected.txt: Updated with new results after
560         bug fix.
561
562 2004-08-25  Ken Kocienda  <kocienda@apple.com>
563
564         Reviewed by John
565
566         Fix for this bug:
567         
568         <rdar://problem/3775172> Blot crashes after typing one character then deleting it
569
570         * khtml/css/css_computedstyle.cpp:
571         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Bail early if the element
572         being queried does not have a renderer or that renderer does not have a style. Prevents
573         a crash in the cases that it does not.
574         * khtml/editing/htmlediting_impl.cpp:
575         (khtml::DeleteSelectionCommandImpl::doApply): Add one more case to deleting when the
576         start and end nodes are different. If the downstream end node is the last node in the
577         block, then it may need to be deleted completely. Before this patch, the code
578         erroneously assumed that any deletion in this node had to be trimming of a text node.
579         This was asserted, and the description in 3775172 shows a simple case where this assertion
580         does not hold. The additional case and associated checks now make it all better.
581         * layout-tests/editing/deleting/delete-3775172-fix.html: Added.
582
583 2004-08-25  David Hyatt  <hyatt@apple.com>
584
585         Fix for 3365086, large tables crash Safari.  Make sure to use ints rather than shorts for row and column
586         counts.  Also fix a pathological array resize scenario for tables as rows are added.
587         
588         Reviewed by darin
589
590         * khtml/rendering/render_table.cpp:
591         (RenderTable::splitColumn):
592         (RenderTable::appendColumn):
593         (RenderTableSection::RenderTableSection):
594         (RenderTableSection::ensureRows):
595         (RenderTableSection::setCellWidths):
596         (RenderTableSection::calcRowHeight):
597         (RenderTableSection::layoutRows):
598         (RenderTableSection::paint):
599         (RenderTableSection::recalcCells):
600         (RenderTableSection::clearGrid):
601         * khtml/rendering/render_table.h:
602         (khtml::RenderTableSection::numRows):
603
604 2004-08-25  David Hyatt  <hyatt@apple.com>
605
606         To save memory in the common case, move the margin***Collapse variables into the CSS3 struct instead of
607         bloating the surround struct.
608         
609         * khtml/rendering/render_style.cpp:
610         (StyleSurroundData::StyleSurroundData):
611         (StyleSurroundData::operator==):
612         (marginBottomCollapse):
613         (StyleCSS3NonInheritedData::operator==):
614         (RenderStyle::diff):
615         * khtml/rendering/render_style.h:
616         (khtml::RenderStyle::marginTopCollapse):
617         (khtml::RenderStyle::marginBottomCollapse):
618         (khtml::RenderStyle::setMarginTopCollapse):
619         (khtml::RenderStyle::setMarginBottomCollapse):
620
621 2004-08-25  David Hyatt  <hyatt@apple.com>
622
623         Fix the "extra space in TypePad blogs" Emerson problem by adding the ability to collapse away margins.
624         Also added support for explicitly preventing margin collapsing.
625         
626         Reviewed by mjs
627
628         * khtml/css/cssparser.cpp:
629         (CSSParser::parseValue):
630         * khtml/css/cssproperties.c:
631         (hash_prop):
632         (findProp):
633         * khtml/css/cssproperties.h:
634         * khtml/css/cssproperties.in:
635         * khtml/css/cssstyleselector.cpp:
636         (khtml::CSSStyleSelector::applyProperty):
637         * khtml/css/cssvalues.c:
638         (hash_val):
639         (findValue):
640         * khtml/css/cssvalues.h:
641         * khtml/css/cssvalues.in:
642         * khtml/rendering/render_block.cpp:
643         (khtml::RenderBlock::isSelfCollapsingBlock):
644         (khtml::RenderBlock::layoutBlockChildren):
645         * khtml/rendering/render_style.cpp:
646         (StyleSurroundData::StyleSurroundData):
647         (StyleSurroundData::operator==):
648         (RenderStyle::diff):
649         * khtml/rendering/render_style.h:
650         (khtml::):
651         (khtml::RenderStyle::marginTopCollapse):
652         (khtml::RenderStyle::marginBottomCollapse):
653         (khtml::RenderStyle::setMarginTopCollapse):
654         (khtml::RenderStyle::setMarginBottomCollapse):
655         (khtml::RenderStyle::initialMarginTopCollapse):
656         (khtml::RenderStyle::initialMarginBottomCollapse):
657
658 2004-08-24  Ken Kocienda  <kocienda@apple.com>
659
660         Reviewed by Hyatt
661
662         Improved the ability of the bridge to report selection state.     
663
664         * khtml/editing/htmlediting_impl.cpp:
665         (khtml::TypingCommandImpl::doApply): Bail when there is no selection.
666         * kwq/WebCoreBridge.h: Added an enum to report selection state. These constants
667         mirror those used in DOM::Selection.
668         * kwq/WebCoreBridge.mm:
669         (-[WebCoreBridge selectionState]): Replacement for haveSelection. Returns a value 
670         from an enum telling whether the selection is in the None, Caret, or Range state, 
671         rather than just true/false for the Range state as it did before.
672
673 2004-08-24  David Hyatt  <hyatt@apple.com>
674
675         Make sure the ifdef XSLT is present for Panther.
676         
677         * khtml/xml/xml_tokenizer.cpp:
678         (khtml::XMLTokenizer::insertErrorMessageBlock):
679
680 2004-08-24  David Hyatt  <hyatt@apple.com>
681
682         Polish the XML error message so that it indicates when a document is the result of an XSL transformation
683         when reporting line/col #s.
684         
685         * khtml/xml/dom_docimpl.cpp:
686         (DocumentImpl::applyXSLTransform):
687         * khtml/xml/xml_tokenizer.cpp:
688         (khtml::XMLTokenizer::insertErrorMessageBlock):
689         * khtml/xsl/xslt_processorimpl.cpp:
690         (DOM::XSLTProcessorImpl::documentFromXMLDocPtr):
691
692 2004-08-24  David Hyatt  <hyatt@apple.com>
693
694         Add support for Atom and RSS MIME types to the set of XML types.
695         
696         Reviewed by rjw
697
698         * khtml/ecma/xmlhttprequest.cpp:
699         (KJS::XMLHttpRequest::getValueProperty):
700         * khtml/khtml_part.cpp:
701         (KHTMLPart::begin):
702         * khtml/misc/loader.cpp:
703         (CachedXSLStyleSheet::CachedXSLStyleSheet):
704         (CachedXBLDocument::CachedXBLDocument):
705         * khtml/xml/dom_xmlimpl.cpp:
706         (DOM::ProcessingInstructionImpl::checkStyleSheet):
707
708 2004-08-24  Chris Blumenberg  <cblu@apple.com>
709
710         Fixed: <rdar://problem/3746447> hang loading geocities.com/cinemaorchestra
711
712         Reviewed by john.
713
714         * khtml/rendering/render_frames.cpp:
715         (RenderPartObject::updateWidget): do nothing if the src URL is the same as the part's URL
716
717 2004-08-24  Ken Kocienda  <kocienda@apple.com>
718
719         Reviewed by Chris
720
721         Fix for this bug:
722         
723         <rdar://problem/3773564> REGRESSION (125-159): Code to remove HTML styles before applying new HTML styles is broken
724
725         * khtml/editing/htmlediting_impl.cpp:
726         (khtml::ApplyStyleCommandImpl::doApply): Unrelated change to constrain downstream position of selection
727         start to block boundaries. This is a new feature of the downstream function and I missed this usage
728         when adding the feature.
729         (khtml::ApplyStyleCommandImpl::removeCSSStyle): There once was code to remove style attributes from spans
730         which became emptied as a result of removing CSS properties, but I do not see such code in the 
731         tree any more. A quick review of the ChangeLog did not reveal anything. I do not remember making such
732         a change myself...
733         
734         In any case, I have restored logic to prune out styling spans we insert if the process of 
735         removing styles caused a span-plus-styles node to become emptied of markup which changes the style
736         of its contents. This fixes the bug.
737
738 2004-08-24  Ken Kocienda  <kocienda@apple.com>
739
740         Reviewed by John
741
742         Fix for this bug:
743         
744         <rdar://problem/3765535> paste of text with newlines into text with newlines results in broken doc, crash
745         
746         This is a "belt and suspenders" fix. The issue is with the paste code path which was creating
747         zero-length DOM text nodes when a selection being pasted ended with a newline. The normal
748         code path for parsing HTML does not allow this, but the code to convert newlines to BR's 
749         during paste was creating such nodes. This will no longer happen.
750         
751         In the case where someone inserts such zero-length nodes using the DOM API, the render tree
752         will no longer create render objects for these nodes, and it was these empty render text 
753         nodes that was confusing the code doing editing navigation.
754
755         * khtml/xml/dom_textimpl.cpp:
756         (CharacterDataImpl::rendererIsNeeded): Do not create renderers for zero-length DOM text nodes.
757         * khtml/xml/dom_textimpl.h:
758         * kwq/WebCoreBridge.mm:
759         (-[WebCoreBridge documentFragmentWithText:]): Do not insert zero-length DOM text nodes as part
760         of converting line-end sequences to BR's.
761
762 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
763
764         Reviewed by Richard.
765
766         - reduce cost of innerHTML from O(N^2) to O(N*D) where N is the
767         number of nodes and D is the maximum DOM tree depth.
768         
769         * khtml/xml/dom_nodeimpl.cpp:
770         (NodeImpl::recursive_toString): New static helper method for
771         recursive_toHTML - this is recursive for children but iterative
772         for siblings.
773         (NodeImpl::recursive_toHTML): Call the helper with this as the
774         first argument.
775         * khtml/xml/dom_nodeimpl.h:
776
777 2004-08-23  David Hyatt  <hyatt@apple.com>
778
779         Fix for 3558334. 
780
781         Init the encodedURL explicitly for CSSStyleSelectors.  Construction time was too early to be passing in the
782         document m_url, since it doesn't get set during construction.
783
784         Fix for 3769643, crash on vancouverblast.org.
785         
786         Reviewed by darin
787
788         * khtml/css/cssstyleselector.cpp:
789         (khtml::CSSStyleSelector::CSSStyleSelector):
790         (khtml::CSSStyleSelector::init):
791         (khtml::CSSStyleSelector::setEncodedURL):
792         * khtml/css/cssstyleselector.h:
793         * khtml/xml/dom_docimpl.cpp:
794         (DocumentImpl::DocumentImpl):
795         (DocumentImpl::setURL):
796         (DocumentImpl::recalcStyleSelector):
797         * khtml/xml/dom_docimpl.h:
798         (DOM::DocumentImpl::URL):
799
800 2004-08-23  Kevin Decker  <kdecker@apple.com>
801
802         Reviewed by Maciej.
803
804         - fixed rdar://problem/3681094> Crash in KJS::WindowFunc::tryCall       with application/xhtml+xml Content-Type
805         * khtml/ecma/kjs_window.cpp:
806         (WindowFunc::tryCall): since this is an xml document, we get the
807         domain from the xmlDocImpl(), not docImpl().
808
809 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
810
811         Reviewed by Darin.
812
813         <rdar://problem/3771426> assertion failed due to reentering dispatchImageLoadEventsNow
814         
815         * khtml/xml/dom_docimpl.cpp:
816         (DocumentImpl::dispatchImageLoadEventsNow): Avoid re-entering this
817         function, since it uses a data member for the copy of the list of events
818         to be dispatched.
819
820 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
821
822         Reviewed by Darin.
823
824         <rdar://problem/3770306> XMLHttpRequest does not honor character set encoding
825
826         * khtml/ecma/xmlhttprequest.cpp:
827         (KJS::XMLHttpRequest::slotData): Get encoding from the transfer job.
828         * kwq/KWQKJobClasses.h:
829         * kwq/KWQKJobClasses.mm:
830         (KIO::TransferJobPrivate::TransferJobPrivate): Added retrievedCharset
831         flag.
832         (KIO::TransferJob::retrieveCharset): New method, gets the charset
833         from the response.
834         (KIO::TransferJob::queryMetaData): Handle charset.
835         (KIO::TransferJob::emitReceivedResponse): Clear retreivedCharset flag.
836         * kwq/KWQLoader.h:
837         * kwq/KWQLoader.mm:
838         (KWQResponseTextEncodingName): New function, gets the encoding from the response.
839
840 2004-08-23  David Hyatt  <hyatt@apple.com>
841
842         Apply leo's fix to marquees.
843         
844         Reviewed by hyatt
845
846         * khtml/rendering/render_layer.cpp:
847         (Marquee::start):
848
849 2004-08-20  Darin Adler  <darin@apple.com>
850
851         Reviewed by Maciej.
852
853         - added an ascii() member function to DOMString and DOMStringImpl to help debugging
854
855         * khtml/dom/dom_string.h: Add ascii member function for debugging.
856         * khtml/dom/dom_string.cpp: (DOM::DOMString::ascii): Added. Calls through to DOMStringImpl::ascii.
857         * khtml/xml/dom_stringimpl.h: Add ascii member function for debugging.
858         * khtml/xml/dom_stringimpl.cpp: (DOM::DOMStringImpl::ascii): Added. Makes a new buffer and puts
859         a simple ASCII version in it. Maybe make it better about characters outside the 0x20-0x7E range
860         some day, but for now this is way better than what we had before.
861
862 2004-08-20  David Hyatt  <hyatt@apple.com>
863
864         Divorce the notion of a marquee being stopped from JS from the notion of being suspended by the back/forward cache.
865
866         * khtml/ecma/kjs_html.cpp:
867         (KJS::HTMLElementFunction::tryCall):
868         * khtml/rendering/render_layer.cpp:
869         (m_direction):
870         (Marquee::start):
871         (Marquee::stop):
872         (Marquee::updateMarqueePosition):
873         * khtml/rendering/render_layer.h:
874
875 2004-08-20  Richard Williamson   <rjw@apple.com>
876
877         Implemented new JNI abstraction.  We no longer invoke Java methods
878         directly with JNI, rather we call into the plugin.  This allows the
879         plugin to dispatch the call to the appropriate VM thread.  This
880         change should (will?) fix a whole class of threading related problems with
881         the Java VM.
882
883         Reviewed by Hyatt.
884
885         * kwq/KWQKHTMLPart.mm:
886         (KWQKHTMLPart::getAppletInstanceForView):
887         * kwq/WebCoreBridge.mm:
888         (rootForView):
889         (-[WebCoreBridge executionContextForView:]):
890
891 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
892
893         Reviewed by Darin.
894
895         More text paint cleanup. Separated the background and foreground
896         passes instead of doing a weird for loop thing. Eliminated
897         redundant if conditions. Added comments.
898
899         * khtml/rendering/render_text.cpp:
900         (RenderText::paint):
901
902 2004-08-19  Ken Kocienda  <kocienda@apple.com>
903
904         Reviewed by Darin
905
906         * khtml/css/css_computedstyle.cpp:
907         (DOM::): Changed CopyProperties constant to InheritableProperties. This reflects the
908         name change of copy() to copyInheritableProperties()
909         (DOM::CSSComputedStyleDeclarationImpl::copyInheritableProperties: Renamed from copy().
910         Now just copies those properties which can be inherited.
911         (DOM::CSSComputedStyleDeclarationImpl::diff): Add a couple null checks.
912         * khtml/css/css_computedstyle.h: copyInheritableProperties name change. No longer needs to be virtual.
913         * khtml/css/css_valueimpl.cpp: Removed unneeded copy() function from CSSStyleDeclarationImpl.
914         * khtml/css/css_valueimpl.h: Ditto.
915         * khtml/editing/htmlediting.cpp:
916         (khtml::EditCommand::typingStyle): Added.
917         (khtml::EditCommand::setTypingStyle): Added.
918         * khtml/editing/htmlediting.h:
919         * khtml/editing/htmlediting_impl.cpp:
920         (khtml::StyleChange::currentlyHasStyle): Fix leak of computed style used in this function.
921         (khtml::EditCommandImpl::EditCommandImpl): Initialize m_typingStyle.
922         (khtml::EditCommandImpl::~EditCommandImpl): Deref m_typingStyle.
923         (khtml::EditCommandImpl::assignTypingStyle): New helper used in setting typing style.
924         (khtml::EditCommandImpl::setTypingStyle): New setter.
925         (khtml::DeleteSelectionCommandImpl::doApply): Use new method for managing typing style.
926         * khtml/editing/htmlediting_impl.h:
927         (khtml::EditCommandImpl::typingStyle): New accessor.
928         * khtml/khtml_part.cpp:
929         (KHTMLPart::appliedEditing): Restores typing style from command after setting selection.
930         (KHTMLPart::applyStyle): Does a diff between the current style and the style of the caret.
931         * khtml/khtml_part.h:
932         * khtml/xml/dom_position.cpp:
933         (DOM::Position::computedStyle): Now returns a CSSComputedStyleDeclarationImpl instead of a plain
934         CSSStyleDeclarationImpl.
935         * khtml/xml/dom_position.h:
936         * layout-tests/editing/style/style-3681552-fix-002-expected.txt:
937
938 2004-08-20  Trey Matteson  <trey@apple.com>
939
940         3655407 - Editing: -complete: method unimplemented (WebKit editing API)
941
942         One new support routine here.
943
944         Reviewed by John
945
946         * kwq/WebCoreBridge.h:
947         * kwq/WebCoreBridge.mm:
948         (-[WebCoreBridge caretRectAtNode:offset:]):  New routine.
949         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
950         Fixed former misleading method name.
951
952 2004-08-20  Ken Kocienda  <kocienda@apple.com>
953
954         Reviewed by Trey
955
956         Fix for this bug:
957         
958         <rdar://problem/3768378> crash typing newline in Blot
959
960         * khtml/editing/htmlediting_impl.cpp:
961         (khtml::InputNewlineCommandImpl::doApply): Adding an assert in a recent change
962         showed up that inserting newlines that was not being handled correctly for the 
963         case described in the bug. I added a new case to handle inserting BR's when
964         at the caret max offset for a node, and this new code runs instead of the
965         fall-through case that should not have been running and triggered the assert.
966         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Regenerated results.
967         * layout-tests/editing/inserting/insert-br-case6-expected.txt: Added.
968         * layout-tests/editing/inserting/insert-br-case6.html: Added.
969
970 2004-08-20  Trey Matteson  <trey@apple.com>
971
972         Fixing: Spellchecker called once or twice for every char typed.
973
974         Reviewed by Ken
975
976         * khtml/khtml_part.cpp:
977         (KHTMLPart::setSelection):  Don't do any spell checking if we're typing (it's done
978         elsewhere, in markMisspellingsAfterTyping)
979  
980 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
981
982         Reviewed by John.
983
984         - fixed <rdar://problem/3549369> Crash at www.e1.ru in HTMLTokenizer::notifyFinished
985
986         Probably also fixed the following likely duplicates:
987
988         <rdar://problem/3503938> Safari crashed opening many tabs (HTMLTokenizer::notifyFinished(khtml::CachedObject*))
989         <rdar://problem/3566332> CrashTracer: ..405 crashes at com.apple.WebCore: QString::QString[unified] + 0x5c
990         <rdar://problem/3703964> CrashTracer: ...86 crashes at com.apple.WebCore: QString::QString[unified] + 0x5c
991         <rdar://problem/3703969> CrashTracer: ..234 crashes at com.apple.WebCore: HTMLTokenizer::notifyFinished + 0x1c8
992
993         * khtml/xml/dom_docimpl.cpp:
994         (DocumentImpl::open): call setParsing(true), because we need to know we are once again
995         parsing when we re-open a document that has previously completed loading.
996
997 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
998
999         Reviewed by Dave and Darin.
1000
1001         * khtml/rendering/render_text.cpp:
1002         (RenderText::paint): Split apple and non-apple code paths to allow further cleanup.
1003
1004 2004-08-19  Darin Adler  <darin@apple.com>
1005
1006         Reviewed by Dave.
1007
1008         - fixed <rdar://problem/3767274> crash in partForWidget inside setFocus (test page attached)
1009
1010         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::nextKeyViewInFrame): Remove code to do position
1011         the widget; no longer needed since we reworked how widgets get their positions.
1012         * kwq/KWQWidget.mm: (QWidget::setFocus): Ditto. This was the one that caused the bug.
1013
1014 2004-08-19  David Hyatt  <hyatt@apple.com>
1015
1016         Fix crash when text is contained inside a table-colgroup.
1017         
1018         Reviewed by john
1019
1020         * khtml/xml/dom_textimpl.cpp:
1021         (TextImpl::rendererIsNeeded):
1022
1023 2004-08-19  Trey Matteson  <trey@apple.com>
1024
1025         Unexpected errors hit while finding word boundaries, leading to crash.
1026
1027         Reviewed by Ken.
1028
1029         * kwq/KWQTextUtilities.cpp:
1030         (KWQFindWordBoundary):  Don't call UCFindTextBreak with edge cases it thinks
1031         are param errors, and pass correct mask for forward case.  Also fix off-by-one
1032         crashers in fallback code.
1033
1034 2004-08-19  David Hyatt  <hyatt@apple.com>
1035
1036         Make XSLT imports/includes work.  This code has to be turned off until the newer version of libxslt is
1037         available.
1038         
1039         Reviewed by kocienda
1040
1041         * khtml/css/css_ruleimpl.cpp:
1042         (CSSImportRuleImpl::init):
1043         * khtml/xml/dom_docimpl.cpp:
1044         (DocumentImpl::DocumentImpl):
1045         (DocumentImpl::~DocumentImpl):
1046         (DocumentImpl::applyXSLTransform):
1047         * khtml/xml/dom_docimpl.h:
1048         (DOM::DocumentImpl::setTransformSource):
1049         (DOM::DocumentImpl::transformSource):
1050         * khtml/xml/dom_xmlimpl.cpp:
1051         (DOM::ProcessingInstructionImpl::checkStyleSheet):
1052         * khtml/xml/xml_tokenizer.cpp:
1053         (khtml::matchFunc):
1054         (khtml::openFunc):
1055         (khtml::readFunc):
1056         (khtml::writeFunc):
1057         (khtml::createQStringParser):
1058         (khtml::XMLTokenizer::setTransformSource):
1059         * khtml/xsl/xsl_stylesheetimpl.cpp:
1060         (DOM::XSLStyleSheetImpl::XSLStyleSheetImpl):
1061         (DOM::XSLStyleSheetImpl::~XSLStyleSheetImpl):
1062         (DOM::XSLStyleSheetImpl::isLoading):
1063         (DOM::XSLStyleSheetImpl::clearDocuments):
1064         (DOM::XSLStyleSheetImpl::parseString):
1065         (DOM::XSLStyleSheetImpl::loadChildSheets):
1066         (DOM::XSLStyleSheetImpl::loadChildSheet):
1067         (DOM::XSLImportRuleImpl::parentStyleSheet):
1068         (DOM::XSLStyleSheetImpl::compileStyleSheet):
1069         (DOM::XSLStyleSheetImpl::locateStylesheetSubResource):
1070         (DOM::XSLImportRuleImpl::XSLImportRuleImpl):
1071         (DOM::XSLImportRuleImpl::~XSLImportRuleImpl):
1072         (DOM::XSLImportRuleImpl::setStyleSheet):
1073         (DOM::XSLImportRuleImpl::isLoading):
1074         (DOM::XSLImportRuleImpl::loadSheet):
1075         * khtml/xsl/xsl_stylesheetimpl.h:
1076         (DOM::XSLStyleSheetImpl::setOwnerDocument):
1077         (DOM::XSLStyleSheetImpl::setDocument):
1078         (DOM::XSLStyleSheetImpl::markAsProcessed):
1079         (DOM::XSLStyleSheetImpl::processed):
1080         (DOM::XSLImportRuleImpl::href):
1081         (DOM::XSLImportRuleImpl::styleSheet):
1082         (DOM::XSLImportRuleImpl::isImportRule):
1083         * khtml/xsl/xslt_processorimpl.cpp:
1084         (DOM::m_sourceDocument):
1085         (DOM::stylesheetLoadFunc):
1086         (DOM::XSLTProcessorImpl::transformDocument):
1087         * khtml/xsl/xslt_processorimpl.h:
1088
1089 === Safari-158 ===
1090
1091 2004-08-18  Trey Matteson  <trey@apple.com>
1092
1093         3765958 - downstreamPosition() can hit infinite loop when at end of doc
1094         
1095         The problem was that I had a position that was after the maximum position in the text
1096         node, because it was the old caret position before a backspace was processed.  Later
1097         I happened to call downstream() on that position, and hit the bug.  Fix is to consider
1098         a position past the end point of its node if it is *greater than* or equal to its max offset.
1099                         
1100         Reviewed by Ken.
1101
1102         * khtml/xml/dom_positioniterator.cpp:
1103         (DOM::PositionIterator::atEnd):
1104
1105 2004-08-18  David Hyatt  <hyatt@apple.com>
1106
1107         - did WebCore part of <rdar://problem/3682969> SLIDER: absolute left position of slider should be headline only
1108
1109         Make the header overlap the footer in the zero-line case.  Changes to Emerson's template will ensure the
1110         header draws over the footer.
1111         
1112         Reviewed by darin
1113
1114         * khtml/rendering/render_block.cpp:
1115         (khtml::getHeightForLineCount):
1116
1117 2004-08-18  Richard Williamson   <rjw@apple.com>
1118
1119         Replace horrible pollForAppletInView: with new
1120         webPlugInGetApplet.  The details of how the applet instance
1121         is provided now belong to the Java team.  Yeh.
1122                 
1123         Reviewed by Chris.
1124
1125         * kwq/KWQKHTMLPart.mm:
1126         (KWQKHTMLPart::getAppletInstanceForView):
1127         * kwq/WebCoreBridge.h:
1128
1129 2004-08-18  Chris Blumenberg  <cblu@apple.com>
1130
1131         Fixed: <rdar://problem/3692199> 8A146: Safari crashes in toHTMLWithOptions, selection with no renderer (various sites)
1132
1133         Reviewed by trey.
1134
1135         * khtml/xml/dom2_rangeimpl.cpp:
1136         (DOM::RangeImpl::toHTML): renamed, don't assume that nodes of the range had renderers, use the common ancestor of the range as the root
1137         * khtml/xml/dom2_rangeimpl.h:
1138         * khtml/xml/dom_nodeimpl.cpp:
1139         (NodeImpl::recursive_toHTML): renamed, removed code that determines whether to include the root in the HTML, leave this up to the caller
1140         * khtml/xml/dom_nodeimpl.h:
1141         * kwq/WebCoreBridge.mm:
1142         (-[WebCoreBridge markupStringFromNode:nodes:]): call renamed methods
1143         (-[WebCoreBridge markupStringFromRange:nodes:]): ditto
1144
1145 2004-08-18  Ken Kocienda  <kocienda@apple.com>
1146
1147         * khtml/css/css_valueimpl.cpp:
1148         (CSSStyleDeclarationImpl::copy): Roll back silly last minute change that broke this code.
1149         Note to self: read code before making changes to it.
1150
1151 2004-08-18  Ken Kocienda  <kocienda@apple.com>
1152
1153         Coded by Darin and Ken
1154
1155         * khtml/css/css_computedstyle.cpp: Added CopyProperties static array. This contains
1156         the properties we implement that we also want to copy in the new
1157         CSSComputedStyleDeclarationImpl::copy described below.
1158         (DOM::CSSComputedStyleDeclarationImpl::copy): New function. In this class, copies the
1159         computed values of all the properties listed in CopyProperties. In essence, this makes
1160         a freeze-dired version of a computed style.
1161         (DOM::CSSComputedStyleDeclarationImpl::diff): Removes every property from the passed-in 
1162         CSSStyleDeclarationImpl that is also in the computed style.
1163         * khtml/css/css_computedstyle.h:
1164         * khtml/css/css_valueimpl.cpp:
1165         (CSSStyleDeclarationImpl::copy): New function. In this class, the copy operation is
1166         straightforward. Returns a copy that will be unchanged when the original changes.
1167         * khtml/css/css_valueimpl.h:
1168         (DOM::CSSStyleDeclarationImpl::values): Added a accessor suitable for use when the 
1169         CSSStyleDeclarationImpl is const.
1170
1171 2004-08-17  Maciej Stachowiak  <mjs@apple.com>
1172
1173         Reviewed by Darin.
1174
1175         <rdar://problem/3703768> CrashTracer: ...50 crashes at com.apple.WebCore: KHTMLPart::xmlDocImpl const + 0
1176         
1177         * khtml/khtmlview.cpp:
1178         (KHTMLView::viewportMouseMoveEvent): Add a nil check and an
1179         assertion for m_part being null. It seems impossible for this to
1180         happen, so we want to debug it ourselves, but in the meantime,
1181         let's try to avoid causing crashes for our users.
1182
1183 2004-08-17  David Hyatt  <hyatt@apple.com>
1184
1185         Fix the line truncation function for Emerson so that at the far left setting of the slider, only the header
1186         is visible.
1187         
1188         Reviewed by darin
1189
1190         * khtml/rendering/render_block.cpp:
1191         (khtml::getHeightForLineCount):
1192         * khtml/rendering/render_flexbox.cpp:
1193         (khtml::RenderFlexibleBox::layoutVerticalBox):
1194
1195 2004-08-17  Ken Kocienda  <kocienda@apple.com>
1196
1197         Reviewed by Hyatt
1198
1199         Rewrite of the command that deletes a selection. I deleted great 
1200         big swaths of bug-ridden code to accomplish this and replaced it
1201         with code that is much cleaner and smarter.
1202         
1203         Also, renamed equivalentUpstreamPosition and equivalentDownstreamPosition to
1204         upstream to downstream, respectively.
1205         
1206         Added a couple of new helper methods.
1207         
1208         * khtml/editing/htmlediting.cpp: DeleteCollapsibleWhitespaceCommand and
1209         RemoveNodeAndPruneCommand now obsolete. A huge win.
1210         * khtml/editing/htmlediting.h: Ditto.
1211         * khtml/editing/htmlediting_impl.cpp:
1212         (khtml::debugPosition): Fix printf which had a placeholder, but no argument passed in the varargs.
1213         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): New helper. Much simplified and cleaner
1214         version of 
1215         (khtml::ApplyStyleCommandImpl::doApply): upstream/downstream name change
1216         (khtml::ApplyStyleCommandImpl::nodeFullySelected):  upstream/downstream name change
1217         (khtml::DeleteSelectionCommandImpl::doApply):  upstream/downstream name change
1218         (khtml::DeleteTextCommandImpl::DeleteTextCommandImpl): Add an assert to check that the
1219         passed offset is less than the length of the text node.
1220         (khtml::InputNewlineCommandImpl::insertNodeAfterPosition): upstream/downstream name change
1221         (khtml::InputNewlineCommandImpl::insertNodeBeforePosition): upstream/downstream name change
1222         (khtml::InputNewlineCommandImpl::doApply): upstream/downstream name change
1223         (khtml::InputTextCommandImpl::prepareForTextInsertion): upstream/downstream name change
1224         (khtml::InputTextCommandImpl::execute): upstream/downstream name change
1225         (khtml::InputTextCommandImpl::insertSpace): upstream/downstream name change
1226         (khtml::ReplaceSelectionCommandImpl::doApply): upstream/downstream name change
1227         (khtml::TypingCommandImpl::issueCommandForDeleteKey): upstream/downstream name change
1228         (khtml::TypingCommandImpl::deleteKeyPressed):
1229         * khtml/editing/htmlediting_impl.h:
1230         * khtml/xml/dom_position.cpp:
1231         (DOM::Position::previousWordBoundary):
1232         (DOM::Position::nextWordBoundary):
1233         (DOM::Position::upstream):
1234         (DOM::Position::downstream):
1235         (DOM::Position::inRenderedText): Add null check.
1236         (DOM::Position::isRenderedCharacter): New helper.
1237         (DOM::isWS): New helper in this file.
1238         (DOM::Position::leadingWhitespacePosition): New helper. Factored out from htmlediting_impl.cpp.
1239         (DOM::Position::trailingWhitespacePosition): Ditto.
1240         (DOM::Position::debugPosition): Add null check.
1241         * khtml/xml/dom_position.h:
1242         * khtml/xml/dom_selection.cpp:
1243         (DOM::Selection::toRange): upstream/downstream name change
1244         (DOM::Selection::validate): upstream/downstream name change
1245         (DOM::Selection::debugPosition): upstream/downstream name change
1246         * layout-tests/editing/deleting/delete-block-contents-003-expected.txt: Updated tests with new expected results.
1247         * layout-tests/editing/deleting/delete-contiguous-ws-001-expected.txt: Ditto.
1248         * layout-tests/editing/deleting/delete-selection-001-expected.txt: Ditto.
1249         * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt: Ditto.
1250         * layout-tests/editing/inserting/insert-br-case1-expected.txt: Ditto.
1251         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Ditto.
1252         * layout-tests/editing/style/style-3681552-fix-002-expected.txt: Ditto.
1253
1254 2004-08-17  Trey Matteson  <trey@apple.com>
1255
1256         Various spelling fixes.
1257
1258         Reviewed by Ken.
1259
1260         * khtml/khtml_part.cpp:
1261         (KHTMLPart::setSelection): No misspellings in the spelling code comments
1262         * khtml/xml/dom_docimpl.cpp:
1263         (DocumentImpl::removeMarker):  Repaint if doc changes.  Sometimes the markers
1264         were not being erased when you clicked in a word.
1265         * khtml/xml/dom_position.cpp:
1266         (DOM::Position::previousWordBoundary):  Small optimization.  Bail after first
1267         try if the second try will not come out any different.
1268         (DOM::Position::nextWordBoundary):  Ditto
1269         * kwq/KWQKHTMLPart.mm:
1270         (KWQKHTMLPart::markMisspellingsInSelection):  Comment.
1271
1272 2004-08-17  Darin Adler  <darin@apple.com>
1273
1274         Reviewed by Maciej.
1275
1276         - fixed <rdar://problem/3689700> crash loading page; stoxx.com (works in IE and Firefox)
1277
1278         * khtml/khtml_part.h: Make completeURL public.
1279         * kwq/KWQKJavaAppletWidget.mm: (KJavaAppletWidget::KJavaAppletWidget): Complete the base URL
1280         before passing it across the bridge. This sidesteps the crashing bug in CFURL, filed as
1281         '<rdar://problem/3764632> CFURLCreateAbsoluteURLWithBytes crashes if passed the string "../.."'
1282         and also is obviously correct behavior that may fix other sites too.
1283
1284         - fixed <rdar://problem/3547725> Crashes at csuohio.edu, list box vs. mouse event problem (Spoof No Fix)
1285
1286         * kwq/KWQListBox.mm:
1287         (QListBox::~QListBox): Nil out the pointer from the KWQTableView back to the widget by calling
1288         a new detach method.
1289         (-[KWQTableView detach]): Set the pointer to the QListBox to 0. Also set the delegate and data
1290         source to nil, so we don't need nil checks in delegate and data source methods.
1291         (-[KWQTableView mouseDown:]): Add nil check.
1292         (-[KWQTableView keyDown:]): Add nil check.
1293         (-[KWQTableView keyUp:]): Add nil check.
1294         (-[KWQTableView becomeFirstResponder]): Add nil check.
1295         (-[KWQTableView resignFirstResponder]): Add nil check.
1296         (-[KWQTableView canBecomeKeyView]): Add nil check.
1297         (-[KWQTableView tableViewSelectionDidChange:]): Add nil checks, even though this is a delegate
1298         callback, to handle cases where calls to JavaScript result in the QListBox going away partway
1299         through.
1300         (-[KWQTableView drawRow:clipRect:]): Add nil check.
1301         (-[KWQTableView _accessibilityTableCell:tableColumn:]): Add nil check.
1302
1303 2004-08-17  Trey Matteson  <trey@apple.com>
1304
1305         Fix ASSERT in spelling marker management.
1306
1307         Reviewed by John.
1308
1309         * khtml/xml/dom_docimpl.cpp:
1310         (DocumentImpl::shiftMarkers):  Use assert instead of ASSERT.
1311         Tweak test to allow for a start position of 0.
1312
1313 2004-08-17  Trey Matteson  <trey@apple.com>
1314
1315         3764147 - failure of subframe to load leaves links in parent doc broken
1316
1317         Reviewed by Maciej.
1318
1319         * khtml/khtml_part.cpp:
1320         (KHTMLPart::childBegin):  New method to mark part as not complete.
1321         (KHTMLPart::processObjectRequest):  Mark child part imcomplete, so if we
1322         later get a failure on load it won't think it's already complete and do nothing.
1323         * khtml/khtml_part.h:
1324
1325 === Safari-157 ===
1326
1327 2004-08-16  David Hyatt  <hyatt@apple.com>
1328
1329         Fix the #define.  I had it all backwards.
1330         
1331         * WebCorePrefix.h:
1332
1333 2004-08-16  David Hyatt  <hyatt@apple.com>
1334
1335         Land initial support for XSLT using xml-stylesheet PIs.
1336         
1337         * WebCore.pbproj/project.pbxproj:
1338         * khtml/khtml_part.cpp:
1339         (KHTMLPart::replaceDocImpl):
1340         * khtml/khtml_part.h:
1341         * khtml/khtmlview.h:
1342         * khtml/xml/dom_docimpl.cpp:
1343         (DocumentImpl::DocumentImpl):
1344         (DocumentImpl::~DocumentImpl):
1345         (DocumentImpl::recalcStyleSelector):
1346         (DocumentImpl::applyXSLTransform):
1347         (DocumentImpl::setTransformSourceDocument):
1348         * khtml/xml/dom_docimpl.h:
1349         (DOM::DocumentImpl::setTransformSource):
1350         (DOM::DocumentImpl::transformSource):
1351         (DOM::DocumentImpl::transformSourceDocument):
1352         * khtml/xml/dom_xmlimpl.cpp:
1353         (DOM::ProcessingInstructionImpl::checkStyleSheet):
1354         * khtml/xml/dom_xmlimpl.h:
1355         (DOM::ProcessingInstructionImpl::isXSL):
1356         * khtml/xml/xml_tokenizer.cpp:
1357         (khtml::matchFunc):
1358         (khtml::openFunc):
1359         (khtml::createQStringParser):
1360         (khtml::XMLTokenizer::processingInstruction):
1361         (khtml::XMLTokenizer::finish):
1362         (khtml::XMLTokenizer::setTransformSource):
1363         * khtml/xml/xml_tokenizer.h:
1364         (khtml::Tokenizer::setTransformSource):
1365         * khtml/xml/xsl_stylesheetimpl.cpp: Removed.
1366         * khtml/xml/xsl_stylesheetimpl.h: Removed.
1367         * khtml/xsl/xsl_stylesheetimpl.cpp: Added.
1368         (DOM::XSLStyleSheetImpl::XSLStyleSheetImpl):
1369         (DOM::XSLStyleSheetImpl::~XSLStyleSheetImpl):
1370         (DOM::XSLStyleSheetImpl::isLoading):
1371         (DOM::XSLStyleSheetImpl::checkLoaded):
1372         (DOM::XSLStyleSheetImpl::docLoader):
1373         (DOM::XSLStyleSheetImpl::parseString):
1374         * khtml/xsl/xsl_stylesheetimpl.h: Added.
1375         (DOM::XSLStyleSheetImpl::isXSLStyleSheet):
1376         (DOM::XSLStyleSheetImpl::type):
1377         (DOM::XSLStyleSheetImpl::ownerDocument):
1378         (DOM::XSLStyleSheetImpl::document):
1379         (DOM::XSLStyleSheetImpl::clearDocument):
1380         * khtml/xsl/xslt_processorimpl.cpp: Added.
1381         (DOM::m_sourceDocument):
1382         (DOM::XSLTProcessorImpl::~XSLTProcessorImpl):
1383         (DOM::XSLTProcessorImpl::transformDocument):
1384         (DOM::bufferWrite):
1385         (DOM::XSLTProcessorImpl::addToResult):
1386         (DOM::XSLTProcessorImpl::documentFromXMLDocPtr):
1387         * khtml/xsl/xslt_processorimpl.h: Added.
1388
1389 2004-08-16  Maciej Stachowiak  <mjs@apple.com>
1390
1391         Fix build.
1392
1393         * khtml/khtml_part.cpp:
1394         (KHTMLPart::isImmediateRedirectPending):
1395
1396 2004-08-16  Richard Williamson   <rjw@apple.com>
1397
1398         Fixed <rdar://problem/3704339> Context2D forces integer positions in drawImage
1399
1400         Use floats instead of ints to draw images.
1401
1402         Reviewed by Ken.
1403
1404         * khtml/ecma/kjs_html.cpp:
1405         (KJS::Context2DFunction::tryCall):
1406         * kwq/KWQPainter.h:
1407         * kwq/KWQPainter.mm:
1408         (QPainter::drawPixmap):
1409         (QPainter::drawFloatPixmap):
1410
1411 2004-08-13  Maciej Stachowiak  <mjs@apple.com>
1412
1413         Reviewed by Darin.
1414
1415         - fixed <rdar://problem/3752509> Pop up windows not showing up within SAP's BW Module (changing location.href on new window created by window.open)
1416         
1417         (actually the previous fix for this bug was mostly correct, but
1418         this additional change is needed to avoid the regression in
1419         <rdar://problem/3751025> REGRESSION: website rejects Safari 125.9
1420         as "need to upgrade to IE 6", but didn't reject 125.8
1421
1422         So if merging for a software update, make sure to include both
1423         this and the previous fix.
1424         
1425         * khtml/html/htmltokenizer.cpp:
1426         (khtml::HTMLTokenizer::write): When there is an immediate reidrect pending,
1427         make sure to stop tokenizing, because we need to make sure no further
1428         script tags are processed beyond the one that triggered the redirect.
1429         * khtml/khtml_part.cpp:
1430         (KHTMLPart::isImmediateRedirectPending): New method to allow
1431         checking if a redirect is pending.
1432         * khtml/khtml_part.h:
1433
1434 2004-08-15  David Hyatt  <hyatt@apple.com>
1435
1436         - fixed <rdar://problem/3760508> REGRESSION (154-155): No text in textarea
1437
1438         Fix the blank textarea problem by ensuring that any change to a <textarea>'s DOM children causes the form control
1439         to resync with the DOM.  This behavior matches WinIE.
1440         
1441         Reviewed by kocienda
1442
1443         * khtml/html/html_formimpl.cpp:
1444         (HTMLTextAreaElementImpl::childrenChanged):
1445         * khtml/html/html_formimpl.h:
1446
1447 2004-08-13  Trey Matteson  <trey@apple.com>
1448
1449         3761794 Slider doesn't call onmouseup handler
1450
1451         Reviewed by Hyatt
1452
1453         * khtml/rendering/render_form.cpp:
1454         (RenderSlider::RenderSlider):  Listen for signal.
1455         (RenderSlider::slotClicked):  Pass to superclass.
1456         * khtml/rendering/render_form.h:
1457         * kwq/KWQSlider.h:
1458         * kwq/KWQSlider.mm:
1459         (-[KWQSlider mouseDown:]):  Generate mouseUp and clicked events,
1460         since AK consumes the mouseUp event in a modal tracking loop.
1461         (QSlider::QSlider):  Make signal.
1462         (QSlider::clicked):  Send signal.
1463
1464 2004-08-12  Trey Matteson  <trey@apple.com>
1465
1466         3761329 - query result links all dead in ingrammicro.com (sometimes)
1467         3761328 - links in some docs dead when doc is loaded from WebArchive
1468
1469         Make sure to get part to completed state when end is called,
1470         even if we have no doc.  See WebKit changelog for more info.
1471
1472         Reviewed by Richard and Darin.
1473
1474         * khtml/khtml_part.cpp:
1475         (KHTMLPart::end):
1476
1477 2004-08-13  Trey Matteson  <trey@apple.com>
1478
1479         3761098 - red dotted underline for misspelled words shows up in drag image
1480
1481         Reviewed by Ken
1482
1483         * khtml/rendering/render_text.cpp:
1484         (RenderText::paint):  Don't draw misspelling when creating selection image.
1485
1486 2004-08-12  Richard Williamson   <rjw@apple.com>
1487
1488         Bring npruntime.h and friends closer to compliance with
1489         latest spec.
1490
1491         Reviewed by Maciej.
1492
1493         * kwq/KWQKHTMLPart.mm:
1494         (KWQKHTMLPart::windowScriptNPObject):
1495
1496 2004-08-12  Maciej Stachowiak  <mjs@apple.com>
1497
1498         Reviewed by Richard.
1499
1500         <rdar://problem/3245706> URLs with backslashes instead of slashes work on WinIE; should work on Safari (SAP)
1501         <rdar://problem/3506429> <BASE> tag containing backslash is breaking images with absolute URLs
1502         
1503         * kwq/KWQKURL.mm:
1504         (substituteBackslashes): Helper method
1505         (KURL::KURL): If the URL contains any backslashes, substitute all
1506         that appear before the query or fragment.
1507
1508 2004-08-12  Ken Kocienda  <kocienda@apple.com>
1509
1510         Reviewed by Chris
1511
1512         Fix for this bug:
1513         
1514         <rdar://problem/3761014> command-down-arrow takes you to start of document instead of end of document
1515
1516         * khtml/xml/dom_selection.cpp:
1517         (DOM::Selection::modifyExtendingRightForward): Code used to assume, incorrectly, that index 1 of the
1518         document element was beyond the last node in the document. But this is not true, since the document
1519         element is the HTML element (generally). Instead, move to the index equal to the number of children
1520         of the document element. This puts us past everything.
1521         (DOM::Selection::modifyMovingRightForward): Ditto.
1522
1523 2004-08-12  Ken Kocienda  <kocienda@apple.com>
1524
1525         Reviewed by Trey
1526
1527         Fix for this bug:
1528         
1529         <rdar://problem/3695446> shift-down-arrow on last line of editable text should select to end of document
1530         
1531         Detect when current position is on first or last line and move to the
1532         start or end of that line, respectively.
1533
1534         * khtml/xml/dom_position.cpp:
1535         (DOM::Position::previousLinePosition)
1536         (DOM::Position::nextLinePosition)
1537
1538 === Safari-156 ===
1539
1540 2004-08-12  Ken Kocienda  <kocienda@apple.com>
1541
1542         Reviewed by Darin
1543
1544         Some consolidation in style application code.
1545
1546         * khtml/editing/htmlediting_impl.cpp:
1547         (khtml::StyleChange::StyleChange): Made this a full-on class and added a couple of 
1548         members and a constructors to make a StyleChange from a CSSStyleDeclarationImpl, as
1549         well as from a CSSStyleDeclarationImpl and a Position.
1550         (khtml::StyleChange::init): Common init function for StyleChange constructors.
1551         (khtml::StyleChange::currentlyHasStyle): Moved this here from ApplyStyleCommandImpl.
1552         (khtml::CompositeEditCommandImpl::applyTypingStyle): Tweak to adjust to new StyleChange
1553         interface.
1554         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Ditto.
1555         * khtml/editing/htmlediting_impl.h:
1556         (khtml::StyleChange::StyleChange):
1557         (khtml::StyleChange::cssStyle): New accessor.
1558         (khtml::StyleChange::applyBold): Ditto.
1559         (khtml::StyleChange::applyItalic): Ditto.
1560         * khtml/xml/dom_position.cpp:
1561         (DOM::Position::computedStyle): New helper.
1562         * khtml/xml/dom_position.h: Ditto.
1563
1564 2004-08-12  Ken Kocienda  <kocienda@apple.com>
1565
1566         Reviewed by Darin
1567
1568         Fix for this bug:
1569         <rdar://problem/3751098> HTML email has one set of SPAN tags per character in the message
1570         
1571         Progress on this bug:
1572         <rdar://problem/3755562> Typing styles do not use same tag application conventions as font and color panel
1573
1574         * khtml/editing/htmlediting_impl.cpp:
1575         (khtml::CompositeEditCommandImpl::applyTypingStyle): Name changed from createTypingStyleElement.
1576         Also, interface changed to take the node to which the typing style is to be applied. 
1577         This makes it easier to apply what may be up to three levels of nested tags to get the 
1578         desired style (<B>, <I>, and <SPAN STYLE="">).
1579         Also, Borrow some of the style change smarts from ApplyStyleCommandImpl to use bold and
1580         italic tags for applying styles when that is apprpriate. This creates on opportunity to
1581         factor the code to do this so that this function and the ApplyStyleCommandImpl class can
1582         share the implementation. I will follow up with a change to do that after landing this
1583         change. Some future code factoring could be done here to bring together some similar code
1584         into one place.
1585         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Add comment about code factoring work.
1586         (khtml::ApplyStyleCommandImpl::computeStyleChange): StyleChange struct no longer a member of the
1587         ApplyStyleCommandImpl class. CompositeEditCommandImpl needs it now in its applyTypingStyle()
1588         function.
1589         (khtml::InputNewlineCommandImpl::doApply): Pass along node to style to applyTypingStyle.
1590         (khtml::InputTextCommandImpl::prepareForTextInsertion): Ditto.
1591         * khtml/editing/htmlediting_impl.h:
1592         (khtml::StyleChange::StyleChange): Pull this struct out of ApplyStyleCommandImpl so 
1593         CompositeEditCommandImpl can use it.
1594         * khtml/khtml_part.cpp:
1595         (KHTMLPart::notifySelectionChanged): Always clear typing style when the selection
1596         changes, not only when closing typing. This fixes 3751098.
1597         
1598         These three tests actually had results that treated the buggy behavior as correct!
1599         
1600         * layout-tests/editing/style/style-3681552-fix-001-expected.txt
1601         * layout-tests/editing/style/style-3681552-fix-002-expected.txt
1602         * layout-tests/editing/style/typing-style-002-expected.txt
1603
1604 2004-08-12  Darin Adler  <darin@apple.com>
1605
1606         Reviewed by Ken.
1607
1608         - fixed <rdar://problem/3740485> Repro crash involving replacing content that includes form field
1609
1610         * kwq/KWQLineEdit.mm: (QLineEdit::selectAll): Since this function calls selectText: which has a side
1611         effect of making the text field be first responder, call to bridge first to make it first responder.
1612         The bridge version lets WebHTMLView know we are changing the responder, avoiding some unpleasantness
1613         because it sets the "changing focus programmatically" flag. Without that flag set, we were getting
1614         an additional setFocusNode(0) call, which is unnecessary and incorrect.
1615
1616 2004-08-12  Darin Adler  <darin@apple.com>
1617
1618         Reviewed by Ken.
1619
1620         - fixed <rdar://problem/3758756> copying text selected with down arrow results in all text to end of document
1621
1622         * khtml/xml/dom2_rangeimpl.h: Make startNode and pastEndNode public.
1623         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::pastEndNode): Fix bug where this would return
1624         one node too far in the case where the end container was not a text node.
1625
1626         * khtml/xml/dom_nodeimpl.cpp:
1627         (NodeImpl::recursive_toHTMLWithOptions): Rewrite loop, using startNode and pastEndNode,
1628         to fix bug where it would run past the end node, including too many nodes in the generated
1629         HTML. Nice side benefit: easier to read the code.
1630
1631 2004-08-11  Chris Blumenberg  <cblu@apple.com>
1632
1633         Fixed: <rdar://problem/3758216> PARENTAL: buttons on parental controls page only work once
1634
1635         Reviewed by john.
1636
1637         * kwq/KWQKHTMLPart.mm:
1638         (KWQKHTMLPart::submitForm): prevent a form from being submitted more than once only if it uses a scheme of http or https
1639
1640 2004-08-11  Darin Adler  <darin@apple.com>
1641
1642         Reviewed by Ken.
1643
1644         - fixed <rdar://problem/3715878> 8A162: connect.apple.com password field showed in cleartext
1645
1646         * kwq/KWQTextField.mm: (-[KWQSecureTextField textDidEndEditing:]):
1647         Enhanced workaround for shifting focus from one secure text field to another so that it works
1648         even for the case of shifting focus from a secure text field back to itself.
1649
1650 2004-08-11  Ken Kocienda  <kocienda@apple.com>
1651
1652         Missed adding this file before.
1653
1654         * kwq/KWQTextUtilities.mm: Added.
1655         (KWQFindNextWordFromIndex):
1656
1657 2004-08-11  Ken Kocienda  <kocienda@apple.com>
1658
1659         Reviewed by Trey
1660
1661         Efficiency improvements on string manipulations in these two new function
1662         implementations. Use the versions of QString append/prepend that take
1663         (QChar *c, uint length) instead of creating new strings each time.
1664
1665         * khtml/xml/dom_position.cpp:
1666         (DOM::Position::previousWordPosition): Changed, as described above.
1667         (DOM::Position::nextWordPosition): Ditto.
1668
1669 2004-08-11  Ken Kocienda  <kocienda@apple.com>
1670
1671         Reviewed by Darin
1672
1673         Fix for this bug:
1674         <rdar://problem/3675812> Moving a word at a time does not use the correct conception of "word"
1675         
1676         I have implemented versions of previousWordPosition and nextWordPosition that are now
1677         different than previousWordBoundary and nextWordBoundary. The behavior of the new
1678         functions attempts to match what Cocoa does as closely as it can. Let the bug filing begin! 
1679
1680         * WebCore.pbproj/project.pbxproj: Added KWQTextUtilities.mm
1681         * khtml/misc/helper.cpp:
1682         (khtml::nextWordFromIndex): Glue to call through to KWQFindNextWordFromIndex.
1683         * khtml/misc/helper.h: Declare the function above.
1684         * khtml/misc/khtml_text_operations.cpp: Added SimplifiedBackwardsTextIterator class.
1685         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator): New
1686         (khtml::SimplifiedBackwardsTextIterator::advance): Ditto.
1687         (khtml::SimplifiedBackwardsTextIterator::handleTextNode): Ditto.
1688         (khtml::SimplifiedBackwardsTextIterator::handleReplacedElement): Ditto.
1689         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode): Ditto.
1690         (khtml::SimplifiedBackwardsTextIterator::exitNode): Ditto.
1691         (khtml::SimplifiedBackwardsTextIterator::emitCharacter): Ditto.
1692         (khtml::SimplifiedBackwardsTextIterator::range): Ditto.
1693         * khtml/misc/khtml_text_operations.h:
1694         (khtml::SimplifiedBackwardsTextIterator::atEnd): Ditto.
1695         (khtml::SimplifiedBackwardsTextIterator::length): Ditto.
1696         (khtml::SimplifiedBackwardsTextIterator::characters): Ditto.
1697         * khtml/xml/dom_position.cpp:
1698         (DOM::Position::previousWordBoundary): Updated to gather appropriate text and call through to
1699         AppKit to perform the same calculations NSText uses.
1700         (DOM::Position::nextWordBoundary): Ditto.
1701         (DOM::Position::previousWordPosition): Unrelated change to fix case where the function could get "stuck".
1702         (DOM::Position::nextWordPosition): Ditto
1703         (DOM::Position::equivalentDeepPosition): Changed to look backwards if the position's offset is equal
1704         to the number of child nodes it has. This handles more cases correctly, like when the position is
1705         gives as one beyond the end of a document element's last child.
1706         * kwq/KWQTextUtilities.h: Declared KWQFindNextWordFromIndex.
1707         * kwq/KWQTextUtilities.mm: Added.
1708         (KWQFindNextWordFromIndex): New function.
1709
1710 2004-08-11  Ken Kocienda  <kocienda@apple.com>
1711
1712         Reviewed by John
1713
1714         Fix for this bug:
1715         
1716         <rdar://problem/3732702> crash in CSSComputedStyleDeclarationImpl running devtools.com editing sample code
1717
1718         * khtml/khtml_part.cpp:
1719         (KHTMLPart::selectionComputedStyle): Added a null check.
1720
1721 2004-08-10  Darin Adler  <darin@apple.com>
1722
1723         Reviewed by Trey.
1724
1725         - fixed <rdar://problem/3710123> Loading iframe that replaces content in the parent document crashes Safari
1726
1727         I fixed three problems:
1728
1729             1) script interpreter destroyed while it was interpreting scripts, caused random havoc
1730             2) code trying to get to view after view was detached from part, caused nil-deref
1731             3) signals sent to parent after child was no longer in the parent's frames list, caused nil-deref
1732
1733         Now the test page works fine. Hope the real sites do too.
1734
1735         * khtml/khtml_part.h: Add connectChild and disconnectChild helper functions (private).
1736         * khtml/khtml_part.cpp:
1737         (KHTMLPart::clear): Call disconnectChild on each frame as we detach it (see below).
1738         (KHTMLPart::end): Ref the part at the start, and deref the part at the end, of this function.
1739         Otherwise, we can end up destroying the part, and hence the interpreter, inside a script that
1740         the interpreter itself is running.
1741         (KHTMLPart::slotFinishedParsing): Add another check for a nil m_view, after the call to
1742         checkCompleted.
1743         (KHTMLPart::checkCompleted): Remove bogus if statement with empty body.
1744         (KHTMLPart::processObjectRequest): Call disconnectChild to disconnect the child <-> parent signals of the
1745         old child that the new one is replacing, and connectChild to connect the signals (nicer factoring).
1746         (KHTMLPart::slotChildCompleted): Fixed up a confusing boolean if/expression to be simpler. Not related to
1747         the bug fix, but an earlier version of the fix had changes in this function.
1748         (KHTMLPart::connectChild): Added. Connects the appropriate signals for a child frame.
1749         (KHTMLPart::disconnectChild): Added. Disconnects the same signals that connectChild connects.
1750
1751         * kwq/KWQKHTMLPart.mm: (KHTMLPart::frameDetached): Added a call to disconnectChild before removing the
1752         child from the frames list.
1753
1754 2004-08-09  Maciej Stachowiak  <mjs@apple.com>
1755
1756         Reviewed by Trey.
1757
1758         WebCore part of:
1759
1760         - made basic marked text highlighting work to complete basic level of <rdar://problem/3704359> input method support not yet implemented for HTML editing
1761
1762         * kwq/WebCoreBridge.mm:
1763         (-[WebCoreBridge setMarkedDOMRange:]): Added this new call to support storing
1764         a marked range in WebCore. The provided DOMRange must start and end in the same
1765         node, which must be a text node.
1766         (-[WebCoreBridge markedDOMRange]): New call to get the marked range. 
1767         (-[WebCoreBridge clearMarkedDOMRange]): New call to clear the marked range.
1768         * kwq/WebCoreBridge.h: Prototype new methods.
1769         * kwq/KWQKHTMLPart.mm:
1770         (KWQKHTMLPart::markedRange): Implementation of WebCore call above.
1771         (KWQKHTMLPart::setMarkedRange): Implementation of WebCore call above -
1772         store the marked range, and repaint new and old nodes if needed.
1773         (KWQKHTMLPart::clear): Clear marked range.
1774         * kwq/KWQKHTMLPart.h: Prototype new methods.
1775         * khtml/rendering/render_text.cpp:
1776         (InlineTextBox::paintMarkedTextBackground): New method to paint the background
1777         for marked text, modeled on paintSelection.
1778         (RenderText::paint): Optionally handle painting marked text
1779         background as well as selection background in the marked text
1780         pass.
1781         * khtml/rendering/render_text.h: Prototype new method.
1782
1783 2004-08-10  Darin Adler  <darin@apple.com>
1784
1785         Reviewed by Dave.
1786
1787         - switch PCRE to do UTF-16 directly instead of converting to/from UTF-8 for speed
1788
1789         * kwq/KWQRegExp.mm:
1790         (QRegExp::KWQRegExpPrivate::compile): Null-terminate the pattern and pass it.
1791         (QRegExp::match): Use the 16-bit string directly, no need to convert to UTF-8.
1792
1793 2004-08-10  Darin Adler  <darin@apple.com>
1794
1795         Reviewed by Ken.
1796
1797         - minor cleanup
1798
1799         * khtml/editing/jsediting.cpp: Capitalize command names to match Windows.
1800         The dictionary lookup is case insensitive.
1801
1802         * kwq/KWQFoundationExtras.h: Remove inaccurate comment.
1803
1804 2004-08-10  Trey Matteson  <trey@apple.com>
1805
1806         3757094 - crash spell checking after a paste
1807
1808         Reviewed by Ken
1809
1810         * khtml/rendering/render_text.cpp:
1811         (InlineTextBox::paintSelection):  Add nil check.
1812
1813 2004-08-09  Trey Matteson  <trey@apple.com>
1814
1815         3756195 - spell checking leaves misspelling marker behind after bad word is deleted
1816         ... and other follow-on spell check fixes
1817
1818         Reviewed by Ken
1819
1820         * khtml/rendering/render_text.cpp:
1821         (InlineTextBox::paintMarker):  Close inspection shows we were drawing the 
1822         misspelling marker one pixel lower than AK, and one pixel outside the selection
1823         rect we draw, in the case of Times-16.  So move it up one.  Still not an exact
1824         match for AK, but less bad.
1825         * khtml/xml/dom_docimpl.cpp:
1826         (DocumentImpl::removeMarker):  Track whether we make any changes, so we only
1827         repaint if something actually changed.
1828         (DocumentImpl::removeAllMarkers):  New utility.
1829         (DocumentImpl::removeAllMarkers):  Use clear() instead of (errant)
1830         hand-rolled loop to empty array.
1831         (DocumentImpl::shiftMarkers):  Track whether we make any changes, so we only
1832         repaint if something actually changed.
1833         * khtml/xml/dom_docimpl.h:
1834         * khtml/xml/dom_textimpl.cpp:
1835         (CharacterDataImpl::deleteData):  Along with shifting existing markers around,
1836         remove any markers in the deleted range.  Fixes 3756195.
1837         (CharacterDataImpl::replaceData):  Ditto for the replaced range.
1838         * kwq/KWQKHTMLPart.mm:
1839         (KWQKHTMLPart::updateSpellChecking): comment
1840
1841 2004-08-08  Trey Matteson  <trey@apple.com>
1842
1843         3745023 - Safari crashes trying to access anchor while downloading
1844
1845         I bet this is behind a few other crashers as well.  In this bug the start of the
1846         download leaves a KWQPageState hanging around, and when that is freed it damages
1847         the part and view.  If you're still using that page, you're dead.
1848
1849         The fix is to properly invalidate the PageState when we receive an error before
1850         reaching WebFrameCommitted state.  Normally this happens when a page is reheated
1851         from the PageState, but in this case we never manage to leave the page to begin
1852         with, although we've already created the PageState.
1853
1854         Other errors besides the synthetic one download generates would have caused similar
1855         crashing.  Another example would be clicking on a second link before the load
1856         caused by clicking on the first link reached committed state.
1857
1858         Reviewed by Richard
1859
1860         * kwq/WebCoreBridge.h:
1861         * kwq/WebCoreBridge.mm:
1862         (-[WebCoreBridge didNotOpenURL:pageCache:]):  Invalidate the pageCache state
1863         when a load doesn't get off the ground.
1864
1865 2004-08-06  Ken Kocienda  <kocienda@apple.com>
1866
1867         Reviewed by Maciej
1868
1869         Finish off spellchecking support to HTML editing. Includes work to
1870         enable continuous spellchecking.
1871
1872         * khtml/editing/htmlediting_impl.cpp:
1873         (khtml::EditCommandImpl::markMisspellingsInSelection): Basically, a one-liner convenience to
1874         make the call over to the KWQKHTMLPart.
1875         (khtml::ReplaceSelectionCommandImpl::doApply): Did some rearranging of code so that the
1876         inserted content can be spell-checked. The function is basically the same, except for
1877         the addition of calls to markMisspellingsInSelection.
1878         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): New function. Takes a look at the
1879         selection that results after typing and determines whether it needs to spellcheck. 
1880         Since the word containing the current selection is never marked, this does a check to
1881         see if typing made a new word that is not in the current selection. Basically, you
1882         get this by being at the end of a word and typing a space.
1883         (khtml::TypingCommandImpl::typingAddedToOpenCommand): Call markMisspellingsAfterTyping.
1884         * khtml/editing/htmlediting_impl.h: Add new function declarations.
1885          * khtml/khtml_part.cpp:
1886         (KHTMLPart::setSelection): Since spell checks are updated when the selection changes, 
1887         and every selection change passes through here, this is a good place to put the call 
1888         to the spellchecker.
1889         * khtml/rendering/render_text.cpp:
1890         (InlineTextBox::paintMarker): Remove temporary misspelling line drawing code. Replace with
1891         call that does AppKit-style drawing. Fix up some comments.
1892         * khtml/xml/dom_docimpl.cpp:
1893         (DocumentImpl::addMarker): Repaint the node that had the marker added. This makes it show 
1894         up on setting it.
1895         (DocumentImpl::removeMarker): Ditto.
1896         (DocumentImpl::removeAllMarkers): New function. Convenience for clearing all markers.
1897         Used when not in continuous spellchecking mode.
1898         (DocumentImpl::shiftMarkers): Moves markers in response to changes in a node's contents.
1899         This shifts the marker offsets by a given amount. This keeps the markers in the right
1900         place when a user types in a node with markers already set on it.
1901         * khtml/xml/dom_docimpl.h: Added new functions. Removed unnecessary enum qualifier from some
1902         declarations.
1903         * khtml/xml/dom_position.cpp:
1904         (DOM::Position::previousWordBoundary): This function was susceptible to endless loops...and
1905         needlessly so. Basically, if the current position is at a word boundary, run the code again
1906         to find the previous word boundary.
1907         (DOM::Position::nextWordBoundary): Same as above, but for next word boundary.
1908         * khtml/xml/dom_textimpl.cpp:
1909         (CharacterDataImpl::setData): Call shiftMarkers to update markers when this node changes.
1910         (CharacterDataImpl::insertData): Ditto.
1911         (CharacterDataImpl::deleteData): Ditto.
1912         (CharacterDataImpl::replaceData): Ditto.
1913         * kwq/KWQKHTMLPart.h:
1914         * kwq/KWQKHTMLPart.mm:
1915         (KWQKHTMLPart::advanceToNextMisspelling):
1916         (KWQKHTMLPart::markMisspellingsInSelection):
1917         (KWQKHTMLPart::updateSpellChecking):
1918         (KWQKHTMLPart::respondToChangedSelection):
1919         * kwq/KWQPainter.h:
1920         * kwq/KWQPainter.mm:
1921         (QPainter::drawLineForMisspelling): New function. Call over to WebKit to do the drawing.
1922         * kwq/WebCoreBridge.h:
1923         * kwq/WebCoreBridge.mm:
1924         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Pass markMisspellings flag to
1925         setSelection call. 
1926         * kwq/WebCoreTextRenderer.h:
1927
1928 === Safari-155 ===
1929
1930 2004-08-05  David Hyatt  <hyatt@apple.com>
1931
1932         Fix for 3752542, stack overflow that crashes Safari at www.dr.dk.  This bug is a regression caused by a fix that
1933         attempted to repair <caption> behavior to make it behave like Panther.  This fix was incorrect, and in addition
1934         even our <caption> behavior on Panther was incorrect.
1935
1936         The patch that fixes this bug also makes <caption> handling work when <caption>s are contained inside a <td>, a <tr>,
1937         a <th>, or various table section tags (<tbody>, <tfoot>, <thead>).  The <caption> is pulled out and inserted just before
1938         the relevant ancestor table section.  This behavior matches other browsers.
1939         
1940         Reviewed by mjs
1941
1942         * khtml/html/htmlparser.cpp:
1943         (KHTMLParser::insertNode):
1944
1945 2004-08-04  David Hyatt  <hyatt@apple.com>
1946
1947         The top-level XSL sheet is now loaded and shows up in the activity window.  It is not yet parsed.
1948         
1949         Reviewed by kocienda
1950
1951         * WebCore.pbproj/project.pbxproj:
1952         * khtml/css/css_base.h:
1953         (DOM::StyleBaseImpl::isXSLStyleSheet):
1954         * khtml/css/css_stylesheetimpl.cpp:
1955         (CSSStyleSheetImpl::CSSStyleSheetImpl):
1956         * khtml/css/css_stylesheetimpl.h:
1957         (DOM::StyleSheetImpl::isLoading):
1958         * khtml/misc/loader.cpp:
1959         * khtml/xml/dom_xmlimpl.cpp:
1960         (DOM::ProcessingInstructionImpl::ProcessingInstructionImpl):
1961         (DOM::ProcessingInstructionImpl::checkStyleSheet):
1962         (DOM::ProcessingInstructionImpl::sheet):
1963         (DOM::ProcessingInstructionImpl::isLoading):
1964         (DOM::ProcessingInstructionImpl::setStyleSheet):
1965         * khtml/xml/dom_xmlimpl.h:
1966
1967 2004-08-04  David Hyatt  <hyatt@apple.com>
1968
1969         Add XSL Stylesheets to the WebCore cache.
1970         
1971         Reviewed by kocienda
1972
1973         * khtml/misc/loader.cpp:
1974         (CachedXSLStyleSheet::CachedXSLStyleSheet):
1975         (CachedXSLStyleSheet::ref):
1976         (CachedXSLStyleSheet::deref):
1977         (CachedXSLStyleSheet::data):
1978         (CachedXSLStyleSheet::checkNotify):
1979         (CachedXSLStyleSheet::error):
1980         (DocLoader::requestXSLStyleSheet):
1981         (Cache::requestXSLStyleSheet):
1982         (Cache::getStatistics):
1983         * khtml/misc/loader.h:
1984         (khtml::CachedObject::):
1985         (khtml::CachedXSLStyleSheet::sheet):
1986         (khtml::CachedXSLStyleSheet::schedule):
1987
1988 2004-08-03  Ken Kocienda  <kocienda@apple.com>
1989
1990         Reviewed by Hyatt
1991
1992         Changes to improve our handling of object tags during editing, including
1993         fixing this bug:
1994         
1995         <rdar://problem/3744533> Problem editing <OBJECT> elements displayed by WebPlugIns 
1996
1997         Part of the fix for this bug involves removing the close() function from render objects.
1998         It was decided that this code was no longer needed, as the work it did could be moved
1999         to other, more modern, places.
2000
2001         Fixed this bug:
2002         
2003         <rdar://problem/3748537> crash due to nil node passed into parentNode in computeTypingStyle deleting text
2004
2005         Finally, I filed and fixed this bug I discovered while fixing the one above:
2006         
2007         <rdar://problem/3749338> Select-all + delete leaves editing view without blinking caret
2008
2009         * khtml/editing/htmlediting_impl.cpp:
2010         (khtml::DeleteSelectionCommandImpl::computeTypingStyle): Fix for 3748537. Put in some more null
2011         checks. Bail, returning 0 for typing style if any null checks yield a null.
2012         (khtml::DeleteSelectionCommandImpl::doApply): Fix for 3749338. A removeNodeAndPrune call may wind
2013         up deleting the node where we calculated that we wanted to put the selection after deleting.
2014         If this happens, move this ending selection to a sensible alternative.
2015         (khtml::RemoveNodeAndPruneCommandImpl::doApply): Call previousNodeConsideringAtomicNodes instead 
2016         of traversePreviousNode when doing the prune.
2017         * khtml/html/html_objectimpl.cpp:
2018         (HTMLObjectElementImpl::attach): Part of the fix for 3744533.
2019         (HTMLObjectElementImpl::recalcStyle): Change old strcmp check for type of renderer to be a call
2020         to canRenderImageType.
2021         (HTMLObjectElementImpl::childrenChanged): New function. Helps to keep object tags up to date 
2022         as their children change. This also will help to make object tags respond properly to having their
2023         params changed by DOM calls.
2024         * khtml/html/html_objectimpl.h: Cosmetic change.
2025         * khtml/html/htmlparser.cpp:
2026         (KHTMLParser::insertNode): Remove call to obsolete closeRenderer() function.
2027         (KHTMLParser::popOneBlock): Ditto.
2028         * khtml/rendering/render_block.cpp:
2029         (khtml::RenderBlock::makeChildrenNonInline): Remove call to obsolete close() function.
2030         * khtml/rendering/render_container.cpp:
2031         (RenderContainer::updatePseudoChild): Ditto.
2032         * khtml/rendering/render_form.cpp: Remove obsolete close() function.
2033         * khtml/rendering/render_form.h: Ditto.
2034         * khtml/rendering/render_frames.cpp: Ditto.
2035         * khtml/rendering/render_frames.h: Ditto.
2036         * khtml/rendering/render_inline.cpp:
2037         (RenderInline::splitFlow): Remove calls to obsolete close() function.
2038         * khtml/rendering/render_object.h: Remove obsolete close() function.
2039         * khtml/rendering/render_table.cpp:
2040         (RenderTableCell::layout): Ditto.
2041         * khtml/rendering/render_table.h: Ditto.
2042         * khtml/xml/dom_docimpl.cpp:
2043         (DocumentImpl::closeInternal): Remove call to obsolete close() function.
2044         * khtml/xml/dom_nodeimpl.cpp: Remove obsolete m_rendererNeedsClose initialization.
2045         (NodeImpl::NodeImpl): Remove obsolete closeRenderer() function.
2046         (NodeImpl::attach): Remove call to obsolete close() function.
2047         (NodeImpl::isAtomicNode): New function. Helps to fix 3744533. Determines if a node should
2048         be treated as an atomic node for the purposes of editing.
2049         (NodeImpl::previousNodeConsideringAtomicNodes): New helper to traverse tree taking atomic nodes
2050         into account.
2051         (NodeImpl::nextNodeConsideringAtomicNodes): Ditto.
2052         (NodeImpl::previousLeafNode): Now calls nextNodeConsideringAtomicNodes to iterate. This helps to 
2053         prevent deleting PARAM tag portions of object tags erroneously.
2054         (NodeImpl::nextLeafNode): Ditto.
2055         * khtml/xml/dom_nodeimpl.h: Removed m_rendererNeedsClose bit. Added declarations for new functions.
2056         * khtml/xml/dom_position.cpp:
2057         (DOM::Position::equivalentDeepPosition): Now takes atomic nodes into account as it drills down into the
2058         tree.
2059         * khtml/xml/xml_tokenizer.cpp:
2060         (khtml::XMLTokenizer::endElement): Remove call to obsolete closeRenderer() function.
2061
2062 2004-08-03  David Hyatt  <hyatt@apple.com>
2063
2064         Add the deprecated text/xsl MIME type (introduced by Internet Explorer 5) as an acceptable MIME type for XML
2065         documents.
2066         
2067         Reviewed by john
2068
2069         * khtml/ecma/xmlhttprequest.cpp:
2070         (KJS::XMLHttpRequest::getValueProperty):
2071         * khtml/khtml_part.cpp:
2072         (KHTMLPart::begin):
2073         * khtml/misc/loader.cpp:
2074         (CachedXBLDocument::CachedXBLDocument):
2075
2076 2004-08-03  Maciej Stachowiak  <mjs@apple.com>
2077
2078         Reviewed by Ken.
2079
2080         - remove assertions that asserted text is non-empty, just avoid
2081         doing anything for the empty case; this is needed because input
2082         methods like to insert empty text in various cases.
2083
2084         * khtml/editing/htmlediting_impl.cpp:
2085         (khtml::InsertTextCommandImpl::InsertTextCommandImpl):
2086         (khtml::InsertTextCommandImpl::doApply):
2087         (khtml::InsertTextCommandImpl::doUnapply):
2088
2089 2004-08-03  Darin Adler  <darin@apple.com>
2090
2091         Reviewed by Ken.
2092
2093         - fixed <rdar://problem/3740937> ER: A way to turn a DOMRange into text (equivalent of -innerText)
2094
2095         * khtml/xml/dom2_rangeimpl.h: Added text function. Like innerText, but on a range.
2096         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::text): Added.
2097
2098         * kwq/DOM.mm: (-[DOMRange _text]): Added. Calls DOM::RangeImpl::text.
2099         * kwq/DOMPrivate.h: Added.
2100
2101         * WebCore.pbproj/project.pbxproj: Added DOMPrivate.h, an internal header (private in WebKit, internal here).
2102
2103 2004-08-02  John Sullivan  <sullivan@apple.com>
2104
2105         Reviewed by Darin.
2106         
2107         WebCore part of fix for <rdar://problem/3631868> NSToolbar adoption: 
2108         Tab key should cycle around toolbar and page content
2109
2110         * kwq/WebCoreBridge.mm:
2111         (-[WebCoreBridge nextKeyViewInsideWebFrameViews]):
2112         Made this method start looking from the current focus node. This won't
2113         affect any existing callers because there were no existing callers.
2114         (-[WebCoreBridge previousKeyViewInsideWebFrameViews]):
2115         ditto
2116
2117 2004-08-02  David Hyatt  <hyatt@apple.com>
2118
2119         Create a #define for XSLT support that at the moment will only be enabled on Tiger.
2120         
2121         Reviewed by kocienda
2122
2123         * WebCorePrefix.h:
2124
2125 2004-08-02  Ken Kocienda  <kocienda@apple.com>
2126
2127         Reviewed by Hyatt
2128
2129         Fix for this bug:
2130         
2131         <rdar://problem/3747945> Deleting replaced element can cause crash
2132
2133         * khtml/xml/dom_selection.cpp:
2134         (DOM::Selection::layoutCaret): The crux of the problem is that
2135         the caret drawing code tries to draw the caret at the image
2136         offset after it has been removed from the document. So, make
2137         sure the start node for the selection is in the document before
2138         trying to lay out the caret using that node.
2139
2140 2004-07-31  Ken Kocienda  <kocienda@apple.com>
2141
2142         Reviewed by John
2143
2144         <rdar://problem/3745498> HTMLCompose: Can't edit new empty message (and typing eventually crashes)
2145         <rdar://problem/3746408> HTMLCompose: cannot type in message body of new messages (and tabbing causes a crash.)
2146         
2147         * kwq/KWQKHTMLPart.mm:
2148         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Add in some smarts to look around for
2149         a good place to put the caret if focus is turning "on", the part is contentEditable,
2150         and it does not currently have a selection. This has the effect of flashing the caret 
2151         in a contentEditable view automatically without requiring the programmer to set a 
2152         selection explicitly. This also fixes the bug listed above. Both are cases where the
2153         bad behavior happened since the editing code tried to process input without an active 
2154         selection. I always took the extra step of setting the selection explicitly when
2155         opening new windows in programs like Blot, but it seems silly to require developers to
2156         do this in general. With this patch, they no longer need to.
2157
2158 2004-07-30  Ken Kocienda  <kocienda@apple.com>
2159
2160         Reviewed by John
2161
2162         Fix for this bug:
2163         
2164         <rdar://problem/3745498> HTMLCompose: Can't edit new empty message (and typing eventually crashes)
2165
2166         * khtml/xml/dom_selection.cpp:
2167         (DOM::Selection::layoutCaret): Don't bail when the start position of the selection is not in rendered
2168         content. The validate() bottleneck function will do all it can to make sure that the start is
2169         moved to rendered content if at all possible before this function runs. If no rendered position can
2170         be found, like in the case of an empty body element, we still want to flash the caret there.
2171         (DOM::Selection::validate): Look for rendered positions for the base and extent, but save off the
2172         base before making this move, and set the selection to the enclosing block flow element of this
2173         original base if no rendered positions can be found. This has the effect of flashing the caret 
2174         someplace in an editable block, even if it does not contain any rendered content.
2175
2176 2004-07-30  Ken Kocienda  <kocienda@apple.com>
2177
2178         Reviewed by John
2179
2180         Fix a large number of editing layout test regressions.
2181
2182         * khtml/misc/khtml_text_operations.cpp:
2183         (khtml::TextIterator::TextIterator): Use a new way to compute the end offset of a node for
2184         purposes of text iteration. The end offset is either child count of a node with children,
2185         or the maxOffset() of a node that does not.
2186         * khtml/xml/dom_nodeimpl.cpp: Remove maxOffset() implementation from NodeBaseImpl. This 
2187         conflicted with the usage of this function that is needed for editing.
2188         * khtml/xml/dom_nodeimpl.h: Ditto.
2189
2190 2004-07-30  Trey Matteson  <trey@apple.com>
2191
2192         Next steps for spell checking:  We have data structures for the marked pieces of
2193         text and the smarts to draw them (although at this point, they just get a green
2194         underline instead of using the real AppKit pattern.)
2195
2196         Note we don't call this code outside of development, since at this point I suspect
2197         it could be made to crash by mixing spelling and editing. 
2198
2199         Reviewed by Ken.
2200
2201         * khtml/rendering/render_text.cpp:
2202         (InlineTextBox::paintMarker):  Paint one marker's intersection with a text run
2203         (RenderText::paint):  Find intersections of all markers and runs, call paintMarker
2204         * khtml/rendering/render_text.h:
2205         * khtml/xml/dom_docimpl.cpp:
2206         (DocumentImpl::addMarker):  Adds a marker to a DOM Range.
2207         (DocumentImpl::removeMarker):  Removes a marker from a DOM Range.
2208         (DocumentImpl::addMarker):  Adds a marker to a single DOM Node, merging previous
2209         markers as needed.
2210         (DocumentImpl::removeMarker):  Removes a marker from a single DOM Node, breaking
2211         up previous markers as needed.
2212         (DocumentImpl::markersForNode):  Return markers for a Node.
2213         * khtml/xml/dom_docimpl.h:
2214         (DOM::DocumentMarker::):  New marker struct
2215         (DOM::DocumentMarker::operator == ):
2216         (DOM::DocumentMarker::operator != ):
2217         * kwq/KWQKHTMLPart.mm:
2218         (KWQKHTMLPart::advanceToNextMisspelling):  Mark misspelled ranges when we find them.
2219         Debug only for now.
2220
2221 2004-07-29  Maciej Stachowiak  <mjs@apple.com>
2222
2223         Reviewed by Darin.
2224
2225         <rdar://problem/3745808> Seed: WebKit: Table's caption broken
2226         
2227         * khtml/html/htmlparser.cpp:
2228         (KHTMLParser::insertNode): When a caption appears in an illegal
2229         place in a table, pop blocks until we hit a place where it's
2230         allowed.
2231
2232 === Safari-154 ===
2233
2234 2004-07-29  Darin Adler  <darin@apple.com>
2235
2236         Reviewed by Ken.
2237
2238         - added constants for motion across entire document for use in operations like
2239           move to beginning of document
2240
2241         * khtml/xml/dom_selection.h: Added DOCUMENT to ETextGranularity.
2242         * khtml/xml/dom_selection.cpp:
2243         (DOM::Selection::modifyExtendingRightForward): Added case for DOCUMENT.
2244         (DOM::Selection::modifyMovingRightForward): Added case for DOCUMENT.
2245         (DOM::Selection::modifyExtendingLeftBackward): Added case for DOCUMENT.
2246         (DOM::Selection::modifyMovingLeftBackward): Added case for DOCUMENT.
2247         (DOM::Selection::validate): Changed if statements into switch statement,
2248         added case for DOCUMENT.
2249
2250         * kwq/WebCoreBridge.h: Added WebCoreBridge to WebSelectionGranularity.
2251
2252 2004-07-28  Trey Matteson  <trey@apple.com>
2253
2254         Small refinement of last checkin.  The text iterators now return reasonable values
2255         for range() when atEnd, which gets rid of special cases and pitfalls in the client.
2256
2257         Reviewed by Ken.
2258
2259         * khtml/misc/khtml_text_operations.cpp:
2260         (khtml::TextIterator::TextIterator):  Set endOffset to a valid value instead of
2261         using LONG_MAX.
2262         (khtml::TextIterator::range):  Implement when atEnd.
2263         (khtml::CharacterIterator::range):  Don't massage result when atEnd.
2264         (khtml::WordAwareIterator::WordAwareIterator):  Now that this is fixed, we no
2265         longer need this special case.
2266         (khtml::WordAwareIterator::advance):  Always set range, even when atEnd, now that
2267         TextIterator::range() always works.
2268         * khtml/xml/dom_nodeimpl.cpp:
2269         (NodeImpl::childNodeCount):  Made const
2270         (NodeBaseImpl::maxOffset):  Add missing implementation
2271         * khtml/xml/dom_nodeimpl.h:
2272         * kwq/KWQKHTMLPart.mm:
2273         (KWQKHTMLPart::advanceToNextMisspelling):  Get rid of special cases, always call
2274         range on our iterator even when it is atEnd.
2275
2276 2004-07-28  Maciej Stachowiak  <mjs@apple.com>
2277
2278         Reviewed by Trey.
2279
2280         <rdar://problem/3678534> controls on page at http://help.sap.com don't work properly
2281
2282         To fix this I implemented the various JavaScript BarInfo properties in JavaScript.
2283         
2284         * khtml/ecma/kjs_window.cpp:
2285         (Window::Window):
2286         (Window::locationbar):
2287         (Window::menubar):
2288         (Window::personalbar):
2289         (Window::statusbar):
2290         (Window::toolbar):
2291         (Window::scrollbars):
2292         (Window::mark):
2293         (Window::get):
2294         (SelectionFunc::tryCall):
2295         (BarInfo::BarInfo):
2296         (BarInfo::~BarInfo):
2297         (BarInfo::get):
2298         (BarInfo::put):
2299         * khtml/ecma/kjs_window.h:
2300         (KJS::Window::):
2301         (KJS::BarInfo::):
2302         (KJS::BarInfo::part):
2303         (KJS::BarInfo::classInfo):
2304         * khtml/ecma/kjs_window.lut.h:
2305         (KJS::):
2306         * kwq/KWQKHTMLPart.h:
2307         * kwq/KWQKHTMLPart.mm:
2308         (KWQKHTMLPart::locationbarVisible):
2309         (KWQKHTMLPart::menubarVisible):
2310         (KWQKHTMLPart::personalbarVisible):
2311         (KWQKHTMLPart::scrollbarsVisible):
2312         (KWQKHTMLPart::statusbarVisible):
2313         (KWQKHTMLPart::toolbarVisible):
2314
2315 2004-07-28  Ken Kocienda  <kocienda@apple.com>
2316
2317         Added more layout tests.
2318
2319         * layout-tests/editing/style/style-3681552-fix-001-expected.txt: Added.
2320         * layout-tests/editing/style/style-3681552-fix-001.html: Added.
2321         * layout-tests/editing/style/style-3681552-fix-002-expected.txt: Added.
2322         * layout-tests/editing/style/style-3681552-fix-002.html: Added.
2323         * layout-tests/editing/style/style-3690704-fix-expected.txt: Added.
2324         * layout-tests/editing/style/style-3690704-fix.html: Added.
2325         * layout-tests/editing/style/typing-style-001-expected.txt: Added.
2326         * layout-tests/editing/style/typing-style-001.html: Added.
2327         * layout-tests/editing/style/typing-style-002-expected.txt: Added.
2328         * layout-tests/editing/style/typing-style-002.html: Added.
2329
2330 2004-07-28  Ken Kocienda  <kocienda@apple.com>
2331
2332         Added some layout tests.
2333
2334         * layout-tests/editing/selection/select-all-001-expected.txt: Added.
2335         * layout-tests/editing/selection/select-all-001.html: Added.
2336         * layout-tests/editing/selection/select-all-002-expected.txt: Added.
2337         * layout-tests/editing/selection/select-all-002.html: Added.
2338         * layout-tests/editing/selection/select-all-003-expected.txt: Added.
2339         * layout-tests/editing/selection/select-all-003.html: Added.
2340
2341 2004-07-28  Trey Matteson  <trey@apple.com>
2342
2343         Spellchecking, Part I.  Basic spellcheck is working.  Spelling panel is hooked up.
2344
2345         At this point, no special marking of misspellings, no grammar check, no context
2346         menu integration, no "check continually" mode.
2347
2348         Much of the TextIterator and CharacterIterator interface got published outside
2349         of khtml_text_operations.cpp, with a little API rationalizing.
2350
2351         Reviewed by Ken.
2352
2353         * khtml/misc/khtml_text_operations.cpp:
2354         (khtml::TextIterator::range):  Name changes.
2355         (khtml::CharacterIterator::CharacterIterator):  Ditto.
2356         (khtml::CharacterIterator::range):  Ditto.
2357         (khtml::CharacterIterator::advance):  Ditto.
2358         (khtml::CharacterIterator::string):  New method to consume chars into a string.
2359         (khtml::WordAwareIterator::WordAwareIterator):  New class that iterates over
2360         the text respecting word boundaries.
2361         (khtml::WordAwareIterator::advance):
2362         (khtml::WordAwareIterator::length):
2363         (khtml::WordAwareIterator::characters):
2364         (khtml::plainText):  Name changes.
2365         (khtml::findPlainText):  Ditto.
2366
2367         API moved from cpp to header file.
2368         * khtml/misc/khtml_text_operations.h:
2369         (khtml::TextIterator::atEnd):
2370         (khtml::TextIterator::length):
2371         (khtml::TextIterator::characters):
2372         (khtml::CharacterIterator::atBreak):
2373         (khtml::CharacterIterator::atEnd):
2374         (khtml::CharacterIterator::length):
2375         (khtml::CharacterIterator::characters):
2376         (khtml::CharacterIterator::characterOffset):
2377         (khtml::WordAwareIterator::atEnd):
2378         (khtml::WordAwareIterator::range):
2379
2380         * khtml/xml/dom_position.cpp:
2381         (DOM::Position::previousWordBoundary):  New name for the old routine.  This routines semantics
2382         match the current behavior of this code.
2383         (DOM::Position::nextWordBoundary):  Ditto.
2384         (DOM::Position::previousWordPosition):  Call old code with the new name.  When we fix
2385         word advancement, this routine will have its own impl.
2386         (DOM::Position::nextWordPosition):  Ditto.
2387         * khtml/xml/dom_position.h:
2388         * khtml/xml/dom_selection.h:
2389         (DOM::Selection::rangeStart):  New convenience methods
2390         (DOM::Selection::rangeEnd):
2391         * kwq/KWQKHTMLPart.h:
2392         * kwq/KWQKHTMLPart.mm:
2393         (KWQKHTMLPart::findString):  Ensure we use range-compatible positions.
2394         (KWQKHTMLPart::advanceToNextMisspelling):  Brand new.
2395         * kwq/WebCoreBridge.h:
2396         * kwq/WebCoreBridge.mm:
2397         (-[WebCoreBridge advanceToNextMisspelling]):  Typical bridge glue.
2398
2399 2004-07-28  Ken Kocienda  <kocienda@apple.com>
2400
2401         Reviewed by Maciej
2402         
2403         Fixed this bug:
2404         
2405         <rdar://problem/3690704> marking partly bold text italic across blocks wrongly extends the bold section
2406
2407         * khtml/editing/htmlediting_impl.cpp:
2408         (khtml::ApplyStyleCommandImpl::doApply): Fixed loop that gathers up groups of nodes to
2409         pass off to the function that applies styles. While this is meant to be conservative in
2410         order to leave the DOM well-formed in all cases, it contained an error where the set
2411         of nodes to be styled together erroneously could include a node that was meant for 
2412         the next set. Fixed.
2413         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Unrelated change to remove DOM:: scope
2414         resolution qualifier. Unneeded here.
2415
2416 2004-07-28  Darin Adler  <darin@apple.com>
2417
2418         Reviewed by Trey.
2419
2420         - fixed <rdar://problem/3658471> REGRESSION: Node.appendChild( ) fails when parent already contains that child
2421
2422         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::isAncestor): Restore the original meaning of this function.
2423         It returns true if the parameter is an ancestor of this, but had been changed to return true if this
2424         is an ancestor of the parameter. However, we do retain one change we made at the same time, which is
2425         that it does not consider a node an ancestor of itself.
2426
2427         * khtml/editing/htmlediting_impl.cpp: (khtml::ApplyStyleCommandImpl::nodeFullySelected):
2428         * khtml/xml/dom2_traversalimpl.cpp: (DOM::NodeIteratorImpl::notifyBeforeNodeRemoval):
2429         Reverse parameters for callers who wanted the new meaning of isAncestor, with care to not use it in
2430         any cases where the pointer might be 0.
2431
2432         * khtml/xml/dom_nodeimpl.h: Added const to the parameter to make things more symmetric and allow the
2433         new uses to all compile.
2434
2435 2004-07-28  Ken Kocienda  <kocienda@apple.com>
2436
2437         Reviewed by Darin
2438
2439         Fix for this bug:
2440         
2441         <rdar://problem/3681552> html editing needs to preserve typing font when replacing selection
2442
2443         * khtml/css/css_valueimpl.cpp:
2444         (CSSStyleDeclarationImpl::merge): New helper that merges styles together. Helpful for
2445         dealing with typing styles.
2446         * khtml/css/css_valueimpl.h:
2447         * khtml/editing/htmlediting_impl.cpp:
2448         (khtml::DeleteSelectionCommandImpl::computeTypingStyle): New helper that updates the
2449         typing style based on the current selection. This is a convenient bottleneck for all
2450         the code that needs to worry about typing style.
2451         (khtml::DeleteSelectionCommandImpl::doApply): Update typing style before doing the delete.
2452         (khtml::InputNewlineCommandImpl::doApply): No need to redeclare exceptionCode local.
2453         Improve comments. 
2454         (khtml::InputTextCommandImpl::prepareForTextInsertion): Remove unneeded complication when 
2455         figuring out where to insert style node. Not even sure what I was trying to do here, but
2456         it does not seem to be needed any more.
2457         (khtml::InputTextCommandImpl::execute): Remove unneeded comment.
2458         * khtml/editing/htmlediting_impl.h: Declare new computeTypingStyle helper.
2459         * khtml/khtml_part.cpp:
2460         (KHTMLPart::setCaretVisible): Call selectionLayoutChanged instead of notifySelectionChanged
2461         in this function. The selection did not change simply by calling this function, but it
2462         does need a layout.
2463         (KHTMLPart::notifySelectionChanged): Treat clearing the typing style much like closing typing,
2464         instead of clearing it unconditionally.
2465         (KHTMLPart::applyStyle): In the case where the current selection is a caret, merge the
2466         style being applied with any current typing style that already exists.
2467
2468 2004-07-28  Darin Adler  <darin@apple.com>
2469
2470         Reviewed by Ken.
2471
2472         - fixed <rdar://problem/3711080> REGRESSION (125-146): form fields have shrunk by 1 pixel, and now clip descenders
2473
2474         * kwq/KWQLineEdit.mm: (QLineEdit::sizeForCharacterWidth):
2475         Compute the size without ever calling cellSize. After talking with Andrew Platzer,
2476         we decided that hard-coding the size of the borders of a text field was the best
2477         way for WebCore to handle this.
2478
2479 2004-07-28  Darin Adler  <darin@apple.com>
2480
2481         Reviewed by Ken.
2482
2483         - fixed <rdar://problem/3743204> REGRESSION: crash at startribune.com in InlineBox::root()
2484
2485         * khtml/rendering/render_flow.cpp: (RenderFlow::dirtyLinesFromChangedChild):
2486         Added a check for nil.
2487
2488 2004-07-27  Darin Adler  <darin@apple.com>
2489
2490         Reviewed by Trey.
2491
2492         - fixed <rdar://problem/3743138> opaque colors come out of getComputedStyle as "rgba", transparent ones as "rgb"
2493
2494         * khtml/css/css_valueimpl.cpp: (CSSPrimitiveValueImpl::cssText): Use "rgb" rather than
2495         "rgba" when alpha is 0xFF, not when alpha is 0.
2496
2497 2004-07-27  Ken Kocienda  <kocienda@apple.com>
2498
2499         Reviewed by Hyatt
2500         
2501         Fixed the problem where BR elements on lines by themselves don't paint when selected.
2502
2503         * khtml/khtml_part.cpp:
2504         (KHTMLPart::selectAll): Related fix. Include BR's when figuring out what "all" is.
2505         * khtml/rendering/render_br.cpp:
2506         (RenderBR::paint): New function implementation. Teach BR's how to paint selections.
2507         * khtml/rendering/render_br.h:
2508         * khtml/rendering/render_text.cpp: 
2509         (InlineTextBox::paintSelection): Fix some geometry calculations to be more readable (i.e. don't
2510         reuse function argument as a local). Also, improve the logic for determining whether to 
2511         extend the selection to block boundaries.
2512         (RenderText::paint): Remove extendSelection argument from paintSelection. The logic to figure out
2513         extensions is now fully contained in paintSelection.
2514         * khtml/rendering/render_text.h:
2515
2516 2004-07-27  David Hyatt  <hyatt@apple.com>
2517
2518         Fix for 3665211 (again).  Make sure not to leave child line boxes pointing to deleted ancestor line boxes.
2519         
2520         Reviewed by kocienda
2521
2522         * khtml/rendering/render_block.cpp:
2523         (khtml::RenderBlock::removeChild):
2524
2525 2004-07-26  Chris Blumenberg  <cblu@apple.com>
2526
2527         Fixed: WebView scrolls to the top after making an editing change via drag & drop
2528
2529         Fixed by Ken, reviewed by me.
2530
2531         * kwq/WebCoreBridge.mm:
2532         (-[WebCoreBridge ensureCaretVisible]): do nothing if the selection is not a caret
2533
2534 === Safari-153 ===
2535
2536 2004-07-26  Maciej Stachowiak  <mjs@apple.com>
2537
2538         Reviewed by John.
2539
2540         <rdar://problem/3740855> REGRESSION: Flash incorrectly positioned at macromedia.com
2541         
2542         * khtml/html/htmltokenizer.cpp:
2543         (khtml::HTMLTokenizer::scriptExecution): Do the prepending-src
2544         trick as for inline script execution.
2545
2546         Added new layout tests covering this and other recent tokenizer
2547         bugs.
2548         
2549         * layout-tests/fast/tokenizer/001-expected.txt: Added.
2550         * layout-tests/fast/tokenizer/001.html: Added.
2551         * layout-tests/fast/tokenizer/002-expected.txt: Added.
2552         * layout-tests/fast/tokenizer/002.html: Added.
2553         * layout-tests/fast/tokenizer/003-expected.txt: Added.
2554         * layout-tests/fast/tokenizer/003.html: Added.
2555         * layout-tests/fast/tokenizer/resources/003-script.js: Added.
2556
2557 2004-07-23  Ken Kocienda  <kocienda@apple.com>
2558
2559         Reviewed by Trey
2560
2561         Fix for this bug:
2562         
2563         <rdar://problem/3738920> Caret blinks in inactive window
2564
2565         As part of the fix, I cleaned up the way we handle special drawing that needs
2566         to be done in the HTML view that is first responder in the key window (e.g the
2567         drawing of text selection highlight and caret blinking).
2568
2569         * khtml/khtml_part.cpp: Removed setCaretVisible function. Updating caret visibility
2570         is now done in setDisplaysWithFocusAttributes, described below.
2571         * khtml/khtml_part.h: Ditto.
2572         * khtml/khtmlpart_p.h:
2573         (KHTMLPartPrivate::KHTMLPartPrivate): m_caretVisible now defaults to false. This prevents
2574         the caret from blinking when an app is started from the command line and remains in the
2575         background.
2576         * khtml/khtmlview.cpp:
2577         (KHTMLView::focusInEvent): Remove caret code from here. Not needed.
2578         (KHTMLView::focusOutEvent): Ditto.
2579         * kwq/KWQKHTMLPart.h:
2580         (KWQKHTMLPart::displaysWithFocusAttributes): New accessor to return cached value to other code
2581         in WebCore.
2582         * kwq/KWQKHTMLPart.mm:
2583         (KWQKHTMLPart::KWQKHTMLPart):
2584         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Renamed from setShowsFirstResponder and modified
2585         to do the display updating in a clearer way....and now has comments!
2586         * kwq/WebCoreBridge.h: Remove several obsolete functions that use to try to do the work of the new
2587         setDisplaysWithFocusAttributes function (and did so less well).
2588         * kwq/WebCoreBridge.mm:
2589         (-[WebCoreBridge drawRect:]): Now calls displaysWithFocusAttributes to figure out how to draw the
2590         text selection background.
2591         (-[WebCoreBridge setDisplaysWithFocusAttributes:]): Calls through to setDisplaysWithFocusAttributes in 
2592         KWQKHTMLPart.
2593         (-[WebCoreBridge selectionColor]): Flipped the value of this ternary expression to accommodate the
2594         change from usesInactiveTextBackgroundColor to setDisplaysWithFocusAttributes.
2595         (-[WebCoreBridge setCaretVisible:]): Removed.
2596
2597 2004-07-23  John Sullivan  <sullivan@apple.com>
2598
2599         Reviewed by Maciej.
2600
2601         - fixed <rdar://problem/3691569> REGRESSION (142): cmd-shift-clicking on a link 
2602         now also extends selection (even if there wasn't one before)
2603
2604         * khtml/khtml_part.cpp:
2605         (KHTMLPart::handleMousePressEventSingleClick):
2606         Uh, duh. Got a ! wrong last time somehow, so it did even more the wrong thing
2607         than ever. I did test this before, so my best guess is an accidental undo or
2608         something before committing.
2609
2610 2004-07-23  David Hyatt  <hyatt@apple.com>
2611
2612         Fix for 3735084 and 3737209, when you can find no line boxes in your previous sibling, the line box to dirty
2613         should be the *first* line box and not the last.
2614         
2615         Reviewed by kocienda
2616
2617         * khtml/rendering/render_flow.cpp:
2618         (RenderFlow::dirtyLinesFromChangedChild):
2619
2620 2004-07-23  Ken Kocienda  <kocienda@apple.com>
2621
2622         Reviewed by John
2623
2624         * khtml/xml/dom_selection.cpp:
2625         (DOM::Selection::validate): Not exactly a fix of anything per se, but more of a refinement
2626         of how selection validation works. The idea is to let the selection validation process
2627         end up with an empty selection given real DOM position inputs if the validation code
2628         cannot find a rendered position. Since selection is all about display, this makes sense.
2629         Currently, the code will allow the selection to be placed in a location that is not
2630         rendered, and this does nobody any good, as it can lead to bugs like accepting key input
2631         in a div that is set to display:none.
2632
2633 2004-07-23  Ken Kocienda  <kocienda@apple.com>
2634
2635         Updated layout tests with new expected results.
2636
2637         * layout-tests/editing/execCommand/boldSelection-expected.txt
2638         * layout-tests/editing/selection/extend-by-character-001-expected.txt
2639         * layout-tests/editing/selection/extend-by-character-003-expected.txt
2640         * layout-tests/editing/selection/unrendered-005-expected.txt
2641
2642 2004-07-22  Maciej Stachowiak  <mjs@apple.com>
2643
2644         Reviewed by Kevin.
2645
2646         <rdar://problem/3725467> REGRESSION(140-142) nothing displayed at http://Ye-Olde-Movies.tripod.com
2647         <rdar://problem/3599494> REGRESSION (100-125): Frame does not refresh until user clicks on browser.
2648         
2649         * khtml/rendering/render_frames.cpp:
2650         (RenderFrameSet::layout): When returning early because there are
2651         no children, make sure to mark self as no longer needing
2652         layout. Otherwise, when children are added, we'll fail to
2653         propagate childrenNeedLayout to our own parent! This is almost
2654         certainly a long-standing bug that was just masked by our old
2655         layout tomfoolery.
2656
2657 2004-07-22  Kevin Decker  <kdecker@apple.com>
2658
2659         Reviewed by Darin
2660
2661         Fixed <rdar://problem/3682340> (error console does not include source urls or line numbers of event exceptions).
2662
2663         * khtml/ecma/kjs_events.cpp:
2664         (JSLazyEventListener::JSLazyEventListener):
2665         (JSLazyEventListener::parseCode):
2666         * khtml/ecma/kjs_events.h:
2667         * khtml/ecma/kjs_proxy.cpp:
2668         (KJSProxyImpl::createHTMLEventHandler):
2669         * khtml/ecma/kjs_window.cpp:
2670         (Window::getJSLazyEventListener):
2671         * khtml/ecma/kjs_window.h:
2672
2673 2004-07-22  Ken Kocienda  <kocienda@apple.com>
2674
2675         Reviewed by Hyatt
2676
2677         Fix for this bug:
2678
2679         <rdar://problem/3724344> Bolding and unbolding creates extraneous tags
2680
2681         * khtml/editing/htmlediting_impl.cpp:
2682         (khtml::ApplyStyleCommandImpl::doApply): Move the start of the selection upstream
2683         before calling removeStyle. This makes sure we remove all styles that could apply to the 
2684         selection, and not just ones in from the start position of the selection passed to us. 
2685         This fixes the bug.
2686         * khtml/xml/dom_selection.cpp:
2687         (DOM::Selection::validate): Related fix to "constrain" the selection to be the 
2688         smallest equivalent range of nodes, in effect making a "canonical" version of the
2689         selection. While this is not strictly necessary to fix the bug, it is a step I have been 
2690         wanting to take this step for a long time, and some recent improvements made it 
2691         possible for me to do now in just two lines of code.
2692
2693 2004-07-22  Ken Kocienda  <kocienda@apple.com>
2694
2695         Reviewed by Hyatt
2696
2697         Fix for this bug:
2698         
2699         <rdar://problem/3711264> difficult (impossible?) to get cursor in an editable webview containing only tags
2700
2701         * khtml/rendering/render_container.cpp:
2702         (RenderContainer::positionForCoordinates): Don't assume you can pass off
2703         the check to a first child if there is one, since the child can be an element
2704         we do not want to place the caret in, like a table row with no cells (the case
2705         in the bug above). So now, we iterate of the renderer's children looking for
2706         the closest one, but only consider those renderers which either have children
2707         themselves, or are render block flows or are render inlines. 
2708
2709 2004-07-22  Darin Adler  <darin@apple.com>
2710
2711         - remove a bunch of now-unused code
2712
2713         * ForwardingHeaders/qxml.h: Removed.
2714         * kwq/KWQXmlAttributes.h: Removed.
2715         * kwq/KWQXmlAttributes.mm: Removed.
2716         * kwq/KWQXmlDefaultHandler.h: Removed.
2717         * kwq/KWQXmlDefaultHandler.mm: Removed.
2718         * kwq/KWQXmlSimpleReader.h: Removed.
2719         * kwq/KWQXmlSimpleReader.mm: Removed.
2720
2721 2004-07-22  Darin Adler  <darin@apple.com>
2722
2723         Reviewed by Dave.
2724
2725         - got rid of QXml classes and changed XML parsing to use libxml directly
2726
2727         This is the first step toward more direct use of libxml and libxslt.
2728         Dave is planning to build on this to implement XSLT and to improve our handling
2729         of XML documents (faster and more feature complete, including DTDs).
2730
2731         * khtml/html/html_elementimpl.cpp:
2732         (HTMLElementImpl::createContextualFragment):
2733         * khtml/html/htmltokenizer.cpp:
2734         (khtml::HTMLTokenizer::HTMLTokenizer):
2735         * khtml/html/htmltokenizer.h:
2736         * khtml/xml/dom_docimpl.cpp:
2737         (DocumentImpl::createTokenizer):
2738         (DocumentImpl::open):
2739         * khtml/xml/dom_docimpl.h:
2740         (DOM::DocumentImpl::tokenizer):
2741         * khtml/xml/dom_xmlimpl.cpp:
2742         (DOM::ProcessingInstructionImpl::checkStyleSheet):
2743         * khtml/xml/dom_xmlimpl.h:
2744         * khtml/xml/xml_tokenizer.h:
2745         * khtml/xml/xml_tokenizer.cpp: Redid this all to use libxml directly.
2746
2747         * WebCore.pbproj/project.pbxproj: Removed a bunch of files.
2748
2749 2004-07-21  Trey Matteson  <trey@apple.com>
2750
2751         DHTML dragging should use UTI for MIME-pboard type conversion
2752
2753         Reviewed by Ken
2754
2755         * kwq/KWQClipboard.mm:
2756         (cocoaTypeFromMIMEType):  Use UTI, except for cases we need to hardwire.  Only cut off
2757         MIME args following a semi-colon for text/plain.
2758         (MIMETypeFromCocoaType): Use UTI, except for cases we need to hardwire.  
2759         (KWQClipboard::types):  Filter out ancient NSAsciiPboardType so DHTML never sees this cruft.
2760
2761 2004-07-21  Ken Kocienda  <kocienda@apple.com>
2762
2763         Reviewed by Trey
2764
2765         Remove handling of HTML editing key events from WebCore.
2766         This now happens in WebKit if an event passes all the
2767         way through WebCore without being handled by the DOM.
2768
2769         In each case below, function were removed, as their
2770         only purpose was to handle editing key events.
2771
2772         * khtml/xml/dom_elementimpl.cpp
2773         * khtml/xml/dom_elementimpl.h
2774         * kwq/KWQKHTMLPart.h
2775         * kwq/KWQKHTMLPart.mm
2776         * kwq/WebCoreBridge.h
2777
2778 2004-07-21  Ken Kocienda  <kocienda@apple.com>
2779
2780         Reviewed by John
2781
2782         * khtml/xml/dom_selection.cpp:
2783         (DOM::Selection::modifyExtendingRightForward): Add LINE_BOUNDARY case to the switch statement in this
2784         function. Use the startAndEndLineNodesIncludingNode helper which already existed to get the right
2785         position.
2786         (DOM::Selection::modifyMovingRightForward): Ditto
2787         (DOM::Selection::modifyExtendingLeftBackward): Ditto
2788         (DOM::Selection::modifyMovingLeftBackward): Ditto
2789         * khtml/xml/dom_selection.h: 
2790         (DOM::Selection::): Add LINE_BOUNDARY constant to ETextGranularity enum. This
2791         specifies a new kind of movement that we need to implement the "move-to beggining/end of line"
2792         behavior which AppKit binds to cmd+left/right arrow keys.
2793         * kwq/WebCoreBridge.h: Add WebSelectToLineBoundary constant. This matches
2794
2795 2004-07-20  David Hyatt  <hyatt@apple.com>
2796
2797         Fix for 3714434, user stylesheet is always parsed in strict mode, when it should honor the document's setting.
2798         
2799         Reviewed by john
2800
2801         * khtml/css/cssstyleselector.cpp:
2802         (khtml::CSSStyleSelector::CSSStyleSelector):
2803
2804 2004-07-20  Ken Kocienda  <kocienda@apple.com>
2805
2806         Reviewed by Richard
2807
2808         * khtml/xml/dom_elementimpl.cpp:
2809         (ElementImpl::defaultEventHandler): No longer check whether
2810         the command key is modifying the key event. This check is
2811         now done elsewhere in the code. See the WebKit checkin that
2812         added the _web_keyBindingManagerHasBinding method to 
2813         WebNSEventExtras.
2814
2815 2004-07-20  Chris Blumenberg  <cblu@apple.com>
2816
2817         Fixed:
2818         <rdar://problem/3580589> REGRESSION (1.1-1.2): can't open a new window for an image that has not loaded
2819         <rdar://problem/3612691> Missing image icons (blue ?) lack context menu
2820
2821         Reviewed by john.
2822
2823         * kwq/WebCoreBridge.mm:
2824         (-[WebCoreBridge elementAtPoint:]): if there is no image, put the image URL on the element anyway
2825
2826 2004-07-20  David Hyatt  <hyatt@apple.com>
2827
2828         Fix for alt text not working on images.
2829         
2830         Reviewed by john
2831
2832         * khtml/rendering/render_image.cpp:
2833         (RenderImage::RenderImage):
2834         (RenderImage::setPixmap):
2835         (RenderImage::paint):
2836         (RenderImage::calcReplacedWidth):
2837         (RenderImage::calcReplacedHeight):
2838
2839 2004-07-20  Maciej Stachowiak  <mjs@apple.com>
2840
2841         Reviewed by Dave.
2842
2843         <rdar://problem/3720111> REGRESSION(125-152): map fails to load depending on banner ad; weather.com (works in IE and Firefox)
2844         
2845         * khtml/html/htmltokenizer.cpp:
2846         (khtml::HTMLTokenizer::begin): Initialize currentPrependingSrc.
2847         (khtml::HTMLTokenizer::scriptHandler): Store a pointer to the currently
2848         active prependingSrc variable on the stack, the better to handle weird cases
2849         of scripts writing out additional script tags and so forth.
2850         (khtml::HTMLTokenizer::write): Deal with the above.
2851         * khtml/html/htmltokenizer.h: Declare new member field.
2852
2853 2004-07-20  David Hyatt  <hyatt@apple.com>
2854
2855         Fix for layer positioning error that occurs when absolute positioned blocks are inside static positioned overflow:auto
2856         elements.
2857         
2858         Reviewed by john
2859
2860         * khtml/rendering/render_layer.cpp:
2861         (RenderLayer::updateLayerPosition):
2862
2863 2004-07-20  Trey Matteson  <trey@apple.com>
2864
2865         3705624 REGRESSION: can't rearrange photos on homepage.mac.com album
2866
2867         A subtle problem stemming from some interaction between focus handing and
2868         event propagation.  We previously made it so when a focus shift fails we
2869         don't propagate the event to KHTML.  The fix is to get rid of the inverse
2870         effect, so now even if a focus shift succeeds, we don't propagate to KHTML if
2871         the page already canceled default behavior.
2872
2873         In this specific case, the page is cancelling default behavior since it
2874         does its own dragging, and the bug was our new system dragging was
2875         kicking in.
2876
2877         Reviewed by Ken.
2878
2879         * khtml/khtmlview.cpp:
2880         (KHTMLView::dispatchMouseEvent):  What he said.
2881
2882 2004-07-20  Ken Kocienda  <kocienda@apple.com>
2883
2884         Reviewed by Darin
2885
2886         Fix for this bug:
2887         
2888         <rdar://problem/3695240> pasting plain text with newlines in it turns them into spaces
2889
2890         * kwq/WebCoreBridge.mm:
2891         (-[WebCoreBridge documentFragmentWithText:]): Refine this function to be smart about converting
2892         line endings into BR elements.
2893
2894 2004-07-20  Ken Kocienda  <kocienda@apple.com>
2895
2896         Reviewed by Hyatt
2897
2898         Fix for this bug:
2899         
2900         <rdar://problem/3707505> HTMLCompose: blinking cursor in both an address text field and the message body
2901
2902         * khtml/khtml_part.cpp:
2903         (KHTMLPart::setCaretVisible): This method renamed from setSelectionVisible. Since it really only operates
2904         on the caret, this seems like a better name.
2905         * khtml/khtml_part.h:
2906         * khtml/khtmlview.cpp:
2907         (KHTMLView::focusInEvent): Call setCaretVisible(true)
2908         (KHTMLView::focusOutEvent): Call setCaretVisible(false)
2909         * kwq/KWQKHTMLPart.mm:
2910         (KWQKHTMLPart::setShowsFirstResponder): Name change: setSelectionVisible becomes setCaretVisible.
2911         * kwq/WebCoreBridge.h: Expose setCaretVisible as a bridge method.
2912         * kwq/WebCoreBridge.mm:
2913         (-[WebCoreBridge setCaretVisible:]): Ditto.
2914
2915 2004-07-19  Maciej Stachowiak  <mjs@apple.com>
2916
2917         Reviewed by Trey.
2918
2919         <rdar://problem/3721428> REGRESSION (125.8-146): external javascript statements produce extra garbage character (sina.com)
2920         
2921         * khtml/misc/stringit.h:
2922         (khtml::TokenizerSubstring::TokenizerSubstring): For the apple branch, use the new
2923         stableUnicode() method to get the unicode pointer.
2924         * kwq/KWQString.h:
2925         * kwq/KWQString.mm:
2926         (QString::detachIfInternal): Reorganize this to be a bit less wacky about refcounts.
2927         It does not leave around a zombie internal data handle but rather destroys it right away,
2928         and leaves the object pointing to the new handle (which it can then deref). This makes
2929         the code more clear.
2930         (QString::~QString): Simplify.
2931         (QString::stableUnicode): New method that detaches a copy of the KWQStringData if it
2932         is internal to a string besides this one. This guarantees that if you get the unicode()
2933         pointer, it won't go bad so long as this string is still alive.
2934
2935 2004-07-19  David Hyatt  <hyatt@apple.com>
2936
2937         Fix for 3715117, crash from a bug in removeChildren.  Clean up node removal and fix an n-squared removal
2938         bug.  Also clean up checks in removeChild and in the dispatch of removedFromDocument mutation events to
2939         make node removal more efficient.
2940         
2941         Reviewed by kocienda
2942
2943         * khtml/xml/dom_nodeimpl.cpp:
2944
2945 2004-07-19  John Sullivan  <sullivan@apple.com>
2946
2947         Reviewed by Trey.
2948         
2949         - fixed <rdar://problem/3141150> can't undo in form textarea fields
2950
2951         * kwq/KWQTextArea.mm:
2952         (-[KWQTextArea _createTextView]):
2953         call setAllowsUndo:YES. My, wasn't this easy?
2954
2955 2004-07-19  David Hyatt  <hyatt@apple.com>
2956
2957         Merge @import fix for CSS1 test suite from Stephan Kulow.
2958         
2959         Reviewed by hyatt
2960
2961         * khtml/css/parser.cpp:
2962         * khtml/css/parser.y:
2963         * layout-tests/css1/basic/containment-expected.txt:
2964
2965 2004-07-19  David Hyatt  <hyatt@apple.com>
2966
2967         Fix for 3718697, crash clicking on JS tab at alaskaair.com.
2968         
2969         Reviewed by kocienda
2970
2971         * khtml/rendering/render_flow.cpp:
2972         (RenderFlow::detach):
2973         (RenderFlow::dirtyLinesFromChangedChild):
2974         * khtml/rendering/render_flow.h:
2975         * khtml/rendering/render_object.cpp:
2976         (RenderObject::dirtyLinesFromChangedChild):
2977         * khtml/rendering/render_object.h:
2978
2979 2004-07-16  David Hyatt  <hyatt@apple.com>
2980
2981         Fix for 3726471, need to ensure that it's safe to do updateRendering from within layout, since isContentEditable
2982         relies on it.  The fix is to just recalcStyle up front before beginning the layout, so that all of our renderobjects
2983         will be up-to-date.
2984         
2985         Reviewed by john
2986
2987         * khtml/khtmlview.cpp:
2988         (KHTMLView::layout):
2989
2990 2004-07-16  Ken Kocienda  <kocienda@apple.com>
2991
2992         Reviewed by Hyatt
2993
2994         Fix for this bug:
2995         
2996         <rdar://problem/3722153> Random crash while typing (DOM::NodeImpl::parentNode (this=0x0))
2997
2998         * khtml/editing/htmlediting_impl.cpp:
2999         (khtml::DeleteSelectionCommandImpl::doApply): This check merely makes the code
3000         more robust. I do not understand how Grant ended up with null start or end 
3001         blocks in the case of his bug report, but by adding two null checks, the code is 
3002         now hardened a bit in case it happens again.
3003
3004 2004-07-16  Ken Kocienda  <kocienda@apple.com>
3005
3006         Reviewed by Hyatt
3007
3008         Fix for these bugs:
3009
3010         <rdar://problem/3730785> Crash when arrow navigation goes to empty table cell
3011         <rdar://problem/3730790> Caret does not blink when placed in empty table cell
3012
3013         * khtml/rendering/render_block.cpp:
3014         (khtml::RenderBlock::paintObject): Caret node's renderer might be this block, so
3015         don't block the painting of the caret in this case. This was the case in 3730790.
3016         We had the right geometry for the caret but blocked its painting. 
3017         * khtml/xml/dom_position.cpp:
3018         (DOM::Position::previousLinePosition): Rework the logic here. This function asserted
3019         that the new position we would navigate to had a line box, but empty table cells, for
3020         instance will not. So, deal with this situation as well. The end result is a 
3021         function that worked like it did before in cases where the previous line position has
3022         a line box, but now also will allow navigation to work when it does not.
3023         (DOM::Position::nextLinePosition): Ditto.
3024
3025 2004-07-16  Ken Kocienda  <kocienda@apple.com>
3026
3027         Reviewed by Hyatt
3028
3029         Fix for this bug:
3030         
3031         <rdar://problem/3687216> editable inline causes crash when focused
3032
3033         * khtml/xml/dom_docimpl.cpp:
3034         (DocumentImpl::relinquishesEditingFocus): Add null check for rootEditableElement.
3035         (DocumentImpl::acceptsEditingFocus): Ditto.
3036
3037 2004-07-16  David Hyatt  <hyatt@apple.com>
3038
3039         Fix for 3709337, crash when using display: compact.  Need to make sure that the isCompact() check in bidi.cpp is
3040         also checking for RenderBlocks, since otherwise you match text nodes (and that's just wrong).
3041         
3042         Reviewed by kocienda
3043
3044         * khtml/rendering/bidi.cpp:
3045         (khtml::RenderBlock::layoutInlineChildren):
3046
3047 === Safari-152 ===
3048
3049 2004-07-15  David Hyatt  <hyatt@apple.com>
3050
3051         Fix for 3625611, images offset on first visit to page.  The method for determining the last clean line was
3052         flawed and would incorrectly miss dirty lines that occurred after the first clean line.
3053         
3054         Reviewed by john
3055
3056         * khtml/rendering/bidi.cpp:
3057         (khtml::RenderBlock::determineEndPosition):
3058
3059 2004-07-15  Ken Kocienda  <kocienda@apple.com>
3060
3061         Reviewed by John
3062
3063         Fix for this bug:
3064         <rdar://problem/3587601> reproducible assertion failure in Blot deleting text, then image at Yahoo.com
3065         
3066         * khtml/editing/htmlediting_impl.cpp:
3067         (khtml::DeleteCollapsibleWhitespaceCommandImpl::deleteWhitespace): Relax assertion
3068         that nodes are text nodes during the walk of eligible nodes that could possibly be
3069         deleted. Change the assertion to an conditional check for text nodes. We may have 
3070         unrendered nodes in the mix here (as is the case in the bug where the assertion
3071         failed on an AREA element), and the conditional check is sufficient to
3072         skip them while leaving the delete logic we want unperturbed. 
3073
3074 2004-07-14  Ken Kocienda  <kocienda@apple.com>
3075
3076         Reviewed by John
3077
3078         * khtml/rendering/render_block.cpp:
3079         (khtml::RenderBlock::paintObject): Add null check on DOM node before
3080         asking if it is contentEditable.
3081
3082 2004-07-14  David Hyatt  <hyatt@apple.com>
3083
3084         Fix for 3595073, setting innerHTML on a <table> should work.
3085         
3086         Reviewed by rjw
3087
3088         * khtml/html/html_elementimpl.cpp:
3089         (HTMLElementImpl::createContextualFragment):
3090
3091 2004-07-14  Ken Kocienda  <kocienda@apple.com>
3092
3093         Reviewed by Hyatt
3094         
3095         Updated these layout tests as a result of the last patch.
3096         These results are better.
3097
3098         * layout-tests/editing/execCommand/selectAll-expected.txt
3099         * layout-tests/editing/selection/extend-by-character-006-expected.txt
3100         * layout-tests/editing/selection/unrendered-001-expected.txt
3101         * layout-tests/editing/selection/unrendered-003-expected.txt
3102
3103 2004-07-14  Ken Kocienda  <kocienda@apple.com>
3104
3105         Reviewed by Hyatt
3106
3107         * khtml/rendering/render_block.cpp: 
3108         (khtml::RenderBlock::paintObject): Change back to start() from caretPosition().
3109         Since the policy is now to move the selection to rendered content, if possible,
3110         when the selection is set, there is no longer any reason to have the additional
3111         caretPosition() function to store where the caret should be drawn.
3112         * khtml/xml/dom_docimpl.cpp:
3113         (DocumentImpl::updateSelection): No longer any need to call closestRenderedPosition here.
3114         This is done in Selection::validate.
3115         * khtml/xml/dom_position.cpp:
3116         (DOM::Position::closestRenderedPosition): Improved algorithm. Now much simpler.
3117         * khtml/xml/dom_selection.cpp:
3118         (DOM::Selection::Selection): caretPosition() and m_caretPosition now obsolete.
3119         (DOM::Selection::init): Ditto.
3120         (DOM::Selection::modifyExtendingRightForward): No longer any need to call 
3121         closestRenderedPosition here. This is done in Selection::validate.
3122         (DOM::Selection::modifyMovingRightForward): Ditto.
3123         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
3124         (DOM::Selection::modifyMovingLeftBackward): Ditto.
3125         (DOM::Selection::layoutCaret): Ditto.
3126         (DOM::Selection::validate): Add code to move the selection to rendered content if possible.
3127         * khtml/xml/dom_selection.h: caretPosition() and m_caretPosition now obsolete.
3128
3129 2004-07-14  David Hyatt  <hyatt@apple.com>
3130
3131         Fix for 3716082, assert when you dynamically remove float or position styles.
3132         
3133         Reviewed by kevin
3134
3135         * khtml/rendering/render_object.cpp:
3136         (RenderObject::setStyle):
3137
3138 2004-07-14  David Hyatt  <hyatt@apple.com>
3139
3140         Fix for various table regressions (malumovies.com and cityofheroes.gameamp.com) involving bungling of
3141         percentage heights.
3142         
3143         Reviewed by kocienda
3144
3145         * khtml/rendering/render_box.cpp:
3146         (RenderBox::calcPercentageHeight):
3147         (RenderBox::availableHeightUsing):
3148         * khtml/rendering/render_table.cpp:
3149         (RenderTable::layout):
3150         (RenderTableSection::calcRowHeight):
3151         (RenderTableSection::layoutRows):
3152         (RenderTableCell::updateFromElement):
3153         * khtml/rendering/render_table.h:
3154
3155 2004-07-14  Ken Kocienda  <kocienda@apple.com>
3156
3157         Reviewed by John
3158
3159         * khtml/xml/dom_position.cpp:
3160         (DOM::Position::equivalentDeepPosition): New helper function to improve selection handling.
3161         Soon, I plan to land some changes that use this new function.
3162         * khtml/xml/dom_position.h:
3163
3164 2004-07-14  Ken Kocienda  <kocienda@apple.com>
3165
3166         Reviewed by Vicki
3167
3168         * WebCore-combined.exp: Added QString.at symbol to tests exports to facilitate debugging
3169         data formatting change that is to come.
3170         * WebCore-tests.exp:
3171         
3172 2004-07-13  John Sullivan  <sullivan@apple.com>
3173
3174         Reviewed by Ken.
3175         
3176         - fixed <rdar://problem/3705500> REGRESSION (125.8-146): Cmd-E on an 
3177         HTML page puts a trailing space on Find pasteboard
3178
3179         * khtml/misc/khtml_text_operations.cpp:
3180         (khtml::TextIterator::handleTextBox):
3181         In the case where a subrun doesn't extend to the end of the text box,
3182         the well-commented code was supposed to return from this routine, but
3183         the wrong variable was being compared. This would send us through another
3184         pass of the loop, which would end up worrying about collapsed space at the
3185         end of the current box, even though we only cared about the beginning of the
3186         current box.
3187
3188 2004-07-12  Richard Williamson   <rjw@apple.com>
3189
3190         Fixed 3717982.  Implemented navigator.language!
3191
3192         Reviewed by John.
3193
3194         * khtml/ecma/kjs_navigator.cpp:
3195         (Navigator::getValueProperty):
3196
3197 2004-07-12  Ken Kocienda  <kocienda@apple.com>
3198
3199         Reviewed by Hyatt
3200
3201         * khtml/xml/dom_position.cpp:
3202         (DOM::Position::inRenderedContent): I broke selection drawing with my last patch. This 
3203         function is now used in selection drawing, and it was making an unneeded check to see
3204         that content was editable to answer whether or not is was rendered. Bad. Fixed.
3205
3206 2004-07-12  David Hyatt  <hyatt@apple.com>
3207
3208         Fix for 3621138, crash on hrweb.apple.com.  Make sure that in the case where objects get pulled up from merging
3209         blocks that we just delete all line boxes.
3210         
3211         Reviewed by kocienda
3212
3213         * khtml/rendering/render_block.cpp:
3214         (khtml::RenderBlock::removeChild):
3215
3216 2004-07-10  Maciej Stachowiak  <mjs@apple.com>
3217
3218         Reviewed by John.
3219
3220         <rdar://problem/3706080>: (REGRESSION (125.8-147u): Nested <ul> do not display bullets)
3221         <rdar://problem/3676376>: (Second level bullets not printed when printing Xcode release notes)
3222         
3223         * kwq/KWQPainter.h:
3224         * kwq/KWQPainter.mm:
3225         (CGColorFromNSColor):
3226         (QPainter::drawEllipse):
3227         (QPainter::setShadow):
3228
3229 2004-07-12  Ken Kocienda  <kocienda@apple.com>
3230
3231         Added new editing-related layout tests
3232
3233         * layout-tests/editing/deleting/delete-after-span-ws-001-expected.txt: Added.
3234         * layout-tests/editing/deleting/delete-after-span-ws-001.html: Added.
3235         * layout-tests/editing/deleting/delete-after-span-ws-002-expected.txt: Added.
3236         * layout-tests/editing/deleting/delete-after-span-ws-002.html: Added.
3237         * layout-tests/editing/deleting/delete-after-span-ws-003-expected.txt: Added.
3238         * layout-tests/editing/deleting/delete-after-span-ws-003.html: Added.
3239         * layout-tests/editing/selection/unrendered-001-expected.txt: Added.
3240         * layout-tests/editing/selection/unrendered-001.html: Added.
3241         * layout-tests/editing/selection/unrendered-002-expected.txt: Added.
3242         * layout-tests/editing/selection/unrendered-002.html: Added.
3243         * layout-tests/editing/selection/unrendered-003-expected.txt: Added.
3244         * layout-tests/editing/selection/unrendered-003.html: Added.
3245         * layout-tests/editing/selection/unrendered-004-expected.txt: Added.
3246         * layout-tests/editing/selection/unrendered-004.html: Added.
3247         * layout-tests/editing/selection/unrendered-005-expected.txt: Added.
3248         * layout-tests/editing/selection/unrendered-005.html: Added.
3249         * layout-tests/traversal/node-iterator-008-expected.txt: Added.
3250         * layout-tests/traversal/node-iterator-008.html: Added.
3251         * layout-tests/traversal/tree-walker-005-expected.txt: Added.
3252         * layout-tests/traversal/tree-walker-005.html: Added.
3253
3254 2004-07-12  Ken Kocienda  <kocienda@apple.com>
3255
3256         Reviewed by Hyatt
3257
3258         Fixes for these bugs:
3259         
3260         <rdar://problem/3723359> Extending then "unextending" selection with arrow keys should draw caret but doesn't
3261         <rdar://problem/3724626> White-space deletion code deletes wrong character when space follows span
3262         
3263         * khtml/editing/htmlediting_impl.cpp:
3264         (khtml::DeleteSelectionCommandImpl::doApply): Modify special-case white-space deletion code so it runs
3265         only in the special case. It was throwing its net too widely, catching the case described in 3724626.
3266         By tightening up the special-case white-space deletion, and allowing the more general-purpose code to run,
3267         the bug is fixed.
3268         * khtml/xml/dom_docimpl.cpp:
3269         (DocumentImpl::updateSelection): Use recently-added closestRenderedPosition helper in Position class
3270         to figure out the start and end positions for selection drawing.
3271         * khtml/xml/dom_position.cpp:
3272         (DOM::Position::equivalentUpstreamPosition): Added code to handle white-space that causes line breaks.
3273         (DOM::Position::equivalentDownstreamPosition): Ditto.
3274         (DOM::Position::closestRenderedPosition): Trap empty selections at function entry, return *this.
3275         (DOM::Position::isFirstRenderedPositionOnLine): Can't be first rendered position on line if not rendered.
3276         Add check for this.
3277         (DOM::Position::isLastRenderedPositionOnLine): Ditto, but s/first/last/
3278         * khtml/xml/dom_selection.cpp:
3279         (DOM::Selection::validate): A selection is in caret state if the start and end are equal *or* equivalent.
3280         The equivalence case is new, and fixes 3723359.
3281
3282 2004-07-09  Kevin Decker  <kdecker@apple.com>
3283
3284         Reviewed by Hyatt.
3285         
3286         fixes the width:auto problem in
3287         <rdar://problem/3698344> REGRESSION (143?-144): macrumors.com tabs are compressed and illegible
3288         
3289         * khtml/css/cssstyleselector.cpp:
3290         (khtml::CSSStyleSelector::applyProperty):
3291
3292 2004-07-09  Ken Kocienda  <kocienda@apple.com>
3293
3294         Updated some layout test results.
3295
3296         * layout-tests/editing/deleting/delete-image-004-expected.txt:
3297         * layout-tests/editing/selection/extend-by-character-006-expected.txt:
3298
3299 2004-07-09  Chris Blumenberg  <cblu@apple.com>
3300
3301         Allowed my change for 3715785 to compile on Jaguar.
3302
3303         Reviewed by kocienda.
3304
3305         * kwq/WebCoreBridge.h:
3306         * kwq/WebCoreBridge.mm:
3307         (-[WebCoreBridge domain]): new, allows access to the domain without using the DOM API which doesn't exist on Jaguar
3308
3309 2004-07-09  Ken Kocienda  <kocienda@apple.com>
3310
3311         Reviewed by Hyatt
3312         
3313         Some improvements to fix:
3314         
3315         <rdar://problem/3723111> Caret not drawn when selection set to unrendered content
3316
3317         * khtml/editing/htmlediting_impl.cpp:
3318         (khtml::TypingCommandImpl::issueCommandForDeleteKey): Adjust selection to delete if
3319         selected position is not rendered.
3320         * khtml/rendering/render_block.cpp:
3321         (khtml::RenderBlock::paintObject): Use new caretPosition() function on Selection to
3322         figure out whether to paint.
3323         * khtml/xml/dom_position.cpp:
3324         (DOM::Position::previousCharacterPosition): Now correctly deals with a start
3325         position that is not rendered.
3326         (DOM::Position::nextCharacterPosition): Ditto.
3327         (DOM::Position::closestRenderedPosition): New helper.
3328         * khtml/xml/dom_position.h:
3329         (DOM::): Moved in EAffinity from Selection header. Now used in closestRenderedPosition function.
3330         * khtml/xml/dom_selection.cpp:
3331         (DOM::Selection::Selection): Added new m_caretPosition member. This is the position of the caret
3332         after a caret layout. This may be different from start or end if start and end are not rendered. 
3333         (DOM::Selection::init):
3334         (DOM::Selection::modifyExtendingRightForward): New helper to clean up modify() and make it more readble.
3335         (DOM::Selection::modifyMovingRightForward): Ditto.
3336         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
3337         (DOM::Selection::modifyMovingLeftBackward): Ditto.
3338         (DOM::Selection::modify): Use new helpers to make this more readble.
3339         (DOM::Selection::layoutCaret): Uses new closestRenderedPosition helper to place the caret if in unrendered
3340         content.
3341         (DOM::Selection::paintCaret): Remove moveToRenderedContent. obsolete.
3342         * khtml/xml/dom_selection.h:
3343         (DOM::Selection::caretPosition): New accessor.
3344         * kwq/WebCoreBridge.mm:
3345         (-[WebCoreBridge setSelectedDOMRange:affinity:]): EAffinity no longer a member enum of Selection class.
3346
3347 2004-07-08  David Hyatt  <hyatt@apple.com>
3348
3349