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