Add layout test for <rdar://problem/4110366>.
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2005-05-09  David Harrison  <harrison@apple.com>
2
3         Add layout test for <rdar://problem/4110366>.
4
5         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-011-expected.txt: Added.
6         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-011.html: Added.
7
8 2005-05-09  Darin Adler  <darin@apple.com>
9
10         - checked in a result for the Flash replacement test that Dave added
11
12         * layout-tests/fast/dynamic/flash-replacement-test-expected.txt: Added.
13         Hope it's right! If not, Dave can update it.
14
15 2005-05-09  Darin Adler  <darin@apple.com>
16
17         * Makefile.am: Don't set up PBXIntermediatesDirectory explicitly;
18         Not needed to make builds work, spews undesirable error messages too.
19
20         * WebCore.pbproj/project.pbxproj: Remove unneeded $(DSTROOT) in framework paths.
21
22 2005-05-07  Maciej Stachowiak  <mjs@apple.com>
23
24         Reviewed by Kevin.
25
26         - remove some of the uses of upstream/downstream DoNotStayInBlock
27         
28         * khtml/editing/markup.cpp:
29         (khtml::createMarkup): Instead of using upstream to decide if a line break should be 
30         added at the end, use inSameParagraph.
31         * khtml/editing/selection.cpp:
32         (khtml::Selection::debugPosition): Remove the code to print upstream and downstream,
33         the selection endpoints themselves are adequate for debugging and are what we use for
34         layout tests.
35         * khtml/xml/dom2_rangeimpl.cpp:
36         (DOM::RangeImpl::editingStartPosition): Skip a possible paragraph break at the start
37         of the selection in a more explicit way to avoid DoNotStayInBlock.
38
39 2005-05-07  David Harrison  <harrison@apple.com>
40
41         Reviewed by John.
42
43         <rdar://problem/4110366> Deleting text at the end of email moves insertion point to the top of the document
44         
45         * khtml/editing/htmlediting.cpp:
46         (khtml::DeleteSelectionCommand::handleGeneralDelete):
47         Update m_upstreamStart when deleting m_downstreamEnd.node() if the former is no longer in the document.
48         Better to update here than trying to recover later in calculateEndingPosition().
49
50 2005-05-07  David Harrison  <harrison@apple.com>
51         
52         Remove workaround for <rdar://problem/4103339>.
53         
54         * khtml/editing/htmlediting.cpp:
55         (khtml::DeleteSelectionCommand::initializePositionData):
56
57 2005-05-06  Maciej Stachowiak  <mjs@apple.com>
58
59         Reviewed by Dave Harrison.
60
61         - make StayInBlock vs DoNotStayInBlock explicit in all calls to
62         upstream/downstream, in preparation for phasing out the
63         DoNotStayInBlock variant.
64
65         * khtml/editing/htmlediting.cpp:
66         (khtml::ApplyStyleCommand::nodeFullySelected):
67         (khtml::ApplyStyleCommand::nodeFullyUnselected):
68         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
69         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
70         (khtml::InsertTextCommand::insertSpace):
71         (khtml::ReplaceSelectionCommand::doApply):
72         * khtml/editing/markup.cpp:
73         (khtml::createMarkup):
74         * khtml/editing/selection.cpp:
75         (khtml::Selection::debugPosition):
76         * khtml/xml/dom_position.h:
77
78 2005-05-06  David Harrison  <harrison@apple.com>
79
80         Reviewed by Maciej, Darin.
81
82         <rdar://problem/4103339> VisiblePosition and PositionIterator iterators do not return positions in order
83
84         * WebCore.pbproj/project.pbxproj:
85         Removed dom_positioniterator.h and dom_positioniterator.cpp.
86         
87         * khtml/editing/htmlediting.cpp:
88         Removed unused include of dom_positioniterator.h and "using" of PositionIterator.
89         
90         * khtml/editing/selection.cpp:
91         Removed unused include of dom_positioniterator.h.
92
93         * khtml/editing/visible_position.h:
94         * khtml/editing/visible_position.cpp:
95         (khtml::VisiblePosition::previousVisiblePosition):
96         (khtml::VisiblePosition::nextVisiblePosition):
97         (khtml::VisiblePosition::downstreamDeepEquivalent):
98         Use Position::next(), Position::previous(), Position::atStart(), Position::atEnd() instead of duplicated code.
99         
100         * khtml/xml/dom_nodeimpl.h:
101         * khtml/xml/dom_nodeimpl.cpp:
102         (NodeImpl::maxDeepOffset):
103         Added to support Position::next(), Position::previous(), Position::atStart(), Position::atEnd()
104         
105         * khtml/xml/dom_position.h:
106         * khtml/xml/dom_position.cpp:
107         (DOM::Position::previous):
108         (DOM::Position::next):
109         (DOM::Position::atStart):
110         (DOM::Position::atEnd):
111         Moved here, replacing VisiblePosition's duplicate and PositionIterator.  Fixed to
112         return positions in order and not skip positions.
113         
114         (DOM::Position::previousCharacterPosition):
115         (DOM::Position::nextCharacterPosition):
116         Use Position::next(), Position::previous(), Position::atStart(), Position::atEnd() instead of PositionIterator.
117
118         (DOM::isStreamer):
119         (DOM::Position::upstream):
120         (DOM::Position::downstream):
121         Use Position::next(), Position::previous(), Position::atStart(), Position::atEnd() instead of PositionIterator.
122
123         * khtml/xml/dom_positioniterator.cpp: Removed.
124         * khtml/xml/dom_positioniterator.h: Removed.
125         Removed in favor of Position::next(), Position::previous(), Position::atStart(), Position::atEnd()
126
127 2005-05-05  Maciej Stachowiak  <mjs@apple.com>
128
129         Reviewed by Darin.
130
131         <rdar://problem/4058167> Unit Converter and Weather widgets crashed in KJS::Collector::markCurrentThreadConservatively
132         
133         Avoid possibly allocating new prototype objects as parameters to
134         superclass constructors - there may be an allocated but
135         uninitilized object so this is a bad time to allocate. Instead,
136         set the prototype in the constructor body, since the object is
137         happily allocated by then.
138
139         * khtml/ecma/kjs_binding.h:
140         * khtml/ecma/kjs_css.cpp:
141         (DOMCSSStyleDeclaration::DOMCSSStyleDeclaration):
142         (DOMMediaList::DOMMediaList):
143         (DOMCSSStyleSheet::DOMCSSStyleSheet):
144         (DOMCSSPrimitiveValue::DOMCSSPrimitiveValue):
145         (DOMCSSValueList::DOMCSSValueList):
146         * khtml/ecma/kjs_css.h:
147         (KJS::DOMStyleSheet::DOMStyleSheet):
148         (KJS::DOMCSSValue::DOMCSSValue):
149         * khtml/ecma/kjs_dom.cpp:
150         (DOMNode::DOMNode):
151         (DOMDocument::DOMDocument):
152         (DOMElement::DOMElement):
153         (DOMDOMImplementation::DOMDOMImplementation):
154         (DOMNamedNodeMap::DOMNamedNodeMap):
155         (DOMNamedNodesCollection::DOMNamedNodesCollection):
156         (DOMCharacterData::DOMCharacterData):
157         (DOMText::DOMText):
158         * khtml/ecma/kjs_dom.h:
159         (KJS::NodeConstructor::NodeConstructor):
160         (KJS::DOMExceptionConstructor::DOMExceptionConstructor):
161         * khtml/ecma/kjs_events.cpp:
162         (DOMEvent::DOMEvent):
163         (Clipboard::Clipboard):
164         * khtml/ecma/kjs_html.cpp:
165         (HTMLCollection::HTMLCollection):
166         * khtml/ecma/kjs_range.cpp:
167         (DOMRange::DOMRange):
168         * khtml/ecma/kjs_traversal.cpp:
169         (DOMNodeIterator::DOMNodeIterator):
170         (DOMNodeFilter::DOMNodeFilter):
171         (DOMTreeWalker::DOMTreeWalker):
172         * khtml/ecma/xmlhttprequest.cpp:
173         (KJS::XMLHttpRequest::XMLHttpRequest):
174         * khtml/ecma/xmlserializer.cpp:
175         (KJS::XMLSerializer::XMLSerializer):
176
177 2005-05-06  Darin Adler  <darin@apple.com>
178
179         Reviewed by Maciej.
180
181         - make building multiple trees with make work better
182
183         * Makefile.am: Set up Xcode build directory before invoking xcodebuild.
184
185 2005-05-05  David Hyatt  <hyatt@apple.com>
186
187         Eliminate the FOUCS on wired.com.  innerWidth and innerHeight on window should not do a layout that ignores
188         pending stylesheets, since even if stylesheets are loading the correct window dimensions can be determined with
189         a normal layout.
190
191         The radar # is 4109888.
192         
193         Reviewed by rjw
194
195         * khtml/ecma/kjs_window.cpp:
196         (Window::get):
197         (Window::updateLayout):
198         * khtml/ecma/kjs_window.h:
199
200 2005-05-05  David Hyatt  <hyatt@apple.com>
201
202         Fix for 4109667, sIFR flash replacement technique often malfunctions.  This bug occurs when the plugin
203         widget update causes the onload for the document to fire.  Because you can be in the middle of a style
204         recalc when doing an attach (in response to a stylesheet load), the onload fires in the middle of the attach
205         process when the tree is in a bogus state.
206
207         The fix is to add a bit to the document that tells style recalc that the implicitClose() method was invoked
208         during the style recalc process and the code has been patched so that when this situation occurs, the close is
209         deferred until after the style recalc has finished.
210         
211         Reviewed by John Sullivan
212
213         * khtml/xml/dom_docimpl.cpp:
214         (DocumentImpl::DocumentImpl):
215         (DocumentImpl::recalcStyle):
216         (DocumentImpl::implicitClose):
217         * khtml/xml/dom_docimpl.h:
218         * layout-tests/fast/dynamic/flash-replacement-test.html: Added.
219
220 2005-05-05  Darin Adler  <darin@apple.com>
221
222         Reviewed by Dave Hyatt.
223
224         - fixed <rdar://problem/4109564> REGRESSION (Atlanta): maps.google.com doesn't always center California correctly
225
226         * khtml/ecma/kjs_events.cpp: (offsetFromTarget): Fix two places that said X where they should say Y.
227
228 2005-05-05  David Harrison  <harrison@apple.com>
229
230         Restore fixed setEndingSelection.  Fixed method was ifdef'd out
231         because change was at end of Tiger development, but method is
232         unused.  You just can never be _too_ safe.
233         
234         * khtml/editing/htmlediting.cpp:
235         (khtml::EditCommandPtr::setEndingSelection):
236
237 >>>>>>> 1.4172
238 2005-05-02  Maciej Stachowiak  <mjs@apple.com>
239
240         Reviewed by Vicki.
241
242         - renamed NodeBaseImpl to ContainerNodeImpl
243
244         * khtml/ecma/kjs_dom.cpp:
245         (DOMNodeProtoFunc::tryCall): Avoid use of NodeBaseImpl and avoid
246         use of obsolete checkNoOwner call, use isAncestor instead.
247         * khtml/html/html_elementimpl.cpp:
248         (HTMLElementImpl::setOuterText): Avoid gratuitous use of
249         NodeBaseImpl.
250         * khtml/xml/dom_nodeimpl.cpp:
251         (NodeBaseImpl::checkNoOwner): Removed.
252         
253         Ther rest is all just simple renaming.
254         
255         * khtml/xml/dom_docimpl.cpp:
256         (DocumentImpl::DocumentImpl):
257         (DocumentImpl::attach):
258         (DocumentImpl::detach):
259         (DocumentFragmentImpl::DocumentFragmentImpl):
260         * khtml/xml/dom_docimpl.h:
261         * khtml/xml/dom_elementimpl.cpp:
262         (AttrImpl::AttrImpl):
263         (ElementImpl::ElementImpl):
264         (ElementImpl::insertedIntoDocument):
265         (ElementImpl::removedFromDocument):
266         (ElementImpl::attach):
267         (ElementImpl::dump):
268         * khtml/xml/dom_elementimpl.h:
269         * khtml/xml/dom_nodeimpl.cpp:
270         (ContainerNodeImpl::ContainerNodeImpl):
271         (ContainerNodeImpl::~ContainerNodeImpl):
272         (ContainerNodeImpl::firstChild):
273         (ContainerNodeImpl::lastChild):
274         (ContainerNodeImpl::insertBefore):
275         (ContainerNodeImpl::replaceChild):
276         (ContainerNodeImpl::removeChild):
277         (ContainerNodeImpl::removeChildren):
278         (ContainerNodeImpl::appendChild):
279         (ContainerNodeImpl::hasChildNodes):
280         (ContainerNodeImpl::setFirstChild):
281         (ContainerNodeImpl::setLastChild):
282         (ContainerNodeImpl::checkSameDocument):
283         (ContainerNodeImpl::checkIsChild):
284         (ContainerNodeImpl::addChild):
285         (ContainerNodeImpl::attach):
286         (ContainerNodeImpl::detach):
287         (ContainerNodeImpl::insertedIntoDocument):
288         (ContainerNodeImpl::removedFromDocument):
289         (ContainerNodeImpl::cloneChildNodes):
290         (ContainerNodeImpl::getElementsByTagNameNS):
291         (ContainerNodeImpl::getUpperLeftCorner):
292         (ContainerNodeImpl::getLowerRightCorner):
293         (ContainerNodeImpl::getRect):
294         (ContainerNodeImpl::setFocus):
295         (ContainerNodeImpl::setActive):
296         (ContainerNodeImpl::childNodeCount):
297         (ContainerNodeImpl::childNode):
298         (ContainerNodeImpl::dispatchChildInsertedEvents):
299         (ContainerNodeImpl::dispatchChildRemovalEvents):
300         * khtml/xml/dom_nodeimpl.h:
301         * khtml/xml/dom_xmlimpl.cpp:
302         (DOM::EntityImpl::EntityImpl):
303         (DOM::EntityReferenceImpl::EntityReferenceImpl):
304         (DOM::NotationImpl::NotationImpl):
305         (DOM::ProcessingInstructionImpl::ProcessingInstructionImpl):
306         * khtml/xml/dom_xmlimpl.h:
307
308 2005-05-04  Vicki Murley  <vicki@apple.com>
309
310         Reviewed by Darin.
311
312         - fix mismatched parentheses in one of the ifdefs
313  
314         * khtml/html/html_headimpl.cpp:
315         (HTMLTitleElementImpl::childrenChanged):
316
317 2005-05-04  Darin Adler  <darin@apple.com>
318
319         Reviewed by Dave Hyatt.
320
321         - fixed build rules to match other projects
322
323         * WebCore.pbproj/project.pbxproj: Set deployment target to 10.3 in the build styles.
324         When built without a build style (by Apple B&I) we want to get the target from the
325         environment. But when built with a build style (by Safari engineers and others), we want
326         to use 10.3.
327
328         * Makefile.am: Took out extra parameters that make command-line building different from
329         Xcode building. Now that this is fixed, you should not get a full rebuild if you switch
330         from command line to Xcode or back.
331
332 2005-05-04  Vicki Murley  <vicki@apple.com>
333
334         Reviewed by darin.
335
336         - fixed <rdar://problem/3986228> Not able to load additional script blocks dynamically
337
338         Run scripts when they're inserted into the document. Use createdByParser bit to make sure
339         that scripts aren't run twice, once while parsing and again when inserting.
340
341         * khtml/html/html_headimpl.cpp:
342         (HTMLScriptElementImpl::HTMLScriptElementImpl):
343         (HTMLScriptElementImpl::~HTMLScriptElementImpl):
344         (HTMLScriptElementImpl::insertedIntoDocument): 
345         (HTMLScriptElementImpl::removedFromDocument): 
346         (HTMLScriptElementImpl::notifyFinished): 
347         * khtml/html/html_headimpl.h:
348         (DOM::HTMLScriptElementImpl::setCreatedByParser):
349         * khtml/html/htmlparser.cpp:
350         (KHTMLParser::getElement): 
351         * khtml/xml/xml_tokenizer.cpp:
352         (khtml::XMLTokenizer::startElement): 
353
354 2005-05-03  David Hyatt  <hyatt@apple.com>
355
356         Normalize all our custom properties in our implementation to be -khtml (remove all the -apple).
357
358         Make sure that -apple, -khtml, and -moz are all able to be used.  -apple and -moz just map to -khtml.
359
360         Add support for automatically converting -khtml-opacity to opacity (for legacy Safari 1.1 compat).
361         
362         Reviewed by darin
363
364         * khtml/css/css_computedstyle.cpp:
365         (DOM::):
366         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
367         * khtml/css/cssparser.cpp:
368         (CSSParser::parseValue):
369         * khtml/css/cssproperties.in:
370         * khtml/css/cssstyleselector.cpp:
371         (khtml::CSSStyleSelector::applyDeclarations):
372         (khtml::CSSStyleSelector::applyProperty):
373         * khtml/css/parser.y:
374         * khtml/ecma/kjs_css.cpp:
375         (cssPropertyName):
376
377 2005-05-03  Darin Adler  <darin@apple.com>
378
379         - fix the build
380
381         * WebCore.pbproj/project.pbxproj: Fix some SYMROOTS that should have been SYMROOT.
382
383 2005-05-03  David Hyatt  <hyatt@apple.com>
384
385         Fix for 4098281, news.com missing a bunch of content.  Make sure not to apply strict SGML parsing
386         when stripping comments out of scripts.
387
388         New test is comments-in-script.html
389         
390         * khtml/html/htmltokenizer.cpp:
391         (khtml::HTMLTokenizer::parseComment):
392
393 2005-05-03  David Hyatt  <hyatt@apple.com>
394
395         Remove unused notification to avoid ERROR messages spewing on the acid2 test.
396         
397         Reviewed by darin
398
399         * khtml/khtml_part.cpp:
400         (KHTMLPart::processObjectRequest):
401         * khtml/rendering/render_frames.cpp:
402         (RenderPartObject::updateWidget):
403         * khtml/rendering/render_frames.h:
404
405 2005-05-03  Darin Adler  <darin@apple.com>
406
407         Reviewed by Dave Hyatt.
408         No new layout tests needed.
409
410         - eliminated the bogus kMin/kMax macros that we had in addition to inline functions
411           of the same name
412
413         * kwq/KWQKGlobal.h: Remove the kMin/kMax macros.
414
415         * khtml/css/cssstyleselector.cpp:
416         (khtml::CSSStyleSelector::applyProperty): Change type of constant so both sides
417         of kMin calls match.
418         (khtml::CSSStyleSelector::fontSizeForKeyword): Ditto.
419         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseEntity): Ditto.
420
421         - remove unused parameter to dirtyLinesFromChangedChild for clarity
422
423         * khtml/rendering/render_object.h: Don't take the parameter.
424         * khtml/rendering/render_object.cpp: (RenderObject::dirtyLinesFromChangedChild): Ditto.
425
426         * khtml/rendering/render_flow.h: Don't take the parameter.
427         * khtml/rendering/render_flow.cpp:
428         (RenderFlow::detach): Don't pass the parameter.
429         (RenderFlow::dirtyLinesFromChangedChild): Don't take the parameter.
430
431         * khtml/rendering/render_text.cpp: (RenderText::detach): Don't pass the parameter.
432
433         - convert DOM::NodeImpl into an abstract base class by making a couple of functions
434           pure virtual for clarity
435
436         * khtml/xml/dom_nodeimpl.h: Made nodeName and nodeType pure virtual.
437         * khtml/xml/dom_nodeimpl.cpp: Remove bodies of nodeName and nodeType.
438
439 2005-05-03  David Hyatt  <hyatt@apple.com>
440
441         Fix for object element to support fallback content.  WIth this change Safari passes the Acid2 test.
442         
443         Reviewed by Maciej
444
445         * khtml/css/html4.css:
446         * khtml/html/html_objectimpl.cpp:
447         (HTMLObjectElementImpl::HTMLObjectElementImpl):
448         (HTMLObjectElementImpl::parseHTMLAttribute):
449         (HTMLObjectElementImpl::rendererIsNeeded):
450         (HTMLObjectElementImpl::createRenderer):
451         (HTMLObjectElementImpl::attach):
452         (HTMLObjectElementImpl::detach):
453         (HTMLObjectElementImpl::recalcStyle):
454         (HTMLObjectElementImpl::childrenChanged):
455         (HTMLObjectElementImpl::isURLAttribute):
456         (HTMLObjectElementImpl::isImageType):
457         (HTMLObjectElementImpl::renderFallbackContent):
458         * khtml/html/html_objectimpl.h:
459         * khtml/khtml_part.cpp:
460         (KHTMLPart::requestObject):
461         (KHTMLPart::selectFrameElementInParentIfFullySelected):
462         (KHTMLPart::handleFallbackContent):
463         * khtml/khtml_part.h:
464         * khtml/khtmlpart_p.h:
465         (khtml::ChildFrame::ChildFrame):
466         * khtml/rendering/render_frames.cpp:
467         (RenderPartObject::RenderPartObject):
468         (RenderPartObject::updateWidget):
469         * khtml/rendering/render_frames.h:
470         (khtml::RenderPart::hasFallbackContent):
471         * khtml/rendering/render_replaced.cpp:
472         (RenderReplaced::RenderReplaced):
473         * kwq/KWQKHTMLPart.mm:
474         (KWQKHTMLPart::createPart):
475         * kwq/WebCoreBridge.h:
476         * kwq/WebCoreBridge.mm:
477         (-[WebCoreBridge mainResourceError]):
478
479 2005-05-01  Darin Adler  <darin@apple.com>
480
481         - move to Xcode native targets and stop checking in generated files
482
483         * WebCore.pbproj/project.pbxproj: Updated to use native targets and generate all the generated
484         files, so we don't have to check them in any more.
485         * Info.plist: Added. Native targets use a separate file for this.
486
487         * Makefile.am: Removed rule to generate WebCore-combined.exp since this is now handled by the
488         Xcode project. Removed the code to remove the embedded copy of the framework since we don't
489         do that any more. Removed timestamp cleaning rules since we don't use those any more.
490
491         * WebCore-tests.exp: Removed symbols that aren't really needed. The native target gives an
492         error when you mention a nonexistent symbol, so we can't have them any more.
493
494         * khtml/css/parser_wrapper.cpp: Added. Shell used to compile parser.cpp since we can't add
495         a generated file easily to the list of files to be compiled.
496
497         * .cvsignore: Removed various timestamp files.
498
499         * WebCore-combined.exp: Removed.
500         * force-clean-timestamp: Removed.
501         * force-js-clean-timestamp: Removed.
502         * khtml/.cvsignore: Removed.
503         * khtml/Makefile.am: Removed.
504         * khtml/css/.cvsignore: Removed.
505         * khtml/css/Makefile.am: Removed.
506         * khtml/css/cssproperties.c: Removed.
507         * khtml/css/cssproperties.h: Removed.
508         * khtml/css/cssvalues.c: Removed.
509         * khtml/css/cssvalues.h: Removed.
510         * khtml/css/parser.cpp: Removed.
511         * khtml/css/parser.h: Removed.
512         * khtml/css/tokenizer.cpp: Removed.
513         * khtml/ecma/.cvsignore: Removed.
514         * khtml/ecma/Makefile.am: Removed.
515         * khtml/ecma/kjs_css.lut.h: Removed.
516         * khtml/ecma/kjs_dom.lut.h: Removed.
517         * khtml/ecma/kjs_events.lut.h: Removed.
518         * khtml/ecma/kjs_html.lut.h: Removed.
519         * khtml/ecma/kjs_navigator.lut.h: Removed.
520         * khtml/ecma/kjs_range.lut.h: Removed.
521         * khtml/ecma/kjs_traversal.lut.h: Removed.
522         * khtml/ecma/kjs_views.lut.h: Removed.
523         * khtml/ecma/kjs_window.lut.h: Removed.
524         * khtml/ecma/xmlhttprequest.lut.h: Removed.
525         * khtml/ecma/xmlserializer.lut.h: Removed.
526         * khtml/html/.cvsignore: Removed.
527         * khtml/html/Makefile.am: Removed.
528         * khtml/html/doctypes.cpp: Removed.
529         * khtml/html/kentities.c: Removed.
530         * khtml/misc/.cvsignore: Removed.
531         * khtml/misc/Makefile.am: Removed.
532         * khtml/misc/htmlattrs.c: Removed.
533         * khtml/misc/htmlattrs.h: Removed.
534         * khtml/misc/htmltags.c: Removed.
535         * khtml/misc/htmltags.h: Removed.
536         * kwq/.cvsignore: Removed.
537         * kwq/KWQCharsetData.c: Removed.
538         * kwq/KWQColorData.c: Removed.
539         * kwq/Makefile.am: Removed.
540
541 2005-05-02  Darin Adler  <darin@apple.com>
542
543         Reviewed by Vicki.
544         Added two layout tests for regression testing.
545
546         - redid frameElement (fix for 4091082 below)
547
548         The first version lacked a security check, and was also broken.
549
550         * khtml/ecma/kjs_window.cpp:
551         (frameElement): Refactored into separate function; added isSafeScript check.
552         (Window::get): Call the new frameElement function.
553
554         * layout-tests/fast/frames/frameElement-frame.html: Added.
555         * layout-tests/fast/frames/frameElement-frame-expected.txt: Added.
556         * layout-tests/fast/frames/frameElement-iframe.html: Added.
557         * layout-tests/fast/frames/frameElement-iframe-expected.txt: Added.
558         * layout-tests/fast/frames/resources/frameElement-contents.html: Added.
559
560 2005-05-02  David Harrison  <harrison@apple.com>
561
562         Reviewed by Vicki.
563
564         Fix isStartOfEditableContent and isEndOfEditableContent to return actual, rather than inverted, answers.
565         No Radar.  Found this when trying to use isEndOfEditableContent() in some new code.
566         
567         * khtml/editing/visible_units.cpp:
568         (khtml::isStartOfEditableContent):
569         (khtml::isEndOfEditableContent):
570         Flip expressions.
571
572 2005-04-29  Darin Adler  <darin@apple.com>
573
574         Reviewed by David Harrison.
575
576         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Turn newlines into \n for better dumping.
577
578 2005-04-29  David Harrison  <harrison@apple.com>
579
580         Reviewed by Darin.
581
582         <rdar://problem/4083333> When deleting link at end of sentence, entire sentence gets deleted
583         
584         * khtml/editing/htmlediting.cpp:
585         (khtml::DeleteSelectionCommand::initializePositionData):
586         Work around bug #4103339 (whose real fix is somewhat risky), so this fix can get into a software update.
587         
588         (khtml::DeleteSelectionCommand::handleGeneralDelete):
589         Add isAncestor check when comparing m_downstreamEnd.node() and m_startNode.
590
591         * layout-tests/editing/deleting/delete-4083333-fix-expected.txt: Added.
592         * layout-tests/editing/deleting/delete-4083333-fix.html: Added.
593
594 2005-04-29  Darin Adler  <darin@apple.com>
595
596         Reviewed by Dave Harrison.
597
598         - changed layout tests to dump more minimal information about caret and selection
599
600         * kwq/KWQRenderTreeDebug.cpp:
601         (nodePosition): Changed name; now does position relative to document.
602         (writeSelection): Removed upstream/downstream code and changed format slightly.
603
604         * layout-tests/editing/*-expected.txt: Regenerated in new format.
605
606 2005-04-29  Darin Adler  <darin@apple.com>
607
608         Reviewed by Chris Blumenberg.
609         Added two layout tests for regression testing.
610
611         - fixed <rdar://problem/4097849> REGRESSION (162-163): importNode creates non-HTML elements, thus style attributes (and some others) don't work
612
613         * khtml/xml/dom_docimpl.cpp:
614         (DocumentImpl::importNode): Reorganized and partly rewrote this. The change that fixes the bug at
615         hand is to explicitly use XHTML_NAMESPACE for HTML elements, since the old way of getting the namespace
616         will return the null string for HTML elements, and createElementNS will not create an HTML element
617         if passed a null string for the namespace.
618         (DocumentImpl::processHttpEquiv): Removed some bogus getDocument() calls -- no need to call getDocument()
619         in a document object.
620         (DocumentImpl::attrName): Ditto.
621         (DocumentImpl::tagName): Ditto.
622         (DocumentImpl::setFocusNode): Ditto.
623
624         * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::cloneNode): Moved the actual cloning here
625         from ElementImpl::cloneNode, because XMLElementImpl already had its own version, and in here
626         we can use createHTMLElement, which will work properly even in an XML document, and is also slightly
627         more efficient.
628
629         * khtml/xml/dom_nodeimpl.h: Added a namespaceURI method function to go along with localName.
630         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::namespaceURI): Added. Returns null string to be consistent
631         with localName (only works on certain types of elements as documented).
632         * khtml/xml/dom_elementimpl.h: Removed ElementImpl::cloneNode (see above). Added an override of
633         namespaceURI for XMLElementImpl.
634         * khtml/xml/dom_elementimpl.cpp: (XMLElementImpl::namespaceURI): Added. Returns the namespace
635         (consistent with localName).
636
637         * layout-tests/fast/dom/importNodeHTML.html: Added. Tests both importNode and cloneNode (for comparison).
638         * layout-tests/fast/dom/importNodeHTML-expected.txt: Added.
639         * layout-tests/fast/dom/importNodeXML.xhtml: Added. XML version of the same test as above. Tests a different
640         code path, so useful to have.
641         * layout-tests/fast/dom/importNodeXML-expected.txt: Added.
642
643 2005-04-28  Darin Adler  <darin@apple.com>
644
645         Reviewed by Dave Harrison.
646
647         - fixed problems preventing us from compiling with gcc 4.0
648
649         * WebCore.pbproj/project.pbxproj: Removed -fobjc-exceptions because I can't figure out an easy
650         way to pass it only when compiling Objective-C/C++. Removed -Wmissing-prototypes from
651         WARNING_CPLUSPLUSFLAGS since it's now a C-only warning.
652
653         * khtml/css/parser.y: Changed some rules that were using a float to pass around an enum to use an
654         int instead to avoid a warning.
655         * khtml/css/parser.cpp: Regenerated.
656         * khtml/css/parser.h: Regenerated.
657
658         * khtml/ecma/kjs_dom.cpp: (DOMTextProtoFunc::tryCall): Rearranged a return statement to avoid an incorrect
659         warning.
660         * khtml/ecma/kjs_html.cpp: (KJS::Context2DFunction::tryCall): Initialized a couple of variables to avoid
661         an incorrect warning.
662         * khtml/ecma/kjs_proxy.cpp: (KJSProxyImpl::evaluate): Rearranged how we exit from the function to avoid
663         an incorret warning.
664         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Changed some %d to %ld where the
665         parameters where long ints.
666         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
667         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
668         * kwq/DOMEvents.mm: (-[DOMMouseEvent initMouseEvent:::::::::::::::]): Rearranged code to avoid a cast
669         that was causing an incorrect warning.
670         * kwq/DOMUtility.mm:
671         (createObjCDOMNode): Broke out as a separate function.
672         (KJS::ScriptInterpreter::createObjcInstanceForValue): Rearranged code to avoid a namespace collision with
673         KJS::DOMNode and the Objective-C DOMNode class.
674         * kwq/KWQFileButton.mm: Made fields of KWQFileButtonAdapter public to avoid an error, new to gcc 4.0,
675         about accessing protected Objective-C fields.
676         * kwq/KWQKHTMLPart.mm:
677         (KWQKHTMLPart::matchLabelsAgainstElement): Rearranged a return statement to avoid an incorrect warning.
678         (KWQKHTMLPart::imageFromRect): Rearranged how this function does its exception handling to avoid a
679         "may be clobbered" warning.
680         * kwq/KWQKJavaAppletWidget.mm: Fixed incorrect import that said "KHTMLView.h" instead of "khtmlview.h".
681         * kwq/KWQObject.mm: Made fields of KWQObjectTimerTarget public to avoid an error, new to gcc 4.0,
682         about accessing protected Objective-C fields.
683         * kwq/WebCoreBridge.mm: (partHasSelection): Used [bridge part] instead of getting directly at instance
684         variable to avoid an error, new to gcc 4.0, about accessing protected Objective-C fields.
685
686         * WebCore-combined.exp: Regenerated.
687         * WebCore-tests.exp: Added some additional symbols needed by the tests under gcc 4.0.
688
689 2005-04-28  Darin Adler  <darin@apple.com>
690
691         * WebCore.pbproj/project.pbxproj: Add back the main_thread_malloc files, rolled out by accident.
692
693 2005-04-27 Adele Peterson  <adele@apple.com>
694
695         Rolling out fix for <rdar://problem/4097849> because the following layout tests were failing:
696
697         fast/css/namespaces/001
698         fast/css/namespaces/002
699         fast/css/namespaces/004
700         fast/css/namespaces/005
701         fast/css/namespaces/006
702         fast/overflow/003
703         
704
705         * khtml/html/html_documentimpl.cpp:
706         * khtml/html/html_documentimpl.h:
707         * khtml/html/html_elementimpl.cpp:
708         (HTMLElementImpl::namespaceURI):
709         * khtml/xml/dom_docimpl.cpp:
710         (DocumentImpl::importNode):
711         (DocumentImpl::createElementNS):
712         (DocumentImpl::createHTMLElement):
713         (DocumentImpl::attrId):
714         (DocumentImpl::tagId):
715         * khtml/xml/dom_docimpl.h:
716
717 2005-04-27  John Sullivan  <sullivan@apple.com>
718
719         Reviewed by Darin.
720         
721         Experimental prototype of user-resizable textareas. All the new code is guarded by
722         #if ALLOW_RESIZING_TEXTAREAS, which is false unless you remove a comment and rebuild.
723         
724         This code allows you to press near the bottom-right corner of any textarea and drag
725         to resize the textarea on the page. It works correctly with textareas in left-aligned
726         or centered blocks, but is weird in right-aligned blocks. It also does something
727         sensible if the width is specified as a % (in that case, you can resize vertically only).
728         The user-created-size survives resizing the window and survives the back/forward cache.
729         It does not survive reloading the page.
730         
731         This complete-lack-of-affordance UI is obviously not shippable, but this proof of concept
732         code could lead to a real user feature.
733
734         * kwq/KWQTextArea.mm:
735         (-[KWQTextArea getNumColumns:andNumRows:forSize:]):
736         new method that determines cols and rows for a given textarea frame size
737         (-[KWQTextAreaTextView _trackResizeFromMouseDown:]):
738         new method that tracks a drag and does a live resize-and-relayout
739         (-[KWQTextAreaTextView mouseDown:]):
740         if the mouse down is in the bottom-right corner, call _trackResizeFromMouseDown:
741
742 2005-04-27  John Sullivan  <sullivan@apple.com>
743
744         Reviewed by Adele.
745
746         - fixed problem with mouse wheel patch where alt and shift keys were switched
747
748         * khtml/xml/dom2_eventsimpl.h:
749         use the order cntl, alt, shift, meta in KeyboardEventImpl constructors to match
750         superclass. This isn't necessary to fix the bug, but is better for clarity.
751         
752         * khtml/xml/dom2_eventsimpl.cpp:
753         (KeyboardEventImpl::KeyboardEventImpl):
754         switch parameter order to match superclass. Then pass the parameters to superclass's
755         constructor in the right order.
756         (KeyboardEventImpl::initKeyboardEvent):
757         Pass parameters to superclass's constructor in the right order.
758
759 2005-04-26  Adele Peterson  <adele@apple.com>
760
761         Fixed by Darin, reviewed by me.
762
763         Fix for <rdar://problem/4084029> designMode doesn't allow editing when iframe src = "" or = about:blank
764         
765         This change will add an HTML element for empty documents.  Now that there will be an HTMLDocument in this case, 
766         a body will also be created (see rdar://problem/3758785). This was preventing frames with empty documents from 
767         being editable.
768
769         * khtml/html/htmlparser.cpp: (KHTMLParser::finished):
770
771         Updated these tests to expect the HTML and BODY elements
772         * layout-tests/fast/flexbox/016-expected.txt:
773         * layout-tests/fast/frames/001-expected.txt:
774         * layout-tests/fast/frames/002-expected.txt:
775         * layout-tests/fast/frames/contentWindow_Frame-expected.txt:
776         * layout-tests/fast/frames/contentWindow_iFrame-expected.txt:
777         * layout-tests/fast/frames/empty-frame-src-expected.txt:
778
779 2005-04-26  Maciej Stachowiak  <mjs@apple.com>
780
781         New test case for <rdar://problem/4092136> reproducible crash in KJS::kjs_fast_realloc loading maps.google.com
782
783         * layout-tests/fast/js/string-from-char-code-expected.txt: Added.
784         * layout-tests/fast/js/string-from-char-code.html: Added.
785
786 2005-04-26  Darin Adler  <darin@apple.com>
787
788         Reviewed by John.
789
790         - fixed <rdar://problem/3655817> please add support for mouse wheel events and the onmousewheel handler
791
792         Loose ends:
793
794             - need to test behavior of Windows IE with horizontal scroll wheeling; we currently send a distinct event
795               for that relatively obscure case, which means the event handlers won't fire at all; might be incorrect
796             - overflow scrolling is done after all DOM event handling, but ideally should be done in the overflowing
797               element's default event handler; not important in practice
798             - frame scrolling is done after all DOM event handling, but probably should be done in a default event handler;
799               not sure about this, but it's probably not important in practice and definitely not required
800
801         - JavaScript
802
803         * khtml/ecma/kjs_events.h: Added DOMWheelEvent.
804         * khtml/ecma/kjs_events.cpp:
805         (KJS::getDOMEvent): Added a case for wheel event. To be forward looking, I use the event's impl pointer
806         instead of a C++ DOM wrapper. Eventually it will all work this way.
807         (offsetFromTarget): Added. Factored out code to compute offsetX/Y for an event.
808         (DOMMouseEvent::getValueProperty): Changed to call offsetFromTarget for offsetX/Y.
809         (DOMWheelEvent::DOMWheelEvent): Added.
810         (DOMWheelEvent::tryGet): Added.
811         (DOMWheelEvent::getValueProperty): Added.
812         (DOMWheelEventProtoFunc::tryCall): Added. Nothing at the moment, but might get contents later.
813
814         * khtml/ecma/kjs_dom.h: Added OnMouseWheel to the enum with the list of properties.
815         * khtml/ecma/kjs_dom.cpp: Added onmousewheel as a property of DOM nodes.
816         (DOMNode::getValueProperty): Return the mouse wheel event handler.
817         (DOMNode::putValue): Set the mouse wheel event handler.
818
819         * khtml/ecma/kjs_window.cpp: Added onmousewheel as a property of the window.
820         (Window::get): Return the mouse wheel event handler.
821         (Window::put): Set the mouse wheel event handler.
822
823         * khtml/ecma/kjs_window.h: Added OnWindowMouseWheel to the enum with the list of properties.
824         (Other properties distinguish the window handler by lower-casing the initial letter, way too subtle,
825         so I did this one a good way.)
826
827         * khtml/dom/dom2_events.h: Made the constructors for Event and UIEvent public. There's no good reason
828         for them to be private, and I had to use the UIEvent one in the JavaScript implementation.
829
830         - DOM
831         
832         * khtml/xml/dom2_eventsimpl.h: Added events for mouse wheel and horizontal mouse wheel.
833         Added isWheelEvent function to EventImpl.
834         (DOM::UIEventWithKeyStateImpl): Added. Base class shared by mouse, wheel, and keyboard events.
835         (DOM::MouseRelatedEventImpl): Added. Base class shared by mouse and wheel events.
836         (DOM::WheelEventImpl): Added.
837
838         * khtml/xml/dom2_eventsimpl.cpp: Added "mousewheel" to list of event names and a placeholder for
839         the horizontal mouse wheel.
840         (EventImpl::isWheelEvent): Added. Returns false.
841         (MouseRelatedEventImpl::MouseRelatedEventImpl): Added. Factored out what's shared between mouse
842         events and wheel events to avoid duplicated code.
843         (MouseRelatedEventImpl::computeLayerPos): Moved to MouseRelatedWheelEventImpl.
844         (MouseEventImpl::MouseEventImpl): Changed since MouseRelatedWheelEventImpl is now the base class
845         so we can share more code with wheel events.
846         (KeyboardEventImpl::KeyboardEventImpl): Changed since UIEventWithKeyStateImpl is now the base class
847         so we can share more code with mouse and wheel events.
848         (WheelEventImpl::WheelEventImpl): Added.
849         (WheelEventImpl::isWheelEvent): Added. Returns true.
850
851         * khtml/misc/htmlattrs.in: Added "onmousewheel" attribute name.
852         * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::parseHTMLAttribute): Added parsing of the
853         "onmousewheel" atribute, consistent with other event handler attributes.
854
855         - event handling
856
857         * kwq/WebCoreBridge.h: Renamed scrollOverflowWithScrollWheelEvent to sendScrollWheelEvent.
858         * kwq/WebCoreBridge.mm: (-[WebCoreBridge sendScrollWheelEvent:]): Renamed.
859
860         * kwq/KWQEvent.h: Added Wheel as an event type value.
861         (QWheelEvent::QWheelEvent): Added.
862         * kwq/KWQEvent.mm:
863         (positionForEvent): Updated to know that wheel events have valid positions in them.
864         (orientationForEvent): Added.
865         (deltaForEvent): Added.
866         (QWheelEvent::QWheelEvent): Added.
867
868         * kwq/KWQKHTMLPart.h: Renamed scrollOverflowWithScrollWheelEvent to wheelEvent.
869         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::wheelEvent): Renamed and added code to construct a QWheelEvent
870         and send it along to KHTMLView::viewportWheelEvent, consistent with how mouse events work.
871
872         * khtml/khtmlview.cpp: (KHTMLView::viewportWheelEvent): Do a hit test to figure out which node to
873         send the event to, and then call dispatchWheelEvent.
874
875         * khtml/xml/dom_nodeimpl.h: Added dispatchWheelEvent.
876         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::dispatchWheelEvent): Added.
877
878         - generated files
879
880         * khtml/ecma/kjs_dom.lut.h: Regenerated.
881         * khtml/ecma/kjs_events.lut.h: Regenerated.
882         * khtml/ecma/kjs_window.lut.h: Regenerated.
883         * khtml/misc/htmlattrs.c: Regenerated.
884         * khtml/misc/htmlattrs.h: Regenerated.
885
886 2005-04-26  David Harrison  <harrison@apple.com>
887
888         Reviewed by Darin, Maciej.
889
890         <rdar://problem/4075576> Deleting text in new message borks content
891         
892         Fixed by removing the methods that attempted to preserve the position.  The idea
893         of preserving position is a very recent one, and turned out to not actually address
894         the problem it was intended to fix (see below).  Further, is unclear how the position
895         could be preserved in a form that could be properly used later on.   Therefore,
896         removing the code to work like before is the preferred alternative for this software
897         update.  I've written <rdar://problem/4099839> to cover the bug that position
898         preservation was supposed to fix (but did not).  Added layout tests for
899         both this bug and 4099839.  Also, updated existing tests with correct expected results
900         (delete-at-paragraph-boundaries-003 and 004).
901
902         * khtml/editing/htmlediting.cpp:
903         (khtml::CompositeEditCommand::removeFullySelectedNode):
904         (khtml::CompositeEditCommand::removeChildrenInRange):
905         (khtml::DeleteSelectionCommand::handleGeneralDelete):
906         * khtml/editing/htmlediting.h:
907         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt:
908         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt:
909         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-007-expected.txt: Added.
910         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-007.html: Added.
911         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-008-expected.txt: Added.
912         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-008.html: Added.
913         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-009-expected.txt: Added.
914         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-009.html: Added.
915         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-010-expected.txt: Added.
916         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-010.html: Added.
917
918 2005-04-26  Darin Adler  <darin@apple.com>
919
920         - fixed development builds
921
922         * khtml/misc/main_thread_malloc.h: Use inlines instead of macros for allocation functions.
923
924 2005-04-25  David Hyatt  <hyatt@apple.com>
925
926         Fix for 4097842, changing 1st line of a url that wraps doesn't update the second line.  Make sure to
927         update line break info for the last dirty line so that when a clean line tries to figure out where it
928         started, it will get an accurate position taking into account the updated string.  By doing this, the code
929         will be able to properly distinguish between the old and new positions and not accidentally assume they are
930         the same.
931         
932         Reviewed by darin
933
934         * khtml/rendering/render_text.cpp:
935         (RenderText::setTextWithOffset):
936
937 2005-04-26  Darin Adler  <darin@apple.com>
938
939         Reviewed by Maciej.
940
941         - fixed <rdar://problem/4098826> Bezier curves broken in new Safari canvas object (last two parameters parsed incorrectly)
942
943         * khtml/ecma/kjs_html.cpp: (KJS::Context2DFunction::tryCall): Fixed incorrect argument indices.
944         Thanks to Brian Campbell who figured out what was wrong.
945
946 2005-04-17  Maciej Stachowiak  <mjs@apple.com>
947
948         Reviewed by Darin.
949
950         - use single-threaded malloc in places where malloc is hot for an
951         8% speed improvement on cvs-base
952
953         * ForwardingHeaders/misc/fast_malloc.h: Added.
954         * WebCore.pbproj/project.pbxproj:
955         * khtml/css/css_base.h:
956         * khtml/css/css_ruleimpl.h:
957         * khtml/css/css_valueimpl.h:
958         * khtml/css/cssstyleselector.h:
959         * khtml/misc/arena.cpp:
960         (ArenaAllocate):
961         (FreeArenaList):
962         (ArenaFinish):
963         * khtml/misc/main_thread_malloc.cpp: Added.
964         * khtml/misc/main_thread_malloc.h: Added.
965         * khtml/rendering/render_style.h:
966         * khtml/xml/dom2_eventsimpl.h:
967         * khtml/xml/dom2_rangeimpl.h:
968         * khtml/xml/dom2_traversalimpl.h:
969         * khtml/xml/dom2_viewsimpl.h:
970         * khtml/xml/dom_docimpl.h:
971         * khtml/xml/dom_elementimpl.cpp:
972         (NamedAttrMapImpl::NamedAttrMapImpl):
973         (NamedAttrMapImpl::clearAttributes):
974         (NamedAttrMapImpl::operator=):
975         (NamedAttrMapImpl::addAttribute):
976         (NamedAttrMapImpl::removeAttribute):
977         * khtml/xml/dom_elementimpl.h:
978         * khtml/xml/dom_nodeimpl.h:
979         * khtml/xml/dom_stringimpl.h:
980         * kwq/KWQFontFamily.h:
981         * kwq/KWQListImpl.mm:
982         * kwq/KWQString.h:
983         * kwq/KWQString.mm:
984         (ALLOC_CHAR):
985         (ALLOC_QCHAR):
986         (QString::setBufferFromCFString):
987         (allocatePageNode):
988
989 2005-04-25  John Sullivan  <sullivan@apple.com>
990
991         Reviewed by Dave Harrison.
992         
993         - fixed <rdar://problem/4098731> [DOMHTMLTextAreaElement cols] returns wrong value (usually zero)
994
995         * kwq/DOMHTML.mm:
996         (-[DOMHTMLTextAreaElement cols]):
997         use ATTR_COLS instead of ATTR_ACCESSKEY (D'oh!)
998         (-[DOMHTMLTextAreaElement setCols:]):
999         fixed whitespace
1000
1001 2005-04-25  Darin Adler  <darin@apple.com>
1002
1003         Reviewed by John.
1004
1005         - fixed <rdar://problem/4097849> REGRESSION (162-163): importNode creates non-HTML elements, thus style attributes (and some others) don't work
1006
1007         * khtml/xml/dom_docimpl.h: Add virtual functions HTMLElementNamespace and isHTMLNamespace.
1008         * khtml/xml/dom_docimpl.cpp:
1009         (DocumentImpl::importNode): Rearranged this function and fixed the following problems: 1) made sure to ref node while attributes are
1010         being set on it so it doesn't get destroyed; 2) fixed code to get namespace from the element we are importing to use the IDs from
1011         the source document, not the destination document; 3) removed unneeded getDocument() call which just returns this; 4) fixed error
1012         handling for cases where an exception happens while processing the children.
1013         (DocumentImpl::HTMLElementNamespace): Added. Returns XHTML_NAMESPACE.
1014         (DocumentImpl::isHTMLNamespace): Added. Returns true for any namespace that matches XHTML_NAMESPACE (case insensitive).
1015         (DocumentImpl::createElementNS): Changed to call isHTMLNamespace, which will cause it to accept the null namespace in an HTML document.
1016         This is the change that fixes the bug. Also fixed the code path to do a little less wasteful work in the non-XHTML case.
1017         (DocumentImpl::createHTMLElement): Pass in HTMLElementNamespace() rather than 0 to tagId.
1018         (DocumentImpl::attrId): Use isHTMLNamespace instead of allowing the null namespace explicitly.
1019         (DocumentImpl::tagId): Ditto.
1020
1021         * khtml/html/html_documentimpl.h: Add overrides for HTMLElementNamespace and isHTMLNamespace.
1022         * khtml/html/html_documentimpl.cpp:
1023         (HTMLDocumentImpl::HTMLElementNamespace): Added. Returns 0 so we use the null string for HTML elements inside HTML documents (as before).
1024         (HTMLDocumentImpl::isHTMLNamespace): Added. Allows 0, and then calls base class to check for the actual XHTML namespace. Thus, we allow
1025         both no namespace at all and the XHTML namespace inside HTML documents.
1026
1027         * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::namespaceURI): Changed to call HTMLElementNamespace rather than checking
1028         isHTMLDocument. Same result as before, but better division of responsibilities.
1029
1030 2005-04-25  Darin Adler  <darin@apple.com>
1031
1032         Reviewed by John.
1033
1034         - fixed <rdar://problem/4091956> JavaScript drop handlers don't receive more than one dropped item
1035
1036         * kwq/KWQClipboard.mm:
1037         (cocoaTypeFromMIMEType): Remove some use of compare -- less efficient than a simpler "==" check.
1038         Fixed non-GC-safe code to use KWQCFAutorelease instead.
1039         (MIMETypeFromCocoaType): Use fromCFString instead of fromNSString to avoid a cast.
1040         (KWQClipboard::getData): Rearrange so that we'll use filenames if both filenames and a URL are present, since
1041         filenames can accomodate multiple items. Fix bug where we'd return multiple filenames when the type requested
1042         is "URL". Fixed loop that computed the count over and over again for the loop termination condition. Check
1043         that the data for NSFilenamesPboardType is an NSArray instead of assuming it is.
1044         (KWQClipboard::setData): Use isEqualToString: instead of == when comparing types.
1045
1046 2005-04-22  David Hyatt  <hyatt@apple.com>
1047
1048         Fix for 4096878, drop shadow effect not displayed correctly on tbray.org/ongoing/.  Block minmaxwidth was
1049         broken when negative margins were used and did not properly decrease the max width.
1050         
1051         Reviewed by Maciej
1052
1053         * khtml/rendering/render_block.cpp:
1054         (khtml::RenderBlock::calcBlockMinMaxWidth):
1055         * layout-tests/fast/block/float/034-expected.txt: Added.
1056         * layout-tests/fast/block/float/034.html: Added.
1057         * layout-tests/fast/block/float/035-expected.txt: Added.
1058         * layout-tests/fast/block/float/035.html: Added.
1059         
1060 2005-04-22  David Hyatt  <hyatt@apple.com>
1061
1062         Remove some dead code from css_valueimpl.  It wasn't used at all.
1063
1064         * khtml/css/css_valueimpl.cpp:
1065         * khtml/css/css_valueimpl.h:
1066
1067 2005-04-22  Darin Adler  <darin@apple.com>
1068
1069         * khtml/ecma/kjs_html.h: Removed unnecessary bogus class name qualifiers.
1070
1071 2005-04-22  David Hyatt  <hyatt@apple.com>
1072
1073         Fix for 4096681, fix regression in how the list-style property is parsed.  It no longer parses when it hits
1074         a url in the property value list now, because the list pointer did not get advanced.  This fixes alistapart.com.
1075         
1076         Reviewed by john
1077
1078         * khtml/css/cssparser.cpp:
1079         (CSSParser::parseValue):
1080         * layout-tests/fast/lists/009-expected.txt: Added.
1081         * layout-tests/fast/lists/009.html: Added.
1082         * layout-tests/fast/lists/resources/listmark.gif: Added.
1083
1084 2005-04-22  Darin Adler  <darin@apple.com>
1085
1086         Reviewed by John.
1087
1088         - fixed <rdar://problem/4091082> Google Suggest no longer works due to lack of "frameElement"
1089
1090         * khtml/ecma/kjs_window.h: Added FrameElement.
1091         * khtml/ecma/kjs_window.cpp: (Window::get): Added "frameElement".
1092         * khtml/ecma/kjs_window.lut.h: Regenerated.
1093
1094 2005-04-22  Darin Adler  <darin@apple.com>
1095
1096         Reviewed by John.
1097
1098         - a small editing-related code cleanup
1099
1100         * khtml/rendering/render_text.h: Added positionForOffset and made offsetForPosition const.
1101         * khtml/rendering/render_text.cpp:
1102         (InlineTextBox::offsetForPosition): Made const.
1103         (InlineTextBox::positionForOffset): Added. Moved code here from caretRect.
1104         (RenderText::caretRect): Call positionForOffset instead of doing the work here.
1105
1106 2005-04-21  David Hyatt  <hyatt@apple.com>
1107
1108         Fix for 4095839, wrong background image used on flechtwerk.de.  Make sure that the global mapped
1109         attribute cache hashed background attributes into per-document buckets.
1110
1111         * khtml/html/html_baseimpl.cpp:
1112         (HTMLBodyElementImpl::mapToEntry):
1113         * khtml/html/html_elementimpl.h:
1114         (DOM::):
1115         * khtml/html/html_tableimpl.cpp:
1116         (HTMLTableElementImpl::mapToEntry):
1117         (HTMLTablePartElementImpl::mapToEntry):
1118         * khtml/xml/dom_docimpl.cpp:
1119         (DocumentImpl::DocumentImpl):
1120         * khtml/xml/dom_docimpl.h:
1121         (DOM::DocumentImpl::docID):
1122
1123 2005-04-21  Vicki Murley  <vicki@apple.com>
1124
1125         - layout test for 4065447, outerHTML on images
1126
1127         * layout-tests/fast/dynamic/outerHTML-img-expected.txt: Added.
1128         * layout-tests/fast/dynamic/outerHTML-img.html: Added.
1129
1130 2005-04-20  Vicki Murley  <vicki@apple.com>
1131
1132         Reviewed by hyatt.
1133
1134         - fixed <rdar://problem/4065447> support outerHTML on IMG elements
1135
1136         * khtml/html/html_elementimpl.cpp:
1137         (HTMLElementImpl::setOuterHTML):
1138
1139 2005-04-18  David Hyatt  <hyatt@apple.com>
1140
1141         Fix min-height so that when it resolves to auto it does not use the box's intrinsic height.
1142         
1143         * khtml/rendering/render_box.cpp:
1144         (RenderBox::calcHeight):
1145         (RenderBox::calcHeightUsing):
1146
1147 2005-04-18  David Hyatt  <hyatt@apple.com>
1148
1149         Back out fix for 4032346, since it is causing garbled image content on many sites.
1150
1151         The bug tracking the fix is 4069093.
1152         
1153         (khtml::RenderBlock::matchedEndLine):
1154
1155 2005-04-18  David Hyatt  <hyatt@apple.com>
1156
1157         Fix the smile in the Acid2 test.  Floats should not grow to contain other floats unless height is auto.  Otherwise
1158         the float should use the specified height.
1159
1160         Also fix row 14 of the Acid2 test.  Although ambiguous, just modify the table cell baseline alignment code to align
1161         to the bottom of the cell's content height if no suitable baseline could be found.
1162         
1163         * khtml/rendering/render_block.cpp:
1164         (khtml::RenderBlock::layoutBlock):
1165         * khtml/rendering/render_block.h:
1166         (khtml::RenderBlock::firstRootBox):
1167         (khtml::RenderBlock::lastRootBox):
1168         * khtml/rendering/render_table.cpp:
1169         (RenderTableSection::calcRowHeight):
1170         (RenderTableCell::baselinePosition):
1171         
1172 2005-04-15  David Hyatt  <hyatt@apple.com>
1173
1174         Make sure empty tables honor CSS-specified heights when they have no rows or sections.  This is done only
1175         in strict mode, since it is not compatible with WinIE.
1176
1177         * khtml/rendering/render_table.cpp:
1178         (RenderTable::layout):
1179
1180 2005-04-15  David Hyatt  <hyatt@apple.com>
1181
1182         Fix for row 13 of the Acid2 test.  Change HTML comment parsing in strict mode to do proper SGML parsing,
1183         checking for pairs of -- and only being willing to close the comment if every -- is paired up.
1184         
1185         * khtml/html/htmltokenizer.cpp:
1186         (khtml::HTMLTokenizer::parseComment):
1187
1188 2005-04-12  Maciej Stachowiak  <mjs@apple.com>
1189
1190         Reviewed by Richard.
1191
1192         - use custom single-threaded malloc for all non-GC JavaScriptCore
1193         allocations, for a 9.1% speedup on JavaScript iBench
1194          
1195         * khtml/ecma/kjs_binding.cpp:
1196         (UString::UString):
1197         * khtml/ecma/kjs_proxy.cpp:
1198         (KJSProxyImpl::evaluate):
1199
1200 2005-04-15  David Hyatt  <hyatt@apple.com>
1201
1202         Fix the six pixel gap between rows nine and ten of the Acid2 test.  Make sure that percentage heights that
1203         resolve to auto are properly treated as though they have auto height by the self-collapsing block check (as per
1204         section 8.3.1, paragraph 7 of the CSS2.1 spec).
1205         
1206         * khtml/rendering/render_block.cpp:
1207         (khtml::RenderBlock::isSelfCollapsingBlock):
1208
1209 2005-04-15  David Hyatt  <hyatt@apple.com>
1210
1211         The Acid2 test and the reference rendering both make use of overflow:hidden on the <html> element.  Turns out
1212         the CSS2.1 wording for this behavior has been revised (based off WinIE/Mozilla behavior).  Change our behavior
1213         to match and make <html> overflow apply to the viewport.
1214         
1215         * khtml/khtmlview.cpp:
1216         (KHTMLView::applyOverflowToViewport):
1217         (KHTMLView::layout):
1218         * khtml/khtmlview.h:
1219         * khtml/rendering/render_box.cpp:
1220         (RenderBox::setStyle):
1221
1222 2005-04-14  David Hyatt  <hyatt@apple.com>
1223
1224         3258403 and 3258402 can now be fixed.  min/max-width/height support is now complete.  This patch makes them
1225         work for positioned elements and enables us to pass row one of the Acid2 test.
1226         
1227         * khtml/rendering/render_box.cpp:
1228         (RenderBox::calcAbsoluteHorizontal):
1229         (RenderBox::calcAbsoluteHorizontalValues):
1230         (RenderBox::calcAbsoluteVertical):
1231         (RenderBox::calcAbsoluteVerticalValues):
1232         * khtml/rendering/render_box.h:
1233
1234 2005-04-12  David Hyatt  <hyatt@apple.com>
1235
1236         Working on the Acid2 test, Row 1.
1237
1238         Improve checkChild for the DTD so that it knows what mode a document is in.  This allows it to adhere more
1239         strictly to the actual DTD in strict mode and almost strict mode.
1240
1241         Change the <table>-inside-<p> check so that <table> is disallowed inside <p> in 
1242         strict mode and almost strict mode.  This matches Firefox behavior, which allows <table>
1243         inside <p> only in quirks mode.
1244
1245         * khtml/html/dtd.cpp:
1246         (DOM::checkChild):
1247         * khtml/html/dtd.h:
1248         * khtml/html/htmlparser.cpp:
1249         (KHTMLParser::insertNode):
1250         * khtml/html/htmltokenizer.cpp:
1251         (khtml::HTMLTokenizer::parseTag):
1252         * khtml/xml/dom_elementimpl.cpp:
1253         (ElementImpl::childAllowed):
1254
1255 2005-04-12  Vicki Murley  <vicki@apple.com>
1256
1257         Reviewed by Maciej. 
1258
1259         - fixed <rdar://problem/3760895> Request for including an implementation of the elementFromPoint function
1260  
1261         * khtml/dom/dom_doc.cpp:
1262         (DOM::Document::elementFromPoint):
1263         * khtml/dom/dom_doc.h:
1264         * khtml/ecma/kjs_dom.cpp:
1265         (DOMDocumentProtoFunc::tryCall):
1266         * khtml/ecma/kjs_dom.h:
1267         (KJS::DOMDocument::):
1268         * khtml/ecma/kjs_dom.lut.h:
1269         (KJS::):
1270         * khtml/xml/dom_docimpl.cpp:
1271         (DocumentImpl::elementFromPoint):
1272         * khtml/xml/dom_docimpl.h:
1273
1274 2005-04-12  David Hyatt  <hyatt@apple.com>
1275
1276         Beginning of work to support the Acid2 CSS test put forward by the Web Standards Project.  Fix
1277         our handling of the rel attribute on <link> elements to do a proper tokenization so that stylesheets
1278         can be recognized even when other keywords are present in the rel attribute.
1279
1280         * khtml/html/html_headimpl.cpp:
1281         (HTMLLinkElementImpl::HTMLLinkElementImpl):
1282         (HTMLLinkElementImpl::parseHTMLAttribute):
1283         (HTMLLinkElementImpl::tokenizeRelAttribute):
1284         (HTMLLinkElementImpl::process):
1285         * khtml/html/html_headimpl.h:
1286
1287 2005-04-12  John Sullivan  <sullivan@apple.com>
1288
1289         - fixed these two bugs (I also fixed these on the experimental-ui-branch)
1290         <rdar://problem/3154293> Find Next should not scroll page if the next target is already visible
1291         <rdar://problem/3121828> scrollToVisible on find cuts off the left part of the view due to needless horiz. scroll
1292
1293         Reviewed by Chris.
1294
1295         * kwq/KWQKHTMLPart.mm:
1296         (KWQKHTMLPart::jumpToSelection):
1297         Trey had written code to address these issues, but left it commented out due to other
1298         problems. The other problems no longer occur, so I uncommented Trey's code, and then
1299         discovered that I could make it behave more like TextEdit with many fewer lines of
1300         code.
1301
1302 2005-04-08  David Harrison  <harrison@apple.com>
1303
1304         Reviewed by Dave Hyatt.
1305
1306         <rdar://problem/4084106> Remove NSAccessibilityForegroundColorTextAttributeWrapper
1307
1308         * kwq/KWQAccObject.mm:
1309         (AXAttributeStringSetStyle):
1310         Use NSAccessibilityForegroundColorTextAttribute directly.
1311
1312 2005-04-05  David Hyatt  <hyatt@apple.com>
1313
1314         Fix for 4077106, make sure that mouse wheeling in overflow sections uses 40 rather than 10 as the base line
1315         step.
1316         
1317         Reviewed by darin
1318
1319         * khtml/rendering/render_layer.cpp:
1320         (RenderLayer::positionScrollbars):
1321         * kwq/KWQScrollBar.mm:
1322         (QScrollBar::scroll):
1323
1324 2005-04-04  Vicki Murley  <vicki@apple.com>
1325
1326         Reviewed by Maciej.
1327
1328         - fixed <rdar://problem/3871669> no focus or blur methods on HTML button elements
1329
1330         * khtml/dom/html_form.cpp:
1331         (HTMLButtonElement::focus): 
1332         (HTMLButtonElement::blur): 
1333         * khtml/dom/html_form.h: 
1334         * khtml/ecma/kjs_html.cpp:
1335         (KJS::HTMLElementFunction::tryCall):
1336         * khtml/ecma/kjs_html.h:
1337         (KJS::HTMLElement::):
1338         * khtml/ecma/kjs_html.lut.h:
1339         (KJS::):
1340         * khtml/html/html_formimpl.cpp:
1341         (DOM::HTMLButtonElementImpl::blur):
1342         (DOM::HTMLButtonElementImpl::focus):
1343         * khtml/html/html_formimpl.h:
1344
1345 === WebCore-415 ===
1346
1347 2005-03-28  David Harrison  <harrison@apple.com>
1348
1349         Reviewed by Darin.
1350         
1351         <rdar://problem/4069161> REGRESSION (8A416-8A419): Safari crash bringing up context menu for non-HTML content in a frame
1352
1353         * kwq/KWQAccObject.mm:
1354         (-[KWQAccObject rendererForView:]):
1355         Nil-check node variable instead of rechecking document variable.
1356
1357 === WebCore-413 ===
1358
1359 2005-03-27  Darin Adler  <darin@apple.com>
1360
1361         Reviewed by me, fix by Kida-san.
1362
1363         - fixed <rdar://problem/4067474> 8A424: Safari immediately quit by Cmd+Ctrll+'D'
1364
1365         * kwq/WebCoreBridge.mm: (-[WebCoreBridge convertToNSRange:DOM::]):
1366         Added nil check.
1367
1368 === Safari-412 ===
1369
1370 2005-03-24  Richard Williamson   <rjw@apple.com>
1371
1372         Fixed <rdar://problem/4052683> After adding/removing stocks from Stocks Widget, stock areas went blank
1373
1374         The request was being collected before firing it's load handler.
1375         We now gc protect the request while it's loading.
1376
1377         Reviewed by Maciej.
1378
1379         * khtml/ecma/xmlhttprequest.cpp:
1380         (KJS::XMLHttpRequest::send):
1381         (KJS::XMLHttpRequest::abort):
1382         (KJS::XMLHttpRequest::slotFinished):
1383         (KJS::XMLHttpRequestProtoFunc::tryCall):
1384
1385 === Safari-411 ===
1386
1387 2005-03-23  Darin Adler   <darin@apple.com>
1388
1389         Further fix for 4053515.
1390
1391         Covered cases where text position doesn't lie inside a
1392         text node.      
1393
1394         Reviewed by Richard.
1395
1396         * khtml/editing/visible_text.cpp:
1397         (khtml::TextIterator::setRangeFromLocationAndLength):
1398
1399 2005-03-23  Richard Williamson   <rjw@apple.com>
1400
1401         Fixed <rdar://problem/4053515> REGRESSION (Mail): Kotoeri input method reconversion does not work in WebViews
1402
1403         We now use actual document NSRanges to represent both marked text
1404         ranges and selection ranges.
1405
1406         Reviewed by Ken.
1407
1408         * khtml/editing/visible_text.cpp:
1409         (khtml::TextIterator::rangeLength):
1410         (khtml::TextIterator::setRangeFromLocationAndLength):
1411         * khtml/editing/visible_text.h:
1412         * kwq/WebCoreBridge.h:
1413         * kwq/WebCoreBridge.mm:
1414         (-[WebCoreBridge convertToNSRange:DOM::]):
1415         (-[WebCoreBridge DOM::convertToDOMRange:]):
1416         (-[WebCoreBridge selectNSRange:]):
1417         (-[WebCoreBridge markedTextDOMRange]):
1418         (-[WebCoreBridge markedTextNSRange]):
1419
1420 2005-03-22  Kevin Decker  <kdecker@apple.com>
1421
1422         Reviewed by Vicki.
1423
1424         Fixed <rdar://problem/4062336> REGRESSION (406-407): HTML submenus not working at hrweb.apple.com after going back
1425
1426         Rolled out the fix for <rdar://problem/4041374> REGRESSION (185-186): unload handlers (at least those added with addEventListener) are broken
1427
1428         We clearly need a better solution to 4041374. We can't indiscriminately remove event listeners in closeURL() after-all. Since event listeners are registered in a <script> tag, which is evaluated and executed at page load time, this becomes a problem since we don't reevaluate a page's <script> that is in the back/forward cache.  Thus once you leave the page, the listeners are gone for good.  This is the problem.
1429
1430         * khtml/khtml_part.cpp:
1431         (KHTMLPart::closeURL):
1432         * khtml/xml/dom_docimpl.cpp:
1433         (DocumentImpl::detach): 
1434
1435 === Safari-410 ===
1436
1437 2005-03-22  Vicki Murley  <vicki@apple.com>
1438
1439         - roll the fix for <rdar://problem/4060266> back in, since its 
1440         now approved by CCC
1441
1442         * khtml/editing/visible_text.cpp:
1443         (khtml::TextIterator::handleTextBox):
1444
1445 2005-03-22  Vicki Murley  <vicki@apple.com>
1446
1447         - roll out the fix for <rdar://problem/4060266> since it was denied by CCC
1448
1449         * khtml/editing/visible_text.cpp:
1450         (khtml::TextIterator::handleTextBox):
1451
1452 2005-03-22  David Harrison  <harrison@apple.com>
1453
1454         Reviewed by Darin.
1455         
1456         <rdar://problem/4060266> Double-clicking in Dictionary.app doesn't work for some words (coming just after style change)
1457
1458         * khtml/editing/visible_text.cpp:
1459         (khtml::TextIterator::handleTextBox):
1460         Complete the check of whether to emit space for collapsed space.
1461
1462 2005-03-22  David Harrison  <harrison@apple.com>
1463
1464         Reviewed by John.
1465         
1466         <rdar://problem/4061443> REGRESSION (8A420-8A421): Pasting in the Stickies widget is broken again
1467
1468         * khtml/editing/htmlediting.cpp:
1469         (khtml::positionBeforeContainingSpecialElement):
1470         (khtml::positionAfterContainingSpecialElement):
1471         Return unchanged Position rather than a null or non-editable one.
1472
1473 === Safari-409 ===
1474
1475 2005-03-20  Ken Kocienda  <kocienda@apple.com>
1476
1477         Reviewed by me
1478
1479         I made an error in this test earlier. It was not testing what I intended. Fixed.
1480
1481         * layout-tests/editing/unsupported-content/list-delete-001-expected.txt
1482         * layout-tests/editing/unsupported-content/list-delete-001.html
1483         
1484         New tests:
1485
1486         * layout-tests/editing/unsupported-content/table-delete-001-expected.txt: Added.
1487         * layout-tests/editing/unsupported-content/table-delete-001.html: Added.
1488         * layout-tests/editing/unsupported-content/table-delete-002-expected.txt: Added.
1489         * layout-tests/editing/unsupported-content/table-delete-002.html: Added.
1490         * layout-tests/editing/unsupported-content/table-delete-003-expected.txt: Added.
1491         * layout-tests/editing/unsupported-content/table-delete-003.html: Added.
1492         * layout-tests/editing/unsupported-content/table-type-after-expected.txt: Added.
1493         * layout-tests/editing/unsupported-content/table-type-after.html: Added.
1494         * layout-tests/editing/unsupported-content/table-type-before-expected.txt: Added.
1495         * layout-tests/editing/unsupported-content/table-type-before.html: Added.
1496
1497 2005-03-20  Darin Adler  <darin@apple.com>
1498
1499         Reviewed by Maciej.
1500
1501         - fixed <rdar://problem/3923903> REGRESSION (164-165): Repro Safari crash in khtml::RenderLayer::scrollToOffset
1502
1503         * khtml/rendering/render_layer.cpp: (RenderLayer::scrollToOffset): Check canvas for nil.
1504
1505 2005-03-20  David Harrison  <harrison@apple.com>
1506
1507         Reviewed by Darin.
1508         
1509         <rdar://problem/4055127> Dictionary pop-up panel misplaced at beginning of text blocks (breaks double-clicking in Dictionary.app)
1510
1511         SimplifiedBackwardsTextIterator::advance() needed to not limit to textnodes
1512         when checking whether moving back across block boundaries
1513
1514         VisibleUnits previousBoundary() needed to INIT_DOWN when creating result VisiblePosition
1515
1516         All editing tests pass.
1517
1518         * khtml/editing/visible_text.cpp:
1519         (khtml::SimplifiedBackwardsTextIterator::advance):
1520         * khtml/editing/visible_units.cpp:
1521         (khtml::previousBoundary):
1522
1523 2005-03-20  Darin Adler  <darin@apple.com>
1524
1525         Reviewed by Harrison.
1526
1527         - fixed <rdar://problem/4059914> when you select all of a frame's content, need to select the frame in the parent document so it can be easily deleted
1528
1529         * khtml/khtml_part.h: Added selectFrameElementInParentIfFullySelected.
1530         * khtml/khtml_part.cpp:
1531         (isFrame): Added.
1532         (KHTMLPart::setFocusNodeIfNeeded): Changed to not set focus to a frame; was not what this function was
1533         intended to do, and caused trouble when trying to select a frame element.
1534         (KHTMLPart::khtmlMouseReleaseEvent): Call selectFrameElementInParentIfFullySelected.
1535         (KHTMLPart::selectAll): Call selectFrameElementInParentIfFullySelected.
1536         (KHTMLPart::selectFrameElementInParentIfFullySelected): Added. Selects the frame element in the parent
1537         if a frame is entirely selected, which makes it easier to delete or replace the frame and is consistent
1538         with the changes Maciej made recently for other elements.
1539
1540         * kwq/WebCoreBridge.mm:
1541         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Call selectFrameElementInParentIfFullySelected.
1542         (-[WebCoreBridge alterCurrentSelection:verticalDistance:]): Call selectFrameElementInParentIfFullySelected.
1543
1544 2005-03-20  Darin Adler  <darin@apple.com>
1545
1546         Reviewed by me, code change by Ken.
1547
1548         - fixed <rdar://problem/4059852> Deleting from first element of list makes content jump to wrong place
1549
1550         * khtml/editing/htmlediting.cpp:
1551         (khtml::isListStructureNode): Added.
1552         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Check for list nodes as well as table nodes.
1553
1554 2005-03-20  Ken Kocienda  <kocienda@apple.com>
1555
1556         Reviewed by me
1557         
1558         Added tests to cover new "unsupported content" editing code.
1559
1560         * layout-tests/editing/unsupported-content/list-delete-001-expected.txt: Added.
1561         * layout-tests/editing/unsupported-content/list-delete-001.html: Added.
1562         * layout-tests/editing/unsupported-content/list-delete-002-expected.txt: Added.
1563         * layout-tests/editing/unsupported-content/list-delete-002.html: Added.
1564         * layout-tests/editing/unsupported-content/list-delete-003-expected.txt: Added.
1565         * layout-tests/editing/unsupported-content/list-delete-003.html: Added.
1566         * layout-tests/editing/unsupported-content/list-type-after-expected.txt: Added.
1567         * layout-tests/editing/unsupported-content/list-type-after.html: Added.
1568         * layout-tests/editing/unsupported-content/list-type-before-expected.txt: Added.
1569         * layout-tests/editing/unsupported-content/list-type-before.html: Added.
1570
1571 2005-03-20  Ken Kocienda  <kocienda@apple.com>
1572
1573         Reviewed by Maciej
1574         
1575         Fix for this bug:
1576         
1577         <rdar://problem/4059578> Entire list deleted, and caret disappears, when delete key hit at end of list
1578
1579         The problem is that a new case in the delete code did not consider when the
1580         downstream end node of the selection might be an ancestor of the upstream start
1581         node. That is the case in this bug. The downstream end is the body element, and
1582         this line of code would delete all the children of the downstream end:
1583             removeChildrenInRangePreservingPosition(m_downstreamEnd.node(), 0, 
1584                 m_downstreamEnd.offset(), m_upstreamStart);
1585
1586         The fix is to check for this "is ancestor" case, and do some tree logic to find
1587         the right offset of the downstream end node for the call to
1588         removeChildrenInRangePreservingPosition().
1589
1590         * khtml/editing/htmlediting.cpp:
1591         (khtml::DeleteSelectionCommand::handleGeneralDelete): Fixed as described.
1592
1593 2005-03-19  Ken Kocienda  <kocienda@apple.com>
1594
1595         Reviewed by Maciej
1596
1597         Fix for this bug:
1598        
1599         <rdar://problem/4059384> Cannot place insertion point correctly in editable text that avoids floating elements
1600
1601         Note: I strongly suspect this bug blocks a complete solution to this other Tiger/P2:
1602         <rdar://problem/4055748> AX: Dictionary pop-up panel shows at wrong place on specific parts of particular pages
1603
1604         * khtml/rendering/render_text.cpp:
1605         (RenderText::caretRect): Change the y-coordinate used to calculate the available width for a line. Height is wrong.
1606         Top of the box containing the text where the click is done is correct. Also, add in the x-offset for the start
1607         of the text box when calculating the available width. If this text box is avoiding a float at the y-coordinate
1608         for the relevant box, failure to add in the amount of float-avoidance will make the text at the coordinates
1609         greater than end-of-line minus float-avoidance ineligible for caret placement.
1610
1611 2005-03-19  Darin Adler  <darin@apple.com>
1612
1613         Reviewed by Ken.
1614
1615         - fixed <rdar://problem/4057594> REGRESSION (125-406): Unrepro crash in HTMLTokenizer::allDataProcessed after hitting Back button
1616
1617         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::allDataProcessed):
1618         To get the part safely after calling end, save a guarded pointer to the view.
1619         The old way could end trying to call a virtual function a part that was destroyed.
1620
1621 2005-03-19  Maciej Stachowiak  <mjs@apple.com>
1622
1623         Reviewed by Darin.
1624
1625         <rdar://problem/4053506> Pasting Tables and Cells in Mail does not allow editing before or after
1626         <rdar://problem/4005954> REGRESSION (Mail): After copy/paste of content containing list element cannot go back to entering text at left side of page
1627         
1628         * khtml/editing/htmlediting.cpp:
1629         (khtml::maxDeepOffset):
1630         (khtml::CompositeEditCommand::removeFullySelectedNodePreservingPosition):
1631         (khtml::CompositeEditCommand::removeChildrenInRangePreservingPosition):
1632         (khtml::CompositeEditCommand::removeNodePreservingPosition):
1633         (khtml::CompositeEditCommand::insertBlockPlaceholder):
1634         (khtml::CompositeEditCommand::appendBlockPlaceholder):
1635         (khtml::CompositeEditCommand::forceBlockPlaceholder):
1636         (khtml::CompositeEditCommand::addBlockPlaceholderIfNeeded):
1637         (khtml::isSpecialElement):
1638         (khtml::isFirstVisiblePositionInSpecialElementInFragment):
1639         (khtml::positionBeforePossibleContainingSpecialElement):
1640         (khtml::positionAfterPossibleContainingSpecialElement):
1641         (khtml::ApplyStyleCommand::applyInlineStyle):
1642         (khtml::DeleteSelectionCommand::initializePositionData):
1643         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
1644         (khtml::DeleteSelectionCommand::handleGeneralDelete):
1645         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
1646         (khtml::DeleteSelectionCommand::doApply):
1647         (khtml::InsertParagraphSeparatorCommand::doApply):
1648         (khtml::ReplacementFragment::ReplacementFragment):
1649         (khtml::ReplaceSelectionCommand::doApply):
1650         * khtml/editing/htmlediting.h:
1651         * khtml/editing/visible_position.cpp:
1652         (khtml::isRenderedBR):
1653         (khtml::VisiblePosition::initDownstream):
1654         (khtml::isLastVisiblePositionInBlock):
1655         * khtml/rendering/render_line.cpp:
1656         (khtml::RootInlineBox::closestLeafChildForXPos):
1657         * khtml/xml/dom_nodeimpl.cpp:
1658         (NodeImpl::isBlockFlowOrTable):
1659         (NodeImpl::isEditableBlock):
1660         (NodeImpl::enclosingBlockFlowOrTableElement):
1661         * khtml/xml/dom_nodeimpl.h:
1662         * khtml/xml/dom_position.cpp:
1663         (DOM::Position::upstream):
1664         (DOM::Position::downstream):
1665         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt:
1666         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt:
1667         * layout-tests/editing/deleting/delete-select-all-001-expected.txt:
1668         * layout-tests/editing/deleting/delete-select-all-003-expected.txt:
1669         * layout-tests/editing/inserting/insert-3786362-fix-expected.txt:
1670
1671 2005-03-19  John Sullivan  <sullivan@apple.com>
1672
1673         Reviewed by Darin.
1674         
1675         - fixed <rdar://problem/4058740> Crash (nil-deref) editing Mail reply 
1676         message in KWQKHTMLPart::fontForSelection (MailViewer-723)
1677
1678         * kwq/KWQKHTMLPart.mm:
1679         (KWQKHTMLPart::fontForSelection):
1680         Add nil check to loop. It shouldn't be necessary, but this crash trace seems to be
1681         running into it. We're not completely certain, but the check is harmless at worst.
1682
1683 === Safari-408 ===
1684
1685 2005-03-18  David Harrison  <harrison@apple.com>
1686
1687         Reviewed by Darin.
1688         
1689         <rdar://problem/3584942> AX: Safari Accessibility parent-child mismatch
1690         
1691         Also changed WebKit.
1692
1693         * kwq/KWQAccObject.mm:
1694         (-[KWQAccObject rendererForView:]):
1695         New to cover both the WebCore and WebKit NSViews.
1696         
1697         (-[KWQAccObject _accessibilityParentForSubview:]):
1698         Use rendererForView.
1699         
1700         * kwq/WebCoreFrameView.h:
1701         Add WebCoreBridgeHolder protocol to get access to WebKit NSViews.
1702
1703 2005-03-18  David Harrison  <harrison@apple.com>
1704
1705         Reviewed by Darin, Ken.
1706
1707         <rdar://problem/3735625> AX: add AXPress action if an element has an onclick handler
1708
1709         * khtml/dom/html_form.cpp:
1710         (HTMLInputElement::click):
1711         * khtml/html/html_elementimpl.cpp:
1712         (HTMLElementImpl::click):
1713         (HTMLElementImpl::accessKeyAction):
1714         * khtml/html/html_elementimpl.h:
1715         * khtml/html/html_formimpl.cpp:
1716         (DOM::HTMLFormElementImpl::submitClick):
1717         (DOM::HTMLButtonElementImpl::click):
1718         (DOM::HTMLButtonElementImpl::accessKeyAction):
1719         (DOM::HTMLInputElementImpl::click):
1720         (DOM::HTMLInputElementImpl::accessKeyAction):
1721         (DOM::HTMLInputElementImpl::defaultEventHandler):
1722         (DOM::HTMLLabelElementImpl::accessKeyAction):
1723         (DOM::HTMLSelectElementImpl::accessKeyAction):
1724         (DOM::HTMLTextAreaElementImpl::accessKeyAction):
1725         * khtml/html/html_formimpl.h:
1726         * khtml/html/html_inlineimpl.cpp:
1727         (HTMLAnchorElementImpl::defaultEventHandler):
1728         (HTMLAnchorElementImpl::accessKeyAction):
1729         * khtml/html/html_inlineimpl.h:
1730         * khtml/rendering/render_form.cpp:
1731         (RenderFileButton::click):
1732         * khtml/rendering/render_form.h:
1733         * khtml/xml/dom_docimpl.cpp:
1734         (DocumentImpl::defaultEventHandler):
1735         * khtml/xml/dom_elementimpl.h:
1736         (DOM::ElementImpl::accessKeyAction):
1737         * kwq/DOMHTML.mm:
1738         (-[DOMHTMLInputElement click]):
1739         * kwq/KWQButton.h:
1740         * kwq/KWQButton.mm:
1741         (QButton::click):
1742         * kwq/KWQFileButton.h:
1743         * kwq/KWQFileButton.mm:
1744         (KWQFileButton::click):
1745         
1746         Add accessKeyAction parameter about whether to limit to HTMLElementImpl subclasses that JavaScript wants, or to apply to others as well.
1747         
1748         Add click() parameter about whether to send the mousedown and mouseup events in addition to the click event.
1749         
1750         * kwq/KWQAccObject.mm:
1751         (-[KWQAccObject mouseButtonListener]):
1752         Locate a mousedown, mouseup, or click handler in the current element and its ancestors.
1753         
1754         (-[KWQAccObject actionElement]):
1755         (-[KWQAccObject accessibilityIsIgnored]):
1756         (-[KWQAccObject accessibilityPerformAction:]):
1757         Consider mouseButtonListener.
1758
1759 2005-03-18  John Sullivan  <sullivan@apple.com>
1760
1761         Reviewed by Darin.
1762         
1763         - fixed <rdar://problem/4002164> maps that include start and end 
1764         location don't print right from maps.google.com
1765
1766         I thought I checked this in yesterday but a ChangeLog conflict aborted my checkin
1767         without me noticing.
1768
1769         * khtml/rendering/render_style.cpp:
1770         (RenderStyle::diff):
1771         flag name changed from _should_correct_text_color to _force_backgrounds_to_white
1772         
1773         * khtml/rendering/render_style.h:
1774         (khtml::RenderStyle::InheritedFlags::operator==):
1775         flag name changed from _should_correct_text_color to _force_backgrounds_to_white
1776         (khtml::RenderStyle::setBitDefaults):
1777         ditto
1778         (khtml::RenderStyle::forceBackgroundsToWhite):
1779         ditto, and method name changed too
1780         (khtml::RenderStyle::setForceBackgroundsToWhite):
1781         ditto
1782         
1783         * khtml/rendering/render_text.cpp:
1784         (InlineTextBox::paint):
1785         updated for name change; also, compare text against white instead of current bg color
1786         because we no longer actually modify the bg color (previously we would always set
1787         the bg color to white, so the result is the same)
1788         
1789         * khtml/xml/dom_docimpl.cpp:
1790         (DocumentImpl::recalcStyle):
1791         updated for name change
1792         
1793         * kwq/WebCoreBridge.mm:
1794         (-[WebCoreBridge styleSheetForPrinting]):
1795         removed this method
1796         (-[WebCoreBridge reapplyStylesForDeviceType:]):
1797         removed the code that called styleSheetForPrinting; we no longer use a stylesheet
1798         for this behavior.
1799
1800         * khtml/rendering/render_box.cpp:
1801         (RenderBox::paintBackgroundExtended):
1802         If forceBackgroundsToWhite flag is set, convert background images and
1803         background colors to white background color with no background image.
1804         
1805 2005-03-18  Ken Kocienda  <kocienda@apple.com>
1806
1807         Reviewed by John
1808
1809         Fix for this bug:
1810         
1811         <rdar://problem/4056718> Pasting quotes the entire message
1812
1813         * khtml/editing/htmlediting.cpp:
1814         (khtml::ReplaceSelectionCommand::doApply): After pasting, nodes are moved to the block containing
1815         the end of the pasted content in certain cases. This move logic used to stop once it moved all the
1816         siblings of the node following the last node of the pasted-in content. This means that block elements
1817         could get moved, and if the pasted-in content included a mail blockquote, this could result in
1818         one quote level getting added. The fix is to stop the move of nodes once a <br>, block element, or
1819         <table> is seen. This only affected one of the many test cases we have for such scenarios, and 
1820         the change to that result makes sense given the code change.
1821         * layout-tests/editing/pasteboard/paste-text-003-expected.txt: This test result changed in a way that
1822         adequately tests the behavior change, so I did not add a new test.
1823
1824 2005-03-17  Ken Kocienda  <kocienda@apple.com>
1825
1826         Reviewed by Harrison
1827
1828         Fix for this bug:
1829         
1830         <rdar://problem/4051809> 8A413: Cursor-up in a mail message sometimes gets stuck (with specific reproducible case)
1831
1832         * khtml/rendering/render_text.cpp:
1833         (RenderText::positionForCoordinates): Consider two lines: line-above and line-below. If the caret position in line-below
1834         was at an x coordinate between half way through the x coordinate of the last character on the line-above and the
1835         end of that same character, this bug would happen since the positioning code would assume that it could create a 
1836         VisiblePosition with a DOWNSTREAM affinity. Now, I check to see if the character position on the line-above is the 
1837         last character on that line, and if it is, I use UPSTREAM as the affinity.
1838
1839 === Safari-407 ===
1840
1841 2005-03-17  David Harrison  <harrison@apple.com>
1842
1843         Reviewed by Darin, Ken.
1844
1845         * khtml/editing/htmlediting.cpp:
1846         (khtml::EditCommandPtr::setEndingSelection):
1847         Fixed typo so that it calls setEndingSelection rather than setStartingSelection.
1848         Commented out this unused method, tho, since this is late in Tiger.  Proved unused by successful build after temporarily removing method declaration or implemenation.
1849
1850 2005-03-16  Kevin Decker  <kdecker@apple.com>
1851
1852         Reviewed by mjs.
1853
1854         Fixed <rdar://problem/4046665> REGRESSION (403-405): mypage.apple.com login does not work (hits assertion in Development build)
1855
1856         * kwq/WebCoreBridge.mm:
1857         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]): Check always came back false when callers would send a nil NSURL to this method. Now we allow the empty url cases, eg., <frame src="">
1858
1859 2005-03-16  Darin Adler  <darin@apple.com>
1860
1861         Reviewed by Maciej.
1862
1863         - fixed <rdar://problem/4045203> REGRESSION (125-188): Redundant JS imports crash Safari
1864
1865         * khtml/html/htmltokenizer.h: Take inWRite bool out of NDEBUG ifdef.
1866         * khtml/html/htmltokenizer.cpp:
1867         (khtml::HTMLTokenizer::HTMLTokenizer): Take inWrite bool management code out of NDEBUG ifdef.
1868         (khtml::HTMLTokenizer::write): Ditto. Don't call end if inWrite is true, since it will be called
1869         when you return to the body of the outer write() call.
1870         (khtml::HTMLTokenizer::allDataProcessed): Don't call end() if inWrite is true for the same reason.
1871         (khtml::HTMLTokenizer::finish): Ditto.
1872
1873         * kwq/KWQWidget.mm: (QWidget::getOuterView): Removed bogus assertion that has been vexing us of late.
1874
1875 2005-03-16  David Harrison  <harrison@apple.com>
1876
1877         Reviewed by me (written by Patti Yeh).
1878
1879         * kwq/KWQAccObject.mm:
1880         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
1881         Use LeftWordIfOnBoundary instead of RightWordIfOnBoundary.
1882
1883         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
1884         Use RightWordIfOnBoundary instead of LeftWordIfOnBoundary.
1885
1886 2005-03-16  David Harrison  <harrison@apple.com>
1887
1888         Reviewed by Maciej.
1889
1890         <rdar://problem/4054590> AX: Dictionary panel does not work when page is scrolled on Safari
1891
1892         * kwq/KWQAccObject.mm:
1893         (-[KWQAccObject doAXTextMarkerForPosition:]):
1894         Add in the view's contentsX and contentsY to the point.
1895
1896 2005-03-16  David Harrison  <harrison@apple.com>
1897
1898         Reviewed by Maciej.
1899
1900         <rdar://problem/4048506> Deleting from beginning of editable div deletes other document elements
1901         
1902         Also changed WebKit.
1903         
1904         * khtml/editing/visible_units.h:
1905         * khtml/editing/visible_units.cpp:
1906         (khtml::startOfEditableContent):
1907         (khtml::endOfEditableContent):
1908         (khtml::inSameEditableContent):
1909         (khtml::isStartOfEditableContent):
1910         (khtml::isEndOfEditableContent):
1911         New.
1912         
1913         * kwq/WebCoreBridge.h:
1914         * kwq/WebCoreBridge.mm:
1915         (-[WebCoreBridge canDeleteRange:]):
1916         New.
1917
1918 2005-03-16  Ken Kocienda  <kocienda@apple.com>
1919
1920         Reviewed by Darin
1921
1922         Fix for this bug:
1923         
1924         <rdar://problem/4042935> undo doesn't work properly during inline input
1925
1926         * kwq/WebCoreBridge.h: Declare new method below.
1927         * kwq/WebCoreBridge.mm:
1928         (-[WebCoreBridge replaceMarkedTextWithText:]): New method. Wraps calls to TypingCommand::deleteKeyPressed and
1929         TypingCommand::insertText to map the way that international text input works onto the typing undo system.
1930
1931 2005-03-16  David Harrison  <harrison@apple.com>
1932
1933         Reviewed by Darin.
1934
1935         <rdar://problem/4044336> REGRESSION (8A398-8A409): Option-Delete also deletes space to left of deleted word
1936
1937         * khtml/editing/htmlediting.cpp:
1938         (khtml::DeleteSelectionCommand::initializePositionData):
1939         - skip smart delete if the selection to delete already starts or ends with whitespace
1940         
1941         * khtml/khtml_part.cpp:
1942         (KHTMLPart::handleMousePressEventDoubleClick):
1943         - preserve selection on double-click when range is already selected
1944         
1945         * khtml/xml/dom_position.cpp:
1946         (DOM::Position::leadingWhitespacePosition):
1947         (DOM::Position::trailingWhitespacePosition):
1948         - fix considerNonCollapsibleWhitespace action (logic was reversed)
1949         - add non-breaking space to the non-collapsable ones
1950         
1951         * kwq/WebCoreBridge.mm:
1952         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
1953         (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:]):
1954         - these methods do not set the selection, so remove calls to setSelectionGranularity
1955           
1956         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]):
1957         (-[WebCoreBridge alterCurrentSelection:verticalDistance:]):
1958         - set the granularity back to character
1959         - the one exception is that we need to keep word granularity
1960           to preserve smart delete behavior when extending by word
1961
1962 2005-03-15  Maciej Stachowiak  <mjs@apple.com>
1963
1964         Reviewed by John.
1965
1966         <rdar://problem/4053266> Pressing return a few times right after a link makes the new blank lines part of the link
1967         
1968         * khtml/editing/htmlediting.cpp:
1969         (khtml::InsertLineBreakCommand::doApply): Use
1970         positionOutsideContainingSpecialElement in the right two places.
1971         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
1972
1973         - move all these helper functions higher in the file
1974         
1975         * khtml/editing/htmlediting.cpp:
1976         (khtml::isSpecialElement):
1977         (khtml::isFirstVisiblePositionInSpecialElement):
1978         (khtml::positionBeforeNode):
1979         (khtml::positionBeforeContainingSpecialElement):
1980         (khtml::maxRangeOffset):
1981         (khtml::isLastVisiblePositionInSpecialElement):
1982         (khtml::positionAfterNode):
1983         (khtml::positionAfterContainingSpecialElement):
1984         (khtml::positionOutsideContainingSpecialElement):
1985
1986 2005-03-14  Maciej Stachowiak  <mjs@apple.com>
1987
1988         Reviewed by Ken.
1989
1990         <rdar://problem/4049925> Pasting right after a link makes pasted content part of the link (without visible style change)
1991         
1992         * khtml/editing/htmlediting.cpp:
1993         (khtml::positionOutsideContainingSpecialElement): made a helper
1994         function that computes a position outside the outermost containing
1995         special element if the passed in position is right at the start or
1996         end of it
1997         (khtml::InsertTextCommand::prepareForTextInsertion): use new helper here
1998         (khtml::ReplaceSelectionCommand::doApply): use it here too: this is the fix
1999         (khtml::positionBeforeNode): made static
2000         (khtml::positionBeforeContainingSpecialElement): made static
2001         (khtml::positionAfterNode): made static
2002         (khtml::positionAfterContainingSpecialElement): made static
2003
2004 2005-03-15  Richard Williamson   <rjw@apple.com>
2005
2006         Fixed <rdar://problem/4053658> Crash getting direction at maps.google.com
2007
2008         Add non nil style() check.
2009
2010         Reviewed by Dave Harrison.
2011
2012         * khtml/rendering/render_table.cpp:
2013         (RenderTableCell::collapsedRightBorder):
2014
2015 2005-03-15  Kevin Decker  <kdecker@apple.com>
2016
2017         Reviewed by John
2018         
2019         Fixed: <rdar://problem/4041374> REGRESSION (185-186): unload handlers (at least those added with addEventListener) are broken
2020
2021         The reason why UNLOAD_EVENT wouldn't dispatch was because the code would delete all event listeners at the detach() phase which is prior to closeURL(). 
2022
2023         This fixes a recent regression from:
2024
2025  <rdar://problem/3977973> pages on ebay leak referenced JavaScript objects -- over time browsing becomes super-slow
2026
2027         * khtml/khtml_part.cpp:
2028         (KHTMLPart::closeURL): After dispatching event handlers, go ahead and remove them from the DOM. 
2029         * khtml/xml/dom_docimpl.cpp:
2030         (DocumentImpl::detach): Took out the call to removeAllEventListenersFromAllNodes(). If we remove all event listeners here then when KHTMLPart::closeURL() checks for even listeners, it will never have any because they'll already be gone. 
2031
2032 2005-03-15  Ken Kocienda  <kocienda@apple.com>
2033
2034         Reviewed by Vicki
2035
2036         Fox for this bug:
2037         
2038         <rdar://problem/4052642> Each delete keystroke is in its own undo group; not included in undo group with other typing
2039
2040         Calling -[WebCore setSelectedDOMRange:range affinity:] had the result of "closing" any active set of typing
2041         keystrokes grouped together in a single undo operation. A change on 27 Jan in WebKit to change the way delete
2042         keystrokes are handled made this feature regress. Previous to that change, the backwards delete
2043         key went through separate code that is no longer in the tree that did not set the selection in the way
2044         it is done now.
2045         
2046         The solution is to add an extra argument to the set-selection call. The WebCoreBridge now offers this method:
2047         -[WebCore setSelectedDOMRange:range affinity:closeTyping:]. Now, callers must indicate whether setting the 
2048         selection will act to close typing or not.
2049
2050         * kwq/WebCoreBridge.h: Changed header accordingly to change method shown below.
2051         * kwq/WebCoreBridge.mm:
2052         (-[WebCoreBridge setSelectedDOMRange:affinity:closeTyping:]): Added closeTyping argument to this method.
2053
2054 2005-03-15  John Sullivan  <sullivan@apple.com>
2055
2056         Reviewed by Vicki.
2057         
2058         - fixed <rdar://problem/4052246> crash in KWQKHTMLPart::createPart() trying to display local file in frame
2059
2060         * kwq/KWQKHTMLPart.mm:
2061         (KWQKHTMLPart::createPart):
2062         Check part for nil before trying to ref. This was probably a longstanding code flaw revealed by
2063         the recent security fix.
2064
2065 2005-03-15  Kevin Decker  <kdecker@apple.com>
2066
2067         Reviewed by Ken and Maciej.
2068
2069         New fix for <rdar://problem/3667701> crash in KHTMLPart::jScriptEnabled()
2070         
2071         The tokenizer has buffers which mean parsing can continue even after loading is supposed to be stopped. If the loading process was aborted, the tokenizer should abort, too.
2072
2073         * khtml/html/htmltokenizer.cpp:
2074         (khtml::HTMLTokenizer::HTMLTokenizer): Initialize loadStopped to false.
2075         (khtml::HTMLTokenizer::write): Go ahead and bail out if loadStopped is true. 
2076         (khtml::HTMLTokenizer::processToken):
2077         * khtml/html/htmltokenizer.h: Added loadStopped flag. Changed the view pointer from a standard pointer to a QGuardedPtr.  This fixes the crash.  Now the tokenizer's handle to the view will now automatically nil-out and never dangle.
2078         * khtml/khtml_part.cpp:
2079         (KHTMLPart::closeURL): Notify the tokenizer to stop parsing. 
2080         * khtml/xml/xml_tokenizer.cpp:
2081         (khtml::XMLTokenizer::XMLTokenizer): Initialize loadStopped to false.
2082         * khtml/xml/xml_tokenizer.h:
2083         (khtml::Tokenizer::stopParsing): Added. 
2084
2085 2005-03-14  David Harrison  <harrison@apple.com>
2086
2087         Reviewed by Darin, Maciej.
2088
2089         <rdar://problem/4046103> REGRESSION (Mail): clicking after style change sets insertion point incorrectly
2090         
2091         Also fixes crash by adding nil check.
2092
2093         * khtml/editing/htmlediting.cpp:
2094         (khtml::MoveSelectionCommand::doApply):
2095         Check the node for nil.
2096         
2097         * khtml/khtml_part.cpp:
2098         (KHTMLPart::khtmlMouseReleaseEvent):
2099         Use the node from the event rather than from the selection.
2100
2101 2005-03-14  Darin Adler  <darin@apple.com>
2102
2103         Reviewed by Harrison.
2104
2105         - fixed <rdar://problem/4049776> Seed: Mail: Disable spellcheck leaves red artifacts
2106
2107         * khtml/xml/dom_docimpl.cpp:
2108         (DocumentImpl::DocumentImpl): Set markers list to be "auto-delete" so they don't all leak.
2109         (DocumentImpl::removeMarker): Remove markers list for a node when the last marker is removed
2110         for that node. Otherwise, we can have empty marker lists for each node forever until the
2111         document goes away.
2112         (DocumentImpl::removeAllMarkers): Added code to dirty the markers.
2113         (DocumentImpl::shiftMarkers): Remove unneeded empty check.
2114
2115         * kwq/WebCoreBridge.h: Added unmarkAllMisspellings for WebKit.
2116         * kwq/WebCoreBridge.mm: (-[WebCoreBridge unmarkAllMisspellings]): Added. Calls removeAllMarkers.
2117
2118 2005-03-14  Richard Williamson   <rjw@apple.com>
2119
2120         Fixed <rdar://problem/4027928> Tiger_8A394:Acrobat crashes while tried to remove the subscription errors by clicking on "Would you like to remove the subscription" from Tracker details view pane
2121
2122         A document may be deleted as a consequence of handling an event,
2123         as was the case with Acrobat.app.  Ensure that the document is still valid
2124         before passing the event on for further handling.
2125
2126         * khtml/xml/dom_nodeimpl.cpp:
2127         (NodeImpl::dispatchUIEvent):
2128
2129 2005-03-14  Ken Kocienda  <kocienda@apple.com>
2130
2131         Reviewed by me
2132
2133         Added a couple of comments about setChanged() to this code based on my experiences with 4047028.
2134
2135         * khtml/css/css_valueimpl.cpp:
2136         (DOM::CSSMutableStyleDeclarationImpl::addParsedProperties)
2137         (DOM::CSSMutableStyleDeclarationImpl::merge)
2138
2139 2005-03-14  Ken Kocienda  <kocienda@apple.com>
2140
2141         Reviewed by John
2142
2143         Fix for this bug:
2144         
2145         <rdar://problem/4047028> Changing quote levels on stylized text causes it to be sent as colored (Blue). Tiger8A410
2146
2147         * khtml/css/css_valueimpl.cpp:
2148         (DOM::CSSMutableStyleDeclarationImpl::removePropertiesInSet): This function now calls setChanged() at the 
2149         end of its loop if any properties were removed. This makes the style system update correctly in response
2150         to changes made by this function. The code to paste removes style from the pasted content in a 
2151         preliminary step, and the fact that the style system did not update properly left unwanted color
2152         declarations in the document.
2153
2154 2005-03-14  Vicki Murley  <vicki@apple.com>
2155
2156         - roll out this change for now, since it was denied by CCC
2157
2158     2005-03-11  David Harrison  <harrison@apple.com>
2159         
2160         Reviewed by Darin.
2161         
2162         <rdar://problem/4046602> WebCore invokes undefined behavior when the spell checker isn't running
2163
2164         * kwq/KWQKHTMLPart.mm:
2165         (KWQKHTMLPart::advanceToNextMisspelling):
2166         (KWQKHTMLPart::markMisspellings):
2167         Nil check checker.
2168
2169 2005-03-14  Ken Kocienda  <kocienda@apple.com>
2170
2171         Reviewed by John
2172
2173         Fix for this bug:
2174         
2175         <rdar://problem/4050403> Mail crashes after pasting and deleting the content of one Excel cell
2176
2177         * khtml/editing/htmlediting.cpp:
2178         (khtml::DeleteSelectionCommand::handleGeneralDelete): Add some null checks to the code. This fixes the crash, although
2179         following the steps described in the bug by John Sullivan on 3/14/05 at 10:49 AM will leave us with a "blank line" in 
2180         the document that cannot be removed (this is actually an empty table). This is undesirable, however, work Maciej is
2181         doing to fix the general-case problem of trying to edit constructs we do not handle well in editing should fix this
2182         particular case, making the deletion of this "blank line" possible. Maciej is doing this work as part of this bug:
2183         <rdar://problem/4036051> Hard to select (and thus delete) an IFRAME in an editable WebView
2184
2185 2005-03-14  Ken Kocienda  <kocienda@apple.com>
2186
2187         Reviewed by Darin
2188
2189         Fix for this bug:
2190         
2191         <rdar://problem/4029632> Mail crashes in DOM::NodeImpl::isBlockFlow() after pasting text with alignment style and BR element from Safari
2192         
2193         The problem is that removeInlineStyle() can remove nodes, and if either the start or end node of the
2194         selection at the time of the call to removeInlineStyle() was in a node that got removed, bad things
2195         would happen. The fix is described below.
2196
2197         * khtml/editing/htmlediting.cpp:
2198         (khtml::maxRangeOffset): Moved this static function to a different place in the file so the code below can use it.
2199         (khtml::ApplyStyleCommand::applyInlineStyle): Calling removeInlineStyle() now has the side effect of 
2200         setting the command's ending selection. Now resets start and end using the ending selection after the call to
2201         removeInlineStyle() as it is done elsewhere in this function.
2202         (khtml::ApplyStyleCommand::removeInlineStyle): Track the removal of the start or end node based on
2203         the positions passed in. If either the start or the end node is removed as part of style removal, 
2204         set an appropriate replacement start or end that is still in the document.
2205
2206 === Safari-406 ===
2207
2208 2005-03-14  Ken Kocienda  <kocienda@apple.com>
2209
2210         Reviewed by Darin
2211
2212         I need to roll out Kevin's change to fix 3667701. It breaks contextual fragments, and hence breaks
2213         paste in editing (among other things).
2214
2215         * khtml/html/htmltokenizer.cpp: Roll out recent change.
2216         (khtml::HTMLTokenizer::write) 
2217         * khtml/html/htmltokenizer.h: Ditto.
2218
2219 2005-03-13  Darin Adler  <darin@apple.com>
2220
2221         Reviewed by Ken and Maciej.
2222
2223         - fixed <rdar://problem/4049040> REGRESSION (403-405): security check prevents user stylesheet from loading (Dictionary.app doesn't work at all!)
2224
2225         * kwq/WebCoreBridge.mm: (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]): Changed to give "applewebdata:"
2226         documents the same privileges to open local files that "file:" documents have.
2227
2228 2005-03-13  Kevin Decker  <kdecker@apple.com>
2229
2230         Reviewed by mjs.
2231         
2232         Fixed: <rdar://problem/3667701> crash in KHTMLPart::jScriptEnabled()
2233         
2234         The problem here was that the tokenizer would continue to receive chunks of data from the loader already
2235         after the view and part had been destroyed.  Situations like this could arise when clicking on another link 
2236         while still loading the current view, or during self test where we rapidly open, load, and close browser
2237         windows very fast. 
2238
2239         * khtml/html/htmltokenizer.cpp: 
2240         (khtml::HTMLTokenizer::write): Simple nil check against the view. 
2241         * khtml/html/htmltokenizer.h: Changed the view pointer from a standard pointer to a QGuardedPtr.  The tokenizer's
2242         handle to the view will now automatically nil-out and never dangle.
2243
2244 2005-03-13  Darin Adler  <darin@apple.com>
2245
2246         Reviewed by John and Ken.
2247
2248         - fixed <rdar://problem/4044347> REGRESSION (Mail): Control-K in particular message moves insertion point to previous line
2249
2250         Tweaked the deleting code, and added three new deleting layout tests to confirm the new code works.
2251
2252         * khtml/editing/htmlediting.cpp:
2253         (khtml::DeleteSelectionCommand::handleSpecialCaseBRDelete): Removed special case with comment that said it was
2254         for the case where a "selection contains only a BR right after a block ended". This code was being triggered in
2255         more cases than just that one, and in all the cases I tested, the general delete code works fine.
2256         (khtml::DeleteSelectionCommand::handleGeneralDelete): Changed the code that decides whether to delete an entire
2257         block to understand the case where the end block is outside the start block, but contains the start block.
2258         In that case, we want to delete the entire block. Not deleting the block was causing us to delete just the <br>,
2259         and not the enclosing <div> in the case in the bug.
2260
2261         * layout-tests/editing/deleting/delete-line-015-expected.txt: Added.
2262         * layout-tests/editing/deleting/delete-line-015.html: Added.
2263         * layout-tests/editing/deleting/delete-line-016-expected.txt: Added.
2264         * layout-tests/editing/deleting/delete-line-016.html: Added.
2265         * layout-tests/editing/deleting/delete-line-017-expected.txt: Added.
2266         * layout-tests/editing/deleting/delete-line-017.html: Added.
2267         * layout-tests/editing/style/smoosh-styles-002-expected.txt: Updated to improved results. With the code change, the deletion
2268         now deletes more than it used to. The old results had an empty text node and <h1> element that were both 0-sized, and now
2269         we delete both of those.
2270
2271 2005-03-13  Darin Adler  <darin@apple.com>
2272
2273         - fixed <rdar://problem/4049172> REGRESSION (403-405): Gmail: text box in "Invite a friend" section overlaps other sections
2274
2275         Rolled out fix for <rdar://problem/3952698> Function buttons do not display properly with Telia Webmail
2276
2277         * khtml/rendering/render_replaced.cpp: (RenderReplaced::calcMinMaxWidth): Back to previous version of this file.
2278
2279 2005-03-12  Maciej Stachowiak  <mjs@apple.com>
2280
2281         Reviewed by Adele.
2282
2283         <rdar://problem/4046144> RSS pages leave a hole in local file security policy (need to revert feed: exemption)
2284         
2285         * kwq/WebCoreBridge.mm:
2286         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]): Revert
2287         emergency workaround for Safari RSS, now that a new Syndication
2288         has been submitted.
2289
2290 2005-03-11  Maciej Stachowiak  <mjs@apple.com>
2291
2292         Reviewed by Kevin.
2293
2294         <rdar://problem/4026787> text typed after a link (pasted or Mail Link to this Page) is part of the link, underlined and colored blue
2295         
2296         The concept of this change is every time you type at the very
2297         start or very end of a link (even if nested in further inner
2298         elements), the typed text goes outside the link instead of inside.
2299         
2300         * khtml/editing/htmlediting.cpp:
2301         (khtml::InsertTextCommand::prepareForTextInsertion): Check whether
2302         we are at the first visible position or last visible position of a
2303         special element. For now this only includes HTML A elements that
2304         are links (i.e. they have an href).
2305         (khtml::isSpecialElement): Helper function that identifies special
2306         elements (for now only links).
2307         (khtml::isFirstVisiblePositionInSpecialElement): Checks if a given DOM
2308         position is equivalent to the first visible position in some containing 
2309         editable special element.
2310         (khtml::positionBeforeNode): Returns the DOM position immediately
2311         before a node.
2312         (khtml::positionBeforeContainingSpecialElement): Gives a DOM
2313         position immediately before the outermost editable containing
2314         special element where the passed-in position is equivalent to the
2315         first visible position.
2316         (khtml::maxRangeOffset): Helper to get the maximum allowed
2317         range/position offset for a node, does the right thing based on
2318         whether the node would use a character offset or child offset.
2319         (khtml::isLastVisiblePositionInSpecialElement): Similar to above,
2320         but for end of node instead of start.
2321         (khtml::positionAfterNode): Ditto.
2322         (khtml::positionAfterContainingSpecialElement): Ditto.
2323
2324         Some layout tests changed - I looked over all the diffs and found
2325         that the only changes were "junk nodes" like empty spans and text
2326         nodes moving from one spot in the tree to another. These changes
2327         are all harmless and do not affect layout or future editing.
2328
2329         * layout-tests/editing/inserting/typing-003-expected.txt:
2330         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt:
2331         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt:
2332         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt:
2333         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt:
2334         * layout-tests/editing/style/remove-underline-expected.txt:
2335         * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt:
2336         * layout-tests/editing/style/remove-underline-in-bold-expected.txt:
2337         * layout-tests/editing/style/typing-style-003-expected.txt:
2338         * layout-tests/editing/style/unbold-in-bold-expected.txt:
2339         * layout-tests/editing/style/underline-expected.txt:
2340
2341 2005-03-11  Adele Amchan  <adele@apple.com>
2342
2343         backing out fix for <rdar://problem/4021711> REGRESSION (125-188): blank pages when browsing forum at cooperativeresearch.org - cached external script problem
2344
2345         This caused the following regressions (that we know of): 
2346         <rdar://problem/4047445> REGRESSION (Safari-400-403?): Some or all page contents sometimes don't appear (macworld.com)
2347         <rdar://problem/4046153> 8a409: Problem loading Citibank page in Safari 2 (403)
2348         <rdar://problem/4047801> REGRESSION (402-403): .Mac homepage links don't work
2349
2350         * khtml/html/htmltokenizer.cpp:
2351         (khtml::HTMLTokenizer::scriptHandler):
2352
2353 2005-03-11  David Harrison  <harrison@apple.com>
2354
2355         Reviewed by Darin.
2356
2357         <rdar://problem/4046602> WebCore invokes undefined behavior when the spell checker isn't running
2358
2359         * kwq/KWQKHTMLPart.mm:
2360         (KWQKHTMLPart::advanceToNextMisspelling):
2361         (KWQKHTMLPart::markMisspellings):
2362         Nil check checker.
2363
2364 2005-03-11  Ken Kocienda  <kocienda@apple.com>
2365
2366         Reviewed by me
2367
2368         * ForwardingHeaders/editing/visible_units.h: Added.
2369
2370 2005-03-11  Ken Kocienda  <kocienda@apple.com>
2371
2372         Reviewed by John
2373
2374         Fix for this bug:
2375         
2376         <rdar://problem/4045521> Hitting return key with full line selected does not add blank line as it should
2377
2378         * khtml/editing/htmlediting.cpp:
2379         (khtml::InsertParagraphSeparatorCommand::doApply): Removed some "special-case" code from this 
2380         function that would look for a selection that started and ended in a different block, and would
2381         then bail right after the deletion of the selection without inserting a paragraph separator.
2382         This was just wrong. So, the code change is removal only. When the general-case code runs instead
2383         of the erroneous special-case code, the bug goes away.
2384         
2385         New tests:
2386         
2387         * layout-tests/editing/inserting/return-key-with-selection-001-expected.txt: Added.
2388         * layout-tests/editing/inserting/return-key-with-selection-001.html: Added.
2389         * layout-tests/editing/inserting/return-key-with-selection-002-expected.txt: Added.
2390         * layout-tests/editing/inserting/return-key-with-selection-002.html: Added.
2391         * layout-tests/editing/inserting/return-key-with-selection-003-expected.txt: Added.
2392         * layout-tests/editing/inserting/return-key-with-selection-003.html: Added.
2393
2394 2005-03-11  David Harrison  <harrison@apple.com>
2395
2396         Reviewed by Darin.
2397
2398         <rdar://problem/4009446> AX: kAXTextMarkerForPositionParameterizedAttribute not working correctly (required for Dictionary pop-up)
2399
2400         * kwq/KWQAccObject.mm:
2401         (-[KWQAccObject accessibilityAttributeValue:]):
2402         Comment changes.
2403         
2404         (-[KWQAccObject doAXTextMarkerForPosition:]):
2405         Dig into widgets.
2406         
2407         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
2408         Use the selection's document instead of the top document, to accommodate frames, etc.
2409         
2410         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
2411         Fixed parameter processing to look for NSValue instead of AXValue.
2412
2413 2005-03-11  Ken Kocienda  <kocienda@apple.com>
2414
2415         Reviewed by Harrison
2416
2417         Fix for this bug:
2418         
2419         <rdar://problem/3972665> 8A360: HTML message partially truncated on left hand side, text-indent from Script Editor
2420         
2421         This was fixed, then regressed with Harrison's fix for this bug:
2422         
2423         <rdar://problem/3948453> Can't type accented chars as first character in Stickies widget
2424
2425         * khtml/editing/htmlediting.cpp:
2426         (khtml::ReplaceSelectionCommand::doApply): My now addresses both problems in a way that they no longer
2427         clobber each other.
2428
2429 2005-03-10  Ken Kocienda  <kocienda@apple.com>
2430
2431         Reviewed by John
2432
2433         Fix for these bugs:
2434         
2435         <rdar://problem/4045511> Copying and pasting end-of-paragraph selection puts insertion point in wrong place
2436         <rdar://problem/4045513> Copying and pasting selection starting at end of paragraph can incorrectly remove line break
2437
2438         The copy/paste code before this patch had no notion of a "logical newline" at the start of the selection. We have
2439         had a similar notion for "logical newline" at the end of the selection for quite some time. To fix these bugs, we
2440         need to introduce the same idea for selection starts.
2441
2442         * khtml/editing/htmlediting.cpp:
2443         (khtml::ReplacementFragment::ReplacementFragment): Process the "logical newline" at start as we write it out
2444         in markup. Set the bit we added to this object to signify we have such a newline.
2445         (khtml::ReplaceSelectionCommand::doApply): Many, many changes to introduce the new "logical newline" at start concept.
2446         I also tried to simply the code that sets the start position for inserting content to be pasted. I also improved a
2447         weakness in the smart-paste code. Now, we check before and after the paste for whether we need to add a leading or
2448         trailing space. The code previous to this patch only did a "before" check, with the result that we sometimes added
2449         a second space. In other words, the code did not realize that DOM changes done by pasting could cause formerly
2450         unrendered whitespace to become rendered. Also moved line placeholder clean up code to its own function.
2451         (khtml::ReplaceSelectionCommand::removeLinePlaceholderIfNeeded): New helper that further refines the notion
2452         of when we can remove a line placeholder. The definition is now, "If a line placeholder is at the visible start
2453         and visible end of its line, keep it; otherwise remove it".
2454         * khtml/editing/htmlediting.h: Declare new functions. Rework inlines in ReplacementFragment class to account for
2455         addition of new "logical newline" at start concept.
2456         (khtml::ReplacementFragment::hasInterchangeNewlineAtStart): New accessor.
2457         (khtml::ReplacementFragment::hasInterchangeNewlineAtEnd): Renamed from hasInterchangeNewline(), since before we
2458         only had a bit for the end, hence we did not need to distinguish it from the start.
2459         * khtml/editing/markup.cpp:
2460         (khtml::createMarkup): Added code to detect and write out markup for cases where we have a "logical newline" at start.
2461         * khtml/xml/dom2_rangeimpl.cpp:
2462         (DOM::RangeImpl::startPosition): New helper.
2463         (DOM::RangeImpl::endPosition): Ditto.
2464         * khtml/xml/dom2_rangeimpl.h: Declare new helpers.
2465         
2466         New tests:
2467         * layout-tests/editing/pasteboard/paste-line-endings-001-expected.txt: Added.
2468         * layout-tests/editing/pasteboard/paste-line-endings-001.html: Added.
2469         * layout-tests/editing/pasteboard/paste-line-endings-002-expected.txt: Added.
2470         * layout-tests/editing/pasteboard/paste-line-endings-002.html: Added.
2471         * layout-tests/editing/pasteboard/paste-line-endings-003-expected.txt: Added.
2472         * layout-tests/editing/pasteboard/paste-line-endings-003.html: Added.
2473         * layout-tests/editing/pasteboard/paste-line-endings-004-expected.txt: Added.
2474         * layout-tests/editing/pasteboard/paste-line-endings-004.html: Added.
2475         * layout-tests/editing/pasteboard/paste-line-endings-005-expected.txt: Added.
2476         * layout-tests/editing/pasteboard/paste-line-endings-005.html: Added.
2477         * layout-tests/editing/pasteboard/paste-line-endings-006-expected.txt: Added.
2478         * layout-tests/editing/pasteboard/paste-line-endings-006.html: Added.
2479         * layout-tests/editing/pasteboard/paste-line-endings-007-expected.txt: Added.
2480         * layout-tests/editing/pasteboard/paste-line-endings-007.html: Added.
2481         * layout-tests/editing/pasteboard/paste-line-endings-008-expected.txt: Added.
2482         * layout-tests/editing/pasteboard/paste-line-endings-008.html: Added.
2483         * layout-tests/editing/pasteboard/paste-line-endings-009-expected.txt: Added.
2484         * layout-tests/editing/pasteboard/paste-line-endings-009.html: Added.
2485         * layout-tests/editing/pasteboard/paste-line-endings-010-expected.txt: Added.
2486         * layout-tests/editing/pasteboard/paste-line-endings-010.html: Added.
2487
2488 === Safari-405 ===
2489
2490 2005-03-10  Darin Adler  <darin@apple.com>
2491
2492         Reviewed by Richard.
2493
2494         - fixed <rdar://problem/4037700> Every character typed causes stat call for /usr/share/icu/icudt32b_char.brk
2495
2496         * khtml/rendering/render_text.cpp: (getCharacterBreakIterator): Set boolean "got iterator" to true.
2497
2498 2005-03-10  Darin Adler  <darin@apple.com>
2499
2500         Reviewed by Ken.
2501
2502         - fixed <rdar://problem/4042867> "Bigger" changes the font size of too much text when the selection is on a style-change boundary
2503
2504         * khtml/editing/htmlediting.cpp: (khtml::ApplyStyleCommand::applyRelativeFontStyleChange):
2505         Advance out of the starting text node if we're at the end of it.
2506
2507 2005-03-10  Darin Adler  <darin@apple.com>
2508
2509         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::write): Fixed assertion for nested calls to write.
2510
2511 2005-03-10  David Harrison  <harrison@apple.com>
2512
2513         Reviewed by Darin.
2514
2515         <rdar://problem/4032346> REGRESSION (Mail): changing 1st line of a URL that wraps to two lines doesn't always update 2nd line
2516
2517         * khtml/rendering/bidi.cpp:
2518         (khtml::RenderBlock::matchedEndLine):
2519         Look at first clean line in case line wrap implicitly dirtied it.
2520
2521 2005-03-10  Maciej Stachowiak  <mjs@apple.com>
2522
2523         Reviewed by Vicki.
2524
2525         <rdar://problem/4046018> REGRESSION (TOT): RSS pages don't display anything
2526         
2527         * kwq/WebCoreBridge.mm:
2528         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]): Exempt
2529         feed: and feeds: pages from the local file security check.
2530
2531 2005-03-10  Darin Adler  <darin@apple.com>
2532
2533         Change written by Steve Peters, reviewed by me.
2534
2535         - fixed <rdar://problem/4045924> improve compareBoundaryPoints to make style changes faster
2536
2537         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::compareBoundaryPoints):
2538         Do early outs in a couple of the loops to make things faster.
2539
2540 2005-03-10  Jens Alfke  <jens@apple.com>
2541
2542         Reviewed by rjw.
2543
2544         Fixes <rdar://problem/4040848> "REGR: Sun security-check demo applet does not load". My earlier fix for 3603191 deferred loading the applet until the </applet> tag is reached, so all <param>s will be available. Unfortunately that meant that if the </applet> tag was missing, the applet would never load at all. So instead, the loading needs to happen when the ID_APPLET tag is popped from the parser stack for any reason.
2545
2546         I've restored the old NodeImpl::closeRenderer() method. Except it's now virtual, with a no-op base implementation, and is overridden by HTMLAppletElementImpl, replacing its setAllParamsAvailable method that I added a few weeks ago when fixing 3603191.
2547
2548         This ensures that the applet will get loaded even if there is no explicit </applet> tag.
2549
2550         The changes to htmlparser.cpp back out my earlier change and restore the lines that were deleted on 8/3/04 when the old closeRenderer was removed.
2551
2552         * khtml/html/html_objectimpl.cpp:
2553         (HTMLAppletElementImpl::closeRenderer):
2554         * khtml/html/html_objectimpl.h:
2555         * khtml/html/htmlparser.cpp:
2556         (KHTMLParser::insertNode):
2557         (KHTMLParser::processCloseTag):
2558         (KHTMLParser::popOneBlock):
2559         * khtml/xml/dom_nodeimpl.h:
2560         (DOM::NodeImpl::closeRenderer):
2561
2562 2005-03-10  Ken Kocienda  <kocienda@apple.com>
2563
2564         Reviewed by John
2565
2566         Fix for this bug:
2567         
2568         <rdar://problem/4024929> REGRESSION (Mail): Pasting text with multiple reply levels removes one level instead of all
2569         
2570         The code to figure out which node to use to merge into an existing line did not drill into the first inline element
2571         as needed to make the feature work as user expect. Instead, it looked at the first node, and if it was a block, it
2572         skipped that node. This worked for some cases (including the important "paste-as-quotation" case) but obviously 
2573         doesn't work for content quoted more than once.
2574         
2575         Now, mergeStartNode() will look for the first node in pasted content that is not a block. It will now also look
2576         for nodes specially marked by Mail as a node added to make "Paste As Quotation" work. It won't skip those. 
2577         
2578         NOTE: This change will break Mail's "Paste As Quotation" feature for TOT WebKit users, but this is only a temporary 
2579         problem that will exist until we sync up with Mail's pending change to mark nodes as needed in its pasteAsQuotation:
2580         method.
2581         
2582         * khtml/editing/html_interchange.h: Add ApplePasteAsQuotation constant used to check for "marked" blockquotes.
2583         * khtml/editing/htmlediting.cpp:
2584         (khtml::ReplacementFragment::mergeStartNode): Look for first node that is either not a block or is marked as
2585         an ApplePasteAsQuotation node.
2586         (khtml::isMailPasteAsQuotationNode): New helper that looks for nodes marked with ApplePasteAsQuotation.
2587         * khtml/editing/htmlediting.h: Updated header for new function.
2588         
2589         This test result changed is an acceptable way.
2590         
2591         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
2592         * layout-tests/editing/pasteboard/paste-text-013.html
2593
2594         NOTE: This change causes a regression in this layout test:
2595
2596         * layout-tests/editing/pasteboard/paste-text-013.html
2597
2598         This problem will need to be fixed separately, and this bug has been filed to track this problem:
2599         <rdar://problem/4045513> Copying and pasting selection starting at end of paragraph can incorrectly remove line break
2600
2601 2005-03-09  Maciej Stachowiak  <mjs@apple.com>
2602
2603         Reviewed by Richard.
2604
2605         <rdar://problem/4040776> Dashboard (Weather widget) is a memory hog
2606         
2607         Change things around so the event listeners for XMLHttpRequest
2608         mark their JS listener objects instead of holding a hard
2609         reference, to avoid an unbreakable reference cycle.
2610
2611         * khtml/ecma/kjs_events.cpp:
2612         (JSAbstractEventListener::JSAbstractEventListener):
2613         (JSAbstractEventListener::~JSAbstractEventListener):
2614         (JSAbstractEventListener::handleEvent):
2615         (JSAbstractEventListener::eventListenerType):
2616         (JSUnprotectedEventListener::JSUnprotectedEventListener):
2617         (JSUnprotectedEventListener::~JSUnprotectedEventListener):
2618         (JSUnprotectedEventListener::listenerObj):
2619         (JSUnprotectedEventListener::windowObj):
2620         (JSUnprotectedEventListener::mark):
2621         (JSEventListener::JSEventListener):
2622         (JSEventListener::~JSEventListener):
2623         (JSEventListener::listenerObj):
2624         (JSEventListener::windowObj):
2625         (JSLazyEventListener::JSLazyEventListener):
2626         * khtml/ecma/kjs_events.h:
2627         * khtml/ecma/kjs_html.h:
2628         * khtml/ecma/kjs_window.cpp:
2629         (Window::getJSEventListener):
2630         (Window::getJSUnprotectedEventListener):
2631         * khtml/ecma/kjs_window.h:
2632         * khtml/ecma/xmlhttprequest.cpp:
2633         (KJS::XMLHttpRequest::putValue):
2634         (KJS::XMLHttpRequest::mark):
2635         * khtml/ecma/xmlhttprequest.h:
2636         * khtml/khtml_part.h:
2637
2638 2005-03-06  Maciej Stachowiak  <mjs@apple.com>
2639
2640         Reviewed by Darin.
2641
2642         <rdar://problem/4005575> Arbitrary file disclosure vulnerability due to ability to load local html from remote content
2643         
2644         * khtml/ecma/kjs_html.cpp:
2645         (KJS::HTMLDocument::putValue):
2646         * khtml/ecma/kjs_window.cpp:
2647         (Window::put):
2648         (WindowFunc::tryCall):
2649         (Location::put):
2650         (LocationFunc::tryCall):
2651         * khtml/khtml_part.cpp:
2652         (KHTMLPart::begin):
2653         (KHTMLPart::scheduleLocationChange):
2654         (KHTMLPart::slotRedirect):
2655         (KHTMLPart::processObjectRequest):
2656         * khtml/khtml_part.h:
2657         * khtml/khtmlpart_p.h:
2658         * kwq/KWQKHTMLPart.mm:
2659         (KWQKHTMLPart::openURLRequest):
2660         (KWQKHTMLPart::urlSelected):
2661         (KWQKHTMLPart::createPart):
2662         * kwq/KWQKHTMLPartBrowserExtension.mm:
2663         (KHTMLPartBrowserExtension::createNewWindow):
2664         * kwq/WebCoreBridge.h:
2665         * kwq/WebCoreBridge.mm:
2666         (hasCaseInsensitivePrefix):
2667         (-[WebCoreBridge didNotOpenURL:pageCache:]):
2668         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]):
2669
2670 2005-03-09  Richard Williamson   <rjw@apple.com>
2671
2672         Fixed <rdar://problem/4032938> Safari: text layout for MS P Gothic font is corrupted
2673
2674         Remove our hacked special case now we have our own cache of
2675         which fonts are fixed  pitch.
2676
2677         Reviewed by Maciej.
2678
2679         * kwq/KWQFont.mm:
2680         (QFont::isFixedPitch):
2681
2682 2005-03-09  David Harrison  <harrison@apple.com>
2683
2684         Reviewed by Maciej.
2685
2686         <rdar://problem/4037141> REGRESSION (Mail): Pasting deletes preceding blank lines with certain steps
2687
2688         * khtml/editing/htmlediting.cpp:
2689         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
2690         Add check for anonymous text after blocks.
2691
2692 2005-03-08  Ken Kocienda  <kocienda@apple.com>
2693
2694         Reviewed by John
2695
2696         Fix for these bugs:
2697         
2698         <rdar://problem/4039661> crash in ApplyStyleCommand::applyBlockStyle pasting contents of webpage into Mail or Blot
2699         <rdar://problem/4039672> hang in moveParagraphContentsToNewBlockIfNecessary after pasting contents of webpage into Blot
2700
2701         * khtml/editing/htmlediting.cpp:
2702         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Fix for 4039672. Iteration needs to do
2703         a traverseNextSibling(), not a traverseNextNode(). The latter might iterate into a child that already got moved, and
2704         the code can infinite loop as a result.
2705         (khtml::ApplyStyleCommand::applyBlockStyle): Fix for 4039661. This function iterates over a set of nodes to apply
2706         block styles. Before, the iteration would go from the start to the end of the selection, and apply block styles
2707         as it went. However, the act of applying style could confuse the iteration. Now I iterate and store the relevant
2708         nodes in QPtrList before doing any style manipulation, and then iterate that set of nodes.
2709
2710 2005-03-08  Darin Adler  <darin@apple.com>
2711
2712         Change written by Hyatt, reviewed by me.
2713
2714         - fixed <rdar://problem/3952698> Function buttons do not display properly with Telia Webmail
2715
2716         * khtml/rendering/render_replaced.cpp: (RenderReplaced::calcMinMaxWidth):
2717         Only use a minWidth of 0 for images with a percentage value. Other replaced elements aren't scalable
2718         so their minWidth should be their calculated width. This has been wrong all along, but it's a relatively
2719         safe change because it only affects replaced elements' min-width.
2720
2721 2005-03-08  David Harrison  <harrison@apple.com>
2722
2723         Reviewed by Ken.
2724
2725         <rdar://problem/4039006> REGRESSION (Mail): Command-left-arrow goes to the start of the wrong line in particular message
2726
2727         * khtml/editing/visible_units.cpp:
2728         (khtml::startOfLine):
2729         Use firstLeafChild() instead of firstChild().
2730
2731 2005-03-08  Richard Williamson   <rjw@apple.com>
2732
2733         Fixed by Tom Madden.
2734
2735         Fixed <rdar://problem/4038586> 8A402: Osaka-Mono text overlaps when typing with input method
2736
2737         We weren't clearing the "all ascii" flag when setting text on
2738         RenderText.
2739
2740         Reviewed by Richard Williamson.
2741
2742         * khtml/rendering/render_text.cpp:
2743         (RenderText::setText):
2744
2745 2005-03-08  Darin Adler  <darin@apple.com>
2746
2747         Reviewed by Ken and Maciej.
2748
2749         - fixed <rdar://problem/3988809> REGRESSION (Mail): wide space characters are turned into plain old spaces when typed or pasted
2750
2751         Changed the few places where it matters to use a "collapsible whitespace" concept instead of
2752         the general whitespace concept. This means treating only ' ' and '\n' specially instead of
2753         including other space characters, which matches what the space-collapsing logic does in RenderText,
2754         although it really needs to behave differently based on whitespace mode.
2755
2756         * khtml/editing/visible_text.h: (khtml::isCollapsibleWhitespace): Added. This returns true only for
2757         ' ' and '\n' since they are the only characters collapsed once text is in the DOM. But really it
2758         can't do the job ignoring white-space mode, so some day it must go.
2759
2760         * khtml/editing/html_interchange.cpp: (convertHTMLTextToInterchangeFormat): Changed to use
2761         isCollapsibleWhitespace and removed unnecessary calls to latin1().
2762
2763         * khtml/editing/htmlediting.cpp:
2764         (khtml::isNBSP): Removed unnecessary creation/destruction of QChar each time this is called.
2765         (khtml::nextCharacterIsCollapsibleWhitespace): Renamed from isWS and changed to use isCollapsibleWhitespace.
2766         (khtml::DeleteSelectionCommand::fixupWhitespace): Use isCollapsibleWhitespace instead of isWS,
2767         since we only want to do our NBSP tricks for collapsible whitespace.
2768         (khtml::InsertTextCommand::input): Changed use of isTab to instead say == "\t" since that does the
2769         same thing and is arguably just as clear. Changed use of isWS to == " " since the input text can't
2770         include any "\n" characters, and really a plain old space is the only collapsible thing that can
2771         be passed in. Use isCollapsibleWhitespace instead of isWS since we want to do NBSP tricks only for
2772         collapsible whitespace, not all whitespace.
2773         (khtml::InsertTextCommand::insertSpace): Use isCollapsibleWhitespace instead of isWS since we want
2774         to do NBSP tricks only for collapsible whitespace, not all whitespace.
2775         (khtml::RebalanceWhitespaceCommand::doApply): Ditto.
2776
2777         * khtml/xml/dom_position.h: Changed treatNBSPAsWhiteSpace parameters to considerNonCollapsibleWhitespace
2778         parameters. The most common callers are only interested in collapsible whitespace, and the smart copy
2779         and paste callers want to include all whitespace, including non-breaking spaces and all the Unicode spaces.
2780         * khtml/xml/dom_position.cpp:
2781         (DOM::Position::leadingWhitespacePosition): Rename the parameter, and use either QChar::isSpace or
2782         isCollapsibleWhitespace depending on the boolean passed in.
2783         (DOM::Position::trailingWhitespacePosition): Ditto.
2784
2785 2005-03-07  John Sullivan  <sullivan@apple.com>
2786
2787         Reviewed by Darin.
2788         
2789         - <rdar://problem/4040868> REGRESSION (Mail, 403-403+): Drag and drop deletes text, 
2790         many other bad editing problems
2791
2792         * khtml/rendering/render_text.cpp:
2793         (RenderText::caretMaxOffset):
2794         A "-" should have been a "+" in this method that was tweaked an hour ago. Editing
2795         was completely horked.
2796
2797 2005-03-07  Richard Williamson   <rjw@apple.com>
2798
2799         Additional nil check from fix for 4040749.
2800
2801         * khtml/rendering/render_box.cpp:
2802         (RenderBox::setStyle):
2803
2804 2005-03-07  Richard Williamson   <rjw@apple.com>
2805
2806         Additional nil check from fix for 4040749.
2807
2808         * khtml/rendering/render_layer.cpp:
2809         (RenderLayer::updateLayerPosition):
2810
2811 2005-03-07  David Harrison  <harrison@apple.com>
2812
2813         Reviewed by Darin.
2814
2815         <rdar://problem/4033202> REGRESSION (Mail): Can't arrow up at a particular spot in a particular Mail message
2816
2817         Doublecheck that new position is really on a different line, because the VisiblePosition constructor does not.
2818         Filed <rdar://problem/4040763> for that problem.
2819
2820         * khtml/editing/visible_units.cpp:
2821         (khtml::previousLinePosition):
2822
2823 2005-03-07  Richard Williamson   <rjw@apple.com>
2824
2825         Fixed <rdar://problem/4040749> REGRESSION (125-178): opacity style not working, breaks fading images on okcupid.com
2826
2827         When layers are dynamically created/removed as a result of changing opacity they weren't being correctly
2828         sized and positioned.  This happens whenever opacity goes from < 1 to 1.
2829
2830         Reviewed by Darin.
2831
2832         * khtml/rendering/render_box.cpp:
2833         (RenderBox::setStyle):
2834         * khtml/rendering/render_layer.cpp:
2835         (RenderLayer::updateLayerPosition):
2836
2837 2005-03-07  Christy Warren  <kali@apple.com>
2838
2839         Reviewed by Darin
2840
2841         * khtml/rendering/render_text.cpp:
2842         (RenderText::caretMinOffset): modified to handle BIDI case by checking all text boxes for min offset
2843         (RenderText::caretMaxOffset): modified to handle BIDI case by checking all text boxes for max offset
2844
2845 2005-03-07  David Harrison  <harrison@apple.com>
2846
2847         Reviewed by Ken.
2848
2849         <rdar://problem/4029225> REGRESSION (Mail): Crash if hit return after dragging in attachment - DeleteSelectionCommand::initializePositionData
2850
2851         Work around the fact that the height() of a BR is 0 if there are no text elements on the line, even if there are replaced elements.
2852         Filed <rdar://problem/4040358> RenderBR height() is not accurate.
2853         
2854         * khtml/editing/htmlediting.cpp:
2855         (khtml::ReplaceSelectionCommand::doApply):
2856         When height is 0, double check that the placeholder is the first position on the line.
2857
2858 === Safari-403 ===
2859
2860 2005-03-07  Ken Kocienda  <kocienda@apple.com>
2861
2862         Reviewed by Vicki
2863     
2864         Fix for this bug:
2865         
2866         <rdar://problem/4040136> Expose SPI for WebCore's functions to create document fragments from plain text and markup strings
2867
2868         * kwq/DOMHTML.mm: Add two new SPI functions.
2869         (-[DOMHTMLDocument _createDocumentFragmentWithMarkupString:baseURLString:])
2870         (-[DOMHTMLDocument _createDocumentFragmentWithText:])
2871         * kwq/DOMPrivate.h: Declare the new SPI here, a privately-exported header, so Mail can make use of it.
2872
2873 2005-03-07  Ken Kocienda  <kocienda@apple.com>
2874
2875         Reviewed by John
2876
2877         Fix for this bug:
2878         
2879         <rdar://problem/4039676> REGRESSION (Mail): in reply, <cr> on pasted text (without trailing newline) is eaten when pasted above date
2880
2881         * khtml/editing/htmlediting.cpp:
2882         (khtml::ReplaceSelectionCommand::doApply): Code to "eat" a <br> element, that was creating an otherwise empty line, was running
2883         when it should not. If the content being pasted in does not end in a "logical" newline itself, then the <br> already
2884         in the content needs to be preserved. A simple one-line change now sees to this.
2885         
2886         * layout-tests/editing/pasteboard/paste-text-010-expected.txt: This test now has an extra, but harmless,
2887         <br> at the end of a paragraph. This makes sense given the code change.
2888
2889         New test:
2890         * layout-tests/editing/pasteboard/paste-text-018-expected.txt: Added.
2891         * layout-tests/editing/pasteboard/paste-text-018.html: Added.
2892
2893 2005-03-07  Ken Kocienda  <kocienda@apple.com>
2894
2895         Reviewed by John
2896
2897         Fix for this bug:
2898         
2899         <rdar://problem/4035648> REGRESSION (Mail): line feed in source HTML file causes bad copy/paste behavior
2900
2901         The createMarkup() function in markup.cpp iterates over the nodes in a range,
2902         and does some bookkeeping to figure out when to add close tags to the markup.
2903         Some code added at the start of the loop to prevent markup from being written
2904         for unrendered nodes short-circuited the rest of the loop, and so prevented
2905         the close-tag-writing code from running when it should.
2906
2907         This is why the "plain" text wound up inside of the bold tag in the example
2908         above. The addition of the unrendered return character caused an incorrect
2909         delay in the close tag for the bold element from being written out, with the
2910         result being that it wound up including additional content.
2911
2912         The fix is to add checks for node renderers throughout the loop at the points
2913         where markup is written out for each node. This allows the additional close
2914         tag logic to run as needed.
2915
2916         All layout tests pass with this change.
2917
2918         * khtml/editing/markup.cpp:
2919         (khtml::createMarkup)
2920
2921         New test:
2922         
2923         * layout-tests/editing/pasteboard/paste-4035648-fix-expected.txt: Added.
2924         * layout-tests/editing/pasteboard/paste-4035648-fix.html: Added.
2925
2926 2005-03-06  Christy Warren  <kali@appple.com>
2927
2928         Reviewed by Ken
2929
2930         * khtml/rendering/render_text.cpp:
2931         (lastRendererOnPrevLine): helper for RenderText::caretRect
2932         (RenderText::caretRect): added code to properly handle bidi ordered text boxes
2933
2934 2005-03-06  Christy Warren  <kali@apple.com>
2935
2936         Reviewed by Darin.
2937
2938         * khtml/editing/visible_position.cpp: Eliminated code that cuts off searching through the text boxes based on an assumption that breaks under bidi
2939         (khtml::VisiblePosition::isCandidate):
2940         * kwq/KWQFontMetrics.mm:
2941         (QFontMetrics::checkSelectionPoint): Made the initialization of the WebCoreStyle honor the reversed flag
2942
2943 2005-03-05  John Sullivan  <sullivan@apple.com>
2944
2945         Reviewed by Maciej.
2946         
2947         - fixed <rdar://problem/4038417> Mail crashed in StyleChange::checkForLegacyHTMLStyleChange 
2948         when composing a reply
2949
2950         * khtml/editing/htmlediting.cpp:
2951         (khtml::StyleChange::checkForLegacyHTMLStyleChange):
2952         Added missing nil check.
2953
2954 2005-03-05  Darin Adler  <darin@apple.com>
2955
2956         Reviewed by Don.
2957
2958         - fixed <rdar://problem/4038478> Crash in renderer viewing RSS feed at feed://wvs.topleftpixel.com/index.rdf
2959
2960         * khtml/xml/dom_docimpl.cpp: (widgetForNode): Check for nil before going from node to renderer.
2961
2962 2005-03-05  Darin Adler  <darin@apple.com>
2963
2964         Reviewed by Richard.
2965
2966         - fixed <rdar://problem/4037700> Every character typed causes stat call for /usr/share/icu/icudt32b_char.brk
2967
2968         * khtml/rendering/render_text.cpp:
2969         (getCharacterBreakIterator): Added. Helper that sets up an iterator for the passed-in text.
2970         Shares a single global iterator (fast, albeit not thread-safe).
2971         (RenderText::previousOffset): Changed to call getCharacterBreakIterator.
2972         (RenderText::nextOffset): Ditto.
2973
2974 2005-03-05  Ken Kocienda  <kocienda@apple.com>
2975
2976         Reviewed by Darin
2977
2978         Fix for this bug:
2979         
2980         <rdar://problem/4038267> REGRESSION (Mail): Crash copying and pasting end of paragraph
2981
2982         Code to handle content that has a "logical" newline at the end of the pasted content, and the code
2983         to adjust the selection at the end of the paste operation made an assumption that at least one
2984         node had been inserted by the paste command. This is not necessarily true in the case where the sole content
2985         in the pasted content is one of these "logical" newlines. Adjust some code around so that we don't deref
2986         null, but still adjust the selection correctly for this case. In each of the two functions below, some
2987         null checks have been added, and some code has been rearranged a little bit to continue on through
2988         the end of completeHTMLReplacement, even if no nodes have been inserted. The patch looks bigger and more
2989         complicated than the conceptual change.
2990
2991         * khtml/editing/htmlediting.cpp:
2992         (khtml::ReplaceSelectionCommand::doApply)
2993         (khtml::ReplaceSelectionCommand::completeHTMLReplacement)
2994         
2995         * layout-tests/editing/pasteboard/paste-4038267-fix-expected.txt: Added.
2996         * layout-tests/editing/pasteboard/paste-4038267-fix.html: Added.
2997
2998 2005-03-05  Darin Adler  <darin@apple.com>
2999
3000         Reviewed by John.
3001
3002         - fixed <rdar://problem/4025918> images copied from Safari with relative src URLs aren't pasted into Mail messages (KURL resolves base URLs incorrectly)
3003
3004         * kwq/KWQKURL.mm: (KURL::KURL): Add a slash at the start of the path if a relative part is adding
3005         a path onto a URL that has "pre-path" bits like host name, but no path yet. This doesn't come up
3006         for http because in that case we add a trailing "/" as part of canonicalization.
3007
3008 2005-03-04  John Sullivan  <sullivan@apple.com>
3009
3010         Reviewed by Kevin.
3011         
3012         - fixed <rdar://problem/4033705> REGRESSION (Mail): Copy/Paste from Excel 
3013         crashes Mail in KWQKHTMLPart::fontForSelection(bool*) const + 232
3014
3015         * kwq/KWQKHTMLPart.mm:
3016         (KWQKHTMLPart::fontForSelection):
3017         Check for nil startNode, not just nil renderer.
3018
3019 2005-03-04  David Harrison  <harrison@apple.com>
3020
3021         Reviewed by Ken, Richard.
3022
3023         <rdar://problem/3996383> REGRESSION (Mail): Deleting all of first line also deletes line ending
3024
3025         Problem was the placeholder check was based on 0 height block, but the block in this
3026         case is the BODY, which has other content even though the paragraph is gone.
3027         
3028         * khtml/editing/htmlediting.cpp:
3029         (khtml::CompositeEditCommand::insertBlockPlaceholder):
3030         Now does insert instead of append!
3031     
3032         (khtml::CompositeEditCommand::appendBlockPlaceholder):
3033         New.  Actually does append.
3034         
3035         (khtml::CompositeEditCommand::addBlockPlaceholderIfNeeded):
3036         Renamed from insertBlockPlaceholderIfNeeded because it can insert or append.  Also accepts "force insert" flag.
3037         
3038         (khtml::CompositeEditCommand::removeBlockPlaceholder):
3039         Renamed for succinctness from removeBlockPlaceholderIfNeeded.
3040         
3041         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
3042         (khtml::DeleteSelectionCommand::moveNodesAfterNode):
3043         Use renamed methods.
3044         
3045         (khtml::DeleteSelectionCommand::doApply):
3046         Use addBlockPlaceholderIfNeeded "force insert" flag if deleting whole paragraphs did not leave an empty one.
3047         
3048         (khtml::InsertParagraphSeparatorCommand::doApply):
3049         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
3050         (khtml::InsertTextCommand::input):
3051         Use renamed methods.
3052         
3053         * khtml/editing/htmlediting.h:
3054         Renamed and new methods per above.
3055         
3056
3057 2005-03-04  Chris Blumenberg  <cblu@apple.com>
3058
3059         Fixed: <rdar://problem/4032840> REGRESSION (Mail): crash in RemoveNodeCommand after pasting attachment at end of message
3060
3061         Reviewed by darin.
3062
3063         * khtml/editing/visible_units.cpp:
3064         (khtml::endOfParagraph): don't consider text nodes that have no rendered characters
3065
3066 2005-03-04  Richard Williamson   <rjw@apple.com>
3067
3068         Fixed <rdar://problem/4034764> REGRESSION(125-188)Viewing text/plain page and going back/forward corrupts HTML pages (google.com)
3069
3070         The parse mode wasn't be restored to the document when going
3071         back.
3072
3073         Reviewed by Hyatt.
3074
3075         * kwq/KWQKHTMLPart.mm:
3076         (KWQKHTMLPart::openURLFromPageCache):
3077         * kwq/KWQPageState.h:
3078         * kwq/KWQPageState.mm:
3079         (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:]):
3080
3081 2005-03-04  Ken Kocienda  <kocienda@apple.com>
3082
3083         Reviewed by me
3084
3085         * layout-tests/editing/style/create-block-for-style-012-expected.txt: Shame on me!
3086         I landed my last fix without running layout tests. This one changes in a subtle, but
3087         acceptable way.
3088
3089 2005-03-04  Ken Kocienda  <kocienda@apple.com>
3090
3091         Reviewed by Harrison
3092
3093         Fix for this bug:
3094         
3095         <rdar://problem/4032543> REGRESSION (Mail): Mail hangs when quoted text is pasted twice
3096         
3097         This code change fixes the bug in a non-obvious way. The root cause of the problem was
3098         that a VisiblePosition created using an affinity originating in Mail code caused 
3099         two VisiblePosition objects that should have been equal to differ only in their 
3100         affinities, which in turn caused us to run a code path that should not have run.
3101
3102         * khtml/editing/visible_position.cpp:
3103         (khtml::VisiblePosition::VisiblePosition): Added copy constructor.
3104         (khtml::VisiblePosition::next): Factored out inline code that used to be here into new
3105         setAffinityUsingLinePosition() function.
3106         (khtml::isEqualIgnoringAffinity): New helper to handle cases when affinity in equality check does
3107         not matter. However, we want to know about such cases where a VisiblePosition differs only by affinity, 
3108         and the code will assert in development when this happens.
3109         (khtml::isNotEqualIgnoringAffinity): Ditto, but not. :)
3110         (khtml::setAffinityUsingLinePosition): New helper function mentioned above. This will "correct"
3111         upstream affinity to downstream if the affinity does not make a difference for the position.
3112         * khtml/editing/visible_position.h:
3113         * khtml/editing/visible_range.h: Wacky bug. The operator== for this class took VisiblePosition classes!
3114         * khtml/editing/visible_units.cpp:
3115         (khtml::isStartOfParagraph): Now performs equality check without regard to affinity.
3116         (khtml::isEndOfParagraph): Ditto.
3117         (khtml::isStartOfBlock): Ditto.
3118         (khtml::isEndOfBlock): Ditto.
3119         * kwq/WebCoreBridge.mm:
3120         (-[WebCoreBridge setSelectedDOMRange:affinity:]): Adjusts the affinity using setAffinityUsingLinePosition()
3121         if necessary.
3122
3123 2005-03-04  Darin Adler  <darin@apple.com>
3124
3125         Reviewed by John.
3126
3127         - fixed <rdar://problem/4036817> REGRESSION: ctrl-y broken when a line + carriage return cut
3128
3129         * khtml/editing/htmlediting.h: Added insertTextRunWithoutNewlines.
3130         * khtml/editing/htmlediting.cpp:
3131         (khtml::InsertTextCommand::input): Added assertion to make sure strings with newlines don't get
3132         down to this level.
3133         (khtml::TypingCommand::insertText): Added. Takes the name of the old function, but is a new
3134         level that breaks runs into lines and inserts each one separately.
3135         (khtml::TypingCommand::insertTextRunWithoutNewlines): Renamed old insertText to this. 
3136
3137         * khtml/dom/dom_string.h: Made substring be a const member function.
3138         * khtml/dom/dom_string.cpp: (DOM::DOMString::substring): Made this const.
3139
3140 2005-03-04  Darin Adler  <darin@apple.com>
3141
3142         Reviewed by John.
3143
3144         - fixed <rdar://problem/4020413> REGRESSION (Mail): can't use fonts with names that start with "#" in Mail (Korean fonts)
3145
3146         * khtml/css/css_valueimpl.cpp:
3147         (DOM::isLegalIdentifier): Added. Commented out and not used.
3148         (DOM::quoteStringIfNeeded): Quotes the string if needed. For now only if it starts with "#".
3149         (DOM::CSSPrimitiveValueImpl::cssText): Call quoteStringIfNeeded when asked for cssText for an arbitrary string, since we
3150         need text you can re-parse.
3151         (DOM::FontFamilyValueImpl::cssText): Ditto.
3152
3153         * khtml/editing/markup.cpp:
3154         (khtml::startMarkup): Added comments about lack of quoting for attributes.
3155         (khtml::createMarkup): Ditto.
3156
3157 2005-03-04 Adele Amchan  <adele@apple.com>
3158  
3159        Reviewed by Maciej
3160
3161         Fix for <rdar://problem/4021711> REGRESSION(125-188) blank pages when browsing forum at cooperativeresearch.org - cached external script problem
3162
3163         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::scriptHandler): set flag needToRefCachedScript so we can make sure 
3164         notifyFinished is called after pendingSrc is set up with the right data from the cached script
3165
3166 2005-03-04  Ken Kocienda  <kocienda@apple.com>
3167
3168         Reviewed by John
3169
3170         Fix for this bug:
3171         
3172         <rdar://problem/4029632> Tiger 8A398:- Mail crashes in DOM::NodeImpl::isBlockFlow() after pasting text with alignment style and BR element from Safari
3173
3174         * khtml/editing/htmlediting.cpp:
3175         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): VisiblePosition constructor
3176         was failing to yield a position for a node just pasted into the document since a layout was needed
3177         for the calculation to come out right. Layout added. Crash gone.
3178
3179 === Safari-402 ===
3180
3181 2005-03-03  Chris Blumenberg  <cblu@apple.com>
3182
3183         Fixed: <rdar://problem/3992803> Cannot navigate through list items with the keyboard, you're stuck in the same <li> block unless you click out
3184
3185         Reviewed by harrison.
3186
3187         * khtml/rendering/render_line.cpp:
3188         (khtml::RootInlineBox::closestLeafChildForXPos): avoid returning list markers when possible. Also improved heuristic for returning the best InlineBox given the passed X position.
3189
3190
3191 2005-03-03  Ken Kocienda  <kocienda@apple.com>
3192
3193         Reviewed by John
3194         
3195         Fix for this bug:
3196         
3197         <rdar://problem/4035198> Pasting text with different styles does not get reproducible results
3198
3199         I had a good idea yesterday to improve the way we "fixup" styles after
3200         pasting, but i chose a poor data structure to do it, a map of
3201         nodes-to-styles. In the fixup step, I iterated over the map elements and
3202         did the fixup. However, since the order in which the items would come
3203         out of the map is indeterminate, we got unpredictable results.
3204
3205         So, the concept was good, but the implementation was flawed. I have
3206         fixed this mapping to be a list instead, so the order that nodes are
3207         evaluated in the fixup step is document order. This works nicely.
3208
3209         * khtml/editing/htmlediting.cpp:
3210         (khtml::ReplacementFragment::~ReplacementFragment): No longer need to explicity deref nodes and
3211         styles saved away for later fixup. This is now handled by the new NodeDesiredStyle class.
3212         (khtml::ReplacementFragment::computeStylesUsingTestRendering): Now calls computeAndStoreNodeDesiredStyle,
3213         function renamed from mapDesiredStyleForNode.
3214         Now accepts a QValueList<NodeDesiredStyle> in place of the old map.
3215         (khtml::NodeDesiredStyle::NodeDesiredStyle): New class that represents a node-to-style mapping.
3216         (khtml::NodeDesiredStyle::~NodeDesiredStyle): Ditto.
3217         (khtml::NodeDesiredStyle::operator=): Ditto.
3218         (khtml::ReplaceSelectionCommand::doApply): Now calls computeAndStoreNodeDesiredStyle,
3219         function renamed from mapDesiredStyleForNode.
3220         (khtml::ReplaceSelectionCommand::fixupNodeStyles): Now operates on a QValueList<NodeDesiredStyle> in 
3221         place of the old map.
3222         (khtml::computeAndStoreNodeDesiredStyle): Renamed from mapDesiredStyleForNode.  Now operates on a 
3223         QValueList<NodeDesiredStyle> in place of the old map.
3224         * khtml/editing/htmlediting.h:
3225         (khtml::NodeDesiredStyle): New class that represents a node-to-style mapping.
3226         (khtml::ReplacementFragment::desiredStyles): Now returns a QValueList<NodeDesiredStyle> in place of the old map.
3227
3228         * layout-tests/editing/style/typing-style-003-expected.txt: Results changed in an acceptable way.
3229
3230 2005-03-02  Darin Adler  <darin@apple.com>
3231
3232         Reviewed by Maciej.
3233
3234         - fixed <rdar://problem/4029741> REGRESSION (188-189): <input type=text> are cleared when you hide/show them
3235
3236         * khtml/html/html_formimpl.h: Added detach functions for both input and text area elements, since
3237         both have m_valueMatchesRenderer flags.
3238         * khtml/html/html_formimpl.cpp:
3239         (DOM::HTMLInputElementImpl::detach): Set m_valueMatchesRenderer to false, since the renderer is going away.
3240         (DOM::HTMLTextAreaElementImpl::detach): Ditto.
3241
3242 2005-03-02  Ken Kocienda  <kocienda@apple.com>
3243
3244         Reviewed by Hyatt
3245
3246         Fix for this bug:
3247         
3248         <rdar://problem/4006151> in reply, caret moves to next line after toggling bold style then typing
3249
3250         * khtml/editing/htmlediting.cpp:
3251         (khtml::ApplyStyleCommand::applyInlineStyle): Defer cleaning up empty style until the end of the
3252         function. In some situations, the render tree can get confused when we do this removal up front.
3253         I wish I understood the reasons more deeply, but this bit of code shuffling seems harmless, and 
3254         fixes the bug.
3255
3256 2005-03-02  Darin Adler  <darin@apple.com>
3257
3258         Reviewed by Maciej.
3259
3260         - fixed <rdar://problem/4024966> crash happened twice in [KWQTextField setHasFocus:] + 0xe8
3261
3262         Added more nil checks to the widget implementations. Anywhere a widget pointer is used, do a nil check,
3263         rather than relying on high level assumptions about which calls can and can't destroy the HTML element
3264         (and hence the widget). The case in the bug seems to be a case where scrolling destroyed the element.
3265         We can't be sure this fixes the bug, but we can be relatively sure we didn't introduce any new problems,
3266         because this just avoids nil-dereferencing.
3267
3268         * kwq/KWQButton.mm:
3269         (-[KWQButton becomeFirstResponder]):
3270         (-[KWQButton nextKeyView]):
3271         (-[KWQButton previousKeyView]):
3272         * kwq/KWQListBox.mm:
3273         (-[KWQTableView mouseDown:]):
3274         (-[KWQTableView becomeFirstResponder]):
3275         (-[KWQTableView numberOfRowsInTableView:]):
3276         (-[KWQTableView tableViewSelectionDidChange:]):
3277         (-[KWQTableView tableView:shouldSelectRow:]):
3278         (-[KWQTableView selectionShouldChangeInTableView:]):
3279         * kwq/KWQScrollBar.mm:
3280         (-[KWQScrollBar scroll:]):
3281         * kwq/KWQSlider.mm:
3282         (-[KWQSlider mouseDown:]):
3283         (-[KWQSlider slide:]):
3284         (-[KWQSlider becomeFirstResponder]):
3285         (-[KWQSlider nextKeyView]):
3286         (-[KWQSlider previousKeyView]):
3287         * kwq/KWQTextArea.mm:
3288         (-[KWQTextAreaTextView becomeFirstResponder]):
3289         (-[KWQTextAreaTextView resignFirstResponder]):
3290         (-[KWQTextAreaTextView mouseDown:]):
3291         * kwq/KWQTextField.mm:
3292         (-[KWQTextFieldController action:]):
3293         (-[KWQTextFieldController controlTextDidEndEditing:]):
3294         (-[KWQTextFieldController controlTextDidChange:]):
3295         (-[KWQTextFieldController textView:didHandleEvent:]):
3296         (-[KWQTextFieldController setHasFocus:]):
3297
3298 2005-03-02  Richard Williamson   <rjw@apple.com>
3299
3300         Fixed <rdar://problem/4031483> Leak (RenderObject::createInlineBox) reproducible with Stock widget
3301
3302         We were leaking inline block line boxes.  Argh!
3303
3304         Reviewed by Hyatt.
3305
3306         * khtml/rendering/render_flow.cpp:
3307         (RenderFlow::dirtyLineBoxes):
3308         * khtml/rendering/render_line.cpp:
3309         (khtml::InlineBox::deleteLine):
3310
3311 2005-03-02  Chris Blumenberg  <cblu@apple.com>
3312
3313         Fixed: <rdar://problem/3976872> REGRESSION (Mail): Pasted plain text doesn't get the proper style if pasted into newlines
3314
3315         Reviewed by kocienda.
3316
3317         * khtml/editing/htmlediting.cpp:
3318         (khtml::EditCommand::styleAtPosition): new, factored out from calculateStyleBeforeInsertion
3319         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): call styleAtPosition
3320         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): clear new m_insertionStyle ivar
3321         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand): deref new m_insertionStyle  ivar
3322         (khtml::ReplaceSelectionCommand::doApply): store the style so it later be applied when matching style
3323         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): apply style from m_insertionStyle when matching style
3324         * khtml/editing/htmlediting.h:
3325
3326 2005-03-02  Maciej Stachowiak  <mjs@apple.com>
3327
3328         Reviewed by Darin.
3329
3330         <rdar://problem/4031718> REGRESSION (401-401+): Safari reproducible crash setting up scope in JSLazyEventListener::parseCode authenticating to bugweb
3331         
3332         * khtml/ecma/kjs_events.cpp:
3333         (JSLazyEventListener::parseCode): If originalNode is NULL, don't
3334         mess with&nb