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