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