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