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