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