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