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