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