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