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