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