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