Reviewed by Darin.
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2005-03-02  Maciej Stachowiak  <mjs@apple.com>
2
3         Reviewed by Darin.
4
5         <rdar://problem/4031718> REGRESSION (401-401+): Safari reproducible crash setting up scope in JSLazyEventListener::parseCode authenticating to bugweb
6         
7         * khtml/ecma/kjs_events.cpp:
8         (JSLazyEventListener::parseCode): If originalNode is NULL, don't
9         mess with the scope chain.
10         
11         * khtml/html/html_baseimpl.cpp:
12         (HTMLBodyElementImpl::parseHTMLAttribute): For handlers that are
13         delcared on body but set on the document, pass NULL to avoid
14         swizzling the scope chain. It turns out that this is what browsers
15         do, and it finesses the crash.
16
17 2005-03-02  David Harrison  <harrison@apple.com>
18
19         Reviewed by Ken.
20
21         <rdar://problem/3948453> Can't type accented chars as first character in Stickies widget
22
23         * khtml/editing/htmlediting.cpp:
24         (khtml::ReplaceSelectionCommand::doApply):
25
26 2005-03-02  Ken Kocienda  <kocienda@apple.com>
27         Reviewed by John
28
29         Fix for this bug:
30         
31         <rdar://problem/4020574> REGRESSION (Mail): copy/paste first part of reply-quoted text alters downstream style
32         
33         The problem was that the operation to move nodes following the newly-pasted nodes did not preserve the
34         style of these moved nodes. I have generalized some of the functions that compute and preserve styles
35         for nodes and then apply these styles after a DOM operation.
36
37         * khtml/editing/htmlediting.cpp:
38         (khtml::ReplacementFragment::~ReplacementFragment): Call new derefNodesAndStylesInMap() helper function
39         in place of old code that had this deref'ing inline.
40         (khtml::ReplacementFragment::computeStylesUsingTestRendering): Now calls new mapDesiredStyleForNode() helper
41         function place of old code that had this style computation inline.
42         (khtml::ReplacementFragment::removeStyleNodes): Updated comment for new helper name.
43         (khtml::ReplaceSelectionCommand::doApply): Now calls new helpers in place of helpers whose names were changed,
44         or in place of pre-refactored inline code.
45         (khtml::ReplaceSelectionCommand::fixupNodeStyles): Renamed from applyStyleToInsertedNodes(). Now generalized
46         to take the map of nodes to use for the fixup. This makes it possible to call this code with different maps,
47         and that is needed to fix the bug.
48         (khtml::mapDesiredStyleForNode): New helper function to compute the inheritable styles for a given node
49         and map this style to the given node in the given map. This function now also includes the code that was
50         in the removeBlockquoteColorsIfNeeded(). This latter helper has now been removed.
51         (khtml::derefNodesAndStylesInMap): Simple helper to deref map members.
52         * khtml/editing/htmlediting.h:
53         (khtml::ReplacementFragment::desiredStyles): New helper to return map of nodes-to-desiredStyles.
54
55 2005-03-01  Ken Kocienda  <kocienda@apple.com>
56
57         Reviewed by Hyatt
58
59         Fix for this bug:
60
61         <rdar://problem/4011358> REGRESSION(Mail): after dragging text to mail message and deleting, typing or dragging new text doesn't work
62
63         * khtml/editing/visible_position.cpp:
64         (khtml::VisiblePosition::isCandidate): Insertion point disappearing was due to a failed
65         check here after deleting all the content in the body element. The special "empty block"
66         needs to add check for DOM children. A block may have straggling anonymous render children in
67         some cases, and so the check needs to be (!DOM-kids || !render-kids).
68
69         Also, I botched the last checkin trying to split these two patches in my tree. Wrong layout tests 
70         got checked in, I checked in a conflict marker in the Changelog, etc. I fixed everything with this checkin.
71
72 2005-03-01  Ken Kocienda  <kocienda@apple.com>
73  
74         Reviewed by Maciej
75
76         Improved fix for this bug:
77         
78         <rdar://problem/3996605> Insert paragraph command puts new block in wrong place, creating difficult-to-handle HTML
79
80         Maciej and I discussed this situation at length, and we came up with a better fix than I did earlier.
81
82         * khtml/editing/htmlediting.cpp:
83         (khtml::InsertParagraphSeparatorCommand::doApply): Simplify one special case so that it only handles the 
84         "last in block" situation. Remove special case for "downstream node is in different block" and handle
85         this case with a little bit of special code in the general insertion case.
86
87         Results studied to make sure there were no problems.
88
89         * layout-tests/editing/deleting/delete-3959464-fix-expected.txt
90         * layout-tests/editing/inserting/insert-div-001-expected.txt
91         * layout-tests/editing/inserting/insert-div-002-expected.txt
92         * layout-tests/editing/inserting/insert-div-004-expected.txt
93         * layout-tests/editing/inserting/insert-div-005-expected.txt
94         * layout-tests/editing/inserting/insert-div-009-expected.txt
95         * layout-tests/editing/inserting/insert-div-014-expected.txt
96         * layout-tests/editing/inserting/insert-div-018-expected.txt
97         * layout-tests/editing/inserting/insert-div-024-expected.txt
98         * layout-tests/editing/pasteboard/paste-text-011-expected.txt
99         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
100         * layout-tests/editing/pasteboard/paste-text-015-expected.txt
101         * layout-tests/editing/style/block-style-004-expected.txt
102         * layout-tests/editing/style/block-style-005-expected.txt
103         * layout-tests/editing/style/block-style-006-expected.txt
104
105         New test:
106         
107         * layout-tests/editing/inserting/insert-div-027.html
108         * layout-tests/editing/inserting/insert-div-027-expected.txt
109
110 2005-03-01  David Hyatt  <hyatt@apple.com>
111
112         Fix for 4030890, regression with <sup> on Google.  Fix some bogus != comparison checks in verticalPositionHint.
113         
114         Reviewed by John
115
116         (RenderObject::getVerticalPosition):
117         
118 2005-03-01  Chris Blumenberg  <cblu@apple.com>
119
120         Fixed: <rdar://problem/4030669> smart delete does not delete spaces from pasted content
121
122         Reviewed by rjw.
123
124         * khtml/editing/htmlediting.cpp:
125         (khtml::DeleteSelectionCommand::initializePositionData): pass true for treatNBSPAsWhiteSpace to leadingWhitespacePosition and trailingWhitespacePosition when testing whether or not we have to delete those characters as well.
126         * khtml/editing/jsediting.cpp: pass true for smartDelete when the selection granularity is WORD. This allows us to write smart delete layout tests.
127         * layout-tests/editing/deleting/smart-delete-001-expected.txt: Added.
128         * layout-tests/editing/deleting/smart-delete-001.html: Added.
129         * layout-tests/editing/deleting/smart-delete-002-expected.txt: Added.
130         * layout-tests/editing/deleting/smart-delete-002.html: Added.
131
132 2005-03-01  Richard Williamson   <rjw@apple.com>
133
134         Fixed <rdar://problem/4029772> Weather widgets use a lot of memory (more that other widgets)
135
136         The string objects created by KWQHeaderStringFromDictionary() leaked.
137
138         Reviewed by John Louch.
139
140         * kwq/KWQLoader.mm:
141         (KWQHeaderStringFromDictionary):
142
143 2005-03-01  Jens Alfke  <jens@apple.com>
144
145         Reviewed by Darin.
146
147         <rdar://problem/4004531> Simple Sun Signed Applet throws exceptions; doesn't run
148         Two fixes for the way we extract the parameter-y goodness from <object> tags.
149
150         * khtml/rendering/render_frames.cpp:
151         (RenderPartObject::updateWidget):
152
153 2005-03-01  Richard Williamson   <rjw@apple.com>
154
155         Fixed <rdar://problem/3990258> REGRESSION (125.12-181): top of picture that spans two pages is cut off on print from Safari
156
157         The problem was due to incorrect "object truncation" in  RenderFlow::paintLines.  
158         We attempt to push objects down if they don't fit on a page at
159         paint time.  If the attempt to push object down failed we just
160         didn't paint at all.
161
162         Reviewed by Hyatt.
163
164         * khtml/rendering/render_flow.cpp:
165         (RenderFlow::paintLines):
166
167 2005-03-01  Maciej Stachowiak  <mjs@apple.com>
168
169         Reviewed by Vicki.
170
171         <rdar://problem/4003774> REGRESSION(125-181): JavaScript problems @ Yankee/Dixie quiz
172         
173         Reworked how scopes are set up for event handlers to match other
174         browser. This includes the following changes:
175
176         - Special scope entries are set up at the time the event handler
177         is created, not at the time it fires.
178
179         - Special scope is only set up for event handlers set in the html
180         source through an html attribute, not for handlers set using
181         addEventHandler or setting JS properties like onclick through
182         JavaScript.
183
184         - Special scope is based on the DOM node on which the handler is
185         an attribute, not the event target.
186
187         This fixes the regression while allowing the fix to
188         <rdar://problem/3798453> (DIG: getting variable with same name as
189         DOM element attribute gets attribute value instead) to keep
190         working correctly.
191         
192         * khtml/ecma/kjs_events.cpp:
193         (JSEventListener::handleEvent):
194         (JSLazyEventListener::JSLazyEventListener):
195         (JSLazyEventListener::parseCode):
196         * khtml/ecma/kjs_events.h:
197         * khtml/ecma/kjs_proxy.cpp:
198         (KJSProxyImpl::createHTMLEventHandler):
199         * khtml/ecma/kjs_proxy.h:
200         * khtml/ecma/kjs_window.cpp:
201         (Window::getJSLazyEventListener):
202         * khtml/ecma/kjs_window.h:
203         * khtml/html/html_baseimpl.cpp:
204         (HTMLBodyElementImpl::parseHTMLAttribute):
205         (HTMLFrameElementImpl::parseHTMLAttribute):
206         (HTMLFrameSetElementImpl::parseHTMLAttribute):
207         * khtml/html/html_elementimpl.cpp:
208         (HTMLElementImpl::parseHTMLAttribute):
209         * khtml/html/html_formimpl.cpp:
210         (DOM::HTMLFormElementImpl::parseHTMLAttribute):
211         (DOM::HTMLButtonElementImpl::parseHTMLAttribute):
212         (DOM::HTMLInputElementImpl::parseHTMLAttribute):
213         (DOM::HTMLLabelElementImpl::parseHTMLAttribute):
214         (DOM::HTMLSelectElementImpl::parseHTMLAttribute):
215         (DOM::HTMLTextAreaElementImpl::parseHTMLAttribute):
216         * khtml/html/html_imageimpl.cpp:
217         (HTMLImageElementImpl::parseHTMLAttribute):
218         * khtml/html/html_objectimpl.cpp:
219         (HTMLObjectElementImpl::parseHTMLAttribute):
220         * khtml/khtml_part.cpp:
221         (KHTMLPart::createHTMLEventListener):
222         * khtml/khtml_part.h:
223         * khtml/xml/dom_docimpl.cpp:
224         (DocumentImpl::createHTMLEventListener):
225         * khtml/xml/dom_docimpl.h:
226
227 === Safari-401 ===
228
229 2005-03-01  Chris Blumenberg  <cblu@apple.com>
230
231         Backed out my patch since the tree was closed.
232
233         * khtml/editing/htmlediting.cpp:
234         (khtml::DeleteSelectionCommand::initializePositionData):
235         * khtml/editing/jsediting.cpp:
236
237 2005-03-01  Chris Blumenberg  <cblu@apple.com>
238
239         Fixed: <rdar://problem/4030669> smart delete does not delete spaces from pasted content
240
241         Reviewed by rjw.
242
243         * khtml/editing/htmlediting.cpp:
244         (khtml::DeleteSelectionCommand::initializePositionData): pass true for treatNBSPAsWhiteSpace to leadingWhitespacePosition and trailingWhitespacePosition when testing whether or not we have to delete those characters as well.
245         * khtml/editing/jsediting.cpp: pass true for smartDelete when the selection granularity is WORD. This allows us to write smart delete layout tests.
246         * layout-tests/editing/deleting/smart-delete-001-expected.txt: Added.
247         * layout-tests/editing/deleting/smart-delete-001.html: Added.
248         * layout-tests/editing/deleting/smart-delete-002-expected.txt: Added.
249         * layout-tests/editing/deleting/smart-delete-002.html: Added.
250
251 2005-03-01  Ken Kocienda  <kocienda@apple.com>
252
253         Reviewed by Vicki
254
255         Fix for this bug:
256         
257         <rdar://problem/4030068> Trailing <return> gets eaten when pasted at the end of a document
258
259         * khtml/editing/htmlediting.cpp:
260         (khtml::ReplaceSelectionCommand::doApply): Add code to handle formerly-unhandled end-of-document case.
261
262 2005-03-01  David Harrison  <harrison@apple.com>
263
264         Reviewed by Chris.
265
266         <rdar://problem/3915560> Mail would like an SPI to enable "smart" text paste/drop
267
268         * kwq/WebCoreBridge.h:
269         * kwq/WebCoreBridge.mm:
270         (-[WebCoreBridge smartDeleteRangeForProposedRange:]):
271         (-[WebCoreBridge smartInsertForString:replacingRange:beforeString:afterString:]):
272         New.
273
274 2005-03-01  Chris Blumenberg  <cblu@apple.com>
275
276         Fixed: <rdar://problem/4030404> selection granularity should be set when extending selection via JS
277
278         Reviewed by kocienda.
279
280         * khtml/ecma/kjs_window.cpp:
281         (SelectionFunc::tryCall): set the granularity on the part. This will allow us to write smart paste layout tests.
282         * layout-tests/editing/pasteboard/smart-paste-001-expected.txt: Added.
283         * layout-tests/editing/pasteboard/smart-paste-001.html: Added.
284         * layout-tests/editing/pasteboard/smart-paste-002-expected.txt: Added.
285         * layout-tests/editing/pasteboard/smart-paste-002.html: Added.
286         * layout-tests/editing/pasteboard/smart-paste-003-expected.txt: Added.
287         * layout-tests/editing/pasteboard/smart-paste-003.html: Added.
288         * layout-tests/editing/pasteboard/smart-paste-004-expected.txt: Added.
289         * layout-tests/editing/pasteboard/smart-paste-004.html: Added.
290         * layout-tests/editing/pasteboard/smart-paste-005-expected.txt: Added.
291         * layout-tests/editing/pasteboard/smart-paste-005.html: Added.
292         * layout-tests/editing/pasteboard/smart-paste-006-expected.txt: Added.
293         * layout-tests/editing/pasteboard/smart-paste-006.html: Added.
294         * layout-tests/editing/pasteboard/smart-paste-007-expected.txt: Added.
295         * layout-tests/editing/pasteboard/smart-paste-007.html: Added.
296
297 2005-03-01  Chris Blumenberg  <cblu@apple.com>
298
299         Fixed: <rdar://problem/4029934> smart paste with plain text can add too many spaces
300
301         Reviewed by kocienda.
302
303         * khtml/editing/htmlediting.cpp:
304         (khtml::ReplaceSelectionCommand::doApply): pass true for treatNBSPAsWhitespace to leadingWhitespacePosition and trailingWhitespacePosition
305         * khtml/xml/dom_position.cpp:
306         (DOM::isWS): take treatNBSPAsWhitespace param
307         (DOM::Position::leadingWhitespacePosition): ditto
308         (DOM::Position::trailingWhitespacePosition): ditto
309         * khtml/xml/dom_position.h:
310
311 2005-03-01  Ken Kocienda  <kocienda@apple.com>
312
313         Reviewed by John
314
315         Fix for this bug:
316         
317         <rdar://problem/3996605> Insert paragraph command puts new block in wrong place, creating difficult-to-handle HTML
318
319         * khtml/editing/htmlediting.cpp:
320         (khtml::InsertParagraphSeparatorCommand::doApply): Look for the upstream-most block to insert after
321         when at the visible end of a block. This helps to avoid some undesirable sequences of markup which
322         Dave says will be vary hard to render. Changing the command in this way avoids the "limitations"
323         of the render tree by not asking it to render markup we do not want to make anyway.
324         
325         All these tests change, but either in insignificant ways, or for the better.
326         
327         * layout-tests/editing/deleting/delete-3959464-fix-expected.txt:
328         * layout-tests/editing/inserting/insert-div-001-expected.txt:
329         * layout-tests/editing/inserting/insert-div-002-expected.txt:
330         * layout-tests/editing/inserting/insert-div-004-expected.txt:
331         * layout-tests/editing/inserting/insert-div-005-expected.txt:
332         * layout-tests/editing/inserting/insert-div-009-expected.txt:
333         * layout-tests/editing/inserting/insert-div-024-expected.txt:
334         * layout-tests/editing/pasteboard/paste-text-011-expected.txt:
335         * layout-tests/editing/pasteboard/paste-text-013-expected.txt:
336         * layout-tests/editing/pasteboard/paste-text-015-expected.txt:
337         * layout-tests/editing/style/block-style-004-expected.txt:
338         * layout-tests/editing/style/block-style-005-expected.txt:
339         * layout-tests/editing/style/block-style-006-expected.txt:
340         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt:
341         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt:
342         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt:
343         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt:
344
345         New test to check specific problem mentioned in the bug.
346
347         * layout-tests/editing/inserting/insert-div-026-expected.txt: Added.
348         * layout-tests/editing/inserting/insert-div-026.html: Added.
349
350 2005-02-28  Maciej Stachowiak  <mjs@apple.com>
351
352         Reviewed by Darin.
353
354         <rdar://problem/4002864> REGRESSION(125-146) getElementById in onload fails in a test case involving external resources
355         
356         Moved management of elementById hashtable from attach/detach to
357         insertedIntoDocument/removedFromDocument, to avoid being thrown
358         off by temporary detaches due to style recalcs.
359         
360         * khtml/xml/dom_elementimpl.cpp:
361         (ElementImpl::insertedIntoDocument):
362         (ElementImpl::removedFromDocument):
363         (ElementImpl::attach):
364         (ElementImpl::updateId):
365         * khtml/xml/dom_elementimpl.h:
366
367         Make sure that insertedIntoDocument is called before firing any
368         DOM events.
369         
370         * khtml/xml/dom_nodeimpl.cpp:
371         (NodeBaseImpl::dispatchChildInsertedEvents): 
372
373 2005-02-28  David Hyatt  <hyatt@apple.com>
374
375         Fix for 4028999, safari crashes when resetting if mallocsribble is on.  Clip rects were being cleared using dead
376         render objects.  Change the ordering.
377         
378         Reviewed by rjw
379
380         * khtml/rendering/render_box.cpp:
381         (RenderBox::detach):
382         * khtml/rendering/render_layer.cpp:
383         (RenderLayer::~RenderLayer):
384
385 2005-02-28  Chris Blumenberg  <cblu@apple.com>
386
387         Fixed: <rdar://problem/4024786> REGRESSION (Mail): "Smart paste" plain-text word into Blot leaves insertion point misplaced
388
389         Reviewed by kocienda.
390
391         * khtml/editing/htmlediting.cpp:
392         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Call updateLayout so caretMinOffset and caretMaxOffset return correct values.
393
394 2005-02-28  John Sullivan  <sullivan@apple.com>
395
396         Reviewed by Ken.
397         
398         - WebCore part of fix for <rdar://problem/4023490> REGRESSION (125-185): Tabbing through links 
399         on frameset page gets stuck at end (tivofaq.com)
400
401         * kwq/WebCoreBridge.h:
402         add nextValidKeyViewOutsideWebFrameViews (code is in WebKit)
403
404 2005-02-28  Ken Kocienda  <kocienda@apple.com>
405
406         Reviewed by John
407
408         Fix for this bug:
409         
410         <rdar://problem/3972665> 8A360: HTML message partially truncated on left hand side, text-indent from Script Editor
411
412         * khtml/css/css_computedstyle.cpp: inheritableProperties array now defined in css_valueimpl.cpp.
413         * khtml/css/css_valueimpl.cpp: Define inheritableProperties array here.
414         (DOM::CSSMutableStyleDeclarationImpl::copyBlockProperties): Use new name for blockProperties, and use the new
415         constant for the number of items in the array.
416         (DOM::CSSMutableStyleDeclarationImpl::removeBlockProperties): Ditto.
417         (DOM::CSSMutableStyleDeclarationImpl::removeInheritableProperties): New function.
418         * khtml/css/css_valueimpl.h: Declare inheritableProperties array and numInheritableProperties extern so they
419         can be defined in css_valueimpl.cpp and used in css_computedstyle.cpp.
420         * khtml/editing/htmlediting.cpp:
421         (khtml::ReplacementFragment::removeStyleNodes): This code was misguided, and removed too much style from HTML
422         elements. Now, it removes from HTML elements only the styles that we replace later with a call to applyStyle().
423         Also, add ID_B to list of inline "style" nodes we are willing to remove. Leaving it off was an oversight.
424
425         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: ID_B fix made this result change, without any
426         visible change in the test.
427         
428         New test:
429         
430         * layout-tests/editing/style/smoosh-styles-003.html
431         * layout-tests/editing/style/smoosh-styles-003-expected.txt
432
433 2005-02-28  Richard Williamson   <rjw@apple.com>
434
435         Fixed <rdar://problem/4026985> CrashTracer: ...14 crashes at com.apple.WebCore: -[KWQPageState invalidate] + 32
436
437         Added more nil checking and ASSERTS.
438         Without a reproducible case this is hard to definitively resolve.
439
440         Reviewed by John Sullivan.
441
442         * kwq/KWQPageState.mm:
443         (-[KWQPageState invalidate]):
444
445 2005-02-28  Richard Williamson   <rjw@apple.com>
446
447         Fixed <rdar://problem/4027702> 3.5% performance regression btwn Safari-188 and Safari-400
448
449         I inadvertently checked in some debugging code that disabled
450         style sharing.  Backed out that change.
451
452         * khtml/css/cssstyleselector.cpp:
453         (khtml::CSSStyleSelector::styleForElement):
454
455 2005-02-28  Chris Blumenberg  <cblu@apple.com>
456
457         Fixed: <rdar://problem/4026639> www.bmw.ca configurator does not work with Safari
458
459         Reviewed by john.
460
461         * khtml/ecma/kjs_html.cpp:
462         (KJS::HTMLElement::tryGet): when frameset.<name of frame child> is called, return the window object of the frame child
463
464 2005-02-28  Ken Kocienda  <kocienda@apple.com>
465
466         Reviewed by Chris
467
468         Fix for this bug:
469         
470         <rdar://problem/4026906> Paste of HTML table content can break table structure
471
472         * khtml/editing/htmlediting.cpp:
473         (khtml::ReplacementFragment::pruneEmptyNodes): Call new isProbablyTableStructureNode() function to prevent
474         removal of empty table structure nodes.
475         (khtml::ReplacementFragment::removeUnrenderedNodesUsingTestRendering): Ditto.
476         (khtml::isProbablyTableStructureNode): New helper function.
477         * khtml/editing/htmlediting.h: Declare new helper.
478
479 2005-02-28  Chris Blumenberg  <cblu@apple.com>
480
481         Fixed: <rdar://problem/4023566> Stickies: Crash in ReplacementFragment::insertFragmentForTestRendering on paste
482
483         Reviewed by kocienda.
484
485         * khtml/editing/htmlediting.cpp:
486         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): ref and deref the element while it is "floating"
487         (khtml::ReplacementFragment::insertFragmentForTestRendering): ditto
488         (khtml::floatRefdElement): new, keeps an element alive while its ref count is 0
489         (khtml::createDefaultParagraphElement): removed commented out code
490         (khtml::createBlockPlaceholderElement): ref the element and return it as "floating"
491         (khtml::createFontElement): ditto
492         (khtml::createStyleSpanElement): ditto
493         * khtml/editing/htmlediting.h:
494
495 2005-02-27  Maciej Stachowiak  <mjs@apple.com>
496
497         Reviewed by Vicki.
498
499         <rdar://problem/3993557> REGRESSION (125-180-ish): getElementsByTagName no longer works with namespace designations
500         
501         * khtml/xml/dom_nodeimpl.cpp:
502         (NodeBaseImpl::getElementsByTagNameNS): When no namespace is specified, find elements
503         of the specified name in any namespace to match Mozilla and earlier Safari behavior.
504
505 2005-02-25  Darin Adler  <darin@apple.com>
506
507         Reviewed by Adele.
508
509         - fixed <rdar://problem/4025618> Crash while searching at hollywoodvideo.com
510
511         * khtml/html/html_formimpl.h: Added valueWithDefault.
512         * khtml/html/html_formimpl.cpp:
513         (DOM::HTMLInputElementImpl::appendFormData): Call valueWithDefault instead of going at the render object
514         to try to get the default value; there may be no render object if this is display:none.
515         (DOM::HTMLInputElementImpl::valueWithDefault): Added. Knows about the defaults for "submit" and "reset"
516         buttons; otherwise just returns the value as-is.
517
518         * khtml/rendering/render_form.h: Removed the defaultLabel member functions.
519         * khtml/rendering/render_form.cpp:
520         (RenderSubmitButton::rawText): Call valueWithDefault instead of using defaultLabel function here on
521         the render side. The DOM needs to know how to deal with the default anyway for form submission.
522         (RenderSubmitButton::defaultLabel): Removed.
523         (RenderResetButton::defaultLabel): Removed.
524         (RenderPushButton::defaultLabel): Removed.
525
526 2005-02-25  Darin Adler  <darin@apple.com>
527
528         Reviewed by John.
529
530         - fixed <rdar://problem/4025088> window onblur and onfocus don't fire when text field has focus
531
532         * kwq/KWQKHTMLPart.h: Added setWindowHasFocus function and m_windowHasFocus data member.
533         * kwq/KWQKHTMLPart.mm:
534         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Took out the code that sends the focus and blur events.
535         (KWQKHTMLPart::setWindowHasFocus): Put that code here instead.
536
537         * kwq/WebCoreBridge.h: Added setWindowHasFocus: method to the bridge.
538         * kwq/WebCoreBridge.mm: (-[WebCoreBridge setWindowHasFocus:]): Added. Calls method on the part.
539
540 2005-02-25  Darin Adler  <darin@apple.com>
541
542         Reviewed by John.
543
544         - re-fixed <rdar://problem/3665430> horizontal scroll bar of text area does not show, even when text is wide in "no wrap" mode
545
546         * kwq/KWQTextArea.mm: (-[KWQTextArea _updateTextViewWidth]): Don't change the text view width
547         to match the text area's width in the "wrap" case.
548
549 2005-02-25  Ken Kocienda  <kocienda@apple.com>
550
551         Reviewed by Hyatt
552
553         Fix for this bug:
554         
555         <rdar://problem/4021518> 8A394 Mail crashes during paste: khtml::RootInlineBox::closestLeafChildForXPos
556
557         * khtml/editing/visible_units.cpp:
558         (khtml::previousLinePosition): Adding an updateLayout call at the start of the function fixes the crash, since
559         we caught line boxes in a not-completely-updated state.
560         (khtml::nextLinePosition): Ditto.
561
562 2005-02-25  David Hyatt  <hyatt@apple.com>
563
564         Fix for 4010774, make sure to avoid an O(N^2) algorithm in nextRenderer() that is triggered when large
565         DOM subtrees are inserted into documents via one insert/append call.
566         
567         Reviewed by kocienda
568
569         * khtml/xml/dom_nodeimpl.cpp:
570         (NodeImpl::nextRenderer):
571
572 2005-02-25  Richard Williamson   <rjw@apple.com>
573
574         Fixed <rdar://problem/3382926> Bidi neutrals at RTL/LTR boundaries not handled correctly.
575
576         Second pass at fixing 3382926 w/o causing layout regressions.  Same concept:
577         if directionality of text's element is RTL and first character has neutral directionality
578         then set the initial directionality to RTL.
579
580         Reviewed by Hyatt.
581
582         * khtml/rendering/bidi.cpp:
583         (khtml::RenderBlock::bidiReorderLine):
584         (khtml::RenderBlock::determineStartPosition):
585
586 === Safari-400 ===
587
588 2005-02-25  Ken Kocienda  <kocienda@apple.com>
589
590         Reviewed by me
591
592         Roll out Chris' change to fix this bug:
593         
594         <rdar://problem/4023566> Stickies: Crash in ReplacementFragment::insertFragmentForTestRendering on paste
595         
596         That code change is responsible for all these new crashers:
597         
598         <rdar://problem/4025177> crash copying safari.apple.com into Blot document
599         <rdar://problem/4025184> crash in DOM::NodeImpl::parentNode copying "New!" from google.com to Blot
600         <rdar://problem/4025214> crash in DOM::NodeImpl::getRect loading paste-match-style-001.html
601
602         Since we wish to close the tree for a build right now, I am rolling out rather than investigating.
603
604         * khtml/editing/htmlediting.cpp:
605         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded)
606         (khtml::ReplacementFragment::insertFragmentForTestRendering)
607         (khtml::createDefaultParagraphElement)
608         (khtml::createBlockPlaceholderElement)
609         (khtml::createFontElement)
610         (khtml::createStyleSpanElement)
611         * khtml/editing/htmlediting.h
612
613 2005-02-25  Ken Kocienda  <kocienda@apple.com>
614
615         Reviewed by John
616
617         Fix for this bug:
618         
619         <rdar://problem/4020108> Pasting text into message makes Mail crash reproducibly
620
621         Note that, even with this fix, development build will crash until this bug is fixed:
622         <rdar://problem/4024996> Applying block styles can cause assertion failure in inline style removal
623         
624         This will not crash deployment builds, so I am going to land.
625
626         * khtml/editing/htmlediting.cpp:
627         (khtml::ApplyStyleCommand::applyBlockStyle): Applying block styles can make the loop to reach beyondEnd
628         fail since the structure of the document can change. Cache the next node first before operating on it,
629         as we do elsewhere.
630
631 2005-02-25  Vicki Murley <vicki@apple.com>
632
633         - recommit this change, since rolling it out did NOT fix the performance regression!
634
635     2005-02-23  Darin Adler  <darin@apple.com>
636
637         Reviewed by John.
638
639         - fixed <rdar://problem/4011405> REGRESSION (180-181): Unconfirmed text disappears when text focus moves
640
641         The key was to change things around so that we don't push text from the DOM to the widget
642         unless the DOM has actually been changed. This prevents the code path that wipes out inline input
643         during the blur process.
644
645         * khtml/html/html_formimpl.cpp:
646         (DOM::HTMLInputElementImpl::HTMLInputElementImpl): Start m_valueMatchesRenderer as false.
647         (DOM::HTMLInputElementImpl::parseHTMLAttribute): Set m_valueMatchesRenderer to false when a
648         new value is set here.
649         (DOM::HTMLInputElementImpl::setValue): Set m_valueMatchesRenderer to false when a new value
650         is set here.
651         (DOM::HTMLInputElementImpl::setValueFromRenderer): Added. Sets m_value, sets m_valueMatchesRenderer
652         to true, and also sends out the input event. It's better to have this here than in the renderer code.
653         (DOM::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl): Start m_valueIsValid as false (replaces
654         m_dirtyvalue) and m_valueMatchesRenderer as false.
655         (DOM::HTMLTextAreaElementImpl::updateValue): Added. Factored this out from the value function. Uses
656         the new booleans and keeps them up to date, specifically setting m_valueMatchesRenderer based on
657         where the value came from.
658         (DOM::HTMLTextAreaElementImpl::value): Updated to call updateValue to do most of the work.
659         (DOM::HTMLTextAreaElementImpl::setValue): Set both m_valueIsValid and m_valueMatchesRenderer.
660         (DOM::HTMLTextAreaElementImpl::setDefaultValue): Take parameter by reference.
661
662         * khtml/html/html_formimpl.h: Added setValueFromRenderer, valueMatchesRenderer, setValueMatchesRenderer,
663         and m_valueMatchesRenderer to input element. For textarea element, made some parameters pass DOMString
664         by reference, and added invalidateValue, updateValue, valueMatchesRenderer, and setValueMatchesRenderer.
665
666         * khtml/rendering/render_form.cpp:
667         (RenderLineEdit::updateFromElement): Don't re-get the value from the DOM if valueMatchesRenderer
668         is true.
669         (RenderLineEdit::slotTextChanged): Call setValueFromRenderer instead of manipulating the DOM
670         directly.
671         (RenderTextArea::detach): Call updateValue instead of calling value for its side effect.
672         (RenderTextArea::handleFocusOut): Ditto.
673         (RenderTextArea::updateFromElement): Call updateValue and then not re-get the value from the
674         DOM if valueMatchesRenderer is true.
675         (RenderTextArea::slotTextChanged): Call invalidateValue instead of directly setting m_dirtyvalue to true.
676
677 2005-02-25  Chris Blumenberg  <cblu@apple.com>
678
679         Fixed: <rdar://problem/4023566> Stickies: Crash in ReplacementFragment::insertFragmentForTestRendering on paste
680
681         Reviewed by darin.
682
683         * khtml/editing/htmlediting.cpp:
684         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded):
685         (khtml::ReplacementFragment::insertFragmentForTestRendering):
686         (khtml::floatRefdElement):
687         (khtml::createDefaultParagraphElement):
688         (khtml::createBlockPlaceholderElement):
689         (khtml::createFontElement):
690         (khtml::createStyleSpanElement):
691         * khtml/editing/htmlediting.h:
692
693 2005-02-25  Darin Adler  <darin@apple.com>
694
695         * kwq/character-sets.txt: Checked in updated file. This new file has no effect, because none of the
696         changes affect character sets that we support, but it's good to have the latest file in here, and
697         completely safe because I checked that the generated files have not changed.
698
699 2005-02-25  Vicki Murley <vicki@apple.com>
700
701         Reviewed by Darin.
702  
703         - back out this change, since it causes a 3.5% performance regression
704
705     2005-02-23  Darin Adler  <darin@apple.com>
706
707         Reviewed by John.
708
709         - fixed <rdar://problem/4011405> REGRESSION (180-181): Unconfirmed text disappears when text focus moves
710
711         The key was to change things around so that we don't push text from the DOM to the widget
712         unless the DOM has actually been changed. This prevents the code path that wipes out inline input
713         during the blur process.
714
715         * khtml/html/html_formimpl.cpp:
716         (DOM::HTMLInputElementImpl::HTMLInputElementImpl): Start m_valueMatchesRenderer as false.
717         (DOM::HTMLInputElementImpl::parseHTMLAttribute): Set m_valueMatchesRenderer to false when a
718         new value is set here.
719         (DOM::HTMLInputElementImpl::setValue): Set m_valueMatchesRenderer to false when a new value
720         is set here.
721         (DOM::HTMLInputElementImpl::setValueFromRenderer): Added. Sets m_value, sets m_valueMatchesRenderer
722         to true, and also sends out the input event. It's better to have this here than in the renderer code.
723         (DOM::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl): Start m_valueIsValid as false (replaces
724         m_dirtyvalue) and m_valueMatchesRenderer as false.
725         (DOM::HTMLTextAreaElementImpl::updateValue): Added. Factored this out from the value function. Uses
726         the new booleans and keeps them up to date, specifically setting m_valueMatchesRenderer based on
727         where the value came from.
728         (DOM::HTMLTextAreaElementImpl::value): Updated to call updateValue to do most of the work.
729         (DOM::HTMLTextAreaElementImpl::setValue): Set both m_valueIsValid and m_valueMatchesRenderer.
730         (DOM::HTMLTextAreaElementImpl::setDefaultValue): Take parameter by reference.
731
732         * khtml/html/html_formimpl.h: Added setValueFromRenderer, valueMatchesRenderer, setValueMatchesRenderer,
733         and m_valueMatchesRenderer to input element. For textarea element, made some parameters pass DOMString
734         by reference, and added invalidateValue, updateValue, valueMatchesRenderer, and setValueMatchesRenderer.
735
736         * khtml/rendering/render_form.cpp:
737         (RenderLineEdit::updateFromElement): Don't re-get the value from the DOM if valueMatchesRenderer
738         is true.
739         (RenderLineEdit::slotTextChanged): Call setValueFromRenderer instead of manipulating the DOM
740         directly.
741         (RenderTextArea::detach): Call updateValue instead of calling value for its side effect.
742         (RenderTextArea::handleFocusOut): Ditto.
743         (RenderTextArea::updateFromElement): Call updateValue and then not re-get the value from the
744         DOM if valueMatchesRenderer is true.
745         (RenderTextArea::slotTextChanged): Call invalidateValue instead of directly setting m_dirtyvalue to true.
746
747 2005-02-25  Darin Adler  <darin@apple.com>
748
749         Reviewed by Chris.
750
751         - fixed <rdar://problem/4024786> REGRESSION (Mail): "Smart paste" plain-text word into Blot leaves insertion point misplaced
752
753         * khtml/editing/htmlediting.cpp: (khtml::ReplaceSelectionCommand::doApply):
754         Use the insertNodeAfterAndUpdateNodesInserted and insertNodeBeforeAndUpdateNodesInserted
755         functions to add the leading and trailing spaces for smart paste.
756
757 2005-02-25  David Hyatt  <hyatt@apple.com>
758
759         Back out fix for 3382926, since it breaks LTR text inside RTL contexts.
760         
761         Reviewed by john
762
763         * khtml/rendering/bidi.cpp:
764         (khtml::BidiIterator::direction):
765
766 2005-02-25  David Hyatt  <hyatt@apple.com>
767
768         Fix for 3975039, scrolling is slow in huge RSS views.  Optimize the calculation of clip rects for overflow:hidden
769         layers.  Also optimize layer movement when scrolling overflow sections.
770         
771         Reviewed by darin
772
773         * khtml/rendering/render_layer.cpp:
774         (throw):
775         (ClipRects::operator delete):
776         (ClipRects::detach):
777         (RenderLayer::RenderLayer):
778         (RenderLayer::~RenderLayer):
779         (RenderLayer::updateLayerPosition):
780         (RenderLayer::removeOnlyThisLayer):
781         (RenderLayer::insertOnlyThisLayer):
782         (RenderLayer::scrollToOffset):
783         (RenderLayer::hitTest):
784         (RenderLayer::calculateClipRects):
785         (RenderLayer::calculateRects):
786         (RenderLayer::containsPoint):
787         (RenderLayer::clearClipRects):
788         (RenderLayer::clearClipRect):
789         * khtml/rendering/render_layer.h:
790         (khtml::ClipRects::m_refCnt):
791         (khtml::ClipRects::overflowClipRect):
792         (khtml::ClipRects::fixedClipRect):
793         (khtml::ClipRects::posClipRect):
794         (khtml::ClipRects::ref):
795         (khtml::ClipRects::deref):
796         (khtml::RenderLayer::clipRects):
797         * khtml/rendering/render_object.cpp:
798         (RenderObject::setStyle):
799
800 2005-02-24  Maciej Stachowiak  <mjs@apple.com>
801
802         Reviewed by Darin and Dave a while ago.
803
804         <rdar://problem/3996685> REGRESSION: Crash in KWQVectorImpl::at loading http://maps.google.com/mapfiles/homepanel.xsl
805         
806         * kwq/WebCoreBridge.mm:
807         (formElementFromDOMElement): Check for isHTMLElement() as well as
808         id() == ID_FORM. This seems like an impossible situation, but
809         papering over it seems more expedient for the time being.
810
811 2005-02-24  Richard Williamson   <rjw@apple.com>
812
813         Fixed <rdar://problem/3382926> Bidi neutrals at RTL/LTR boundaries not handled correctly.
814
815         Use mirror characters correctly when rendering with RTL directionality.
816
817         Reviewed by Hyatt.
818
819         * khtml/rendering/bidi.cpp:
820         (khtml::BidiIterator::direction):
821
822 2005-02-24  Richard Williamson   <rjw@apple.com>
823
824         Fixed <rdar://problem/3985889> REGRESSION (125-180): setting <img> src to GIF that already animated does not animate; just shows final frame
825         
826         Reviewed by Hyatt.
827
828         * WebCore.pbproj/project.pbxproj:
829         * khtml/html/html_imageimpl.cpp:
830         (HTMLImageLoader::updateFromElement):
831         * khtml/rendering/render_image.cpp:
832         (RenderImage::resetAnimation):
833         * khtml/rendering/render_image.h:
834         * khtml/rendering/render_list.cpp:
835         (RenderListMarker::setStyle):
836         (RenderListMarker::paint):
837         * khtml/rendering/render_list.h:
838         * kwq/KWQPixmap.h:
839         * kwq/KWQPixmap.mm:
840         (QPixmap::QPixmap):
841         (QPixmap::resetAnimation):
842         * kwq/WebCoreImageRenderer.h:
843
844 2005-02-24  Chris Blumenberg  <cblu@apple.com>
845
846         Fixed: <rdar://problem/4020110> Safari crashes in setAllData while taking a www.zoomerang.com survey
847
848         Reviewed by rjw.
849
850         * kwq/KWQResourceLoader.mm:
851         (-[KWQResourceLoader finishJobAndHandle:]): clear the job after we've deleted to avoid reentrancy
852
853 2005-02-24  Darin Adler  <darin@apple.com>
854
855         Reviewed by Vicki.
856
857         - fixed <rdar://problem/4023360> REGRESSION (186-187): image file upload is broken at pep.apple.com
858
859         * khtml/html/html_formimpl.cpp: (DOM::HTMLInputElementImpl::appendFormData): Return true after
860         setting up the form data for an uploaded file. The old code would fall through to the ISINDEX
861         case and send double form data (the filename instead of the file contents the second time).
862
863 2005-02-24  David Harrison  <harrison@apple.com>
864
865         Reviewed by Ken.
866         
867         <rdar://problem/3990849> AX: textMarkerRange for an AXUIElement within an AXWebArea
868
869         * kwq/KWQAccObject.mm:
870         (-[KWQAccObject textMarkerRange]):
871         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
872         (-[KWQAccObject doAXTextMarkerRangeForUIElement:]):
873         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
874         Added AXTextMarkerRangeForUIElement, or you can send textMarkerRange to the UIElement itself.
875
876 2005-02-24  David Harrison  <harrison@apple.com>
877
878         Reviewed by Vicki.
879
880         <rdar://problem/4004279> 3 AXSelectedTextChanged notifications are firing each time I type a character
881
882         * khtml/xml/dom_docimpl.cpp:
883         (DocumentImpl::updateSelection):
884         Send notification only if the selection is not null.  This safely ignores transitory selections set during editing.
885
886 2005-02-24  Darin Adler  <darin@apple.com>
887
888         Reviewed by John.
889
890         - fixed <rdar://problem/3987619> in some cases, text doesn't resize with Format->Style->Bigger/Smaller
891
892         * khtml/editing/htmlediting.cpp:
893         (khtml::ApplyStyleCommand::applyRelativeFontStyleChange): Only call nodeFullySelected for non-text nodes.
894         Text nodes are already split so they're either in the range and full selected or out of the range.
895         And nodeFullySelected doesn't work for text nodes.
896         (khtml::ApplyStyleCommand::nodeFullySelected): Add an assertion, since this function only works for elements,
897         not text nodes.
898         (khtml::ApplyStyleCommand::nodeFullyUnselected): Ditto.
899
900         - make big improvement in <rdar://problem/3953636> Mail hung for ~10sec changing font of 84328 characters: khtml::ApplyStyleCommand::nodeFullySelected
901
902         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::compareBoundaryPoints): Improve algorithm based on suggestion
903         from Nate Begeman.
904
905         - fixed <rdar://problem/4020305> REGRESSION (185-186): loading image in new window using document.write fails
906
907         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::open): If there is no parent document, don't blow away the base URL.
908
909         - fixed <rdar://problem/4021701> REGRESSION (188-188+): form not submitted after pressing <return> at http://hrweb.apple.com
910         
911         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::dispatchMouseEvent): Send activate event in the case where the event
912         sent is a KHTML_CLICK_EVENT, not CLICK_EVENT.
913
914 2005-02-23  Kevin Decker  <kdecker@apple.com>
915
916         Reviewed by mjs  
917         
918         Fixed <rdar://problem/4020747> REGRESSION: stray </applet> tags crash Safari
919
920         * khtml/html/htmlparser.cpp:
921         (KHTMLParser::processCloseTag):  Made a typesafe check that prevents crashes
922         whenever there is a closing applet tag without an actual <applet> in the first place. 
923         Now verifies the current token is ID_APPLET before casting it to an HTMLAppletElementImpl.
924          
925
926 2005-02-23  Ken Kocienda  <kocienda@apple.com>
927
928         Reviewed by John
929
930         Fix for this bug:
931         
932         <rdar://problem/3977962> font loses bold style after pasting next to existing text and pressing return
933
934         * khtml/editing/htmlediting.cpp:
935         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): Problem here was
936         that we were doing work in cases where we should not, and content whose style would have
937         been correct if we had done nothing was getting clobbered. It turns out that extra work
938         to apply style to the new paragraph added in this command only needs to be done if we're 
939         at the boundaries of a paragraph. Otherwise, content that is moved as part of the work 
940         of the command will lend their styles to the new paragraph without any extra work needed.
941         So, make this position check and return unless at a paragraph boundary.
942
943         New test:
944
945         * layout-tests/editing/style/block-styles-007-expected.txt
946         * layout-tests/editing/style/block-styles-007.html
947
948 2005-02-23  Ken Kocienda  <kocienda@apple.com>
949
950         Reviewed by Hyatt
951
952         Fix for this bug:
953         
954         <rdar://problem/4017641> REGRESSION (Mail): you can only bold/unbold a selection starting from end of line once
955
956         Problem is with the way we figure out whether to add or remove a style based on
957         the current selection. In this case, the code is looking at the end of the
958         previous line, which is not bold, and deduces incorrectly that the operation is
959         a "make bold". Then the style code runs to make bold, but there is nothing on
960         the end of the previous line to embolden, so we get into a cycle where the same
961         thing happens each time cmd-b is hit.
962
963         * khtml/khtml_part.cpp:
964         (KHTMLPart::selectionComputedStyle):  Call editingStartPosition() to get the right position for the font determination.
965         * khtml/xml/dom2_rangeimpl.cpp:
966         (DOM::RangeImpl::editingStartPosition): New helper function that "does the right thing" based on whether the
967         selection is a caret or a range, moving upstream for the former, and downstream for the latter.
968         * khtml/xml/dom2_rangeimpl.h:
969         * kwq/KWQKHTMLPart.mm:
970         (KWQKHTMLPart::fontForSelection): Call editingStartPosition() to get the right position for the font determination.
971
972         New tests:
973
974         * layout-tests/editing/style/style-boundary-001-expected.txt
975         * layout-tests/editing/style/style-boundary-001.html
976         * layout-tests/editing/style/style-boundary-002-expected.txt
977         * layout-tests/editing/style/style-boundary-002.html
978         * layout-tests/editing/style/style-boundary-003-expected.txt
979         * layout-tests/editing/style/style-boundary-003.html
980         * layout-tests/editing/style/style-boundary-004-expected.txt
981         * layout-tests/editing/style/style-boundary-004.html
982
983 2005-02-23  Richard Williamson   <rjw@apple.com>
984
985         Fixed <rdar://problem/3985579> 8A367: Dashboard: Stock widget not visible when click remove to remove single char ticker symbol
986
987         Explicitly remove scroll bar views when removing them from 
988         the overflow.
989
990         Don't paint synchronously when the scroll position changes,
991         this caused funky clip problems.
992
993         Reviewed by Hyatt.
994
995         * khtml/rendering/render_layer.cpp:
996         (RenderLayer::scrollToOffset):
997         (RenderLayer::setHasHorizontalScrollbar):
998         (RenderLayer::setHasVerticalScrollbar):
999         (RenderLayer::updateScrollInfoAfterLayout):
1000
1001 2005-02-23  Ken Kocienda  <kocienda@apple.com>
1002
1003         Reviewed by Hyatt
1004
1005         Fix for this bug:
1006         
1007         <rdar://problem/3959996> REGRESSION (Mail): cursor moves to beginning of document when click is past end
1008
1009         * khtml/rendering/render_block.cpp:
1010         (khtml::RenderBlock::positionForCoordinates): Skip blocks that are invisible or have no height when 
1011         looking for a child to pass off to. And save away the last visible block with a height to pass off
1012         to if there is no child at the right y-coordinate.
1013
1014 2005-02-23  David Harrison  <harrison@apple.com>
1015
1016         Reviewed by Darin.
1017
1018         <rdar://problem/4010059> BoundsForTextMarkerRange does not update with scrolled web area
1019
1020         * kwq/KWQAccObject.mm:
1021         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
1022         Adjust for scrolling.
1023
1024 2005-02-22  Maciej Stachowiak  <mjs@apple.com>
1025
1026         Reviewed by Ken.
1027
1028         <rdar://problem/3949790> hitting return after pasted styled line results in extra content getting the style
1029         
1030         * khtml/editing/htmlediting.cpp:
1031         (khtml::InsertParagraphSeparatorCommand::doApply): In the case
1032         where the start block is the root, insert the newly created DIV at
1033         the end of the root block instead of after the last sibling in the
1034         start node, since the start node could be inside other
1035         style-affecting nodes and we don't want to reparent its cousins
1036         into that.
1037
1038 2005-02-23  David Harrison  <harrison@apple.com>
1039
1040         Reviewed by Vicki.
1041
1042         <rdar://problem/4014691> switch to correctly spelled NSAccessibilityForegroundColorTextAttribute constant
1043         
1044         Also removed two older, now unneeded, wrappers.
1045
1046         * kwq/KWQAccObject.mm:
1047         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
1048         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
1049         Removed these older, now unneeded, wrappers.
1050         
1051         (NSAccessibilityForegroundColorTextAttributeWrapper):
1052         New wrapper for NSAccessibilityForegroundColorTextAttribute.
1053         
1054         (AXAttributeStringSetStyle):
1055         Use NSAccessibilityForegroundColorTextAttributeWrapper.
1056         
1057         (-[KWQAccObject doAXTextMarkerRangeForUnorderedTextMarkers:]):
1058         Remove uses of visiblePositionForStartOfTextMarkerRange and visiblePositionForEndOfTextMarkerRange.
1059
1060 2005-02-23  David Harrison  <harrison@apple.com>
1061
1062         Reviewed by Vicki.
1063
1064         <rdar://problem/3524784> AX hit test doesn't return info when done in empty space of content area
1065
1066         * kwq/KWQAccObject.mm:
1067         (-[KWQAccObject accessibilityHitTest:]):
1068         Return unignored object.
1069
1070 2005-02-23  Darin Adler  <darin@apple.com>
1071
1072         Reviewed by Ken.
1073
1074         - fixed <rdar://problem/4006509> REGRESSION (171-172): Setting CSS -khtml-user-modify property triggers crash
1075
1076         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::applyProperty):
1077         Removed the code that changes the style of the element. This was never needed, and caused the
1078         style to be modified while we were iterating it.
1079
1080 2005-02-23  Ken Kocienda  <kocienda@apple.com>
1081
1082         Reviewed by John
1083
1084         Fix for this bug:
1085         
1086         <rdar://problem/3980209> Mail crashed when I pressed Cmd-Shift-[ (nil-deref in ApplyStyleCommand::addBlockStyleIfNeeded)
1087
1088         * khtml/editing/htmlediting.cpp:
1089         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Reordered the new block
1090         insertion so that it come before the move. The logic stays exactly the same, however, with the old
1091         ordering, the new block could want to become a child of itself come insertion time. I considered
1092         making a more complicated code change to fix this problem, but the simple reordering works just
1093         as well, and seems less risky.
1094         
1095         These all changed in an insignificant way. It seems that with the new code, some empty text nodes
1096         got reordered in the document. This has no effect on anything visible to the user.
1097         
1098         * layout-tests/editing/style/create-block-for-style-003-expected.txt
1099         * layout-tests/editing/style/create-block-for-style-004-expected.txt
1100         * layout-tests/editing/style/create-block-for-style-009-expected.txt
1101         * layout-tests/editing/style/create-block-for-style-011-expected.txt
1102         * layout-tests/editing/style/create-block-for-style-013-expected.txt
1103
1104 2005-02-23  Darin Adler  <darin@apple.com>
1105
1106         Reviewed by John.
1107
1108         - fixed <rdar://problem/4013986> REGRESSION (173-174): onclick event not sent when mouse click on checkbox is double-click
1109
1110         We need to send an onclick event *and* an ondblclick event when we process a double click.
1111
1112         * khtml/khtmlview.cpp: (KHTMLView::dispatchMouseEvent): In the case where we're sending a CLICK_EVENT,
1113         follow it by a KHTML_CLICK_EVENT, a KHTML_DBLCLICK_EVENT when handling a double click, and a DOMACTIVATE_EVENT.
1114         We no longer do the DOMACTIVATE_EVENT in dispatchGenericEvent.
1115         * khtml/rendering/render_form.cpp: (RenderFormElement::slotClicked): send only CLICK_EVENT here, and
1116         lets dispatchMouseEvent deal with the other subsequent events.
1117         * khtml/xml/dom_nodeimpl.cpp:
1118         (NodeImpl::dispatchGenericEvent): Remove the code that sends a DOMACTIVATE_EVENT, since there's no longer
1119         a good way to figure out if this is the last event that should be sent before it is.
1120         (NodeImpl::dispatchMouseEvent): Set the meta key modifier here (as it already is set elsewhere), and
1121         follow up a CLICK_EVENT with KHTML_CLICK_EVENT, a KHTML_DBLCLICK_EVENT, and DOMACTIVATE_EVENT as above.
1122
1123 2005-02-23  Darin Adler  <darin@apple.com>
1124
1125         Reviewed by John.
1126
1127         - fixed <rdar://problem/4011405> REGRESSION (180-181): Unconfirmed text disappears when text focus moves
1128
1129         The key was to change things around so that we don't push text from the DOM to the widget
1130         unless the DOM has actually been changed. This prevents the code path that wipes out inline input
1131         during the blur process.
1132
1133         * khtml/html/html_formimpl.cpp:
1134         (DOM::HTMLInputElementImpl::HTMLInputElementImpl): Start m_valueMatchesRenderer as false.
1135         (DOM::HTMLInputElementImpl::parseHTMLAttribute): Set m_valueMatchesRenderer to false when a
1136         new value is set here.
1137         (DOM::HTMLInputElementImpl::setValue): Set m_valueMatchesRenderer to false when a new value
1138         is set here.
1139         (DOM::HTMLInputElementImpl::setValueFromRenderer): Added. Sets m_value, sets m_valueMatchesRenderer
1140         to true, and also sends out the input event. It's better to have this here than in the renderer code.
1141         (DOM::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl): Start m_valueIsValid as false (replaces
1142         m_dirtyvalue) and m_valueMatchesRenderer as false.
1143         (DOM::HTMLTextAreaElementImpl::updateValue): Added. Factored this out from the value function. Uses
1144         the new booleans and keeps them up to date, specifically setting m_valueMatchesRenderer based on
1145         where the value came from.
1146         (DOM::HTMLTextAreaElementImpl::value): Updated to call updateValue to do most of the work.
1147         (DOM::HTMLTextAreaElementImpl::setValue): Set both m_valueIsValid and m_valueMatchesRenderer.
1148         (DOM::HTMLTextAreaElementImpl::setDefaultValue): Take parameter by reference.
1149
1150         * khtml/html/html_formimpl.h: Added setValueFromRenderer, valueMatchesRenderer, setValueMatchesRenderer,
1151         and m_valueMatchesRenderer to input element. For textarea element, made some parameters pass DOMString
1152         by reference, and added invalidateValue, updateValue, valueMatchesRenderer, and setValueMatchesRenderer.
1153
1154         * khtml/rendering/render_form.cpp:
1155         (RenderLineEdit::updateFromElement): Don't re-get the value from the DOM if valueMatchesRenderer
1156         is true.
1157         (RenderLineEdit::slotTextChanged): Call setValueFromRenderer instead of manipulating the DOM
1158         directly.
1159         (RenderTextArea::detach): Call updateValue instead of calling value for its side effect.
1160         (RenderTextArea::handleFocusOut): Ditto.
1161         (RenderTextArea::updateFromElement): Call updateValue and then not re-get the value from the
1162         DOM if valueMatchesRenderer is true.
1163         (RenderTextArea::slotTextChanged): Call invalidateValue instead of directly setting m_dirtyvalue to true.
1164
1165 2005-02-22  Richard Williamson   <rjw@apple.com>
1166
1167         Fixed <rdar://problem/3937203> when a div adds a scrollbar (overflow:auto) we do not get regions
1168
1169         Just set dashboard dirty bit when overflow scrolling changes.
1170
1171         Don't do comparison of regions in before scroll regions are
1172         added, instead do it in WebKit after automatic scroll regions
1173         are added.
1174
1175         Reviewed by Maciej.
1176
1177         * khtml/css/cssparser.cpp:
1178         (CSSParser::parseDashboardRegions):  Cleaned up comments
1179         * khtml/css/cssstyleselector.cpp:
1180         (khtml::CSSStyleSelector::styleForElement): Cleaned up comments
1181
1182         * khtml/khtmlview.cpp:
1183         (KHTMLView::updateDashboardRegions):
1184         * khtml/rendering/render_layer.cpp:
1185         (RenderLayer::updateScrollInfoAfterLayout):
1186         * kwq/WebDashboardRegion.m:
1187         (-[WebDashboardRegion isEqual:]):
1188
1189 2005-02-22  Chris Blumenberg  <cblu@apple.com>
1190
1191         Fixed: <rdar://problem/3976872> Pasted plain text doesn't get the proper style if pasted into newlines
1192
1193         Reviewed by mjs.
1194
1195         * khtml/editing/htmlediting.cpp:
1196         (khtml::ReplaceSelectionCommand::doApply): don't clear the typing style when matching style
1197         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): apply the typing style when matching style
1198         * khtml/editing/jsediting.cpp:
1199         * khtml/khtml_part.cpp:
1200         (KHTMLPart::pasteAndMatchStyle): new
1201         * khtml/khtml_part.h:
1202         * kwq/KWQKHTMLPart.h:
1203         * kwq/KWQKHTMLPart.mm:
1204         (KWQKHTMLPart::issuePasteAndMatchStyleCommand): new
1205         * kwq/WebCoreBridge.h:
1206         * layout-tests/editing/editing.js:
1207
1208 2005-02-22  Darin Adler  <darin@apple.com>
1209
1210         Reviewed by Adele.
1211
1212         - fixed <rdar://problem/4006596> REGRESSION (183-184): crash in DOM::DocumentImpl::setFocusNode(DOM::NodeImpl*)
1213
1214         * khtml/xml/dom_docimpl.cpp:
1215         (widgetForNode): Added helper.
1216         (DocumentImpl::setFocusNode): Re-get the widget for the node after calling updateLayout.
1217         The updateLayout can destroy the old widget, so we can't keep a stale widget pointer around.
1218
1219 2005-02-22  Ken Kocienda  <kocienda@apple.com>
1220
1221         Reviewed by Hyatt
1222
1223         Fix for this bug:
1224         
1225         <rdar://problem/4003463> Mail.app HTML uses inline styling markup not understood by Entourage and Eudora
1226
1227         * khtml/editing/htmlediting.cpp:
1228         (khtml::isEmptyFontTag): Helper for removing <font> tags.
1229         (khtml::StyleChange::styleModeForParseMode): Helper to map a document parse mode to a use/don't use
1230         legacy-html-styles value.
1231         (khtml::StyleChange::checkForLegacyHTMLStyleChange): Add support for colors, font faces, and font sizes.
1232         (khtml::ApplyStyleCommand::isHTMLStyleNode):
1233         (khtml::ApplyStyleCommand::removeHTMLFontStyle):
1234         (khtml::ApplyStyleCommand::applyTextDecorationStyle): Now call styleModeForParseMode to determine
1235         whether to use legacy html styles or not.
1236         (khtml::ApplyStyleCommand::removeInlineStyle): Now properly removes <font> styles.
1237         (khtml::ApplyStyleCommand::addBlockStyleIfNeeded): Ditto.
1238         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): Ditto.
1239         (khtml::createFontElement): Helper for applying <font> elements.
1240         * khtml/editing/htmlediting.h: All the following support the new bits of data we need to store.
1241         (khtml::StyleChange::applyFontColor)
1242         (khtml::StyleChange::applyFontFace)
1243         (khtml::StyleChange::applyFontSize)
1244         (khtml::StyleChange::fontColor)
1245         (khtml::StyleChange::fontFace)
1246         (khtml::StyleChange::fontSize)
1247
1248         Test results updated now that we will write out <font> tags for quirks mode documents.        
1249         
1250         * layout-tests/editing/execCommand/modifyForeColorByCharacter-expected.txt
1251         * layout-tests/editing/style/block-style-004-expected.txt
1252         * layout-tests/editing/editing/pasteboard/paste-text-011-expected.txt
1253         * layout-tests/editing/style/block-style-005-expected.txt
1254         * layout-tests/editing/style/block-style-006-expected.txt
1255         * layout-tests/editing/style/smoosh-styles-001-expected.txt
1256         * layout-tests/editing/style/smoosh-styles-002-expected.txt
1257
1258 2005-02-22  Maciej Stachowiak  <mjs@apple.com>
1259
1260         Reviewed by Kevin.
1261
1262         <rdar://problem/4017066> crash in KJS::ValueImp::dispatchType() every time I load www.nytimes.com/pages/automobiles
1263
1264         When creating option elements, use lowercase "option" instead of
1265         uppercase "OPTION" to create option elements, because only
1266         lowercase works for XHTML.
1267         
1268         * khtml/ecma/kjs_html.cpp:
1269         (KJS::HTMLSelectCollection::tryPut):
1270         (OptionConstructorImp::construct):
1271
1272 2005-02-22  Chris Blumenberg  <cblu@apple.com>
1273
1274         WebCore fix for: <rdar://problem/3918056> Mail not line breaking my <pre> formatted emails on replies
1275         
1276         Mail must 4018993 to fully address the problem.
1277
1278         Reviewed by kocienda.
1279
1280         * khtml/editing/markup.cpp:
1281         (khtml::startMarkup): don't compute style for text in PRE tags
1282         (khtml::createMarkup): include PRE if it is an ancestor of the nodes in the range
1283
1284 2005-02-21  Richard Williamson   <rjw@apple.com>
1285
1286         Fixed <rdar://problem/4008338> REGRESSION (125-178): opacity style not working, breaks fading images on okcupid.com
1287
1288         There was a long standing bug in cssText().  Double value were always cast int!  So,
1289         opacity values values were incorrectly converted to text, i.e. 0.75 became 0.
1290         
1291         The problem was newly triggered because we parse the css for opacity *TWICE*.  This is a result of 
1292         incorrectly "invalidating" the style attribute (from fix for 3790449).  The second parse was from
1293         the cssText() of the style.
1294
1295         Reviewed by Hyatt.
1296
1297         * khtml/css/css_valueimpl.cpp:
1298         (DOM::CSSPrimitiveValueImpl::cssText):
1299
1300 2005-02-21  David Hyatt  <hyatt@apple.com>
1301
1302         Fix for 4017204, apply the same fix to the base class nodeAtPoint that was already applied to RenderBlock.
1303         Skip elements with layers and inline flows.  Demoted <form>s can end up causing trouble otherwise.
1304         
1305         Reviewed by Richard Williamson
1306
1307         * khtml/rendering/render_box.cpp:
1308         (RenderBox::nodeAtPoint):
1309
1310 2005-02-21  David Hyatt  <hyatt@apple.com>
1311
1312         Fix for 4017033, CSS is being parsed twice.  Make sure to always validate the style attribute when it is
1313         initially parsed.  Add code to clean up decls when the style attribute is completely removed.  Add a new
1314         synchronizing boolean that avoids reparsing the style declaration when the attribute is simply
1315         being synced up to the declaration.
1316
1317         Reviewed by John
1318
1319         * khtml/css/css_valueimpl.cpp:
1320         (DOM::CSSMutableStyleDeclarationImpl::setChanged):
1321         * khtml/html/html_elementimpl.cpp:
1322         (HTMLElementImpl::invalidateStyleAttribute):
1323         (HTMLElementImpl::updateStyleAttributeIfNeeded):
1324         (HTMLElementImpl::HTMLElementImpl):
1325         (HTMLElementImpl::~HTMLElementImpl):
1326         (HTMLElementImpl::destroyInlineStyleDecl):
1327         (HTMLElementImpl::mapToEntry):
1328         (HTMLElementImpl::parseHTMLAttribute):
1329         * khtml/html/html_elementimpl.h:
1330         * khtml/xml/dom_elementimpl.cpp:
1331         (ElementImpl::ElementImpl):
1332         (ElementImpl::setAttribute):
1333         * khtml/xml/dom_elementimpl.h:
1334         (DOM::ElementImpl::updateStyleAttributeIfNeeded):
1335
1336 === Safari-188 ===
1337
1338 2005-02-21  Darin Adler  <darin@apple.com>
1339
1340         - fixed Panther deployment build
1341
1342         * kwq/KWQTextEdit.mm: (QTextEdit::setScrollBarModes): Put more stuff inside #if.
1343
1344 2005-02-21  David Harrison  <harrison@apple.com>
1345
1346         Reviewed by Darin.
1347
1348         <rdar://problem/3943090> REGRESSION (Mail): Spelling underline incompletely erased following certain steps
1349
1350         * khtml/rendering/render_text.cpp:
1351         (InlineTextBox::paintMarker):
1352         Make sure underline is placed within the text bounds.
1353         
1354         * kwq/KWQPainter.h:
1355         * kwq/KWQPainter.mm:
1356         (QPainter::misspellingLineThickness):
1357         * kwq/WebCoreTextRenderer.h:
1358         Add misspellingLineThickness for use by InlineTextBox::paintMarker.
1359
1360 2005-02-21  Darin Adler  <darin@apple.com>
1361
1362         Reviewed by John.
1363
1364         - fixed <rdar://problem/4012978> -[DOMRange markupString] crashes when range contains only a text node with a single space
1365
1366         * khtml/editing/markup.cpp: (khtml::createMarkup): Added updateLayout calls, and added a missing
1367         nil check.
1368
1369 2005-02-21  Darin Adler  <darin@apple.com>
1370
1371         Reviewed by John.
1372
1373         - fixed <rdar://problem/4005435> Safari hung while pasting text into a <textarea> (Panther-only)
1374
1375         * kwq/KWQTextEdit.mm: (QTextEdit::setScrollBarModes): Don't setAutohidesScrollers:YES on Panther.
1376
1377 2005-02-21  Ken Kocienda  <kocienda@apple.com>
1378
1379         Reviewed by John
1380
1381         Fix for this bug:
1382         
1383         <rdar://problem/4015499> REGRESSION (186-187): pasted quoted text starting with a blank line increases quote level of pasted text when pasted
1384
1385         * khtml/editing/markup.cpp:
1386         (khtml::markup): Changed over to ASSERT instead of assert.
1387         (khtml::createMarkup): The issue was that the code to add parents all the way back to the common ancestor
1388         block did not check for blocks whose markup had already been added, and could result in adding markup for
1389         nodes twice (hence the additional and erroneous quote level). Now there is a new check that will
1390         only add markup for those nodes before the start of the selection range. This fixes the bug.
1391         (khtml::createFragmentFromMarkup): Changed over to ASSERT instead of assert.
1392         (khtml::createFragmentFromText): Ditto.
1393
1394 2005-02-21  Ken Kocienda  <kocienda@apple.com>
1395
1396         Reviewed by John
1397
1398         Fix for this bug:
1399         
1400         <rdar://problem/4015494> REGRESSION (186-187) <cr> removed if quoted word is copy/pasted on line immediately above quoted text
1401
1402         * khtml/editing/htmlediting.cpp:
1403         (khtml::ReplaceSelectionCommand::doApply): Relatively new check designed to remove a <br> element when
1404         that element was on a line by itself did not do an adequate check for this condition, causing the
1405         failure described in the bug. Fixed.
1406
1407 2005-02-19  Ken Kocienda  <kocienda@apple.com>
1408
1409         Reviewed by Maciej
1410
1411         * khtml/editing/htmlediting.cpp:
1412         (khtml::matchNearestBlockquoteColorString): New function which abstracts away the CSS property we use
1413         for this pseudo-color.
1414         (khtml::ReplacementFragment::removeBlockquoteColorsIfNeeded): Set the new nearestBlockquoteColorString
1415         psuedo-color here, rather than removing colors as was done before.
1416         (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes): Check for the pseudo-color in the desired
1417         style, and determine the real color based on the nearest blockquote (or none) to the node.
1418         (khtml::nearestMailBlockquote): Name change from closestMailBlockquote to match new property better.
1419
1420         All the rest of this change is the mechanical coding you need to do to add a new CSS property, in this
1421         case, -khtml-match-nearest-mail-blockquote-color.
1422
1423         * khtml/css/css_computedstyle.cpp:
1424         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue)
1425         * khtml/css/cssparser.cpp:
1426         (CSSParser::parseValue):
1427         * khtml/css/cssproperties.c:
1428         (hash_prop):
1429         (findProp):
1430         * khtml/css/cssproperties.h:
1431         * khtml/css/cssproperties.in:
1432         * khtml/css/cssstyleselector.cpp:
1433         (khtml::CSSStyleSelector::applyProperty)
1434         * khtml/css/cssvalues.c:
1435         (findValue)
1436         * khtml/css/cssvalues.h:
1437         * khtml/css/cssvalues.in:
1438         * khtml/rendering/render_style.h:
1439         (khtml::RenderStyle::matchNearestMailBlockquoteColor)
1440         (khtml::RenderStyle::setMatchNearestMailBlockquoteColor)
1441         (khtml::RenderStyle::initialMatchNearestMailBlockquoteColor)
1442
1443 2005-02-19  Ken Kocienda  <kocienda@apple.com>
1444
1445         Reviewed by Chris
1446
1447         Fix for these bugs:
1448         
1449         <rdar://problem/4014228> REGRESSION (186-187) extra, uneditable lines inserted above and below a line of pasted quoted text
1450         <rdar://problem/4014393> REGRESSION (186-187) pasted quoted text gets extra <cr>s when pasted at top of document
1451
1452         * khtml/editing/htmlediting.cpp:
1453         (khtml::ReplacementFragment::ReplacementFragment): Part of a general refactoring of how
1454         the fragment is inserted into the document, rendered, and then tested for certain
1455         important pieces of information that are required for pasting.
1456         (khtml::ReplacementFragment::insertFragmentForTestRendering): New helper. Handles inserting
1457         the fragment nodes into the document.
1458         (khtml::ReplacementFragment::restoreTestRenderingNodesToFragment): Removes nodes from the
1459         document, and restores them to the fragment.
1460         (khtml::ReplacementFragment::computeStylesUsingTestRendering): Factored out code that
1461         did this before into its own function.
1462         (khtml::ReplacementFragment::removeUnrenderedNodesUsingTestRendering): Ditto.
1463         (khtml::ReplacementFragment::countRenderedBlocks): This is a real improvement, as it
1464         eliminates a major use of the isProbablyBlock() function. Now, the blocks that are
1465         counted are real, rendered blocks.
1466         (khtml::ReplacementFragment::removeStyleNodes): Made this function retain margin-zeroing
1467         CSS properties on paragraphs. This does two things: 1) It helps us to maintain good behavior
1468         in the short term while there are still versions of Mail out there that use <p> elements
1469         instead of <div> elements for new paragraphs; and 2) It will help to maintain the compatibility
1470         with other mail clients that use <p> elements for their paragraphs but render them themselves
1471         with no margins as the result of quirks.
1472         (khtml::ReplaceSelectionCommand::doApply): Do some work to fix up and improve the handling
1473         of blank lines, be they <p> elements or <br> elements, that can be removed after pasting. This, 
1474         coupled with the refactoring, fixes 4014393.
1475         * khtml/editing/htmlediting.h: Updated for new functions.
1476         * layout-tests/editing/pasteboard/paste-text-010-expected.txt: Updated results, actually improved with this change.
1477         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: Ditto.
1478
1479 2005-02-19  Kevin Decker  <kdecker@apple.com>
1480
1481         Reviewed by Chris.
1482
1483         Fixed <rdar://problem/4010765> Flash player can be used to arbitrarily open popup windows without user permission
1484         
1485         Our window.open() policy is to refuse the <script>window.open(...)</script> case and allow the inline the <a href="javascript:window.open('foo')> case.  Clever advertisers at some point realized that by executing their Javascript through the Flash plugin, Safari would always treat their code as the inline case, and thus, they were able to work around our popup blocker.
1486
1487         * kwq/WebCoreBridge.h:
1488         * kwq/WebCoreBridge.mm:
1489         (-[WebCoreBridge stringByEvaluatingJavaScriptFromString:]): Changed this to invoke the new stringByEvaluatingJavaScriptFromString:forceUserGesture method below.
1490         (-[WebCoreBridge stringByEvaluatingJavaScriptFromString:forceUserGesture:]): Let the WebKit make the determination if this was a user originated gesture or not; we must no longer assume this is always the case.
1491
1492 2005-02-18  Chris Blumenberg  <cblu@apple.com>
1493         
1494         Fixed: <rdar://problem/3951196> REGRESSION (Mail): too many levels of reply quotes after certain steps
1495
1496         Reviewed by kocienda.
1497
1498         * khtml/editing/htmlediting.cpp:
1499         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
1500         - If we find a new start node, update topBlockquote so we don't use too many block quotes for the contents following the new line.
1501         - Build up the list of ancestors after we've determined the actual topBlockquote.
1502         - Don't insert an extra new line if there is a new start node.
1503
1504 2005-02-19  Chris Blumenberg  <cblu@apple.com>
1505
1506         Fixed: <rdar://problem/3978461> smart paste is broken
1507
1508         Reviewed by kevin.
1509
1510         * khtml/editing/htmlediting.cpp:
1511         (khtml::ReplaceSelectionCommand::doApply): properly check for leading and trailing whitespace. These checks were incorrectly reversed. Also check if we're pasting at the beginning or end of a line. We should not insert spaces in either case.
1512
1513 2005-02-18  Adele Amchan  <adele@apple.com>
1514
1515         Reviewed by Darin.
1516
1517         Fix for <rdar://problem/3975568> REGRESSION(125-180)Australian Open pages have drawing problem
1518
1519         This patch fixes two problems caused by our added support for custom tags.  First, the layout problem at the sites mentioned in the bug
1520         was caused by custom tags within tables.  In checkChild, we needed to treat these tags as spans so they get placed correctly in the DOM tree.
1521         Also, we were indexing the tagPriority and endTag arrays with id values from the custom tags that were greater than the size of the array.  So now 
1522         we have functions to check for the custom tags, and again, treat them as spans.  To avoid confusion, we changed the names of the arrays to
1523         endTagArray and tagPriorityArray.
1524
1525         * khtml/html/dtd.h: changed all uses of the endTag array to endTagArray for our new wrapper functions
1526         (DOM::tagPriority): added function to check array bounds and to treat custom tags as spans
1527         (DOM::endTagRequirement): added function to check array bounds and to treat custom tags as spans
1528         * khtml/html/dtd.cpp: changed name of endTag and tagPriority arrays to endTagArray and tagPriorityArray
1529         (DOM::checkChild): treat custom tags as spans during this check
1530         * khtml/html/html_elementimpl.cpp: changed all uses of the endTag array to the endTagRequirement function
1531         (HTMLElementImpl::createContextualFragment):
1532         (HTMLElementImpl::setInnerText):
1533         (HTMLElementImpl::setOuterText):
1534         (HTMLElementImpl::toString):
1535         * khtml/html/htmlparser.cpp: changed all uses of the endTag array to the endTagRequirement function and all uses of the tagPriority array to the tagPriority function.
1536         (KHTMLParser::parseToken):
1537         (KHTMLParser::insertNode):
1538         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): changed all uses of the endTag array to the endTagRequirement function
1539        * khtml/editing/markup.cpp: changed all uses of the endTag array to the endTagRequirement function
1540         (khtml::endMarkup): 
1541         (khtml::markup):
1542
1543 2005-02-18  Jens Alfke  <jens@apple.com>
1544
1545         Reviewed by Hyatt.
1546
1547         Fixed build: Whoops, setNeedsLayout's parameter is NOT optional.
1548
1549         * khtml/html/html_objectimpl.cpp:
1550         (HTMLAppletElementImpl::setAllParamsAvailable):
1551
1552 2005-02-18  Jens Alfke  <jens@apple.com>
1553
1554         Reviewed by cblu, hyatt.
1555
1556         Fixes <rdar://problem/3603191> "REGRESSION: Applets not receiving all of the Applet Parameters in Java 1.4.1/1.4.2"
1557         Defer instantiation of Java applet plugin until after all of the <applet> tag's nested <param> tags have been parsed, otherwise the list of parameters passed to the applet is incomplete. The regression was introduced (says Dave) when the parser's close-tag notifications were removed in the name of performance.
1558
1559         * khtml/html/html_objectimpl.cpp:
1560         (HTMLAppletElementImpl::HTMLAppletElementImpl):
1561         (HTMLAppletElementImpl::getAppletInstance):
1562         (HTMLAppletElementImpl::setAllParamsAvailable):
1563         (HTMLAppletElementImpl::allParamsAvailable):
1564         * khtml/html/html_objectimpl.h:
1565         * khtml/html/htmlparser.cpp:
1566         (KHTMLParser::processCloseTag):
1567         * khtml/rendering/render_applet.cpp:
1568         (RenderApplet::createWidgetIfNecessary):
1569
1570 2005-02-18  Richard Williamson   <rjw@apple.com>
1571
1572         Fixed <rdar://problem/4006161> Tiger8A380: Widgets leak dashboard regions
1573         
1574         We were leaking the DashboardRegionImpls.
1575
1576         Reviewed by Kevin.
1577
1578         * khtml/css/css_valueimpl.cpp:
1579         (DOM::CSSPrimitiveValueImpl::cleanup):
1580
1581 2005-02-18  Chris Blumenberg  <cblu@apple.com>
1582
1583         Fixed: <rdar://problem/3945271> REGRESSION (Mail): pasted plain text should pick up typing style instead of being unstyled
1584
1585         Reviewed by kocienda.
1586
1587         * khtml/editing/htmlediting.cpp:
1588         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): don't set class on element returned by createStyleSpanElement since that's already done
1589         (khtml::ReplacementFragment::ReplacementFragment): take matchStyle param, don't call computeStylesAndRemoveUnrendered() if !matchStyle
1590         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): take matchStyle param
1591         (khtml::ReplaceSelectionCommand::doApply): if m_matchStyle, use selection.start() as the insertion position and don't call applyStyleToInsertedNodes()
1592         * khtml/editing/htmlediting.h:
1593         * kwq/WebCoreBridge.h:
1594         * kwq/WebCoreBridge.mm:
1595         (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]): take matchStyle param and pass it
1596         (-[WebCoreBridge replaceSelectionWithNode:selectReplacement:smartReplace:]): pass NO for matchStyle
1597         (-[WebCoreBridge replaceSelectionWithMarkupString:baseURLString:selectReplacement:smartReplace:]): pass NO for matchStyle
1598         (-[WebCoreBridge replaceSelectionWithText:selectReplacement:smartReplace:]): pass YES for matchStyle
1599
1600 2005-02-18  Ken Kocienda  <kocienda@apple.com>
1601
1602         Reviewed by Chris
1603
1604         Fix for these bugs:
1605         
1606         <rdar://problem/4013025> Copy/Paste of quoted word results in removal of any following <cr>
1607         <rdar://problem/4013100> Copy/Paste quoted text and then decrease quote level does not change text color
1608
1609         For the most part, these bugs were caused by errors and lack of foresight on my part when
1610         I added the better paste code. Chalk these fixes up to the result of bake time.
1611
1612         * khtml/editing/htmlediting.cpp:
1613         (khtml::ReplacementFragment::ReplacementFragment): Need to move count of number of blocks in
1614         fragment after the call to remove unrendered nodes. Meant to do this before, but forgot to.
1615         (khtml::ReplacementFragment::removeStyleNodes): Need to remove inline styles from elements!
1616         Terrible omission now fixed.
1617         (khtml::ReplacementFragment::removeBlockquoteColorsIfNeeded): Remove blockquote colors for now.
1618         Code has a more extensive comment in it now to explain the difficulty, and the need for more
1619         study and changes.
1620         (khtml::ReplaceSelectionCommand::doApply): Need to call applyStyleToInsertedNodes() in the 
1621         m_fragment.hasInterchangeNewline() case. This was just missed before.
1622         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: Updated results, subtly different, but OK.
1623         * layout-tests/editing/pasteboard/paste-text-017-expected.txt: Updated for <p> to <div> change in test content.
1624         * layout-tests/editing/pasteboard/paste-text-017.html: Needed to change <p> to <div> to 
1625         make this test go with the new design of using <div> tags for default paragraphs.
1626
1627 2005-02-18  David Hyatt  <hyatt@apple.com>
1628
1629         Fix for 3974263 (and possibly others).  Don't let fixed tables use maxint as their maxwidth when some
1630         cells have percentage values.
1631         
1632         Reviewed by kocienda
1633
1634         * khtml/misc/arena.cpp:
1635         (ArenaAllocate):
1636         * khtml/rendering/table_layout.cpp:
1637         (FixedTableLayout::calcWidthArray):
1638         (FixedTableLayout::calcMinMaxWidth):
1639         (AutoTableLayout::layout):
1640
1641 2005-02-17  Darin Adler  <darin@apple.com>
1642
1643         Reviewed by Kevin.
1644
1645         - fixed <rdar://problem/3998627> WebKit crashes when deleting text in a modified div
1646
1647         * khtml/khtml_part.cpp: (KHTMLPart::selectionComputedStyle): Add a ref and deref to keep
1648         the element alive until it's added to the DOM tree.
1649         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::styleForSelectionStart): Ditto.
1650
1651 2005-02-17  Richard Williamson   <rjw@apple.com>
1652
1653         Fixed <rdar://problem/3999467> when Osaka-Mono is specified as fixed width font, Osaka used instead
1654
1655         Fixed w/o introducing a performance regression.  Add early
1656         check for Osaka-Mono to avoid expensive call into WebKit.
1657
1658         Reviewed by Vicki.
1659
1660         * kwq/KWQFont.mm:
1661         (QFont::isFixedPitch):
1662
1663 2005-02-17  Darin Adler  <darin@apple.com>
1664
1665         Reviewed by Kevin.
1666
1667         - fixed <rdar://problem/4011210> REGRESSION (180-181): Maxlength property for INPUT object not working
1668
1669         * kwq/KWQTextField.mm:
1670         (-[KWQTextField textView:shouldChangeTextInRange:replacementString:]): If controller returns
1671         YES, go on to call super, since super does the text formatter handling, which we need.
1672         (-[KWQSecureTextField textView:shouldChangeTextInRange:replacementString:]): Ditto.
1673         (-[KWQSearchField textView:shouldChangeTextInRange:replacementString:]): Ditto.
1674
1675 === Safari-187 ===
1676
1677 2005-02-17  Ken Kocienda  <kocienda@apple.com>
1678
1679         Reviewed by Hyatt
1680
1681         Fix for this bug:
1682         
1683         <rdar://problem/4012058> Copy from quoted text and paste results in blue text
1684
1685         The relatively-new paste code tries hard to retain style of the content from the
1686         source location. However, in the case of quoted material in mail messages, we do 
1687         not want to carry the quoting color along. This fixes the problem by factoring
1688         out such colors.
1689
1690         * khtml/editing/htmlediting.cpp:
1691         (khtml::ReplacementFragment::computeStylesAndRemoveUnrendered): Now calls removeBlockquoteColorsIfNeeded()
1692         to fix bug.
1693         (khtml::ReplacementFragment::removeBlockquoteColorsIfNeeded): New function. Factors out colors that are
1694         the result of text being quoted. 
1695         (khtml::isNodeRendered): Function moved in file. No other change.
1696         (khtml::isProbablyBlock): Function moved in file. No other change.
1697         (khtml::closestMailBlockquote): New function. Helps fix bug.
1698         (khtml::isMailBlockquote): Function moved to be free-floating instead of being a 
1699         member of CompositeEditCommand. No other change.
1700         * khtml/editing/htmlediting.h: Moved around some functions. Added removeBlockquoteColorsIfNeeded().
1701         * khtml/editing/markup.cpp: Remove redundant static implementation of isMailBlockquote.
1702
1703 2005-02-17  Richard Williamson   <rjw@apple.com>
1704
1705         Fixed <rdar://problem/4008163> dynamic support for -apple-dashboard-region is flakey
1706
1707         Style operator== wasn't including regions.
1708
1709         Reviewed by Darin.
1710
1711         * khtml/rendering/render_style.cpp:
1712         (StyleCSS3NonInheritedData::operator==):
1713
1714 2005-02-17  Adele Amchan  <adele@apple.com>
1715
1716         Reviewed by Chris.
1717
1718         fix for <rdar://problem/4010028> 8A383: Safari v185 crash loading united.com multi city fare finder page.
1719
1720         * khtml/dom/dom_string.cpp: (DOM::DOMString::operator += ): prevent nil dereference when DOMString being added is nil
1721
1722 2005-02-17  Jens Alfke  <jens@apple.com>
1723
1724         Reviewed by Hyatt.
1725
1726         Fix for rdar://3963151 "Mail only pasted ~950 of 1407 text lines into my message!"
1727         Force tokenizer to run synchronously while parsing document fragments, so it doesn't stop halfway through and cause truncated content.
1728
1729         * khtml/html/html_elementimpl.cpp:
1730         (HTMLElementImpl::createContextualFragment):
1731         * khtml/html/htmltokenizer.cpp:
1732         (khtml::HTMLTokenizer::reset):
1733         (khtml::HTMLTokenizer::begin):
1734         (khtml::HTMLTokenizer::setForceSynchronous):
1735         (khtml::HTMLTokenizer::continueProcessing):
1736         * khtml/html/htmltokenizer.h:
1737
1738 2005-02-17  Ken Kocienda  <kocienda@apple.com>
1739
1740         Reviewed by Hyatt
1741
1742         Fix for this bug:
1743         
1744         <rdar://problem/3982183> Mail's HTML paragraphs appear with unintended margins in Entourage and Eudora
1745
1746         * khtml/editing/htmlediting.cpp:
1747         (khtml::createDefaultParagraphElement): Change element we make from <p> to <div>.
1748         This fixes the problem, as these other mailers show <div> elements without margins.
1749         
1750         Some test files needed to change to preserve the ability to "eyeball" the results.
1751         Many others changed just because their <p> elements changed to <div> elements.
1752         
1753         * layout-tests/editing/deleting/delete-3928305-fix-expected.txt
1754         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt
1755         * layout-tests/editing/inserting/insert-div-013-expected.txt
1756         * layout-tests/editing/inserting/insert-div-013.html
1757         * layout-tests/editing/inserting/insert-div-014-expected.txt
1758         * layout-tests/editing/inserting/insert-div-014.html
1759         * layout-tests/editing/inserting/insert-div-018-expected.txt
1760         * layout-tests/editing/inserting/insert-div-018.html
1761         * layout-tests/editing/inserting/insert-div-019-expected.txt
1762         * layout-tests/editing/inserting/insert-div-019.html
1763         * layout-tests/editing/inserting/insert-div-020-expected.txt
1764         * layout-tests/editing/inserting/insert-div-020.html
1765         * layout-tests/editing/inserting/insert-div-021-expected.txt
1766         * layout-tests/editing/inserting/insert-div-021.html
1767         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt
1768         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt
1769         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt
1770         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt
1771
1772 2005-02-17  Ken Kocienda  <kocienda@apple.com>
1773
1774         Reviewed by Hyatt
1775
1776         Fix for this bug:
1777         
1778         <rdar://problem/3996737> REGRESSION (Mail): Copy/paste in Mail inserts returns
1779
1780         The root cause of the problem is that a couple of pieces of code in AppKit and Mail 
1781         insert newlines into markup as it is generated, and the paste code in WebCore was 
1782         not smart about nodes that do not render (as is the case with these added newlines). 
1783         So, the solution is to remove these unrendered nodes in the paste code in a pre-pass. 
1784         Fortunately, my recent addition of such a pass to the paste code to handle styles 
1785         gave me a convenient place to put this new logic.
1786
1787         * khtml/editing/htmlediting.cpp:
1788         (khtml::ReplacementFragment::ReplacementFragment): Use new name for function below.
1789         (khtml::ReplacementFragment::computeStylesAndRemoveUnrendered): Name change from computeStylesForNodes().
1790         Now does the additional work of removing unrendered nodes, as mentioned above.
1791         (khtml::isNodeRendered): New helper function.
1792         * khtml/editing/htmlediting.h: Updated as necessary.
1793
1794 2005-02-17  Ken Kocienda  <kocienda@apple.com>
1795
1796         Reviewed by Hyatt
1797
1798         Fix for this bug:
1799         
1800         <rdar://problem/3998892> REGRESSION (Mail): bolding a selection from end of line changes unselected text on starting line.
1801         
1802         The styling code did not move to the next node when the starting position was 
1803         at the last offset of a node. Instead, it styled it. Clearly wrong. Solution 
1804         is to borrow a check from the delete algorithm. Though I call caretMaxOffset(),
1805         which I consider deprecated, it is still the simplest and most strightforward
1806         way to ask the right question for this kind of problem.
1807
1808         * khtml/editing/htmlediting.cpp:
1809         (khtml::ApplyStyleCommand::applyInlineStyle): Fixed, as described above.
1810         * layout-tests/editing/style/style-3998892-fix-expected.txt: Added.
1811         * layout-tests/editing/style/style-3998892-fix.html: Added.
1812
1813 2005-02-16  Chris Blumenberg  <cblu@apple.com>
1814         
1815         Fixed: <rdar://problem/3954842> Forward/reply to an HTML email can result in nothing (in cases with <link> tags for CSS)
1816
1817         Reviewed by john.
1818
1819         * khtml/xml/dom_nodeimpl.cpp:
1820         (NodeBaseImpl::addChild): don't call insertedIntoDocument on the added child if "this" itself is not in the document.
1821
1822 2005-02-16  John Sullivan  <sullivan@apple.com>
1823
1824         Written by Darin, reviewed by Maciej and me
1825         
1826         - change required to make previous checkin work with English language RSS pages
1827
1828         * kwq/KWQKURL.h:
1829         new private method isHierarchical
1830         * kwq/KWQKURL.mm:
1831         (KURL::KURL):
1832         add hierarchical base URL check when determining whether the URL is absolute
1833         (KURL::isHierarchical):
1834         new method, returns true if this is a valid URL with a slash just past the scheme's trailing colon
1835
1836 2005-02-16  John Sullivan  <sullivan@apple.com>
1837
1838         Written by Darin, reviewed by me.
1839         
1840         - WebCore part of fix for <rdar://problem/4007384> 
1841         FILTER: Bookmark of RSS with Japanese search word & multiple RSS pages loses filter
1842
1843         * kwq/DOM.mm:
1844         (-[DOMElement _getURLAttribute:]):
1845         new SPI method, uses parseURL and completeURL to get valid URL from attribute value
1846
1847         * kwq/DOMPrivate.h:
1848         declare new SPI method
1849
1850 2005-02-15  Maciej Stachowiak  <mjs@apple.com>
1851
1852         Reviewed by Darin.
1853
1854         <rdar://problem/3942428> reproducible crash loading cbs.sportsline.com
1855         
1856         This change reverts the fix for <rdar://problem/3805311>, and
1857         re-fixes it in a different (better) way. Instead of preventing
1858         programmatic open from setting the parsing flag, instead make sure
1859         that programmatic close resets it.
1860
1861         * khtml/khtml_part.cpp:
1862         (KHTMLPart::openURL):
1863         (KHTMLPart::didExplicitOpen):
1864         (KHTMLPart::closeURL):
1865         (KHTMLPart::begin):
1866         (KHTMLPart::end):
1867         (KHTMLPart::endIfNotLoading):
1868         (KHTMLPart::slotFinishedParsing):
1869         (KHTMLPart::checkEmitLoadEvent):
1870         * khtml/khtml_part.h:
1871         * khtml/khtmlpart_p.h:
1872         (KHTMLPartPrivate::KHTMLPartPrivate):
1873         * khtml/xml/dom_docimpl.cpp:
1874         (DocumentImpl::open):
1875         (DocumentImpl::implicitOpen):
1876         (DocumentImpl::close):
1877         (DocumentImpl::implicitClose):
1878         * khtml/xml/dom_docimpl.h:
1879
1880 2005-02-15  David Harrison  <harrison@apple.com>
1881
1882         Reviewed by Maciej.
1883
1884         <rdar://problem/3933665> smart delete seems to delete too much after expanding selection with arrow keys
1885
1886         Fixed by updating the selection granularity.  Only byWord granularity enables smart delete, but in this
1887         case the granularity changed from byWord to byCharacter.
1888
1889         * khtml/khtml_part.cpp:
1890         (KHTMLPart::setSelectionGranularity):
1891         * khtml/khtml_part.h:
1892         * kwq/WebCoreBridge.mm:
1893         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
1894         (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:]):
1895         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]):
1896
1897 2005-02-15  David Harrison  <harrison@apple.com>
1898
1899         Reviewed by Darin.
1900
1901         (continued) <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
1902
1903         This was supposed have been committed yesterday with the other part of the fix, but was not.
1904         
1905         * khtml/editing/visible_units.cpp:
1906         (khtml::endOfWord):
1907
1908 2005-02-15  Ken Kocienda  <kocienda@apple.com>
1909
1910         Reviewed by John
1911         
1912         Fix for this bug:
1913         
1914         <rdar://problem/3951178> REGRESSION (Mail): blank line lost after pasting as quotation
1915         
1916         Problem was that the blank line after the selection was getting deleted incorrectly since the
1917         paste code thought this was an unneeded placeholder rather than a placeholder outside of the
1918         selection.
1919
1920         * khtml/editing/htmlediting.cpp:
1921         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Now calls findBlockPlaceholder.
1922         (khtml::CompositeEditCommand::findBlockPlaceholder): Moved finding code formerly in 
1923         removeBlockPlaceholderIfNeeded to this new helper.
1924         (khtml::ReplaceSelectionCommand::doApply): Do not delete placeholder up front. Call 
1925         findBlockPlaceholder, and delete it later if needed in the already-existing cleanup step.
1926         * khtml/editing/htmlediting.h: Add new function.
1927
1928         New layout test.
1929
1930         * layout-tests/editing/pasteboard/paste-text-017-expected.txt: Added.
1931         * layout-tests/editing/pasteboard/paste-text-017.html: Added.
1932
1933         Result changed for the better.
1934
1935         * layout-tests/editing/pasteboard/paste-text-011-expected.txt
1936
1937 2005-02-14  David Harrison  <harrison@apple.com>
1938
1939         Reviewed by Darin.
1940
1941         <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
1942
1943         Reviewed by Darin.
1944
1945         <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
1946
1947         * khtml/editing/visible_text.cpp:
1948         (khtml::SimplifiedBackwardsTextIterator::advance):
1949         Add BR in for <rdar://problem/3917929> fix only if leaving a visible text node.
1950         
1951         * khtml/editing/visible_units.cpp:
1952         (khtml::endOfWord):
1953         Do not move left over a paragraph boundary.
1954
1955 2005-02-14  Darin Adler  <darin@apple.com>
1956
1957         Reviewed by John.
1958
1959         - fixed <rdar://problem/3686434> Safari uses too much RAM on file upload, leading to malloc errors and crashes (HP printers)
1960
1961         * khtml/html/html_formimpl.cpp:
1962         (DOM::FormDataList::begin): Updated to use a list of FormDataListItem instead of QCString.
1963         (DOM::FormDataList::end): Ditto.
1964         (DOM::HTMLFormElementImpl::formData): Same here, and also use appendFile rather than appendData
1965         when we encounter a path name rather than data.
1966         (DOM::HTMLInputElementImpl::appendFormData): Use appendFile here rather than reading the file
1967         in; the reading now happens inside WebKit.
1968         (DOM::FormDataList::appendString): Updated for FormDataListItem.
1969         (DOM::FormDataList::appendFile): Added.
1970
1971         * ForwardingHeaders/kfileitem.h: Emptied out the file; no longer includes KWQKFileItem.h.
1972         * ForwardingHeaders/netaccess.h: Emptied out the file; no longer includes KWQKIONetAccess.h.
1973         * kwq/KWQKFileItem.h: Removed.
1974         * kwq/KWQKFileItem.mm: Removed.
1975         * kwq/KWQKIONetAccess.h: Removed.
1976         * kwq/KWQKIONetAccess.mm: Removed.
1977         * WebCore.pbproj/project.pbxproj: Removed the 4 files above.
1978
1979         - small unrelated fix (not reviewed by John)
1980
1981         * khtml/ecma/kjs_window.cpp: (Window::isSafeScript): Put some logging code outside if statements so it works all the time.
1982
1983 2005-02-14  David Harrison  <harrison@apple.com>
1984
1985         Reviewed by Darin.
1986
1987         <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
1988
1989         Fixed nextLinePosition to calculate affinity rather than take it as a parameter.  Propagated the parameter change out to related methods.
1990
1991         * khtml/editing/htmlediting.cpp:
1992         (khtml::DeleteSelectionCommand::initializePositionData):
1993         (khtml::InsertLineBreakCommand::doApply):
1994         (khtml::InsertParagraphSeparatorCommand::doApply):
1995         (khtml::InsertTextCommand::input):
1996         (khtml::ReplaceSelectionCommand::doApply):
1997         (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes):
1998         * khtml/editing/selection.cpp:
1999         (khtml::Selection::modifyExtendingRightForward):
2000         (khtml::Selection::modifyMovingRightForward):
2001         (khtml::Selection::modifyExtendingLeftBackward):
2002         (khtml::Selection::modifyMovingLeftBackward):
2003         (khtml::Selection::modify):
2004         (khtml::Selection::validate):
2005         * khtml/editing/visible_position.cpp:
2006         (khtml::visiblePositionsOnDifferentLines):
2007         * khtml/editing/visible_units.cpp:
2008         (khtml::rootBoxForLine):
2009         (khtml::startOfLine):
2010         (khtml::endOfLine):
2011         (khtml::inSameLine):
2012         (khtml::isStartOfLine):
2013         (khtml::isEndOfLine):
2014         (khtml::previousLinePosition):
2015         (khtml::nextLinePosition):
2016         (khtml::previousSentencePosition):
2017         (khtml::nextSentencePosition):
2018         (khtml::previousParagraphPosition):
2019         (khtml::nextParagraphPosition):
2020         * khtml/editing/visible_units.h:
2021         * khtml/khtml_events.cpp:
2022         (khtml::MouseEvent::offset):
2023         * khtml/khtml_part.cpp:
2024         (KHTMLPart::isPointInsideSelection):
2025         (KHTMLPart::selectClosestWordFromMouseEvent):
2026         (KHTMLPart::handleMousePressEventTripleClick):
2027         (KHTMLPart::handleMousePressEventSingleClick):
2028         (KHTMLPart::handleMouseMoveEventSelection):
2029         (KHTMLPart::khtmlMouseReleaseEvent):
2030         * khtml/rendering/render_block.cpp:
2031         (khtml::RenderBlock::positionForCoordinates):
2032         * khtml/rendering/render_block.h:
2033         * khtml/rendering/render_br.cpp:
2034         (RenderBR::positionForCoordinates):
2035         * khtml/rendering/render_br.h:
2036         * khtml/rendering/render_container.cpp:
2037         (RenderContainer::positionForCoordinates):
2038         * khtml/rendering/render_container.h:
2039         * khtml/rendering/render_inline.cpp:
2040         (RenderInline::positionForCoordinates):
2041         * khtml/rendering/render_inline.h:
2042         * khtml/rendering/render_object.cpp:
2043         (RenderObject::caretRect):
2044         (RenderObject::positionForCoordinates):
2045         * khtml/rendering/render_object.h:
2046         * khtml/rendering/render_replaced.cpp:
2047         (RenderReplaced::positionForCoordinates):
2048         * khtml/rendering/render_replaced.h:
2049         * khtml/rendering/render_text.cpp:
2050         (RenderText::positionForCoordinates):
2051         * khtml/rendering/render_text.h:
2052         * khtml/xml/dom_position.cpp:
2053         (DOM::Position::previousCharacterPosition):
2054         (DOM::Position::nextCharacterPosition):
2055         (DOM::Position::leadingWhitespacePosition):
2056         (DOM::Position::trailingWhitespacePosition):
2057         * khtml/xml/dom_position.h:
2058         * kwq/KWQAccObject.mm:
2059         (-[KWQAccObject value]):
2060         (-[KWQAccObject accessibilityAttributeValue:]):
2061         (-[KWQAccObject doAXLineForTextMarker:]):
2062         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2063         (-[KWQAccObject doAXTextMarkerForPosition:]):
2064         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
2065         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2066         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2067         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
2068         * kwq/KWQKHTMLPart.mm:
2069         * kwq/WebCoreBridge.mm:
2070         (-[WebCoreBridge _visiblePositionForPoint:]):
2071
2072 05-02-07  Maciej Stachowiak  <mjs@apple.com>
2073
2074         Reviewed by Ken and John.
2075
2076         Re-fixed a specific case of the following:
2077
2078         <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
2079
2080         Oddly, Cmd-B, Cmd-U, type some text, return, Cmd-U, Cmd-B, type
2081         some text, worked fine. But hitting the second Cmd-B before the
2082         second Cmd-U still failed to remove underlining. The reason for
2083         this is that our code to compute the style of the current position
2084         did not work when you had a typing style and were positioned right
2085         at a <br> element. For various reasons, this did not show up for
2086         bold and italic, since those are handled through the font manager.
2087
2088         The following change fixes this - for elements that can't have
2089         children, we add the dummy span after the element of interest,
2090         rather than as a child of it.
2091         
2092         * khtml/khtml_part.cpp:
2093         (KHTMLPart::selectionComputedStyle): 
2094
2095 2005-02-11  David Harrison  <harrison@apple.com>
2096
2097         Reviewed by Darin.
2098
2099         <rdar://problem/3978980> Double Clicking on a line in Mail selected the entire body
2100
2101         * khtml/editing/visible_units.cpp:
2102         (khtml::startOfWord):
2103         (khtml::endOfWord):
2104         Pay attention to being at the end of a paragraph.
2105         
2106         (khtml::previousLinePosition):
2107         (khtml::nextLinePosition):
2108         (khtml::endOfParagraph):
2109         Use DOWNSTREAM per recent affinity changes.
2110
2111 2005-02-11  Richard Williamson   <rjw@apple.com>
2112
2113         Fixed <rdar://problem/3985118> DOM objects not being marshaled on JS->native calls
2114
2115         Re-factored how 'native' wrappers for JS objects are created.  The interpreter now
2116         creates these wrappers.  The WebCore subclass of the interpreter now overrides
2117         createLanguageInstanceForValue() and creates a DOM ObjC wrapper for DOM objects.
2118
2119         * WebCore.pbproj/project.pbxproj:
2120         * khtml/ecma/kjs_binding.cpp:
2121         (ScriptInterpreter::createLanguageInstanceForValue):
2122         * khtml/ecma/kjs_binding.h:
2123         * kwq/DOMUtility.mm: Added.
2124         (KJS::ScriptInterpreter::createObjcInstanceForValue):
2125         * kwq/KWQKHTMLPart.mm:
2126         (KWQKHTMLPart::getAppletInstanceForView):
2127         (getInstanceForView):
2128         (KWQKHTMLPart::getEmbedInstanceForView):
2129         (KWQKHTMLPart::getObjectInstanceForView):
2130
2131 2005-02-11  Chris Blumenberg  <cblu@apple.com>
2132
2133         Fixed: <rdar://problem/3937352> Quote level not maintained when copied and pasted within a Mail message
2134
2135         Reviewed by harrison.
2136
2137         * khtml/editing/markup.cpp:
2138         (khtml::isMailBlockquote): new 
2139         (khtml::createMarkup): retain the Mail quote level by including all ancestor mail block quotes
2140         * khtml/rendering/render_block.cpp:
2141         (khtml::RenderBlock::positionForCoordinates): default to downstream for the affinity since the affinity is only upstream when the cursor is clicked to the right of a wrapped line
2142         * khtml/rendering/render_text.cpp:
2143         (RenderText::positionForCoordinates): ditto
2144
2145 2005-02-11  Adele Amchan  <adele@apple.com>
2146
2147         Reviewed by Darin.
2148
2149         fix for <rdar://problem/4004004> no need to add body element for xml documents
2150
2151         In the fix for <rdar://problem/3758785> we decided to add a body element when closing a document 
2152         to ensure that the onload handler would fire.  This is unnecessary for xml documents, 
2153         so now we also check to see if we're dealing with an html document before adding the body element.
2154
2155         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close): 
2156
2157 2005-02-11  Adele Amchan  <adele@apple.com>
2158
2159         Reviewed by Darin.
2160
2161         * layout-tests/apple-only/base/www.excite.com/index-expected.txt: updates tests because of custom tag change.
2162         * layout-tests/apple-only/base/www.msnbc.com/index-expected.txt:
2163         * layout-tests/apple-only/base/www.time.com/index-expected.txt:
2164         * layout-tests/apple-only/base/www.travelocity.com/index-expected.txt:
2165         * layout-tests/apple-only/base/www.zdnet.com/index-expected.txt:
2166         * layout-tests/fast/overflow/003-expected.txt:
2167
2168         * layout-tests/fast/js/window-object-cross-frame-calls-expected.txt: updated test because of added Body (see rdar://problem/3758785)
2169
2170 === Safari-186 ===
2171
2172 2005-02-11  Darin Adler  <darin@apple.com>
2173
2174         Reviewed by John.
2175
2176         - fixed <rdar://problem/3915449> paths are relative to the old src URL after document.open, which is supposed to clear the document, including the URL
2177
2178         * khtml/xml/dom_docimpl.h: Added a new openInternal function for use by KHTMLPart.
2179         * khtml/xml/dom_docimpl.cpp:
2180         (DocumentImpl::open): Changed to do everything we did before, but also clear the URL and set the
2181         base URL based on the enclosing document. This is the basic JavaScript/DOM operation of opening a
2182         document, which is supposed to clear the document, including the URL. In the long run we might want
2183         to do even more document "resetting and clearing" in here, but this URL clearing is what's needed
2184         now to fix the most important problem.
2185         (DocumentImpl::openInternal): Moved the old open code in here, except for the "parsing" check, which
2186         is unnecessary and inappropriate in the one place we call this.
2187
2188         * khtml/khtml_part.cpp: (KHTMLPart::begin): Call openInternal instead of open.
2189
2190 2005-02-10  Ken Kocienda  <kocienda@apple.com>
2191
2192         Reviewed by Hyatt
2193
2194         Fix for this bug:
2195         
2196         <rdar://problem/3992092> 8A374: Mail crash while pasting - RemoveNodeCommand
2197
2198         * khtml/editing/htmlediting.cpp:
2199         (khtml::ReplaceSelectionCommand::doApply): Code tried to remove a node that was no longer in 
2200         the document. We try to do a good job of detecting all these cases, and generally do. This
2201         one was missed. Fixed.
2202
2203 2005-02-10  Darin Adler  <darin@apple.com>
2204
2205         Reviewed by Harrison.
2206
2207         - added support needed to fix <rdar://problem/3991225> Format->Style->Underline menu item does not get checked when selected text is underlined
2208
2209         * kwq/WebCoreBridge.h: Added selectionHasStyle: method.
2210         * kwq/WebCoreBridge.mm: (-[WebCoreBridge selectionHasStyle:]): Added. Calls selectionHasStyle on the part.
2211
2212 2005-02-10  Darin Adler  <darin@apple.com>
2213
2214         Reviewed by Harrison.
2215
2216         - fixed <rdar://problem/3990484> cursor changes to I-beam when moving over text in widgets, even when selection off via CSS
2217
2218         * khtml/khtmlview.cpp: (KHTMLView::viewportMouseMoveEvent): Changed code to check canSelect when deciding
2219         whether to show an I-beam cursor.
2220
2221         * khtml/rendering/render_object.h: Added canSelect.
2222         * khtml/rendering/render_object.cpp:
2223         (selectStartNode): Added. Helper function with the guts of shouldSelect.
2224         (RenderObject::canSelect): Added. Like shouldSelect, but does not call the "start selecting" event handler.
2225         (RenderObject::shouldSelect): Refactored to use selectStartNode.
2226
2227         * khtml/css/cssvalues.c: Regnerated with newer gperf.
2228
2229 2005-02-10  David Hyatt  <hyatt@apple.com>
2230
2231         Fix for 3867759, .mac regression where scrollers don't show up.  Make sure you can set the .width and
2232         .height properties on the Image object.
2233         
2234         Reviewed by John Sullivan
2235
2236         * khtml/ecma/kjs_html.cpp:
2237         (ImageConstructorImp::construct):
2238         (Image::getValueProperty):
2239         (Image::putValue):
2240         (Image::Image):
2241         * khtml/ecma/kjs_html.h:
2242
2243 2005-02-10  Ken Kocienda  <kocienda@apple.com>
2244
2245         Reviewed by Chris
2246
2247         Fix for this bug:
2248         
2249         <rdar://problem/3965158> Drag-n-drop within a rich text message sometimes changes the color of the dragged text
2250         
2251         This change fixes the bug....and much more. Now, for the first time, the paste code can do "smart merging"
2252         or "smooshing" of styles during its operation. Since this new code is actively, rather than passively
2253         working with styles, it fixes the bug, and lays the groundwork for similar work we need to do to
2254         preserve quote levels in Mail.
2255
2256         * khtml/css/css_valueimpl.cpp:
2257         (DOM::CSSMutableStyleDeclarationImpl::clear): New method.
2258         (DOM::CSSMutableStyleDeclarationImpl::removeBlockProperties): Ditto.
2259         (DOM::CSSMutableStyleDeclarationImpl::removePropertiesInSet): Ditto.
2260         (DOM::operator==): Add operator for CSSProperty.
2261         * khtml/css/css_valueimpl.h: Declare new functions.
2262         * khtml/editing/htmlediting.cpp:
2263         (khtml::isEmptyStyleSpan): Improved the test in this function, rolling together the old implementation
2264         with some code that did this work inline elsewhere. Sum of the parts is better than either test was by itself.
2265         (khtml::isStyleSpan): Check for ID_SPAN.
2266         (khtml::ApplyStyleCommand::removeCSSStyle): Call isEmptyStyleSpan. This was the place with an inline implementation before.
2267         (khtml::ReplacementFragment::ReplacementFragment): Now takes a DocumentImpl argument. No longer does a "default style"
2268         check, but rather calls functions which do a similar check to that, and much more.
2269         (khtml::ReplacementFragment::~ReplacementFragment): Deref document, and computed styles.
2270         (khtml::ReplacementFragment::styleForNode): New helper. Looks up and returns computed style for a node.
2271         (khtml::ReplacementFragment::removeNodePreservingChildren): New helper.
2272         (khtml::ReplacementFragment::computeStylesForNodes): New function which computes the "desired" style for
2273         every node in the fragment. This information is used later after paste is done as a reference for testing
2274         what styles need to be added, and which can be removed as redundant, from all the nodes inserted by the
2275         replacement code.
2276         (khtml::ReplacementFragment::removeStyleNodes): Clears out all style nodes from the fragment. They are
2277         no longer needed after the call to computeStylesForNodes(),
2278         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): Add a document to the call to initialize the
2279         command's ReplacementFragment.
2280         (khtml::ReplaceSelectionCommand::doApply): Call applyStyleToInsertedNodes() after inserting nodes to make
2281         styles come out right.
2282         (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes): This is the "style smooshing" function. It 
2283         computes the styles that need to be added to each node inserted, comparing the style it gets from just
2284         being inserted into its correct destination with the computed "desired style" done in the 
2285         ReplacementFragment constructor. It then adds in all the necessary styles, and will also remove redundant styles.
2286         * khtml/editing/htmlediting.h: Update declarations and member variables as needed.
2287         * khtml/editing/markup.cpp:
2288         (khtml::startMarkup): Add additional style annotations to the markup we generate, so that paste code can preserve it.
2289         (khtml::markup): Ditto.
2290         (khtml::createMarkup): Ditto.
2291         
2292         These test results are subtly better with this change. They no longer have an unneeded empty span.
2293         Visually the same as before.
2294         
2295         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt
2296         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt
2297         * layout-tests/editing/style/remove-underline-expected.txt
2298         * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt
2299
2300         New tests:
2301
2302         * layout-tests/editing/style/smoosh-styles-001-expected.txt
2303         * layout-tests/editing/style/smoosh-styles-002-expected.txt
2304         * layout-tests/editing/style/smoosh-styles-001.html
2305         * layout-tests/editing/style/smoosh-styles-002.html
2306
2307 2005-02-10  Darin Adler  <darin@apple.com>
2308
2309         Reviewed by Adele.
2310
2311         - fixed <rdar://problem/3974988> WebHTMLView drops scroll wheel events when deltas are 0
2312
2313         * kwq/WebCoreScrollView.m: (-[WebCoreScrollView autoforwardsScrollWheelEvents]): Added, for Tiger only.
2314         For Tiger, removed the override of scrollWheel:, which doesn't work quite right because of how the
2315         delta attributes return all 0 for newfangled scrolling events from the new trackpads.
2316
2317 2005-02-10  David Harrison  <harrison@apple.com>
2318
2319         Reviewed by Darin.
2320
2321         <rdar://problem/3991532> REGRESSION (Mail): Triple-click on trailing blank line should select previous line but doesn't
2322
2323         * khtml/css/cssvalues.c:
2324         (hash_val):
2325         (findValue):
2326         * khtml/editing/selection.cpp:
2327         (khtml::Selection::validate):
2328         Do moral equiavalent of LeftWordIfOnBoundary for PARAGRAPH.
2329
2330 2005-02-10  David Harrison  <harrison@apple.com>
2331
2332         Reviewed by Darin.
2333
2334         <rdar://problem/3991848> Double-click on first character selects wrong item
2335
2336         * khtml/editing/selection.cpp:
2337         (khtml::Selection::validate):
2338         Honor the fact that clicking on a character positions the cursor on the left side of the character.
2339
2340 2005-02-10  David Hyatt  <hyatt@apple.com>
2341
2342         Fix for 3980778, repro crash in RootInlineBox::paint.  Make sure that when merging blocks we dirty them for layout
2343         up front. That way as we do the merge, we dont attempt to examine the lines in dirtyLinesForChangedChild.
2344         
2345         Reviewed by mjs
2346
2347         * khtml/rendering/render_block.cpp:
2348         (khtml::RenderBlock::removeChild):
2349
2350 2005-02-10  David Hyatt  <hyatt@apple.com>
2351
2352         Fix for 3987010, fix a bug that caused the self-collapsing-block-cleared-float bit to never get set correctly.
2353         
2354         Reviewed by mjs
2355
2356         * khtml/rendering/render_block.h:
2357         (khtml::RenderBlock::MarginInfo::setSelfCollapsingBlockClearedFloat):
2358
2359 2005-02-10  David Hyatt  <hyatt@apple.com>
2360
2361         Fix  for 3992440, text not wrapping correctly on half moon bay web site.  Refine an incorrect optimization I
2362         added to be less restrictive.
2363         
2364         Reviewed by mjs
2365
2366         * khtml/rendering/render_block.cpp:
2367         (khtml::RenderBlock::layoutBlockChildren):
2368
2369 2005-02-08  Maciej Stachowiak  <mjs@apple.com>
2370
2371         Reviewed by Darin.
2372
2373         <rdar://problem/3977973> pages on ebay leak referenced JavaScript objects -- over time browsing becomes super-slow
2374
2375         I fixed this by removing all event listeners for a document, it's
2376         children, and any disconnected nodes that used to be in the
2377         document at document detach time. Mozilla temporarily disables
2378         event listeners on such nodes, but re-enables them if you
2379         re-parant a node into a new document. However, in WebCore, you
2380         can't re-parent a node into another document, so there is no
2381         observable change in behavior.
2382
2383         We have to do this to break the possible reference cycles between
2384         event listeners and the dom nodes they are attached to (e.g. via
2385         scope chain, as in this case).
2386
2387         * khtml/xml/dom_docimpl.cpp:
2388         (DocumentImpl::detach):
2389         (DocumentImpl::removeAllEventListenersFromAllNodesx):
2390         (DocumentImpl::registerDisconnectedNodeWithEventListeners):
2391         (DocumentImpl::unregisterDisconnectedNodeWithEventListeners):
2392         (DocumentImpl::removeAllDisconnectedNodeEventListeners):
2393         * khtml/xml/dom_docimpl.h:
2394         * khtml/xml/dom_nodeimpl.cpp:
2395         (NodeImpl::~NodeImpl):
2396         (NodeImpl::addEventListener):
2397         (NodeImpl::removeEventListener):
2398         (NodeImpl::removeAllEventListeners):
2399         (NodeImpl::removeHTMLEventListener):
2400         (NodeImpl::insertedIntoDocument):
2401         (NodeImpl::removedFromDocument):
2402         * khtml/xml/dom_nodeimpl.h:
2403
2404 2005-02-09  Chris Blumenberg  <cblu@apple.com>
2405
2406         Fixed: <rdar://problem/3999213> Sometimes 2 Windows Media Player plugin instances are loaded
2407
2408         Reviewed by hyatt.
2409
2410         * khtml/html/html_objectimpl.cpp:
2411         (HTMLObjectElementImpl::attach): Set needWidgetUpdate to false before calling updateWidget because updateWidget may cause this method or another method (which also calls updateWidget) to be called.
2412         (HTMLObjectElementImpl::recalcStyle): ditto
2413
2414 2005-02-09  David Harrison  <harrison@apple.com>
2415
2416         Reviewed by Darin.
2417         
2418         <rdar://problem/3937447> Mail-689: Arrow key navigation in new message body stops working when a line ends with a bold word
2419         
2420         Added affinity to VisiblePosition.  Changed Selection code to use affinity more.
2421         
2422         (Partial) <rdar://problem/3982096> editing/pasteboard/paste-text-007 is failing
2423         
2424         Changed ReplaceSelectionCommand to also pay attention to the top children of the incoming fragment, not just the very last node inserted, when deciding whether to insert a paragraph for the Apple interchange newline.
2425
2426         * khtml/ecma/kjs_window.cpp:
2427         (SelectionFunc::tryCall):
2428         * khtml/editing/htmlediting.cpp:
2429         (khtml::EditCommandPtr::setStartingSelection):
2430         (khtml::EditCommandPtr::setEndingSelection):
2431         (khtml::EditCommand::setStartingSelection):
2432         (khtml::EditCommand::setEndingSelection):
2433         (khtml::CompositeEditCommand::deleteInsignificantTextDownstream):
2434         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
2435         (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
2436         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
2437         (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
2438         (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
2439         (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
2440         (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
2441         (khtml::ApplyStyleCommand::joinChildTextNodes):
2442         (khtml::DeleteSelectionCommand::initializePositionData):
2443         (khtml::DeleteSelectionCommand::handleGeneralDelete):
2444         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
2445         (khtml::DeleteSelectionCommand::doApply):
2446         (khtml::InsertLineBreakCommand::doApply):
2447         (khtml::InsertParagraphSeparatorCommand::doApply):
2448         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
2449         (khtml::InsertTextCommand::input):
2450         (khtml::MoveSelectionCommand::doApply):
2451         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand):
2452         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand):
2453         (khtml::ReplaceSelectionCommand::doApply):
2454         (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
2455         (khtml::ReplaceSelectionCommand::updateNodesInserted):
2456         (khtml::TypingCommand::deleteKeyPressed):
2457         (khtml::TypingCommand::forwardDeleteKeyPressed):
2458         (khtml::TypingCommand::markMisspellingsAfterTyping):
2459         * khtml/editing/htmlediting.h:
2460         * khtml/editing/selection.cpp:
2461         (khtml::Selection::Selection):
2462         (khtml::Selection::init):
2463         (khtml::Selection::moveTo):
2464         (khtml::Selection::modifyExtendingRightForward):
2465         (khtml::Selection::modifyMovingRightForward):
2466         (khtml::Selection::modifyExtendingLeftBackward):
2467         (khtml::Selection::modifyMovingLeftBackward):
2468         (khtml::Selection::modify):
2469         (khtml::Selection::xPosForVerticalArrowNavigation):
2470         (khtml::Selection::clear):
2471         (khtml::Selection::setBase):
2472         (khtml::Selection::setExtent):
2473         (khtml::Selection::setBaseAndExtent):
2474         (khtml::Selection::layout):
2475         (khtml::Selection::validate):
2476         * khtml/editing/selection.h:
2477         (khtml::Selection::startAffinity):
2478         (khtml::Selection::endAffinity):
2479         (khtml::Selection::baseAffinity):
2480         (khtml::Selection::extentAffinity):
2481         (khtml::operator==):
2482         * khtml/editing/text_affinity.h:
2483         (khtml::):
2484         * khtml/editing/visible_position.cpp:
2485         (khtml::VisiblePosition::VisiblePosition):
2486         (khtml::VisiblePosition::init):
2487         (khtml::VisiblePosition::initUpstream):
2488         (khtml::VisiblePosition::initDownstream):
2489         (khtml::VisiblePosition::next):
2490         (khtml::VisiblePosition::previous):
2491         (khtml::startVisiblePosition):
2492         (khtml::endVisiblePosition):
2493         * khtml/editing/visible_position.h:
2494         (khtml::VisiblePosition::):
2495         (khtml::VisiblePosition::VisiblePosition):
2496         (khtml::VisiblePosition::affinity):
2497         (khtml::VisiblePosition::setAffinity):
2498         (khtml::operator==):
2499         * khtml/editing/visible_units.cpp:
2500         (khtml::previousBoundary):
2501         (khtml::nextBoundary):
2502         (khtml::startOfLine):
2503         (khtml::endOfLine):
2504         (khtml::previousLinePosition):
2505         (khtml::nextLinePosition):
2506         (khtml::startOfParagraph):
2507         (khtml::endOfParagraph):
2508         (khtml::previousParagraphPosition):
2509         (khtml::nextParagraphPosition):
2510         (khtml::startOfBlock):
2511         (khtml::endOfBlock):
2512         (khtml::startOfDocument):
2513         (khtml::endOfDocument):
2514         * khtml/editing/visible_units.h:
2515         * khtml/khtml_part.cpp:
2516         (KHTMLPart::findTextNext):
2517         (KHTMLPart::selectClosestWordFromMouseEvent):
2518         (KHTMLPart::handleMousePressEventTripleClick):
2519         (KHTMLPart::handleMousePressEventSingleClick):
2520         (KHTMLPart::handleMouseMoveEventSelection):
2521         (KHTMLPart::khtmlMouseReleaseEvent):
2522         (KHTMLPart::selectAll):
2523         (KHTMLPart::computeAndSetTypingStyle):
2524         (KHTMLPart::selectionComputedStyle):
2525         * khtml/rendering/render_br.cpp:
2526         (RenderBR::positionForCoordinates):
2527         * khtml/xml/dom_docimpl.cpp:
2528         (DocumentImpl::updateSelection):
2529         * khtml/xml/dom_nodeimpl.cpp:
2530         (NodeBaseImpl::setFocus):
2531         * khtml/xml/dom_position.cpp:
2532         (DOM::Position::previousCharacterPosition):
2533         (DOM::Position::nextCharacterPosition):
2534         * khtml/xml/dom_position.h:
2535         * kwq/KWQAccObject.mm:
2536         (-[KWQAccObject value]):
2537         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
2538         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
2539         (-[KWQAccObject accessibilityAttributeValue:]):
2540         (-[KWQAccObject doAXLineForTextMarker:]):
2541         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2542         (-[KWQAccObject doAXTextMarkerForPosition:]):
2543         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
2544         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2545         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
2546         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
2547         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2548         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
2549         (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
2550         * kwq/KWQAccObjectCache.mm:
2551         (KWQAccObjectCache::textMarkerForVisiblePosition):
2552         (KWQAccObjectCache::visiblePositionForTextMarker):
2553         * kwq/KWQKHTMLPart.mm:
2554         (KWQKHTMLPart::findString):
2555         (KWQKHTMLPart::advanceToNextMisspelling):
2556         (KWQKHTMLPart::styleForSelectionStart):
2557         (KWQKHTMLPart::baseWritingDirectionForSelectionStart):
2558         (KWQKHTMLPart::setSelectionFromNone):
2559         (KWQKHTMLPart::respondToChangedSelection):
2560         * kwq/WebCoreBridge.mm:
2561         (-[WebCoreBridge setSelectedDOMRange:affinity:]):
2562         (-[WebCoreBridge selectionAffinity]):
2563         (-[WebCoreBridge setMarkDOMRange:]):
2564         (-[WebCoreBridge _visiblePositionForPoint:]):
2565         (-[WebCoreBridge moveDragCaretToPoint:]):
2566         (-[WebCoreBridge editableDOMRangeForPoint:]):
2567         (-[WebCoreBridge ensureSelectionVisible]):
2568         (-[WebCoreBridge rangeOfCharactersAroundCaret]):
2569
2570 2005-02-09  Chris Blumenberg  <cblu@apple.com>
2571
2572         Fixed: <rdar://problem/3985211> Seed: Mail: Drag-and-drop destination indicator / insertion point disappears
2573
2574         Reviewed by kocienda.
2575
2576         * khtml/rendering/render_block.cpp:
2577         (khtml::RenderBlock::paintCaret): new
2578         (khtml::RenderBlock::paintObject): call paintCaret for the cursor caret and the drag caret
2579         * khtml/rendering/render_block.h:
2580
2581 === Safari-185 ===
2582
2583 2005-02-08  Ken Kocienda  <kocienda@apple.com>
2584
2585         Reviewed by John
2586
2587         Fix for this bug:
2588         
2589         <rdar://problem/3996344> Entire document content is deleted when only the first paragraph was supposed to be
2590
2591         Problem stems from my attempt to fix this bug: <rdar://problem/3986155> Insertion point goes 
2592         to beginning of doc after deleting.
2593         
2594         I added an "optimization" that proved to do more harm than good. So, basically, the fix is to remove code.
2595
2596         * khtml/editing/htmlediting.cpp:
2597         (khtml::DeleteSelectionCommand::handleGeneralDelete)
2598
2599 2005-02-07  Darin Adler  <darin@apple.com>
2600
2601         Reviewed by Kevin.
2602
2603         - fixed <rdar://problem/3890352> REGRESSION (125-170, Panther-only): pasted textarea contents disappear (exception in NSText)
2604
2605         * kwq/KWQTextArea.mm: (-[KWQTextArea tile]): Don't resize the text view immediately here.
2606         Use performWithDelay to defer it to avoid the re-entrancy that bothers the Panther version
2607         of NSTextView. On Tiger, leave the code alone.
2608
2609 2005-02-07  Adele Amchan  <adele@apple.com>
2610
2611         Reviewed by Darin.
2612
2613         Fix for <rdar://problem/3993628> REGRESSION (180-181): Logitelnet bank's website doesn't work
2614
2615         This fixes an oversight in the fix for <rdar://problem/3964286>.  
2616         We're now making sure there is a document before calling checkCompleted in slotLoaderRequestDone.
2617         That function is called even when other parts finish loads of their subresources, so we could end
2618         up calling checkCompleted before we had a document. We also looked over all the other calls to
2619         checkCompleted to convince ourselves no other call sites had a similar issue.
2620
2621         * khtml/khtml_part.cpp: (KHTMLPart::slotLoaderRequestDone): Check if doc is nil before calling
2622         checkCompleted.
2623
2624 2005-02-07  Ken Kocienda  <kocienda@apple.com>
2625
2626         Reviewed by Darin
2627
2628         Fix for this bug:
2629         
2630         <rdar://problem/3953302> Replacing quoted text ends up with blue-colored text that is not quoted
2631
2632         * khtml/editing/htmlediting.cpp:
2633         (khtml::DeleteSelectionCommand::doApply): Removed special case delete code for select all. It was
2634         causing as many bugs as it fixed. What's more, the design concept is a bit shaky. By removing
2635         this special case, the bug goes away.
2636         * khtml/editing/htmlediting.h: Remove declaration.
2637         
2638         Test results using selectAll() updated to reflect changed behavior.
2639         
2640         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt:
2641         * layout-tests/editing/deleting/delete-select-all-001-expected.txt:
2642         * layout-tests/editing/deleting/delete-select-all-003-expected.txt:
2643         * layout-tests/editing/inserting/insert-3654864-fix-expected.txt:
2644         * layout-tests/editing/inserting/insert-3775316-fix-expected.txt:
2645         * layout-tests/editing/inserting/insert-3851164-fix-expected.txt:
2646         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt:
2647         * layout-tests/editing/pasteboard/paste-text-015-expected.txt:
2648
2649 2005-02-06  Darin Adler  <darin@apple.com>
2650
2651         Reviewed by Ken.
2652
2653         - fixed <rdar://problem/3994164> setting a new style attribute with setAttribute("style") doesn't blow away the old style
2654
2655         * khtml/css/css_valueimpl.h: Renamed parseProperty to parseDeclaration, since it's used to parse
2656         an entire style declaration, not a single property.
2657         * khtml/css/css_valueimpl.cpp: (DOM::CSSMutableStyleDeclarationImpl::parseDeclaration): Renamed,
2658         and added code to clear m_values.
2659         * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::parseHTMLAttribute): Call function by its
2660         new name, and remove some unnecessary comments.
2661
2662 2005-02-06  Darin Adler  <darin@apple.com>
2663
2664         Reviewed by Maciej.
2665
2666         - fixed <rdar://problem/3993722> need oncut and onpaste handlers implemented for <textarea> (needed for widgets)
2667
2668         * kwq/KWQTextArea.mm:
2669         (-[KWQTextAreaTextView dispatchHTMLEvent:]): Added.
2670         (-[KWQTextAreaTextView cut:]): Dispatch "before cut" and "cut" events.
2671         (-[KWQTextAreaTextView copy:]): Dispatch "before copy" and "copy" events.
2672         (-[KWQTextAreaTextView paste:]): Dispatch "before paste" and "paste" events.
2673         (-[KWQTextAreaTextView pasteAsPlainText:]): Ditto.
2674         (-[KWQTextAreaTextView pasteAsRichText:]): Ditto.
2675
2676 2005-02-06  Darin Adler  <darin@apple.com>
2677
2678         Reviewed by Maciej.
2679
2680         - fixed <rdar://problem/3943038> <input type=search> that is focused in onload handler doesn't have a visible editor
2681
2682         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::setFocusNode): Always update layout before giving focus to a widget.
2683         This prevents the bad case where we give a widget focus before it has been positioned or sized, causing us to
2684         exercise edge cases AppKit doesn't handle well.
2685
2686         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Remove workaround code I added
2687         to fix bug 3943049. Updating the layout fixes the same problem in a cleaner, safer way, and solves another problem,
2688         with the way the clip view is set up.
2689
2690 2005-02-06  Darin Adler  <darin@apple.com>
2691
2692         Reviewed by Maciej.
2693
2694         - fixed <rdar://problem/3425232> textarea won't trigger onchange action when clicking to new field
2695
2696         * khtml/rendering/render_form.h: Added new m_dirty data member.
2697         * khtml/rendering/render_form.cpp:
2698         (RenderTextArea::RenderTextArea): Initialize m_dirty to false.
2699         (RenderTextArea::detach): Call value() on the DOM element to cause it to fetch the value from this object.
2700         (RenderTextArea::handleFocusOut): Ditto. Also send the onchange event based only on the m_dirty flag.
2701         (RenderTextArea::updateFromElement): Clear the m_dirty flag if the edited value is blown away by a value
2702         that comes from the DOM element. Remove code to clear the element's m_dirtyvalue flag; that's an unnecessary
2703         optimization, and ideally we'll stop having code in the render object that knows about that flag later.
2704         (RenderTextArea::slotTextChanged): Set the m_dirty flag.
2705
2706 2005-02-06  Darin Adler  <darin@apple.com>
2707
2708         Reviewed by Maciej.
2709
2710         - re-fixed <rdar://problem/3760910> please add support for custom tag names in HTML
2711
2712         * khtml/xml/dom_docimpl.cpp:
2713         (DocumentImpl::tagId): Use ID_LAST_TAG + 1 for the ID of the first assigned tag ID. Before we'd use ID_LAST_TAG,
2714         which resulted in the same number being used for ID_COMMENT and the first custom tag.
2715         (DocumentImpl::tagName): Use ID_LAST_TAG + 1, as above.
2716         (DocumentImpl::namespaceURI): Change a < ID_LAST_TAG to <= ID_LAST_TAG in the same spirit as above.
2717
2718 2005-02-06  Darin Adler  <darin@apple.com>
2719
2720         Reviewed by Maciej.
2721
2722         - fixed <rdar://problem/3986639> Crash occurs after choosing Undo Typing from the Edit menu
2723
2724         * kwq/KWQTextArea.mm: (-[KWQTextArea viewWillMoveToWindow:]): Remove actions from undo manager when the view is
2725         removed from the window. Unfortunately, to do this the code has to know that the target of NSTextView actions
2726         will be the text storage object, but given the NSText architecture, that's pretty clear.
2727
2728 2005-02-05  Chris Blumenberg  <cblu@apple.com>
2729
2730         Fixed: <rdar://problem/3991974> REGRESSION: www.jabra.com world location screen does not work
2731
2732         Reviewed by hyatt.
2733
2734         * kwq/KWQKJavaAppletWidget.mm:
2735         (KJavaAppletWidget::KJavaAppletWidget): fallback to the document's base URL if there is no baseURL attribute
2736         * kwq/WebCoreBridge.h:
2737         * kwq/WebCoreBridge.mm:
2738         (-[WebCoreBridge baseURL]): new
2739
2740 2005-02-04  David Harrison  <harrison@apple.com>
2741
2742         Reviewed by Darin.
2743
2744         Rolled out Ken's accidental checkin when committing <rdar://problem/3986155> fix yesterday.
2745         
2746         * khtml/editing/selection.cpp:
2747         (khtml::Selection::validate):
2748
2749 2005-02-04  Adele Amchan  <adele@apple.com>
2750
2751         Reviewed by Darin.
2752
2753         Fix for <rdar://problem/3758785> Safari no longer works at BankOfAmerica online banking for military users
2754   
2755         When closing the document, if a body doesn't exist we now create one.  This bug was preventing the onload handler from
2756         firing in cases where there wasn't a body.  In the BankOfAmerica case, the page was just a bit of script where the onload
2757         handler redirected to the correct page.
2758
2759         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close):
2760
2761 2005-02-03  Ken Kocienda  <kocienda@apple.com>
2762
2763         Reviewed by Chris
2764
2765         Fix for this bug:
2766         
2767         <rdar://problem/3986155> Insertion point goes to beginning of doc after deleting
2768
2769         * khtml/editing/htmlediting.cpp:
2770         (khtml::DeleteSelectionCommand::setStartNode): New convenience to handle reference counting when setting.
2771         (khtml::DeleteSelectionCommand::handleGeneralDelete): This contains the crux of the bug fix. Improve tests
2772         that detect when a selected node needs to be retained, rather than deleted, to preserve the intent of the user.
2773         This has the side effect of causing the insertion point placement code to succeed rather than fail. Before
2774         this fix, the failure of the insertion point placement code caused the insertion point to jump to the start
2775         of the document, which is the symptom that can be perceived by users when editing.
2776         * khtml/editing/htmlediting.h: Add setStartNode declaration.
2777         * khtml/editing/visible_units.cpp:
2778         (khtml::startOfBlock): This function had a stubbed-in non-tested implementation. Implement and 
2779         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001-expected.txt: Added.
2780         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001.html: Added.
2781         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt: Added.
2782         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002.html: Added.
2783         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt: Added.
2784         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003.html: Added.
2785         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt: Added.
2786         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004.html: Added.
2787         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt: Added.
2788         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005.html: Added.
2789         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt: Added.
2790         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006.html: Added.
2791
2792 === Safari-183 ===
2793
2794 2005-02-03  Richard Williamson   <rjw@apple.com>
2795
2796         Fixed <rdar://problem/3987419> Stocks and Weather leak what appears to XMLHTTPRequest results
2797
2798         XMLHTTPRequests were causing massive leaks.  _webcore_initWithHeaderString: did funky things with
2799         self replacement.  Re-wrote to use more traditional factory constructor avoiding self replacement.
2800         
2801         Reviewed by David Harrison.
2802
2803         * kwq/KWQLoader.mm:
2804         (+[NSDictionary _webcore_dictionaryWithHeaderString:]):
2805         (KWQServeRequest):
2806         (KWQServeSynchronousRequest):
2807
2808 2005-02-03  Chris Blumenberg  <cblu@apple.com>
2809
2810         Fixed: <rdar://problem/3938763> Cannot view Windows Media Player videos (soundtrack is played twice with delay)
2811
2812         Reviewed by hyatt.
2813
2814         * khtml/html/html_objectimpl.cpp:
2815         (HTMLObjectElementImpl::attach): set needWidgetUpdate to false right after calling updateWidget because dispatchHTMLEvent can end up calling this method again
2816         (HTMLObjectElementImpl::recalcStyle): ditto
2817
2818 2005-02-02  John Sullivan  <sullivan@apple.com>
2819
2820         Reviewed by Chris.
2821
2822         - WebCore part of fix for <rdar://problem/3980651> REGRESSION (125-180): Huge number of pages printed from certain page, 
2823         iFrame involved
2824         
2825         This also fixes the problems with printing from GMail, yay!
2826
2827         * khtml/rendering/render_flow.cpp:
2828         (RenderFlow::paintLines):
2829         If the current line is taller than the entire page height (e.g. tall iFrame), don't try
2830         to avoid splitting it across pages.
2831         
2832         * kwq/WebCoreBridge.mm:
2833         (-[WebCoreBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
2834         Handle error cases in a more obvious manner; this will cause future problems like this
2835         to print a blank page and complain to the console on debug builds, rather than print a 
2836         zillionty mostly-blank pages.
2837
2838 2005-02-02  Chris Blumenberg  <cblu@apple.com>
2839
2840         Fixed: <rdar://problem/3960304> can't load a particular applet (at www.escape.de) unless it's the first applet to be loaded
2841
2842         Reviewed by hyatt.
2843
2844         * khtml/rendering/render_frames.cpp:
2845         (RenderPartObject::updateWidget): when getting the MIME type from the PARAM tag, make sure the MIME type is the text from the left of the semi-colon if there is one. We do this elsewhere as well.
2846
2847 2005-02-02  Chris Blumenberg  <cblu@apple.com>
2848
2849         Fixed: <rdar://problem/3983628> control-click on WebView is not selecting the word under the cursor (Mail, non-editable WebView)
2850
2851         Reviewed by rjw.
2852
2853         * kwq/KWQKHTMLPart.mm:
2854         (KWQKHTMLPart::sendContextMenuEvent): check if SPI to always enable selecting closest word is enabled
2855         * kwq/WebCoreBridge.h:
2856
2857 2005-02-02  Ken Kocienda  <kocienda@apple.com>
2858
2859         Reviewed by me
2860
2861         * khtml/editing/markup.cpp:
2862         (khtml::createMarkup): Removed debug spam I committed earlier in error.
2863
2864 2005-02-02  Ken Kocienda  <kocienda@apple.com>
2865
2866         Reviewed by Darin
2867
2868         Fix for this bug:
2869         
2870         <rdar://problem/3823109> WebKit should support -toggleBaseWritingDirection: (bidi editing support)
2871
2872         Since base writing direction is a paragraph-level property in AppKit, and we use the CSS direction
2873         property in WebCore, which can be applied to inline elements as well as blocks, a new notion has
2874         been added to the WebCore apply style logic. It is now possible to force all properties in a 
2875         style declaration to be applied as though they were block properties.
2876
2877         * khtml/editing/htmlediting.cpp:
2878         (khtml::ApplyStyleCommand::ApplyStyleCommand): Add an enum and a flag to this command that controls whether to force all
2879         properties in the style to be applied as block styles. Default is "no", retaining previous behavior.
2880         (khtml::ApplyStyleCommand::doApply): Switch on new flag to apply styles as before, or force all preoperties to be applied
2881         as block styles.
2882         * khtml/editing/htmlediting.h:
2883         (khtml::ApplyStyleCommand::): Add an enum and a flag, as above.
2884         * khtml/khtml_part.cpp:
2885         (KHTMLPart::applyParagraphStyle): New method to force application of all style properties as block styles.
2886         * khtml/khtml_part.h: Update header declarations.
2887         * kwq/KWQKHTMLPart.h: Update header declarations.
2888         * kwq/KWQKHTMLPart.mm:
2889         (KWQKHTMLPart::baseWritingDirectionForSelectionStart): Accessor to help WebKit do a toggle operation on 
2890         writing direction.
2891         * kwq/WebCoreBridge.h: Update header declarations.
2892         * kwq/WebCoreBridge.mm:
2893         (-[WebCoreBridge applyParagraphStyle:withUndoAction:]): New method to force application of all style properties as block styles.
2894         (-[WebCoreBridge baseWritingDirectionForSelectionStart]): Accessor to help WebKit do a toggle operation on 
2895         writing direction.
2896
2897         Fix for this bug:
2898         
2899         <rdar://problem/3985035> REGRESSION (Mail): Text copied from wrapped line contains extra character when pasted
2900
2901         * khtml/editing/markup.cpp:
2902         (khtml::renderedText): Add an enum and a flag to this command that controls whether to force all
2903         This is the result of an error in the code that computes the rendered text that is selected 
2904         when copying. Since spaces collapse at the end of lines, and these spaces need to be copied 
2905         when the selection spans line endings, code runs to compute this text. However, this code 
2906         was also running incorrectly in cases where lines wrapped. I have now added the missing 
2907         test to check that the selection does indeed extend to the end of the line.
2908
2909
2910 2005-02-02  Ken Kocienda  <kocienda@apple.com>
2911
2912         Reviewed by Darin
2913
2914         Fix for these bugs:
2915         
2916         <rdar://problem/3984894> REGRESSION (Mail): Command-right-arrow in reply does the wrong thing (two ways)
2917         <rdar://problem/3985130> REGRESSION (Mail): command-right-arrow in pasted RTF selects only up to tab
2918
2919         * khtml/editing/visible_units.cpp:
2920         (khtml::endOfLine): Two separate problems in this new function recently added to take the place of
2921         selectionForLine. In the first, endOfLine did not stop at BR elements, and returned the position
2922         beyond them. In the second, the VisiblePosition constructor gives the wrong answer in certain cases.
2923         Darin is going to work on a solution for that problem. In the meantime, I can fix the symptom of this
2924         bug by going down to the last leaf child of the root line box; a one line change we will roll out when
2925         Darin's fix is in.
2926
2927 2005-02-01  Richard Williamson   <rjw@apple.com>
2928
2929         Fixed <rdar://problem/3985535> QT Plug-in JavaScript support now fails in <embed> tag only case
2930
2931         Reviewed by Maciej.
2932
2933         * khtml/ecma/kjs_html.cpp:
2934         (KJS::HTMLDocument::tryGet):
2935
2936 2005-02-01  John Sullivan  <sullivan@apple.com>
2937
2938         Written by Darin, reviewed and tested by me
2939         
2940         - fixed <rdar://problem/3969684> Panther-only: extra blank lines between 
2941         pasted content from Blot
2942
2943         * kwq/KWQKHTMLPart.mm:
2944         (KWQKHTMLPart::attributedString):
2945         don't emit paragraph breaks if the margins are tiny; matches what
2946         we do for plain-text conversion
2947
2948 === Safari-182 ===
2949
2950 2005-02-01  Ken Kocienda  <kocienda@apple.com>
2951
2952         Reviewed by John
2953
2954         Fix for this bug:
2955         
2956         <rdar://problem/3985160> Deficiencies in pasting architecture blocking progress on other bugs
2957
2958         * khtml/editing/html_interchange.h: Move style span text used to mark element added to 
2959         add style to this header.
2960         * khtml/editing/htmlediting.cpp:
2961         (khtml::styleSpanClassString): Change to use constant moved to html_interchange.h.
2962         (khtml::isStyleSpan): New helper function. Checks if this is a span we added to apply style.
2963         (khtml::CompositeEditCommand::insertNodeBefore): Added an assert to check that the node
2964         we are inserting before is not the body.
2965         (khtml::CompositeEditCommand::insertNodeAfter): Ditto, but check is for after.
2966         (khtml::ReplacementFragment::ReplacementFragment): Added code to process the "default style"
2967         that is added by the copy code.
2968         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): first and last nodes inserted are
2969         now member variables instead of function locals. Initialize them here.
2970         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand): Deref first and last nodes inserted
2971         if necessary.
2972         (khtml::ReplaceSelectionCommand::doApply): Change design to fix the bug. Major change is to
2973         separate out the code that inserts nodes into the tree so additional styling checks can
2974         be done in a centralized way. Also got rid of the notion of "merging into the end block." That
2975         concept was just wrong.
2976         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Tweak interface now that first and 
2977         last nodes inserted are member variables.
2978         (khtml::ReplaceSelectionCommand::insertNodeAfterAndUpdateNodesInserted): New helper used
2979         by replace code to do the stated DOM operation and update state internal to the command.
2980         This will also be a catch point to handle the kinds of additional style checks needed to
2981         make paste work right.
2982         (khtml::ReplaceSelectionCommand::insertNodeAtAndUpdateNodesInserted): Ditto.
2983         (khtml::ReplaceSelectionCommand::insertNodeBeforeAndUpdateNodesInserted): Ditto.
2984         (khtml::ReplaceSelectionCommand::updateNodesInserted): Ditto.
2985         * khtml/editing/htmlediting.h: Update declarations as needed.
2986         * khtml/editing/markup.cpp:
2987         (khtml::createMarkup): Adds a "default style" span to the content written to the pasteboard.
2988         This will help us to fix some of the bugs blocked by the bug above.
2989         * khtml/xml/dom_nodeimpl.cpp:
2990         (NodeImpl::lastDescendent): New helper.
2991         * khtml/xml/dom_nodeimpl.h: Ditto.
2992         * khtml/xml/dom_position.cpp:
2993         (DOM::Position::upstream): Fixed a bug which would allow the upstream position returned to be
2994         in unrendered content.
2995         (DOM::Position::downstream): Ditto.
2996
2997         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt: Ending positions tweaked due to 
2998         changes in upstream() and downstream() functions.
2999         * layout-tests/editing/inserting/insert-3851164-fix-expected.txt: Ditto
3000         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt: Ditto
3001         * layout-tests/editing/selection/extend-by-character-006-expected.txt: Ditto
3002
3003         * layout-tests/editing/pasteboard/paste-text-003-expected.txt: Changed what we expect, given
3004         new behavior of paste code.
3005
3006 2005-01-31  John Sullivan  <sullivan@apple.com>
3007
3008         Reviewed by Dave Hyatt.
3009         
3010         - fixed <rdar://problem/3983097> Tabbing on RSS pages gets stuck in search field 
3011         with "full keyboard navigation" off
3012
3013         * kwq/KWQSlider.h:
3014         * kwq/KWQSlider.mm:
3015         (QSlider::focusPolicy):
3016         Implemented this method for KWQSlider. It is needed for our widget subclasses that
3017         can become focused in some situations. I missed this when fixing 3949203 because
3018         it only comes into play when tab-to-controls is on, and because the other relevant
3019         methods are objective-C methods.
3020
3021 2005-01-31  David Harrison  <harrison@apple.com>
3022
3023         Reviewed by Darin.
3024
3025         <rdar://problem/3964164> AXWebArea needs to unregister on going invisible
3026
3027         * khtml/xml/dom_docimpl.cpp:
3028         (DocumentImpl::detach):
3029         Detach the AX UIElement for the AXWebArea.
3030
3031 2005-01-31  David Harrison  <harrison@apple.com>
3032
3033         Reviewed by Darin
3034
3035         <rdar://problem/3850876> AX: button exposed as only an AXImage at http://appleseed.apple.com/ site (<input type=image>)
3036
3037         * khtml/rendering/render_form.h:
3038         (khtml::RenderImageButton::isImageButton):
3039         New.
3040         * khtml/rendering/render_image.h:
3041         (khtml::RenderImage::isImageButton):
3042         New.
3043         * kwq/KWQAccObject.mm:
3044         (-[KWQAccObject isImageButton]):
3045         (-[KWQAccObject actionElement]):
3046         (-[KWQAccObject role]):
3047         (-[KWQAccObject accessibilityActionNames]):
3048         (-[KWQAccObject accessibilityPerformAction:]):
3049         Represent RenderImageButton elements as buttons instead of images.
3050
3051 2005-01-31  David Harrison  <harrison@apple.com>
3052
3053         Prevent nil dereference in debug code.
3054
3055         * khtml/xml/dom_nodeimpl.cpp:
3056         (NodeImpl::displayTree):
3057         Stop when parent is 0, too.
3058
3059 2005-01-31  John Sullivan  <sullivan@apple.com>
3060
3061         Reviewed by Dave Hyatt.
3062         
3063         - fixed <rdar://problem/3949203> cannot tab to, within, or out of the RSS sidebar
3064
3065         * kwq/KWQSlider.mm:
3066         (-[KWQSlider becomeFirstResponder]):
3067         (-[KWQSlider resignFirstResponder]):
3068         (-[KWQSlider nextKeyView]):
3069         (-[KWQSlider previousKeyView]):
3070         (-[KWQSlider canBecomeKeyView]):
3071         (-[KWQSlider nextValidKeyView]):
3072         (-[KWQSlider previousValidKeyView]):
3073         Copied these methods from KWQButton. The lack of special handling for first-responder-ness
3074         here was causing the focus to get "stuck" on the RSS page's slider widget. Added FIXME
3075         about how it would be nice to share more of this code rather than replicating it in each
3076         KWQ widget subclass.
3077
3078 2005-01-31  Darin Adler  <darin@apple.com>
3079
3080         Reviewed by Harrison.
3081
3082         - fixed <rdar://problem/3980066> Double-click on single character moves insertion point to previous line
3083
3084         * khtml/khtml_part.cpp:
3085         (KHTMLPart::selectClosestWordFromMouseEvent): Set affinity too.
3086         (KHTMLPart::handleMousePressEventTripleClick): Ditto.
3087         (KHTMLPart::handleMouseMoveEventSelection): Ditto.
3088         (KHTMLPart::khtmlMouseReleaseEvent): Ditto.
3089
3090         * khtml/editing/selection.cpp:
3091         (khtml::Selection::modifyExtendingRightForward): Use endOfLine and endOfDocument.
3092         (khtml::Selection::modifyMovingRightForward): Ditto.
3093         (khtml::Selection::modifyExtendingLeftBackward): Use startOfLine and startOfDocument.
3094         (khtml::Selection::modifyMovingLeftBackward): Ditto.
3095         (khtml::Selection::validate): Rewrote the section that handles double-click. Two main fixes: 1) use isStartOfLine to
3096         check for another case where we want to select the word to the right, and 2) use isEndOfParagraph, which seems
3097         to work correctly in cases where isLastVisiblePositionInParagraph is giving the wrong answer. Also changed the line
3098         code to use startOfLine/endOfLine and the document code to use startOfDocument/endOfDocument.
3099
3100 2005-01-31  Darin Adler  <darin@apple.com>
3101
3102         Reviewed by Harrison.
3103
3104         - fixed <rdar://problem/3935275> unexpected quit scrolling over link; last.fm (works in IE and Firefox)
3105
3106         * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): By using the correct document, fix the crash reported here.
3107         The page still crashes when you close the browser window, but it's not trivial to fix so I'll file a new bug after that.
3108
3109 2005-01-31  Darin Adler  <darin@apple.com>
3110
3111         Reviewed by Ken and Harrison.
3112
3113         - fixed <rdar://problem/3947901> REGRESSION (Mail): Pasting paragraph of rich text leaves insertion point before pasted text
3114         - fixed <rdar://problem/3949790> hitting return after underlined line results in too much or too little underlined
3115         - fixed <rdar://problem/3981759> nil-deref and crash when pasting just a paragraph break
3116         - fixed a couple problems I discovered while working with bug 3949790
3117
3118         * khtml/editing/htmlediting.cpp:
3119         (khtml::ApplyStyleCommand::applyInlineStyle): Pass StayInBlock to upstream. Without this, we end up going too far
3120         upstream in the test case in bug 3949790.
3121         (khtml::ApplyStyleCommand::removeInlineStyle): Pass StayInBlock to upstream and downstream. Same reason as above.
3122         (khtml::ReplaceSelectionCommand::doApply): Update endPos if inserting a new node and endPos is using that node's
3123         parent and an offset past the node being inserted. That change fixes a problem with the position of the insertion point
3124         after pasting into the top level of a document (from test cases in 3947901 and 3949790). When setting insertionPos, use
3125         code that works when lastNodeInserted is a block rather than a text node. That change fixes a problem where a newline is
3126         not added when pasting an entire paragraph into the end of a document (from test case in 3949790). Added nil check before
3127         checking if lastNodeInserted is a <br> element, which fixes the crash when pasting just a paragraph break.
3128
3129         * khtml/editing/visible_units.h: Filled out the set of calls to add some boolean checks for lines (needed for the
3130         bug fix), and calls for blocks (not yet implemented), and documents. The document checks may need refinement to
3131         properly handle documents with a mix of editable and non-editable content, but for now they just refactor code
3132         and make things a little clearer. Also removed the "include line break" parameter from endOfSentence.
3133         * khtml/editing/visible_units.cpp:
3134         (khtml::rootBoxForLine): Added.
3135         (khtml::startOfLine): Added. Algorithm taken from selectionForLine in selection.cpp.
3136         (khtml::endOfLine): Ditto.
3137         (khtml::inSameLine): Added.
3138         (khtml::isStartOfLine): Added.
3139         (khtml::isEndOfLine): Added.
3140         (khtml::endOfSentence): Removed "include line break" parameter.
3141         (khtml::inSameParagraph): Added a null check.
3142         (khtml::isStartOfParagraph): Ditto.
3143         (khtml::isEndOfParagraph): Ditto.
3144         (khtml::startOfBlock): Added.
3145         (khtml::endOfBlock): Added.
3146         (khtml::inSameBlock): Added.
3147         (khtml::isStartOfBlock): Added.
3148         (khtml::isEndOfBlock): Added.
3149         (khtml::startOfDocument): Added.
3150         (khtml::endOfDocument): Added.
3151         (khtml::inSameDocument): Added.
3152         (khtml::isStartOfDocument): Added.
3153         (khtml::isEndOfDocument): Added.
3154
3155 2005-01-30  Darin Adler  <darin@apple.com>
3156
3157         Reviewed by John.
3158
3159         - fixed <rdar://problem/3977000> form data set posted for <input type="image" ...> omits name/value pair
3160
3161         * khtml/html/html_formimpl.cpp:
3162         (DOM::HTMLInputElementImpl::appendFormData): Append a name/value pair for type IMAGE in addition to the X/Y
3163         coordinates.
3164
3165 2005-01-30  Darin Adler  <darin@apple.com>
3166
3167         Reviewed by John.
3168
3169         - fixed <rdar://problem/3974246> REGRESSION (125-180): popup menus are missing item text on Harmony Remote web site
3170
3171         * khtml/html/html_formimpl.cpp: (DOM::HTMLOptionElementImpl::text): Change this function to traverse the entire tree
3172         and gather all the text rather than just looking at immediate children.
3173
3174         * khtml/xml/dom_nodeimpl.h: Added const.
3175         * khtml/xml/dom_nodeimpl.cpp:
3176         (NodeImpl::traverseNextNode): Added const.
3177         (NodeImpl::traverseNextSibling): Ditto.
3178         (NodeImpl::traversePreviousNodePostOrder): Ditto.
3179         (NodeImpl::detach): Add a missing nil check.
3180
3181 2005-01-30  Darin Adler  <darin@apple.com>
3182
3183         Reviewed by John.
3184
3185         - fixed <rdar://problem/3864536> crash copying text from other apps and pasting in a sticky in dashboard
3186
3187         * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Added missing ref/deref of newly created element.
3188
3189 2005-01-28  Darin Adler  <darin@apple.com>
3190
3191         * khtml/css/cssproperties.c: Regenerated with newer gperf.
3192
3193 2005-01-28  David Harrison  <harrison@apple.com>
3194
3195         Reviewed by John Sullivan.
3196
3197         <rdar://problem/3968144> AX need to be able to focus an AXLink by setting AXFocused to true
3198         
3199         * kwq/KWQAccObject.mm:
3200         (-[KWQAccObject accessibilityPerformAction:]):
3201         (-[KWQAccObject accessibilityIsAttributeSettable:]):
3202         Add AXFocused for AXLinks.
3203
3204 2005-01-28  David Harrison  <harrison@apple.com>
3205
3206         Reviewed by Darin.
3207
3208         <rdar://problem/3584942> AX: Safari Accessibility parent-child mismatch
3209
3210         Use AppKit SPI _accessibilityParentForSubview to return KWQAccObject parent of AppKit AX object.
3211         
3212         * kwq/KWQAccObject.mm:
3213         (-[KWQAccObject _accessibilityParentForSubview:]):
3214         New.
3215
3216 2005-01-27  Adele Amchan  <adele@apple.com>
3217
3218         fixed by Darin, reviewed by me.
3219
3220         <rdar://problem/3976314> REGRESSION (180-TOT): submitting password fields fail on Panther
3221
3222         * kwq/KWQTextField.mm: (-[KWQTextFieldController string]): on panther, the secure text field's editor 
3223         does not contain the real string, so now we just call stringValue on the field in that case.
3224
3225 2005-01-26  Maciej Stachowiak  <mjs@apple.com>
3226
3227         Reviewed by Darin, Hyatt and Ken.
3228
3229         <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
3230         
3231         * khtml/css/css_computedstyle.cpp:
3232         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Add support
3233         for -khtml-text-decorations-in-effect property. This works like text-docration
3234         but follows proper inline semantics, that is, if a parent is causing text
3235         decoration then -khtml-text-decorations-in-effect on this element will reflect that.
3236         * khtml/css/cssproperties.in: Add -khtml-text-decorations-in-effect property.
3237         * khtml/css/cssproperties.h: regenerated
3238         * khtml/css/cssvalues.c: regenerated
3239         * khtml/css/cssparser.cpp: regenerated
3240         * khtml/css/cssproperties.c: regenerated
3241
3242         * khtml/css/css_valueimpl.h: Made copyPropertiesInSet public.
3243
3244         * khtml/editing/htmlediting.cpp:
3245         (khtml::StyleChange::init): Handle -khtml-text-decorations-in-effect
3246         specially, translate to text-decoration
3247         (khtml::ApplyStyleCommand::applyInlineStyle): Fix a comment.
3248         (khtml::ApplyStyleCommand::removeInlineStyle): Add new way of pushing down
3249         text-decoration styles around the edges of the selected range.
3250         (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAroundNode): Helper for this.
3251         (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): ditto
3252         (khtml::ApplyStyleCommand::nodeFullyUnselected): ditto
3253         (khtml::hasTextDecorationProperty): ditto
3254         (khtml::highestAncestorWithTextDecoration): ditto
3255         (khtml::ApplyStyleCommand::extractTextDecorationStyle): ditto
3256         (khtml::ApplyStyleCommand::extractAndNegateTextDecorationStyle): ditto
3257         (khtml::ApplyStyleCommand::applyTextDecorationStyle): ditto
3258         * khtml/editing/htmlediting.h: Prototype new methods.
3259         * khtml/editing/jsediting.cpp: Make underline execCommand use the new CSS property.
3260
3261         - as a necessary part of the fix, fixed the longstanding problem
3262         that mutating an element's inlineStyleDecl would not property
3263         update its style attribute. now it does.
3264         
3265         * khtml/css/css_valueimpl.cpp:
3266         (DOM::CSSMutableStyleDeclarationImpl::setChanged): If this is an inline style
3267         declaration, tell the element it's style attribute needs updating.
3268         * khtml/html/html_elementimpl.cpp:
3269         (HTMLElementImpl::invalidateStyleAttribute): New method, just calls down
3270         to the dom element.
3271         (HTMLElementImpl::updateStyleAttribute): Regenerate style attribute from
3272         inline style declaration.
3273         * khtml/html/html_elementimpl.h: Prototype new stuff.
3274         * khtml/xml/dom_elementimpl.cpp:
3275         (ElementImpl::ElementImpl): Initialize new attribute.
3276         (ElementImpl::updateStyleAttributeIfNeeded): New method to check if the style
3277         is dirty and this is an html element, and if so call the html element to
3278         regenerate the style attribute.
3279         (ElementImpl::attributes): update style if needed
3280         (ElementImpl::getAttribute): ditto
3281         (ElementImpl::hasAttributes): ditto
3282         (ElementImpl::dump): ditto
3283         (XMLElementImpl::cloneNode): ditto
3284         * khtml/xml/dom_elementimpl.h:
3285         (DOM::ElementImpl::isStyleAttributeValid): new method to manage style attr
3286         dirty bit
3287         (DOM::ElementImpl::setStyleAttributeValid): ditto
3288
3289         - added new layout tests for underlining:
3290         
3291         * layout-tests/editing/editing.js:
3292         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt: Added.
3293         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt: Added.
3294         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold.html: Added.
3295         * layout-tests/editing/style/remove-underline-across-paragraph.html: Added.
3296         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt: Added.
3297         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt: Added.
3298         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold.html: Added.
3299         * layout-tests/editing/style/remove-underline-after-paragraph.html: Added.
3300         * layout-tests/editing/style/remove-underline-expected.txt: Added.
3301         * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt: Added.
3302         * layout-tests/editing/style/remove-underline-from-stylesheet.html: Added.
3303         * layout-tests/editing/style/remove-underline-in-bold-expected.txt: Added.
3304         * layout-tests/editing/style/remove-underline-in-bold.html: Added.
3305         * layout-tests/editing/style/remove-underline.html: Added.
3306         * layout-tests/editing/style/underline-expected.txt: Added.
3307         * layout-tests/editing/style/underline.html: Added.
3308
3309 2005-01-27  Dav