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