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