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