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