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