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