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