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