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