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