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