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