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