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