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