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