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