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