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