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