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