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