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