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