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