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