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