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