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