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