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