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