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