Reviewed by Hyatt
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2004-09-15  Ken Kocienda  <kocienda@apple.com>
2
3         Reviewed by Hyatt
4
5         * khtml/editing/htmlediting_impl.cpp:
6         (khtml::DeleteSelectionCommandImpl::doApply): The whitespace fixup code
7         that makes sure proper whitespace renders after deletion was getting confused
8         in cases where the deletion merged blocks. Basically, I needed to move some
9         whitespace fixup code so it runs before deleting in the case where blocks
10         need to be merged. It used to run after, and was getting confused by
11         whitespace left over at the ends of the block after the deletion.
12         * layout-tests/editing/deleting/delete-block-merge-contents-012-expected.txt: Added.
13         * layout-tests/editing/deleting/delete-block-merge-contents-012.html: Added.
14         * layout-tests/editing/deleting/delete-block-merge-contents-013-expected.txt: Added.
15         * layout-tests/editing/deleting/delete-block-merge-contents-013.html: Added.
16         * layout-tests/editing/deleting/delete-block-merge-contents-014-expected.txt: Added.
17         * layout-tests/editing/deleting/delete-block-merge-contents-014.html: Added.
18         * layout-tests/editing/deleting/delete-block-merge-contents-015-expected.txt: Added.
19         * layout-tests/editing/deleting/delete-block-merge-contents-015.html: Added.
20         * layout-tests/editing/deleting/delete-block-merge-contents-016-expected.txt: Added.
21         * layout-tests/editing/deleting/delete-block-merge-contents-016.html: Added.
22         * layout-tests/editing/deleting/delete-block-merge-contents-017-expected.txt: Added.
23         * layout-tests/editing/deleting/delete-block-merge-contents-017.html: Added.
24
25 2004-09-15  Ken Kocienda  <kocienda@apple.com>
26
27         Reviewed by Hyatt
28
29         * khtml/editing/htmlediting_impl.cpp:
30         (khtml::DeleteSelectionCommandImpl::moveNodesAfterNode): Renamed from moveNodesToBlock.
31         Just some simplification and cleanup in this function.
32         (khtml::DeleteSelectionCommandImpl::doApply): Remove a hunk of start-of-block code I thought
33         I was going to get around to improving and refining. However, I no longer need this case.
34         * khtml/editing/htmlediting_impl.h: Function name change.
35
36 2004-09-14  Darin Adler  <darin@apple.com>
37
38         Reviewed by Maciej.
39
40         - added method for fix to <rdar://problem/3788894> REGRESSION (Mail): ctrl-t emacs key binding does not work (transpose)
41
42         * kwq/WebCoreBridge.h: Added rangeOfCharactersAroundCaret.
43         * kwq/WebCoreBridge.mm: (-[WebCoreBridge rangeOfCharactersAroundCaret]): Added.
44
45         * khtml/xml/dom_caretposition.h: Added range function to make a Range from two CaretPosition objects.
46         * khtml/xml/dom_caretposition.cpp:
47         (DOM::CaretPosition::rangeCompliantEquivalent): Fixed a bug in this that caused it to screw up
48         ranges in text nodes. Also changed it to use offset 0 as Ken and I discussed.
49         (DOM::range): Added.
50
51         * kwq/DOM.mm: (-[DOMRange description]): Added.
52
53 2004-09-14  Darin Adler  <darin@apple.com>
54
55         Reviewed by John.
56
57         - fixed <rdar://problem/3786986> REGRESSION: TEXTAREAs have extra wide right margins where the scrollbars used to be
58
59         * kwq/KWQTextArea.mm:
60         (-[KWQTextArea _updateTextViewWidth]): Renamed from _frameSizeChanged. Now uses the width of
61         the size from the contentSize method rather than trying to compute a size.
62         (-[KWQTextArea initWithFrame:]): Call method by new name.
63         (-[KWQTextArea tile]): Override this instead of setFrame: to adjust the size as the size of
64         the text area changes.
65
66 2004-09-14  Chris Blumenberg  <cblu@apple.com>
67
68         Backed out my changes to these files. They were not meant to be checked. (I'm having a bad CVS day)
69
70         * kwq/WebCoreBridge.h:
71         * kwq/WebCoreBridge.mm:
72         (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:]):
73         (-[WebCoreBridge replaceSelectionWithNode:selectReplacement:]):
74         (-[WebCoreBridge replaceSelectionWithMarkupString:baseURLString:selectReplacement:]):
75         (-[WebCoreBridge replaceSelectionWithText:selectReplacement:]):
76
77 2004-09-14  David Hyatt  <hyatt@apple.com>
78
79         Fix the crash in the layout tests caused by my recent selection changes.  Simply eliminate the buggy
80         selection border setting code and let isSelectionBorder be implemented in terms of the SelectionState.
81         
82         Reviewed by kocienda
83
84         * khtml/rendering/render_canvas.cpp:
85         (RenderCanvas::setSelection):
86         * khtml/rendering/render_object.cpp:
87         (RenderObject::RenderObject):
88         (RenderObject::container):
89         (RenderObject::isSelectionBorder):
90         * khtml/rendering/render_object.h:
91         (khtml::RenderObject::minMaxKnown):
92         (khtml::RenderObject::setReplaced):
93
94 2004-09-14  Chris Blumenberg  <cblu@apple.com>
95
96         Fixed: <rdar://problem/3778680> REGRESSION: plug-in content sometimes doesn't show up
97
98         Reviewed by dave.
99
100         * khtml/html/html_objectimpl.cpp:
101         (HTMLObjectElementImpl::parseHTMLAttribute): set needWidgetUpdate to true only if there is a renderer
102         (HTMLObjectElementImpl::attach): if needWidgetUpdate is true, call updateWidget
103
104 2004-09-14  Maciej Stachowiak  <mjs@apple.com>
105
106         Reviewed by Darin.
107
108         - fixed <rdar://problem/3800315> encode-URI-test layout test is failing
109         - updated escape/encodeURI layout test to match our new, more
110         compatible behavior.
111
112         * layout-tests/fast/js/global/encode-URI-test.html:
113
114 2004-09-14  Ken Kocienda  <kocienda@apple.com>
115
116         Reviewed by Richard
117
118         Fix for this bug:
119         
120         <rdar://problem/3800834> REGRESSION (Mail): Can't delete backwards past quoted text using HTML editing
121
122         * khtml/editing/htmlediting_impl.cpp:
123         (khtml::TypingCommandImpl::issueCommandForDeleteKey): Use CaretPosition class to get superior
124         smarts about the selection to delete in the "start of block" case. This fixes the bug.
125         While I was in the neighborhood, I cleaned up this function a bit.
126         * layout-tests/editing/deleting/delete-3800834-fix-expected.txt: Added.
127         * layout-tests/editing/deleting/delete-3800834-fix.html: Added.
128
129 2004-09-14  Ken Kocienda  <kocienda@apple.com>
130
131         Reviewed by me
132
133         * khtml/css/parser.cpp: Did not regenerate this file from parser.y before last checkin.
134
135 2004-09-14  Chris Blumenberg  <cblu@apple.com>
136
137         Fixed typos in last check-in.
138
139         * khtml/khtml_part.cpp:
140         (KHTMLPart::selectClosestWordFromMouseEvent):
141         (KHTMLPart::handleMousePressEventDoubleClick):
142         * khtml/khtml_part.h:
143         * kwq/KWQKHTMLPart.mm:
144         (KWQKHTMLPart::sendContextMenuEvent):
145
146 2004-09-09  David Hyatt  <hyatt@apple.com>
147
148         Fix for 3667862, regression where dragging of selection became really slow.  This patch completely rewrites
149         selection painting and drawing so that the enclosing rect is much more snug.  The containing block rect is no
150         longer used at all.
151         
152         Reviewed by kocienda
153
154         * khtml/rendering/render_canvas.cpp:
155         (RenderCanvas::selectionRect):
156         (getSelectionInfo):
157         (RenderCanvas::setSelection):
158         (RenderCanvas::clearSelection):
159         * khtml/rendering/render_canvas.h:
160         * khtml/rendering/render_container.cpp:
161         (RenderContainer::removeChildNode):
162         * khtml/rendering/render_image.cpp:
163         (RenderImage::selectionRect):
164         (RenderImage::selectionTintColor):
165         (RenderImage::paint):
166         * khtml/rendering/render_image.h:
167         * khtml/rendering/render_object.cpp:
168         (RenderObject::selectionStartEnd):
169         * khtml/rendering/render_object.h:
170         (khtml::RenderObject::selectionRect):
171         (khtml::RenderObject::SelectionInfo::object):
172         (khtml::RenderObject::SelectionInfo::rect):
173         (khtml::RenderObject::SelectionInfo::state):
174         (khtml::RenderObject::SelectionInfo::SelectionInfo):
175         (khtml::RenderObject::SelectionInfo::m_state):
176         * khtml/rendering/render_text.cpp:
177         (InlineTextBox::textObject):
178         (InlineTextBox::selectionRect):
179         (InlineTextBox::paintSelection):
180         (RenderText::getAbsoluteRepaintRect):
181         (RenderText::selectionRect):
182         * khtml/rendering/render_text.h:
183         * kwq/KWQPainter.mm:
184         (getBlendedColorComponent):
185         (QPainter::selectedTextBackgroundColor):
186
187 2004-09-14  Ken Kocienda  <kocienda@apple.com>
188
189         Reviewed by Hyatt
190
191         Fix for this bug:
192         
193         <rdar://problem/3794376> vertical formatting lines that show quote level are missing
194
195         Rolling out change Dave made to fix 3787686. It turns out that we do not want this
196         change, as it does not appear to have any effect on the bug. In addition, it caused
197         the regression in quote bar behavior.
198
199         * khtml/css/parser.cp
200         * khtml/css/parser.y
201
202 2004-09-14  Chris Blumenberg  <cblu@apple.com>
203
204         Fixed: Control-click shouldn't cause deselect when clicking selection.
205
206         Reviewed by rjw.
207
208         * kwq/KWQKHTMLPart.mm:
209         (KWQKHTMLPart::sendContextMenuEvent): don't attempt to select the closest word when the selection is clicked
210
211 2004-09-14  Chris Blumenberg  <cblu@apple.com>
212
213         Fixed badness that my last patch caused. Because there was a conflict, my last patch added stuff that darin had just removed.
214
215         Reviewed by darin.
216
217         * kwq/KWQKHTMLPart.mm:
218         (KWQKHTMLPart::sendContextMenuEvent): don't call deref on the view
219
220 2004-09-14  Chris Blumenberg  <cblu@apple.com>
221
222         Fixed: <rdar://problem/3783595> REGRESSION (Mail): control-click does not select closest word
223
224         Reviewed by kocienda.
225
226         * khtml/khtml_part.cpp:
227         (KHTMLPart::selectionGranularity): new getter, need this for an upcoming patch
228         (KHTMLPart::selectClosetWordFromMouseEvent): new, factored from handleMousePressEventDoubleClick
229         (KHTMLPart::handleMousePressEventDoubleClick): call selectClosetWordFromMouseEvent
230         * khtml/khtml_part.h:
231         * kwq/KWQKHTMLPart.mm:
232         (KWQKHTMLPart::sendContextMenuEvent): call selectClosetWordFromMouseEvent if nothing swallows the event
233
234 2004-09-14  Ken Kocienda  <kocienda@apple.com>
235
236         Reviewed by John
237
238         Fix for this bug:
239         
240         <rdar://problem/3800346> Inserting newline in BR after block not working
241
242         * khtml/editing/htmlediting_impl.cpp:
243         (khtml::InputNewlineCommandImpl::doApply): The code to insert the "extra" BR at the end
244         of blocks (hack done to make BRs show up when they appear at the ends of blocks) did not
245         cover this one quirky case where the insertion point can be placed in a BR at the end of 
246         a block that does actually render. Now the input newline code can handle this addtional
247         case.
248         * layout-tests/editing/selection/insert-3800346-fix-expected.txt: Added.
249         * layout-tests/editing/selection/insert-3800346-fix.html: Added.
250
251 2004-09-14  Darin Adler  <darin@apple.com>
252
253         Reviewed by Ken.
254
255         - fixed <rdar://problem/3479392> REGRESSION (Mail): select all does not select all at some pages
256
257         * khtml/xml/dom_caretposition.cpp: (DOM::CaretPosition::deepEquivalent):
258         Use caretMaxOffset instead of maxOffset when descending to the last node.
259         Also change around the function a bit.
260
261 2004-09-13  Darin Adler  <darin@apple.com>
262
263         Reviewed by Maciej.
264
265         - fixed <rdar://problem/3710123> Loading iframe that replaces content in the parent document crashes Safari (Oracle Portal)
266
267         This is a more complete fix, but it requires the previous attempt at a fix for this same
268         bug below, because this is only the "don't destroy the KHTMLPart" portion; other fixes are
269         still needed to survive shutdown of the part.
270
271         * khtml/ecma/kjs_proxy.cpp: (KJSProxyImpl::interpreter): Call the new keepAlive method.
272         This is called whenever we're about to use an interpreter to run some JavaScript, and
273         it's JavaScript that might destroy the part, hence the interpreter.
274
275         * khtml/khtml_part.h: Added keepAlive() and slotEndLifeSupport() member functions.
276         * khtml/khtmlpart_p.h: Added m_lifeSupportTimer.
277         * khtml/khtml_part.cpp:
278         (KHTMLPart::init): Connects m_lifeSupportTimer to slotEndLifeSupport.
279         (KHTMLPart::write): Removed old attempt to work around this issue.
280         (KHTMLPart::end): Ditto.
281         (KHTMLPart::keepAlive): Added. References the part, then sets up a one-shot timer.
282         (KHTMLPart::slotEndLifeSupport): Added. Stops the timer and then removes the reference
283         from the part, possibly destroying it.
284
285         * kwq/KWQSlot.mm:
286         (KWQSlot::KWQSlot): Added the new slot to the list of slots.
287         (KWQSlot::call): Ditto.
288
289         * kwq/KWQKHTMLPart.mm:
290         (KWQKHTMLPart::sendResizeEvent): Removed an old attempt to work around this same issue.
291         (KWQKHTMLPart::mouseDown): Ditto.
292         (KWQKHTMLPart::mouseDragged): Ditto.
293         (KWQKHTMLPart::mouseUp): Ditto.
294         (KWQKHTMLPart::mouseMoved): Ditto.
295         (KWQKHTMLPart::sendContextMenuEvent): Ditto.
296
297 2004-09-13  Darin Adler  <darin@apple.com>
298
299         Reviewed by Maciej.
300
301         - fixed regression caused by change earlier today
302
303         * khtml/xml/dom_selection.cpp: (DOM::Selection::modifyExtendingRightForward):
304         Use CaretPosition for CHARACTER, not WORD.
305
306 2004-09-13  Darin Adler  <darin@apple.com>
307
308         Reviewed by Kevin.
309
310         - fixed <rdar://problem/3798453> DIG failure: getting variable with same name as DOM element attribute gets attribute value instead
311
312         * khtml/ecma/kjs_events.cpp: (JSEventListener::handleEvent): When adding current target and
313         other event handler scope, put it below the existing scope chain. This ensures that things
314         found in the function's scope will come before the event handler, as in other browsers.
315
316 2004-09-13  Ken Kocienda  <kocienda@apple.com>
317
318         Reviewed by Darin
319         
320         Fix for this bug:
321         
322         <rdar://problem/3798346> REGRESSION (125-162): crash pushing down arrow key on KLM.com site
323
324         * khtml/xml/dom_position.cpp:
325         (DOM::Position::nextLinePosition): This function was being called in a case where it was not expected
326         until we traced the code. It has to do with some deeper issues associated with handling arrow keys, 
327         resulting in the editing arrow-down code running in a case where we are not editing. I discussed this 
328         with Darin, and we decided to handle the broader issues at a later date. The fix I am checking in
329         here to fix the bug is merely avoiding a null-deref.
330
331 2004-09-13  Ken Kocienda  <kocienda@apple.com>
332
333         Reviewed by John
334
335         Fix for this bug:
336         
337         <rdar://problem/3784840> REGRESSION (Mail): Text is inserted in the wrong place after changing typing style
338
339         * khtml/editing/htmlediting_impl.cpp:
340         (khtml::InputTextCommandImpl::prepareForTextInsertion): Code to handle typing style did not
341         check to see if the reference node used for the DOM node insertion operation was a block.
342         If it is, then the new node containing the new editing style now is inserted at the start of the block,
343         instead of after it.
344
345 2004-09-13  Ken Kocienda  <kocienda@apple.com>
346
347         Reviewed by me
348         
349         Added a couple new layout tests to cover recent changes.
350
351         * layout-tests/editing/editing.js: Added some new functions to do by-word selection movement.
352         * layout-tests/editing/selection/move-backwords-by-word-001-expected.txt: Added.
353         * layout-tests/editing/selection/move-backwords-by-word-001.html: Added.
354         * layout-tests/editing/selection/selection-3748164-fix-expected.txt: Added.
355         * layout-tests/editing/selection/selection-3748164-fix.html: Added.
356
357 2004-09-13  Ken Kocienda  <kocienda@apple.com>
358
359         Reviewed by John
360
361         Fix for this bug:
362         
363         <rdar://problem/3765519> REGRESSION (Mail): word movement goes too far upstream at start of line
364         
365         * khtml/xml/dom_position.cpp:
366         (DOM::Position::previousWordPosition): Use downstream position here when making final placement of caret. 
367
368 2004-09-13  Ken Kocienda  <kocienda@apple.com>
369
370         Reviewed by Darin
371
372         Various editing improvements, many focused on the improvements made possible by the
373         new CaretPosition class.
374         
375         Includes fixes for these bugs:
376         
377         <rdar://problem/3748164> REGRESSION (Mail): Arrow navigation in typical mail message can result in stuck caret
378         <rdar://problem/3782062> REGRESSION (Mail): option-delete can delete almost all of a message when it has trouble finding a word
379         <rdar://problem/3790456> triple click does not select entire paragraph (folklore.org)
380
381         * WebCore.pbproj/project.pbxproj: Added CaretPosition class files.
382         * khtml/dom/dom2_range.h:
383         (DOM::offsetInCharacters): Moved this helper here from khtml_text_operations.cpp. This
384         function helps to determine how to interpret the offsets used in DOM Ranges.
385         * khtml/editing/htmlediting_impl.cpp:
386         (khtml::InputNewlineCommandImpl::doApply): Use CaretPosition class to make "end-of-block" determination.
387         Also, fix a caret placement glitch in "case 1" in the code: Place the caret in the node after the inserted
388         BR. This makes it show up in the right place.
389         * khtml/khtml_part.cpp:
390         (KHTMLPart::handleMousePressEventDoubleClick): Don't limit double-click and triple-click handling only to text nodes.
391         (KHTMLPart::handleMousePressEventTripleClick): Ditto.
392         (KHTMLPart::selectAll): Use CaretPosition class to implement improved selectAll.
393         * khtml/misc/khtml_text_operations.cpp:
394         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator): Make a fix to the initial state setting of
395         m_handledChildren. This is true if the offset into the end node is 0, meaning that we do not want to descend
396         into its children at all.
397         * khtml/xml/dom_caretposition.cpp: Added.
398         * khtml/xml/dom_caretposition.h: Added.
399         * khtml/xml/dom_nodeimpl.cpp:
400         (NodeImpl::traverseNextNode): Fix bugs with the stayWithin implementation. We could miss nodes we want to test
401         due to an erroneous check of stayWithin when no such check is needed.
402         (NodeImpl::traverseNextSibling): Ditto.
403         (NodeImpl::traversePreviousNodePostOrder): Ditto.
404         * khtml/xml/dom_position.cpp:
405         (DOM::Position::Position): Remove spurious semi-colon.
406         (DOM::Position::upstream): Move incoming Position to its equivalentDeepPosition. This is part of the transition
407         that will make this code work better with increased use of CaretPosition.
408         (DOM::Position::downstream): Ditto.
409         (DOM::Position::atStartOfContainingEditableBlock): Removed. Dead code; was not being called.
410         (DOM::Position::atStartOfRootEditableElement): Removed. Dead code; was not being called.
411         (DOM::Position::isLastRenderedPositionInEditableBlock): Removed. Replaced with calls to CaretPosition class.
412         (DOM::Position::inLastEditableInRootEditableElement): Removed. Dead code; was not being called.
413         (DOM::Position::inFirstEditableInRootEditableElement): Removed. Was only being called by other code that has been removed.
414         * khtml/xml/dom_position.h:
415         * khtml/xml/dom_selection.cpp:
416         (DOM::Selection::modifyExtendingRightForward): Moved implementation of CHARACTER case to use CaretPosition class instead
417         of Position class helpers.
418         (DOM::Selection::modifyMovingRightForward): Ditto.
419         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
420         (DOM::Selection::modifyMovingLeftBackward): Ditto.
421         (DOM::Selection::validate): Made simplifications in code that used to call a concoction of Position class helpers to
422         do the right thing. Now calls CaretPosition equivalents.
423
424 2004-09-13  Ken Kocienda  <kocienda@apple.com>
425
426         Reviewed by me
427
428         This test was broken. The result is that it was not testing what it was supposed to 
429         be testing. I fixed the test and updated the expected results.
430
431         * layout-tests/editing/selection/move-between-blocks-no-001-expected.txt
432         * layout-tests/editing/selection/move-between-blocks-no-001.html
433
434 2004-09-13  Ken Kocienda  <kocienda@apple.com>
435
436         Reviewed by John
437
438         Fix for these bugs:
439         
440         <rdar://problem/3784835> REGRESSION (Mail): crash in DOM::ElementImpl::tagName inside delete text command code while editing a Mail message
441         <rdar://problem/3788015> REGRESSION (Mail): Crash deleting before a blockquote
442         <rdar://problem/3796366> REGRESSION (Mail): Crash Mail by deleting the right line from pasted HTML
443
444         * khtml/editing/htmlediting_impl.cpp:
445         (khtml::DeleteSelectionCommandImpl::doApply): All of these bugs are due to the same problem. When I
446         made the delete command run even when the text is a caret (to make block merges work right when the
447         caret is at the start of a block), I failed to handle one case when there might be no text to 
448         delete. This resulted in a call to the DeleteTextCommand with a zero-length deletion request.
449         This is not supported. Now, I have added an additional test in this one place in the code that
450         was causing all these failures.
451
452 2004-09-12  Darin Adler  <darin@apple.com>
453
454         Reviewed by Maciej.
455
456         - fixed <rdar://problem/3797758> REGRESSION (155-156): Cannot tab between input fields at switchboard.com
457
458         * kwq/KWQLineEdit.mm: (QLineEdit::selectAll): Use setFocus() instead of calling makeFirstResponder
459         directly since it handles the case where the field editor has focus.
460
461 2004-09-12  Darin Adler  <darin@apple.com>
462
463         Reviewed by Maciej.
464
465         - fixed <rdar://problem/3792082> zero character codes in UTF-16 input cause crash
466
467         * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertUTF16): Fixed code that was using the wrong variable
468         to decrement the input length, causing buffer overrun.
469
470 2004-09-12  Darin Adler  <darin@apple.com>
471
472         Reviewed by Maciej.
473
474         - fixed <rdar://problem/3798240> computed style error log messages seen with numbers in the range 74-77
475
476         * khtml/css/css_computedstyle.cpp: (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
477         Added implementations for CSS_PROP__KHTML_MARQUEE_INCREMENT, CSS_PROP_MAX_HEIGHT, CSS_PROP_MAX_WIDTH,
478         CSS_PROP_MIN_HEIGHT, CSS_PROP_MIN_WIDTH, and CSS_PROP_VISIBILITY.
479
480 2004-09-12  Darin Adler  <darin@apple.com>
481
482         * layout-tests/css1/text_properties/text-transform-expected.txt: Removed unused test result.
483
484 2004-09-11  Maciej Stachowiak  <mjs@apple.com>
485
486         Reviewed by Darin.
487
488         <rdar://problem/3787208> can't log in to SAP SDN site (JS parse error)
489
490         * kwq/KWQKURL.mm:
491         (KURL::decode_string): Check for find result >= 0 instead of >0,
492         to handle case of first character in a string being encoded.
493
494 2004-09-09  Chris Blumenberg  <cblu@apple.com>
495
496         Support for: <rdar://problem/3795485> debug menu item to enable RSS animation on first layout
497
498         Reviewed by rjw.
499
500         * khtml/khtml_part.h:
501         (KHTMLPart::didFirstLayout): new
502         * khtml/khtmlview.cpp:
503         (KHTMLView::layout): call didFirstLayout
504         * kwq/KWQKHTMLPart.h:
505         * kwq/KWQKHTMLPart.mm:
506         (KWQKHTMLPart::didFirstLayout): new
507         * kwq/WebCoreBridge.h:
508
509 === Safari-163 ===
510
511 2004-09-09  Maciej Stachowiak  <mjs@apple.com>
512
513         - roll out the last change, it appears to cause a performance regression
514
515         * khtml/rendering/render_box.cpp:
516         (RenderBox::caretRect):
517         * khtml/rendering/render_box.h:
518         * khtml/rendering/render_br.cpp:
519         (RenderBR::caretRect):
520         * khtml/rendering/render_br.h:
521         * khtml/rendering/render_flow.cpp:
522         (RenderFlow::caretRect):
523         * khtml/rendering/render_flow.h:
524         * khtml/rendering/render_object.cpp:
525         (RenderObject::caretRect):
526         * khtml/rendering/render_object.h:
527         * khtml/rendering/render_text.cpp:
528         (RenderText::caretRect):
529         * khtml/rendering/render_text.h:
530         * kwq/WebCoreBridge.h:
531         * kwq/WebCoreBridge.mm:
532
533 >>>>>>> 1.3216
534 2004-09-08  Maciej Stachowiak  <mjs@apple.com>
535
536         Reviewed by Dave.
537
538         WebCore part of fix for:
539         
540         <rdar://problem/3759187> REGRESSION (Mail): implement firstRectForCharacterRange:
541         
542         * kwq/WebCoreBridge.h:
543         * kwq/WebCoreBridge.mm:
544         (-[WebCoreBridge firstRectForDOMRange:]): New method to compute the rect for a
545         DOMRange, or if the range is split into multiple lines, the rect for the part on
546         the first line only.
547         
548         * khtml/rendering/render_object.cpp:
549         (RenderObject::caretRect): Added extraWidthToEndOfLine parameter and ditto
550         for the overrides below.
551         * khtml/rendering/render_object.h:
552         * khtml/rendering/render_box.cpp:
553         (RenderBox::caretRect):
554         * khtml/rendering/render_box.h:
555         * khtml/rendering/render_br.cpp:
556         (RenderBR::caretRect):
557         * khtml/rendering/render_br.h:
558         * khtml/rendering/render_flow.cpp:
559         (RenderFlow::caretRect):
560         * khtml/rendering/render_flow.h:
561         * khtml/rendering/render_text.cpp:
562         (RenderText::caretRect):
563
564 >>>>>>> 1.3214
565 2004-09-06  Darin Adler  <darin@apple.com>
566
567         Reviewed by Ken.
568
569         - fixed <rdar://problem/3790526> mark-related methods not implemented (needed for people with them in their key bindings files)
570
571         * khtml/khtml_part.h: Added mark and setMark.
572         * khtml/khtmlpart_p.h: Added m_mark.
573         * khtml/khtml_part.cpp:
574         (KHTMLPart::mark): Added.
575         (KHTMLPart::setMark): Added.
576
577         * kwq/KWQKHTMLPart.h: Change name of markedRange to markedTextRange to decrease
578         the change it will be confused with the mark.
579         * kwq/KWQKHTMLPart.mm:
580         (KWQKHTMLPart::clear): Update for name change.
581         (KWQKHTMLPart::markedTextRange): Ditto.
582         (KWQKHTMLPart::setMarkedTextRange): Ditto.
583
584         * khtml/rendering/render_text.cpp: (RenderText::paint): Update for name change.
585
586         * kwq/WebCoreBridge.h: Remove setSelectionFrom, selectionStart, selectionStartOffset,
587         selectionEnd, selectionEndOffset, and clearMarkedDOMRange. Renamed setMarkedDOMRange
588         to setMarkedTextDOMRange and markedDOMRange to markedTextDOMRange. Added setMarkDOMRange
589         and markDOMRange for the Emacs "mark".
590         * kwq/WebCoreBridge.mm:
591         (-[WebCoreBridge setMarkDOMRange:]): Added.
592         (-[WebCoreBridge markDOMRange]): Added.
593         (-[WebCoreBridge setMarkedTextDOMRange:]): Renamed.
594         (-[WebCoreBridge markedTextDOMRange]): Renamed.
595
596         * khtml/xml/dom_selection.cpp: (DOM::Selection::validate): Make paragraph positions
597         canonical by using deep rendered positions. Maybe someday this won't be an ad hoc
598         decision any more.
599
600         * khtml/xml/dom_nodeimpl.cpp: (NodeBaseImpl::removeChildren): Use ref and deref
601         rather than the unconventional check for 0 refCount. This makes us a bit more
602         robust against a node going away partway through the removal process.
603
604         * WebCore.pbproj/project.pbxproj: Update MACOSX_DEPLOYMENT_TARGET to 10.3.
605
606 2004-09-08  Maciej Stachowiak  <mjs@apple.com>
607
608         - fixed deployment build problems noticed by Grant
609
610         * khtml/rendering/render_flow.cpp:
611         (RenderFlow::caretRect):
612         * khtml/rendering/render_text.cpp:
613         (RenderText::caretRect):
614
615 2004-09-08  David Hyatt  <hyatt@apple.com>
616
617         Fix XML so that elements with no namespace never make HTML elements (when their names coincidentally match).
618         
619         Reviewed by rjw
620
621         * khtml/xml/dom_docimpl.cpp:
622         (DocumentImpl::createElementNS):
623
624 2004-09-07  Maciej Stachowiak  <mjs@apple.com>
625
626         Reviewed by John.
627
628         - renamed caretPos to caretRect and made it return a QRect instead
629         of taking four out parameters by reference.
630         
631         * khtml/rendering/render_box.cpp:
632         (RenderBox::caretRect):
633         * khtml/rendering/render_box.h:
634         * khtml/rendering/render_br.cpp:
635         (RenderBR::caretRect):
636         * khtml/rendering/render_br.h:
637         * khtml/rendering/render_flow.cpp:
638         (RenderFlow::caretRect):
639         * khtml/rendering/render_flow.h:
640         * khtml/rendering/render_object.cpp:
641         (RenderObject::caretRect):
642         * khtml/rendering/render_object.h:
643         * khtml/rendering/render_text.cpp:
644         (RenderText::caretRect):
645         * khtml/rendering/render_text.h:
646         * khtml/xml/dom_selection.cpp:
647         (DOM::Selection::xPosForVerticalArrowNavigation):
648         (DOM::Selection::layoutCaret):
649         * kwq/WebCoreBridge.mm:
650         (-[WebCoreBridge caretRectAtNode:offset:]):
651
652 2004-09-07  Maciej Stachowiak  <mjs@apple.com>
653
654         Reviewed by Kevin.
655
656         <rdar://problem/3759209> REGRESSION (Mail): assertion failure when all of marked text deleted at start of document
657         
658         * kwq/KWQKHTMLPart.mm:
659         (KWQKHTMLPart::setMarkedRange): Allow any empty range, even if
660         it's not in a text node, since in this case it won't matter and
661         weird things can happen when all marked text is removed, there
662         might not be any text nodes.
663
664 2004-09-07  David Hyatt  <hyatt@apple.com>
665
666         Initial text-decoration CSS3 work for editing.  Just gets the properties and values parsed.
667         
668         Reviewed by darin
669
670         * khtml/css/css_computedstyle.cpp:
671         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
672         * khtml/css/cssparser.cpp:
673         (CSSParser::parseValue):
674         * khtml/css/cssproperties.c:
675         (hash_prop):
676         (findProp):
677         * khtml/css/cssproperties.h:
678         * khtml/css/cssproperties.in:
679         * khtml/css/cssstyleselector.cpp:
680         (khtml::CSSStyleSelector::adjustRenderStyle):
681         * khtml/css/cssvalues.c:
682         (hash_val):
683         (findValue):
684         * khtml/css/cssvalues.h:
685         * khtml/css/cssvalues.in:
686
687 2004-09-06  Maciej Stachowiak  <mjs@apple.com>
688
689         Reviewed by Darin and Ken.
690
691         <rdar://problem/3655568> window.open fails when URL contains trailing space
692
693         * kwq/KWQKURL.mm:
694         (KURL::KURL): Strip trailing and leading space when resolving relative URLs in all
695         cases, instead of just leading in the non-absolute case as before.
696
697         - refactored KURL constructor to put more work in separate
698         functions and also to change static methods to static functions,
699         to avoid having to change the header when only changing helper
700         functions that do not affect the KURL API (since KURL.h is widely
701         included).
702         
703         * kwq/KWQKURL.mm:
704         (encodeHostname):
705         (findHostnamesInMailToURL):
706         (findHostnameInHierarchicalURL):
707         (encodeHostnames):
708         (encodeRelativeString):
709         (substituteBackslashes):
710         * kwq/KWQKURL.h:
711
712         - add missing include of qvaluelist.h
713
714         * khtml/ecma/kjs_dom.h:
715
716 2004-09-06  Darin Adler  <darin@apple.com>
717
718         Reviewed by John.
719
720         - fixed <rdar://problem/3512066> REGRESSION (Mail): Select All highlights only part of the content, though all is copied
721         - fixed <rdar://problem/3157025> REGRESSION (Mail): Should select paragraph instead of line on triple-click
722         - fixed <rdar://problem/3735048> REGRESSION (Mail): HTML editing must select newline on triple click
723         - fixed <rdar://problem/3788872> REGRESSION (Mail): ctrl-a emacs key binding does not work (move to start of paragraph)
724         - fixed <rdar://problem/3788881> REGRESSION (Mail): ctrl-e emacs key binding does not work (move to end of paragraph)
725         - fixed <rdar://problem/3789931> REGRESSION (Mail): typing style lost when you backspace
726         - added code to select inserted text to help WebKit implement yankAndSelect:
727         - did some clean-up on editing commands code
728         
729         * khtml/khtml_part.cpp:
730         (KHTMLPart::handleMousePressEventTripleClick): Expand to a paragraph, not a line.
731         (KHTMLPart::selectAll): Remove a lot of unneeded code and just expand to document using Selection.
732         (KHTMLPart::selectionHasStyle): Remove check that limited us to only HTML elements, and add
733         a check for nil. Together, these two changes fix a few cases I ran into during testing.
734
735         * khtml/rendering/render_canvas.cpp: (RenderCanvas::setSelection): Fix test that was checking if
736         the old selection spanned multiple objects when it really should have checked whether the new
737         new selection spans multiple objects. This caused the select all redraw bug.
738
739         * khtml/editing/htmlediting.h: Fixed indenting. Remove command IDs, replacing them with a couple
740         of specific type checking methods, and SharedCommandImpl, using EditCommandImpl directly instead.
741         Got rid of virtual functions, since the command objects have no data members other than the ones
742         inherited from SharedPtr. Removed explicit copy constructors and destructors. Removed unneeded
743         empty constructors. Removed inline directives that were having no effect. Added some boolean
744         selectInsertedText parameter to some commands. Made almost all member functions const, because
745         the const here applies to the command object which is a smart pointer, not the pointed-to
746         command implementation object.
747         * khtml/editing/htmlediting.cpp:
748         (khtml::EditCommand::EditCommand): Changed since SharedPtr is now a pointer to EditCommandImpl.
749         (khtml::EditCommand::operator=): Added. By defining this explicitly, we don't need the class
750         that we are pointing to defined in the header, which lets us get rid of SharedCommandImpl.
751         (khtml::EditCommand::isInputTextCommand): Added.
752         (khtml::EditCommand::isTypingCommand): Added.
753         (khtml::EditCommand::setParent): Updated since EditCommandImpl.setParent takes an impl pointer now.
754         (khtml::EditCommand::handle): Removed, since it's identical to get().
755         (khtml::InputTextCommand::input): Added selectInsertedText parameter.
756         (khtml::TypingCommand::TypingCommand): Ditto.
757         (khtml::TypingCommand::insertText): Ditto.
758         (khtml::TypingCommand::isOpenForMoreTypingCommand): Use isTypingCommand instead of commandID.
759         (khtml::TypingCommand::closeTyping): Change parameter type to const reference.
760
761         * khtml/editing/htmlediting_impl.h: Made StyleChange functions be const member functions.
762         Changed parent() and setParent() to take and return EditCommandImpl pointers and be inlined.
763         Added virtual isInputTextCommand, isTypingCommand, and preservesTypingStyle functions.
764         Removed commandID functions and unneeded explicit destructors. Removed unneeded doApply
765         function declaration in CompositeEditCommandImpl. Changed type of applyTypingStyle to return
766         a node, not necessarily an element. Removed private execute function from InputTextCommandImpl.
767         Added selectInsertedText to InputTextCommandImpl's input function and TypingCommandImpl's constructor
768         and insertText function.
769         * khtml/editing/htmlediting_impl.cpp:
770         (khtml::StyleChange::StyleChange): Don't bother initializing the booleans since init handles that.
771         (khtml::StyleChange::init): Added code to strip whitespace, and tweaked how the function does its job.
772         (khtml::StyleChange::currentlyHasStyle): Added a check for null value, which can happen for properties
773         where we don't have computed style implemented yet.
774         (khtml::EditCommandImpl::EditCommandImpl): Updated since there is no SharedCommandImpl any more.
775         (khtml::EditCommandImpl::apply): Call new preservesTypingStyle function rather than checking
776         the command ID. This preserves typing style when deleting with the keyboard.
777         (khtml::EditCommandImpl::setStartingSelection): Changed since parent is now a EditCommandImpl.
778         Also rewrote to use for loop so it's simpler-looking.
779         (khtml::EditCommandImpl::setEndingSelection): Ditto.
780         (khtml::EditCommandImpl::setTypingStyle): Ditto.
781         (khtml::EditCommandImpl::preservesTypingStyle): Added. Returns false.
782         (khtml::EditCommandImpl::isInputTextCommand): Added. Returns false.
783         (khtml::EditCommandImpl::isTypingCommand): Added. Returns false.
784         (khtml::CompositeEditCommandImpl::applyTypingStyle): Changed this function to return a node rather
785         than an element. Also change it so it returns the child as-is if the style change has nothing in it.
786         (khtml::AppendNodeCommandImpl::~AppendNodeCommandImpl): Removed unneeded null checks.
787         (khtml::DeleteSelectionCommandImpl::preservesTypingStyle): Added. Returns true.
788         (khtml::DeleteTextCommandImpl::~DeleteTextCommandImpl): Removed unneeded null checks.
789         (khtml::InputTextCommandImpl::input): Renamed execute function to input and got rid of the additional
790         level of indirection, since it was the only caller. Added selectInsertedText parameter and changed
791         the code so it will respect it.
792         (khtml::InputTextCommandImpl::isInputTextCommand): Added. Returns true.
793         (khtml::InsertNodeBeforeCommandImpl::~InsertNodeBeforeCommandImpl): Removed unneeded null checks.
794         (khtml::JoinTextNodesCommandImpl::~JoinTextNodesCommandImpl): Ditto.
795         (khtml::MoveSelectionCommandImpl::MoveSelectionCommandImpl): Hold a reference to the fragment
796         while the command exists.
797         (khtml::MoveSelectionCommandImpl::~MoveSelectionCommandImpl): Release the fragment.
798         (khtml::RemoveNodeCommandImpl::~RemoveNodeCommandImpl): Remove unneeded null checks.
799         (khtml::RemoveNodeCommandImpl::doUnapply): Take advantage of defined behavior of insertBefore when
800         the node to insert before is 0 (means the same thing as appendChild).
801         (khtml::RemoveNodePreservingChildrenCommandImpl::~RemoveNodePreservingChildrenCommandImpl):
802         Remove unneeded null check.
803         (khtml::ReplaceSelectionCommandImpl::ReplaceSelectionCommandImpl): Hold a reference to the fragment
804         while the command exists.
805         (khtml::ReplaceSelectionCommandImpl::~ReplaceSelectionCommandImpl): Release the fragment.
806         (khtml::SetNodeAttributeCommandImpl::~SetNodeAttributeCommandImpl): Remove unneeded null check.
807         (khtml::SplitTextNodeCommandImpl::~SplitTextNodeCommandImpl): Remove unneeded null check.
808         (khtml::TypingCommandImpl::TypingCommandImpl): Added selectInsertedText parameter.
809         (khtml::TypingCommandImpl::doApply): Pass along selectInsertedText parameter.
810         (khtml::TypingCommandImpl::insertText): Ditto.
811         (khtml::TypingCommandImpl::preservesTypingStyle): Added. Returns true for DeleteKey.
812         (khtml::TypingCommandImpl::isTypingCommand): Added. Returns true.
813
814         * khtml/editing/jsediting.cpp: Add a cut at implementing the underline command. May not work
815         perfectly yet because text-decoration is not inherited the way, say, font-weight is.
816
817         * khtml/xml/dom_selection.h: Removed some unneeded friend declarations for comparison operators
818         that use only public members. Added PARAGRAPH_BOUNDARY.
819         * khtml/xml/dom_selection.cpp:
820         (DOM::Selection::modifyExtendingRightForward): Implemented paragraph boundary case, simplified line
821         boundary case (by changing parameter types and function names, not the algorithm), and made
822         paragraph case fall into line case for now.
823         (DOM::Selection::modifyMovingRightForward): Ditto.
824         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
825         (DOM::Selection::modifyMovingLeftBackward): Ditto.
826         (DOM::Selection::validate): Implemented paragraph case and paragraph boundary case, simplified the
827         line case as above and also fixed the document case.
828         (DOM::startOfFirstRunAt): Changed to use DOM::Position instead of node
829         offset pairs. Also renamed and got rid of separate bool to indicate "not found".
830         (DOM::endOfLastRunAt): Ditto.
831         (DOM::selectionForLine): Ditto.
832
833         * khtml/xml/dom_position.h: Added startParagraphBoundary and endParagraphBoundary.
834         Also used enums instead of bools in a couple of places. Removed some unneeded friend
835         declarations for comparison operators that use only public members.
836         * khtml/xml/dom_position.cpp:
837         (DOM::Position::Position): Coding style tweak.
838         (DOM::Position::startParagraphBoundary): Added.
839         (DOM::Position::endParagraphBoundary): Added.
840         (DOM::Position::upstream): Use enum parameter instead of bool.
841         (DOM::Position::downstream): Ditto.
842         (DOM::Position::rendersOnSameLine): Removed unused function. Noticed some backwards logic
843         here, and removed it rather than fixing it.
844
845         * khtml/xml/dom_nodeimpl.h: Added traversePreviousNodePostOrder.
846         * khtml/xml/dom_nodeimpl.cpp:
847         (NodeImpl::traversePreviousNodePostOrder): Added. For some uses, this function is more analogous
848         to traverseNextNode in reverse than traversePreviousNode, which does a backwards pre-order traversal.
849
850         * kwq/WebCoreBridge.h: Replaced fontForCurrentPosition method with fontForSelection:, added
851         selectInsertedText parameter to insertText method, and added selectionStartHasStyle: method.
852         Add WebSelectToParagraphBoundary.
853         * kwq/WebCoreBridge.mm:
854         (-[WebCoreBridge setSelectedDOMRange:affinity:]): Added workaround for bug where isRenderedContent
855         returns false for <br> elements at the ends of lines.
856         (-[WebCoreBridge insertText:selectInsertedText:]): Added selectInsertedText parameter, passing it
857         along to TypingCommand::insertText.
858         (-[WebCoreBridge selectionStartHasStyle:]): Added. Calls code in the part that does the real work.
859         (-[WebCoreBridge fontForSelection:]): Ditto.
860
861         * kwq/KWQKHTMLPart.h: Renamed fontForCurrentPosition to fontForSelection, and added a feature
862         where it tells us whether there are multiple fonts in the selection or not.
863         * kwq/KWQKHTMLPart.mm:
864         (KWQKHTMLPart::fontForSelection): Rewrote this to be a bit simpler, and added code to detect
865         whether there are multiple fonts in the selection.
866         (KWQKHTMLPart::didTellBridgeAboutLoad): Use a global character rather than a bad pointer here.
867         Better not to rely on undefined behavior.
868         (KWQKHTMLPart::documentFragmentWithText): Use lowercase HTML. I believe this works better when
869         the document is XML, and we should probably visit all callers and change them.
870         (KWQKHTMLPart::registerCommandForUndo): Call get() instead of handle().
871         (KWQKHTMLPart::registerCommandForRedo): Call get() instead of handle().
872
873         * khtml/misc/shared.h: Added a private, non-implemented copy constructor and assignment
874         operator to Shared<> and TreeShared<> to prevent copying reference counts by accident.
875         * khtml/rendering/render_style.h: Get rid of Shared<BorderData>, since it's not used that way.
876         This makes BorderData smaller, and allows it to compile with the change to Shared<>.
877         * khtml/xml/dom_docimpl.h: Remove unneeded copy constructor on DocumentFragmentImpl,
878         which ran afoul of the change to Shared<> and was unused.
879         * khtml/xml/dom_docimpl.cpp: Ditto.
880         * khtml/xml/dom_stringimpl.cpp:
881         (DOM::DOMStringImpl::empty): Changed code around so it doesn't run afoul of the change to
882         Shared<>. The old code was copying a DOMStringImpl.
883         (DOM::DOMStringImpl::ascii): Added code to null-terminate the string buffer.
884
885 2004-09-06  Darin Adler  <darin@apple.com>
886
887         Reviewed by John.
888
889         - improved computed style code and implemented text-decoration and text-shadow (needed for, e.g., underline)
890
891         * khtml/css/css_computedstyle.cpp:
892         Added CSS_PROP_TEXT_DECORATION to the InheritableProperties array for now even though it's
893         not inheritable. This makes underline work in some cases for typing style. We may decide to
894         take it back out again after further consideration.
895         (DOM::valueForLength): Use IDs in primitive values rather than strings.
896         (DOM::valueForBorderStyle): Ditto, also renamed this.
897         (DOM::valueForTextAlign): More of the same.
898         (DOM::valueForShadow): Added this function.
899         (DOM::CSSComputedStyleDeclarationImpl::getPositionOffsetValue): More IDs in primitive values.
900         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Changed all the cases to use
901         IDs instead of strings in primitive values. Also put the style in a local variable for
902         better code size and smaller source code too. Added implementation for CSS_PROP_TEXT_DECORATION
903         and CSS_PROP_TEXT_SHADOW.
904
905         * khtml/css/css_valueimpl.cpp:
906         (CSSValueListImpl::cssText): Put commas between list elements.
907         (CSSPrimitiveValueImpl::cssText): Fixed some messed up indenting and removed an unneeded
908         default case that would just prevent a warning if we ever have an unhandled enum value.
909
910 2004-09-06  Darin Adler  <darin@apple.com>
911
912         Reviewed by John.
913
914         - did some clean-up on form data code
915
916         * khtml/misc/formdata.h: Added more public functions as suggested by Chris when he reviewed
917         this class.
918         * khtml/misc/formdata.cpp: (khtml::FormData::appendFile): Added. Will be needed soon.
919         * kwq/KWQFormData.mm: (arrayFromFormData): Use new cleaned-up FormData API.
920
921 2004-09-06  Darin Adler  <darin@apple.com>
922
923         Reviewed by John.
924
925         * kwq/DOM-CSS.mm: (-[DOMCSSStyleDeclaration description]): Use cssText in the description
926         so it's easier to see in the debugger.
927
928 2004-09-06  Darin Adler  <darin@apple.com>
929
930         Reviewed by John.
931
932         * khtml/ecma/xmlhttprequest.cpp: (KJS::XMLHttpRequest::send): Remove uneeded QCString copy.
933
934 2004-09-04  Richard Williamson   <rjw@apple.com>
935
936         Fix build problem on panther.
937
938         * khtml/ecma/kjs_html.cpp:
939         * khtml/rendering/render_canvasimage.h:
940
941 2004-09-03  David Hyatt  <hyatt@apple.com>
942
943         Simple tweak to background-attachment.  Don't apply the slow repaint flag until after the whole style has been
944         resolved, since while cascading someone may set the attachment to fixed but later override with scroll.
945
946         * khtml/css/cssstyleselector.cpp:
947         (khtml::CSSStyleSelector::adjustRenderStyle):
948         (khtml::CSSStyleSelector::applyProperty):
949
950 2004-09-03  Richard Williamson   <rjw@apple.com>
951
952         Fixed <rdar://problem/3781001>: redirection of URL via resource load delegate does not correctly set base URL for subsequent loads
953
954         Ensure that stylesheets have the correct URL when request
955         is redirected.
956
957         Reviewed by Maciej.
958
959         * khtml/misc/loader.cpp:
960         (CachedCSSStyleSheet::checkNotify):
961         * kwq/KWQLoader.h:
962         * kwq/KWQLoader.mm:
963         (KWQIsResponseURLEqualToURL):
964         (KWQResponseURL):
965
966         * khtml/ecma/kjs_html.cpp:
967         (KJS::Context2DFunction::tryCall):
968         Compare parameter count with == instead of <=.
969
970 2004-09-03  David Hyatt  <hyatt@apple.com>
971
972         Fix for 3779083, deleting large amount of text is really slow.  Don't use NodeLists in editing remove commands.
973         
974         Reviewed by darin
975
976         * khtml/editing/htmlediting_impl.cpp:
977         (khtml::RemoveNodeCommandImpl::RemoveNodeCommandImpl):
978         (khtml::RemoveNodePreservingChildrenCommandImpl::doApply):
979
980 2004-09-03  Darin Adler  <darin@apple.com>
981
982         Reviewed by John.
983
984         - fixed <rdar://problem/3714501> REGRESSION (125.8-8A162): Chinese words display as garbage in search results (www.sz.net.cn)
985
986         * khtml/ecma/kjs_html.cpp: (KJS::HTMLDocument::putValue): Resolve URL using the document method
987         that passes the codec rather than calling the KURL constructor directly.
988
989 2004-09-03  Chris Blumenberg  <cblu@apple.com>
990
991         Fixed: <rdar://problem/3788409> can't create or clone an embed element
992
993         Reviewed by rjw.
994
995         * khtml/html/htmlparser.cpp: added fixme about sharing code
996         * khtml/xml/dom_docimpl.cpp: ditto
997         (DocumentImpl::createHTMLElement): create and return a HTMLEmbedElementImpl
998
999 2004-09-03  Darin Adler  <darin@apple.com>
1000
1001         Reviewed by Chris.
1002
1003         - fixed <rdar://problem/3410112> filename with non-ASCII name for <input type=file> should be sent in the page's encoding
1004
1005         * khtml/html/html_formimpl.cpp: (DOM::HTMLFormElementImpl::formData):
1006         Encode filename using the codec rather than doing the &# dance. It turns out that Mozilla
1007         only does the &# thing under certain circumstances that are not important. Always encoding
1008         the filename is almost certainly better behavior, and will fix many serious problems for
1009         Japanese and Korean users and websites.
1010
1011 2004-09-03  Richard Williamson   <rjw@apple.com>
1012
1013         Made drawImage() in <canvas> compliant with whatwg spec.
1014         
1015         Reviewed by John.
1016
1017         * khtml/ecma/kjs_html.cpp:
1018         (KJS::Context2DFunction::tryCall):
1019         * khtml/html/html_imageimpl.h:
1020         (DOM::HTMLImageElementImpl::pixmap):
1021
1022 2004-09-03  David Hyatt  <hyatt@apple.com>
1023
1024         Fix for 3787686, CSS parser should do case-sensitive matching of ids and attributes only in strict mode
1025         (and not whenever you have an HTML document).
1026         
1027         Reviewed by john
1028
1029         * khtml/css/parser.cpp:
1030         * khtml/css/parser.y:
1031
1032 === Safari-162 ===
1033
1034 2004-09-03  Darin Adler  <darin@apple.com>
1035
1036         Reviewed by John.
1037
1038         - <rdar://problem/3788040> REGRESSION: text that i type into a textarea disappears when i tab out of the textarea
1039
1040         * kwq/KWQTextArea.mm: (-[KWQTextArea textDidChange:]): Bring back an unconditional version of
1041         this method. Earlier, we deleted this method, but we should have instead removed the check.
1042
1043 2004-09-02  David Hyatt  <hyatt@apple.com>
1044
1045         Swap RenderBox and RenderContainer.  Make leaf RenderObjects actually derive off of RenderBox instead.
1046         
1047         Reviewed by kocienda
1048
1049         * khtml/rendering/render_block.cpp:
1050         (khtml::RenderBlock::addChildToFlow):
1051         * khtml/rendering/render_box.cpp:
1052         (RenderBox::RenderBox):
1053         (RenderBox::detach):
1054         * khtml/rendering/render_box.h:
1055         * khtml/rendering/render_container.cpp:
1056         (RenderContainer::RenderContainer):
1057         (RenderContainer::detach):
1058         * khtml/rendering/render_container.h:
1059         * khtml/rendering/render_flow.cpp:
1060         (RenderFlow::detach):
1061         (RenderFlow::dirtyLineBoxes):
1062         (RenderFlow::createInlineBox):
1063         (RenderFlow::getAbsoluteRepaintRect):
1064         (RenderFlow::lowestPosition):
1065         (RenderFlow::rightmostPosition):
1066         (RenderFlow::leftmostPosition):
1067         (RenderFlow::caretPos):
1068         * khtml/rendering/render_flow.h:
1069         (khtml::RenderFlow::RenderFlow):
1070         * khtml/rendering/render_frames.cpp:
1071         (RenderFrameSet::RenderFrameSet):
1072         (RenderFrameSet::nodeAtPoint):
1073         (RenderFrameSet::dump):
1074         * khtml/rendering/render_frames.h:
1075         * khtml/rendering/render_inline.cpp:
1076         (RenderInline::addChildToFlow):
1077         * khtml/rendering/render_replaced.cpp:
1078         * khtml/rendering/render_replaced.h:
1079         (khtml::RenderReplaced::setIntrinsicHeight):
1080         * khtml/rendering/render_table.cpp:
1081         (RenderTableSection::RenderTableSection):
1082         (RenderTableSection::detach):
1083         (RenderTableSection::setStyle):
1084         * khtml/rendering/render_table.h:
1085
1086 2004-09-02  Ken Kocienda  <kocienda@apple.com>
1087
1088         Reviewed by me
1089
1090         * khtml/editing/htmlediting_impl.h: Fix some inconsistent use of whitespace. No code change.
1091
1092 2004-09-02  Ken Kocienda  <kocienda@apple.com>
1093
1094         Reviewed by Hyatt
1095
1096         Fix for this bug:
1097         
1098         <rdar://problem/3786848> REGRESSION (Mail): Typing styles and font panel updates broken
1099
1100         * khtml/xml/dom_position.cpp:
1101         (DOM::Position::inRenderedContent): Check for inlines that can have kids is wrong.
1102         I busted this the other day when making the PositionIterator class iterate over
1103         all nodes and not just leaves of the DOM tree.
1104         
1105         Update all the following functions. These use the PositionIterator class, but still 
1106         only want to consider leaf nodes.
1107         
1108         (DOM::Position::isFirstRenderedPositionOnLine)
1109         (DOM::Position::isLastRenderedPositionOnLine)
1110         (DOM::Position::isLastRenderedPositionInEditableBlock)
1111         (DOM::Position::inFirstEditableInRootEditableElement)
1112         (DOM::Position::inLastEditableInRootEditableElement)
1113         (DOM::Position::inFirstEditableInContainingEditableBlock)
1114         (DOM::Position::inLastEditableInContainingEditableBlock)
1115
1116 2004-09-02  Richard Williamson   <rjw@apple.com>
1117
1118         Support for patterns in <canvas>
1119
1120         Reviewed by Hyatt.
1121
1122         * khtml/ecma/kjs_html.cpp:
1123         (KJS::Context2DFunction::tryCall):
1124         (Context2D::putValue):
1125         (drawPattern):
1126         (ImagePattern::ImagePattern):
1127         (ImagePattern::~ImagePattern):
1128         * khtml/ecma/kjs_html.h:
1129         (KJS::ImagePattern::getPattern):
1130         (KJS::ImagePattern::pixmap):
1131         * kwq/KWQPixmap.h:
1132         * kwq/KWQPixmap.mm:
1133         (QPixmap::imageRef):
1134         * kwq/WebCoreImageRenderer.h:
1135
1136 2004-09-01  David Hyatt  <hyatt@apple.com>
1137
1138         Fix for 3769409, a regression from 10.3.4 to 10.3.5 involving <colgroup>s in malformed HTML.
1139         
1140         Reviewed by mjs
1141
1142         * khtml/html/htmlparser.cpp:
1143         (KHTMLParser::insertNode):
1144
1145 2004-09-01  David Hyatt  <hyatt@apple.com>
1146
1147         Fix for the <colgroup> crasher.  Make sure adding to an anonymous box just returns immediately. Also eliminate
1148         all the redundant setPos -500000 calls, since we don't need those at all.
1149         
1150         Reviewed by john
1151
1152         * khtml/rendering/render_block.cpp:
1153         (khtml::RenderBlock::addChildToFlow):
1154         (khtml::RenderBlock::makeChildrenNonInline):
1155         * khtml/rendering/render_inline.cpp:
1156         (RenderInline::splitFlow):
1157
1158 2004-09-02  Ken Kocienda  <kocienda@apple.com>
1159
1160         Reviewed by John
1161
1162         Fix for these bugs:
1163         
1164         <rdar://problem/3729219> REGRESSION (Mail): Caret placement and navigation not working correctly at yahoo.com
1165         <rdar://problem/3758606> REGRESSION (Mail): Deletions across DIV elements is broken
1166         <rdar://problem/3784810> REGRESSION (Mail): delete at beginning of line instead deletes to the end of the document (simple reduced test)
1167
1168         I made some very big improvements to the code which handles deletions of selections
1169         which span more than one block.
1170
1171         * khtml/editing/htmlediting_impl.cpp:
1172         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): An new, overloaded version of this
1173         function which works on a NodeImpl. The code in this function fell out of some refactoring
1174         I did in the function with the same name which takes a Position as an argument.
1175         (khtml::DeleteSelectionCommandImpl::moveNodesToBlock): New function. This new logic provides
1176         the smarts to fix the bugs listed above and greatly improves the code to perform deleting 
1177         selections which span more than one block.
1178         (khtml::DeleteSelectionCommandImpl::doApply): Several changes. Constrain downstream positions
1179         so that they stay in the current block. This was a mistake before I think. Add code to detect
1180         when the insertion point is a caret at the start of a block. This is a special-case of a
1181         cross-block selection. Change the end-of-deletion-fixup case to operate on the downstreamEnd
1182         position of the selection rather than the upstream. This is more logical. Refine the block 
1183         merge logic to handle more cases, like dealing with whitespace. 
1184         * khtml/editing/htmlediting_impl.h: Associated header file changes.
1185         * khtml/xml/dom_nodeimpl.cpp: 
1186         (NodeImpl::rootEditableElement): Add code to clamp the return value to the body element.
1187         * khtml/xml/dom_selection.cpp:
1188         (DOM::Selection::validate): Make selection canonicalizations stay in the current block.
1189         * layout-tests/editing/deleting/delete-block-merge-contents-001-expected.txt:
1190         * layout-tests/editing/deleting/delete-block-merge-contents-001.html:
1191         * layout-tests/editing/deleting/delete-block-merge-contents-002-expected.txt: Added.
1192         * layout-tests/editing/deleting/delete-block-merge-contents-002.html: Added.
1193         * layout-tests/editing/deleting/delete-block-merge-contents-003-expected.txt: Added.
1194         * layout-tests/editing/deleting/delete-block-merge-contents-003.html: Added.
1195         * layout-tests/editing/deleting/delete-block-merge-contents-004-expected.txt: Added.
1196         * layout-tests/editing/deleting/delete-block-merge-contents-004.html: Added.
1197         * layout-tests/editing/deleting/delete-block-merge-contents-005-expected.txt: Added.
1198         * layout-tests/editing/deleting/delete-block-merge-contents-005.html: Added.
1199         * layout-tests/editing/deleting/delete-block-merge-contents-006-expected.txt: Added.
1200         * layout-tests/editing/deleting/delete-block-merge-contents-006.html: Added.
1201         * layout-tests/editing/deleting/delete-block-merge-contents-007-expected.txt: Added.
1202         * layout-tests/editing/deleting/delete-block-merge-contents-007.html: Added.
1203         * layout-tests/editing/deleting/delete-block-merge-contents-008-expected.txt: Added.
1204         * layout-tests/editing/deleting/delete-block-merge-contents-008.html: Added.
1205         * layout-tests/editing/deleting/delete-block-merge-contents-009-expected.txt: Added.
1206         * layout-tests/editing/deleting/delete-block-merge-contents-009.html: Added.
1207         * layout-tests/editing/deleting/delete-block-merge-contents-010-expected.txt: Added.
1208         * layout-tests/editing/deleting/delete-block-merge-contents-010.html: Added.
1209         * layout-tests/editing/deleting/delete-block-merge-contents-011-expected.txt: Added.
1210         * layout-tests/editing/deleting/delete-block-merge-contents-011.html: Added.
1211         * layout-tests/editing/inserting/insert-3654864-fix-expected.txt: Updated with new results.
1212         * layout-tests/editing/inserting/insert-3654864-fix.html: Updated test to deal better with
1213         improved select all behavior.
1214         * layout-tests/editing/selection/select-all-003-expected.txt: Updated with new results.
1215
1216 2004-09-01  Richard Williamson   <rjw@apple.com>
1217
1218         Fixed panther build glitch.
1219
1220         Reviewed by Ken.
1221
1222         * khtml/ecma/kjs_html.cpp:
1223
1224 2004-09-01  Richard Williamson   <rjw@apple.com>
1225
1226         Finished implementation of gradient support in <canvas>.
1227
1228         Reviewed by John.
1229
1230         * khtml/ecma/kjs_html.cpp:
1231         (KJS::HTMLElementFunction::tryCall):
1232         (isGradient):
1233         (isImagePattern):
1234         (KJS::Context2DFunction::tryCall):
1235         (Context2D::putValue):
1236         (Context2D::Context2D):
1237         (KJS::GradientFunction::tryCall):
1238         (gradientCallback):
1239         (Gradient::commonInit):
1240         (Gradient::Gradient):
1241         (Gradient::~Gradient):
1242         (Gradient::getShading):
1243         (Gradient::addColorStop):
1244         (sortStops):
1245         (Gradient::colorStops):
1246         * khtml/ecma/kjs_html.h:
1247         (KJS::ColorStop::ColorStop):
1248         * khtml/ecma/kjs_html.lut.h:
1249         (KJS::):
1250
1251 2004-09-01  David Hyatt  <hyatt@apple.com>
1252
1253         Fix for 3784686, hidden links still active.  Make sure text nodes exclude themselves from nodeAtPoint checks
1254         when hidden.
1255         
1256         * khtml/rendering/render_text.cpp:
1257         (RenderText::nodeAtPoint):
1258
1259 2004-08-31  David Hyatt  <hyatt@apple.com>
1260
1261         Fixes for 3761411 and 3782201.  This patch makes two changes to percentage heights.  First it makes sure that
1262         replaced elements always flex inside a cell (unlike blocks and tables, which do so only sometimes under bizarre
1263         conditions that are still being guessed at by me).  The second fix is a recognition that empty tables do not
1264         actually honor their heights, and so it is a mistake to try to flex them.
1265         
1266         Reviewed by mjs
1267
1268         * khtml/rendering/render_table.cpp:
1269         (RenderTableSection::layoutRows):
1270         * khtml/rendering/render_table.h:
1271         (khtml::RenderTable::hasSections):
1272
1273 2004-08-31  Ken Kocienda  <kocienda@apple.com>
1274
1275         Reviewed by Hyatt
1276     
1277         Fix for this bug:
1278         
1279         <rdar://problem/3781572> can't paste text in replied message view
1280
1281         * khtml/xml/dom2_rangeimpl.cpp:
1282         (DOM::RangeImpl::toHTML): Copying text placed in an anonymous block was failing
1283         since the code in here depending on the text node's containing block having an
1284         element, which it won't. In fact, using containing block is wrong anyway, since
1285         positioned elements can have containing blocks far from where they live in the
1286         tree. This "move up to block check" should use the more DOM-wise enclosingBlockFlowElement()
1287         in NodeImpl.
1288
1289 2004-08-30  David Hyatt  <hyatt@apple.com>
1290
1291         Fix for 3742585, sony dhtml menus wrong size.  The percentage table height algorithm was wrong.  This patch
1292         unifies the table percentage height algorithm with the block percentage height algorithm and fixes bugs in
1293         both.
1294         
1295         Reviewed by john
1296
1297         * khtml/rendering/render_box.cpp:
1298         (RenderBox::calcPercentageHeight):
1299         * khtml/rendering/render_table.cpp:
1300         (RenderTable::layout):
1301
1302 2004-08-31  Ken Kocienda  <kocienda@apple.com>
1303
1304         Reviewed by me
1305         
1306         Added more editing layout tests.
1307
1308         * layout-tests/editing/deleting/delete-tab-001-expected.txt: Added.
1309         * layout-tests/editing/deleting/delete-tab-001.html: Added.
1310         * layout-tests/editing/deleting/delete-tab-002-expected.txt: Added.
1311         * layout-tests/editing/deleting/delete-tab-002.html: Added.
1312         * layout-tests/editing/deleting/delete-tab-003-expected.txt: Added.
1313         * layout-tests/editing/deleting/delete-tab-003.html: Added.
1314         * layout-tests/editing/deleting/delete-tab-004-expected.txt: Added.
1315         * layout-tests/editing/deleting/delete-tab-004.html: Added.
1316         * layout-tests/editing/editing.js: Fixed a little bug in one of the "delayed" commands.
1317         * layout-tests/editing/inserting/insert-tab-001-expected.txt: Added.
1318         * layout-tests/editing/inserting/insert-tab-001.html: Added.
1319         * layout-tests/editing/inserting/insert-tab-002-expected.txt: Added.
1320         * layout-tests/editing/inserting/insert-tab-002.html: Added.
1321         * layout-tests/editing/inserting/insert-tab-003-expected.txt: Added.
1322         * layout-tests/editing/inserting/insert-tab-003.html: Added.
1323         * layout-tests/editing/inserting/insert-tab-004-expected.txt: Added.
1324         * layout-tests/editing/inserting/insert-tab-004.html: Added.
1325
1326 2004-08-31  Ken Kocienda  <kocienda@apple.com>
1327
1328         Reviewed by John
1329
1330         Fix for this bug:
1331         
1332         <rdar://problem/3782521> Typing newline at start of block does not work
1333
1334         * khtml/editing/htmlediting_impl.cpp:
1335         (khtml::InputNewlineCommandImpl::doApply): Change handling of case to insert
1336         newline at the start of a block.
1337         * layout-tests/editing/inserting/insert-br-006-expected.txt: Updated layout test with
1338         new results.
1339
1340 2004-08-31  Ken Kocienda  <kocienda@apple.com>
1341
1342         Reviewed by me
1343
1344         Checked in incorrect results for these tests. There are the right ones.
1345
1346         * layout-tests/editing/deleting/collapse-whitespace-3587601-fix-expected.txt
1347         * layout-tests/editing/selection/move-by-line-001-expected.txt
1348
1349 2004-08-31  Ken Kocienda  <kocienda@apple.com>
1350
1351         Reviewed by me
1352         
1353         Added more editing layout tests.
1354
1355         * layout-tests/editing/deleting/collapse-whitespace-3587601-fix-expected.txt: Added.
1356         * layout-tests/editing/deleting/collapse-whitespace-3587601-fix.html: Added.
1357         * layout-tests/editing/deleting/delete-block-merge-contents-001-expected.txt: Added.
1358         * layout-tests/editing/deleting/delete-block-merge-contents-001.html: Added.
1359         * layout-tests/editing/editing.js: Added some more navigation commands.
1360         * layout-tests/editing/inserting/insert-3778059-fix-expected.txt: Added.
1361         * layout-tests/editing/inserting/insert-3778059-fix.html: Added.
1362         * layout-tests/editing/selection/move-by-line-001-expected.txt: Added.
1363         * layout-tests/editing/selection/move-by-line-001.html: Added.
1364         * layout-tests/editing/style/typing-style-003-expected.txt: Added.
1365         * layout-tests/editing/style/typing-style-003.html: Added.
1366
1367 2004-08-31  Ken Kocienda  <kocienda@apple.com>
1368
1369         Reviewed by me
1370         
1371         Added more editing layout tests. Renamed some others.
1372
1373         * layout-tests/editing/inserting/insert-br-001-expected.txt: Added.
1374         * layout-tests/editing/inserting/insert-br-001.html: Added.
1375         * layout-tests/editing/inserting/insert-br-002-expected.txt: Added.
1376         * layout-tests/editing/inserting/insert-br-002.html: Added.
1377         * layout-tests/editing/inserting/insert-br-003-expected.txt: Added.
1378         * layout-tests/editing/inserting/insert-br-003.html: Added.
1379         * layout-tests/editing/inserting/insert-br-004-expected.txt: Added.
1380         * layout-tests/editing/inserting/insert-br-004.html: Added.
1381         * layout-tests/editing/inserting/insert-br-005-expected.txt: Added.
1382         * layout-tests/editing/inserting/insert-br-005.html: Added.
1383         * layout-tests/editing/inserting/insert-br-006-expected.txt: Added.
1384         * layout-tests/editing/inserting/insert-br-006.html: Added.
1385         * layout-tests/editing/inserting/insert-br-case1-expected.txt: Removed.
1386         * layout-tests/editing/inserting/insert-br-case1.html: Removed.
1387         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Removed.
1388         * layout-tests/editing/inserting/insert-br-case2.html: Removed.
1389         * layout-tests/editing/inserting/insert-br-case3-expected.txt: Removed.
1390         * layout-tests/editing/inserting/insert-br-case3.html: Removed.
1391         * layout-tests/editing/inserting/insert-br-case6-expected.txt: Removed.
1392         * layout-tests/editing/inserting/insert-br-case6.html: Removed.
1393         * layout-tests/editing/inserting/insert-text-with-newlines-expected.txt: Added.
1394         * layout-tests/editing/inserting/insert-text-with-newlines.html: Added.
1395
1396 2004-08-31  Ken Kocienda  <kocienda@apple.com>
1397
1398         Reviewed by me
1399
1400         * layout-tests/editing/editing.js: Modified typeCharacterCommand so it can accept a character
1401         as an argument.
1402
1403 2004-08-31  Ken Kocienda  <kocienda@apple.com>
1404
1405         Reviewed by Hyatt
1406
1407         Fix for these bugs:
1408
1409         <rdar://problem/3777629> REGRESSION (Mail): can't delete blank lines in quoted text in HTML mail replies
1410         <rdar://problem/3780309> REGRESSION (Mail): can't delete past an empty span in a particular test case
1411         <rdar://problem/3780315> REGRESSION (Mail): right arrow works incorrectly in a particular test case with an empty span
1412         <rdar://problem/3780320> REGRESSION (Mail): left arrow works incorrectly in a particular test case with an empty span
1413         <rdar://problem/3780336> REGRESSION (Mail): down arrow fails in a reduction of a Mail reply test case (seems to be inside a span)
1414
1415         * khtml/xml/dom_position.cpp:
1416         (DOM::Position::upstream): If this position's node is a block, use it for the StayInBlock case, not the block's
1417         enclosing block.
1418         (DOM::Position::downstream): Ditto.
1419         (DOM::Position::inRenderedContent): Refine the case for non-text nodes. This was erroneously returning true
1420         for any empty element (like <span></span>).
1421         * khtml/xml/dom_positioniterator.cpp: Change the following four functions to consider all nodes, not just
1422         leaves of the DOM tree. This is a step towards making this iteration less cranky and unpredictable, and
1423         was necessary to do now to keep the inRenderedContent() change above from breaking editign layout tests.
1424         (DOM::PositionIterator::peekPrevious)
1425         (DOM::PositionIterator::peekNext)
1426         (DOM::PositionIterator::atStart)
1427         (DOM::PositionIterator::atEnd)
1428         * kwq/KWQKHTMLPart.mm:
1429         (KWQKHTMLPart::fontForCurrentPosition): Check that the position being checked is an element and that the
1430         element is in rendered content. I ran across some null-check failures while I was coding this fix, and
1431         the additions seem prudent.
1432         
1433         Updated these layout tests with new results.
1434         
1435         * layout-tests/editing/deleting/delete-3608430-fix-expected.txt:
1436         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt:
1437         * layout-tests/editing/deleting/delete-block-contents-001-expected.txt:
1438         * layout-tests/editing/deleting/delete-block-contents-002-expected.txt:
1439         * layout-tests/editing/deleting/delete-block-contents-003-expected.txt:
1440         * layout-tests/editing/deleting/delete-image-004-expected.txt:
1441         * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt:
1442         * layout-tests/editing/editing.js:
1443         * layout-tests/editing/execCommand/boldSelection-expected.txt:
1444         * layout-tests/editing/execCommand/italicizeByCharacter-expected.txt:
1445         * layout-tests/editing/execCommand/modifyForeColorByCharacter-expected.txt:
1446         * layout-tests/editing/execCommand/print-expected.txt:
1447         * layout-tests/editing/execCommand/selectAll-expected.txt:
1448         * layout-tests/editing/selection/extend-by-character-002-expected.txt:
1449         * layout-tests/editing/selection/extend-by-character-004-expected.txt:
1450         * layout-tests/editing/selection/extend-by-character-005-expected.txt:
1451         * layout-tests/editing/selection/extend-by-character-006-expected.txt:
1452         * layout-tests/editing/selection/select-all-001-expected.txt:
1453         * layout-tests/editing/selection/select-all-002-expected.txt:
1454         * layout-tests/editing/selection/select-all-003-expected.txt:
1455
1456 2004-08-30  Darin Adler  <darin@apple.com>
1457
1458         Reviewed by John.
1459
1460         - fixed <rdar://problem/3637519> REGRESSION (125-128): unrepro crash in QListBox::sizeForNumberOfLines at istweb.apple.com
1461
1462         * kwq/KWQListBox.h: Added a clearCachedTextRenderers function.
1463         * kwq/KWQListBox.mm:
1464         (itemTextRenderer): Change to use globals that are outside the function, and added retain calls.
1465         (groupLabelTextRenderer): Ditto.
1466         (QListBox::clearCachedTextRenderers): Release global text renderers and nil out the globals.
1467
1468         * kwq/WebCoreBridge.h: Removed updateAllViews; not needed any more.
1469         * kwq/WebCoreBridge.mm: Ditto.
1470
1471         * kwq/WebCoreTextRendererFactory.h: Added a clearCaches method.
1472         * kwq/WebCoreTextRendererFactory.mm:
1473         (-[WebCoreTextRendererFactory clearCaches]): Added. Tells all the views to repaint after clearing the cached
1474         text renderers from KWQListBox. To be more elegant, we could generalize the KWQListBox trick, but for now why bother?
1475
1476         * kwq/WebCoreTextRendererFactory.m: Removed. I needed to put some C++ code in here, so changed the extension to .mm.
1477         * WebCore.pbproj/project.pbxproj: Removed WebCoreTextRendererFactory.m, and added WebCoreTextRendererFactory.mm.
1478
1479 2004-08-30  Darin Adler  <darin@apple.com>
1480
1481         Reviewed by John.
1482
1483         - fixed <rdar://problem/3528538> can paste a Return character into the Search field at amazon.com, other browsers won't
1484
1485         * kwq/KWQTextField.mm: (-[KWQTextFieldController controlTextDidChange:]):
1486         Truncate text before the first line break.
1487
1488 2004-08-30  Darin Adler  <darin@apple.com>
1489
1490         * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertOneChunkUsingTEC):
1491         Added some more assertions I used to track down what looks like a TEC bug.
1492
1493 2004-08-30  Darin Adler  <darin@apple.com>
1494
1495         Reviewed by Ken.
1496
1497         - fixed <rdar://problem/3779122> No accesskey support on LABEL element
1498
1499         * khtml/html/html_formimpl.h: Change type of m_currValue to DOMString. Should have been done
1500         as part of my form data check-in, but harmless to do now. Add accessKeyAction function for
1501         HTMLLabelElementImpl.
1502         * khtml/html/html_formimpl.cpp:
1503         (DOM::HTMLButtonElementImpl::parseHTMLAttribute): Remove conversion of DOMString to QString
1504         for m_currValue.
1505         (DOM::HTMLLabelElementImpl::formElement): If there's no "for" attribute, search children for
1506         the first control.
1507         (DOM::HTMLLabelElementImpl::accessKeyAction): Forward the accesskey action to the formElement.
1508
1509 2004-08-30  Darin Adler  <darin@apple.com>
1510
1511         Reviewed by Dave.
1512
1513         - fixed <rdar://problem/3303968> final newline character omitted from <textarea> when parsing a new page
1514
1515         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::processListing): Handle newline pending
1516         cases as well as space and tab pending spaces at the end of this function. This seems right for
1517         both scripts and text areas; it's not clear why omittiing the LF is ever needed. Tested by running
1518         all the layout tests; no regressions.
1519
1520         - fixed <rdar://problem/3552736> word wrapped text fields that blur/focus when you type move the insertion point strangely (vtext.com)
1521
1522         * khtml/rendering/render_form.cpp: (RenderTextArea::updateFromElement): Call text() instead of
1523         calling widget->text() directly. This prevents this function from running in cases where the
1524         text didn't really change for text areas in wrap mode.
1525
1526 2004-08-30  Darin Adler  <darin@apple.com>
1527
1528         Reviewed by Dave.
1529
1530         - got rid of ERROR message when running layout tests by implementing text-transform in computed style
1531
1532         * khtml/css/css_computedstyle.cpp:
1533         (DOM::numberAsString): Added. Helper that returns "1" rather then "1.0" for integer values.
1534         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Fixed use of tabs instead of
1535         spaces. Fixed switch statements so they don't use default so we get errors if we leave
1536         a case out. Changed callers to use numberAsString instead of QString::number. Added implementation
1537         of CSS_PROP_TEXT_TRANSFORM. Added code to prevent falling through to next property when no item
1538         in a switch statement matches.
1539
1540 2004-08-30  Darin Adler  <darin@apple.com>
1541
1542         Reviewed by Chris.
1543
1544         - did work to prepare for uploading files incrementally when submitting forms
1545
1546         * khtml/misc/formdata.h: Added. Class for holding form data inside WebCore.
1547         * khtml/misc/formdata.cpp: Added.
1548
1549         * khtml/html/html_formimpl.h: Added the FormDataList type, changed the formData function parameters
1550         and made it private, renamed the encoding method to appendFormData and changed the parameters around.
1551         * khtml/html/html_formimpl.cpp:
1552         (DOM::FormDataList): Added. Class that replaces the old use of QValueList<QCString> for form data.
1553         Later we'll change it to accomodate filenames too.
1554         (DOM::HTMLFormElementImpl::formData): Changed code to use FormDataList intsead of the old encodingList.
1555         Also changed to return the "OK" result as the function result and put the form data into something
1556         passed as an "out" parameter; the old way was the other way around.
1557         (DOM::HTMLFormElementImpl::submit): Change to use FormData rather than a QByteArray when getting the
1558         form data to submit.
1559         (DOM::HTMLButtonElementImpl::appendFormData): Rename from encoding, and use the new appendData function
1560         instead of the old way of doing += to put data on the list.
1561         (DOM::HTMLInputElementImpl::appendFormData): Ditto.
1562         (DOM::HTMLSelectElementImpl::appendFormData): Ditto.
1563         (DOM::HTMLKeygenElementImpl::appendFormData): Ditto.
1564         (DOM::HTMLTextAreaElementImpl::appendFormData): Ditto.
1565         (DOM::FormDataList::FormDataList): Added.
1566         (DOM::FormDataList::appendString): Added.
1567         (DOM::FormDataList::begin): Added.
1568         (DOM::FormDataList::end): Added.
1569
1570         * khtml/khtml_part.h: Changed the type of the submitForm parameter to FormData instead of QByteArray.
1571         * khtml/khtmlpart_p.h: Changed the type of the submitFormData data member to FormData instead of QByteArray.
1572         * khtml/khtml_part.cpp: (KHTMLPart::submitForm): Called the new flattenToString function in all the
1573         code that handles mailto forms. Called the new flatten function in the non-Apple code path.
1574
1575         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::submitForm): Pass NSArray for form data instead of NSData.
1576
1577         * kwq/KWQKJob.h: Use FormData instead of QByteArray. A couple other small cleanups.
1578         * kwq/KWQKJobClasses.h: Ditto.
1579         * kwq/KWQKJobClasses.mm:
1580         (KIO::TransferJobPrivate::TransferJobPrivate): Ditto.
1581         (KIO::TransferJob::TransferJob): Ditto.
1582         (KIO::TransferJob::postData): Ditto.
1583         * kwq/KWQKPartsBrowserExtension.h: Ditto.
1584         * kwq/KWQLoader.mm:
1585         (KWQServeRequest): Ditto.
1586         (KWQServeSynchronousRequest): Ditto.
1587
1588         * kwq/KWQFormData.h: Added. A function to convert KHTML form data into an NSArray for communication
1589         with the WebKit side.
1590         * kwq/KWQFormData.mm: Added.
1591
1592         * kwq/WebCoreBridge.h: Pass NSArray instead of NSData for form data.
1593
1594         * kwq/KWQArrayImpl.h: Added a detach member function. The old version would do unnecessary work when
1595         detach was called on an array that had exactly one reference.
1596         * kwq/KWQArrayImpl.mm: (KWQArrayImpl::detach): Added.
1597         * kwq/KWQMemArray.h: (QMemArray::detach): Call through to KWQArrayImpl.
1598
1599         * kwq/KWQValueList.h:
1600         (QValueList::first): Added overload for non-const.
1601         (QValueList::last): Ditto.
1602
1603         * ForwardingHeaders/misc/formdata.h: Added.
1604         * WebCore.pbproj/project.pbxproj: Added formdata.h, formdata.cpp, KWQFormData.h, and KWQFormData.cpp.
1605
1606         * WebCore-tests.exp: Updated for changes to QValueList, and re-sorted.
1607         * WebCore-combined.exp: Regenerated.
1608
1609 2004-08-30  Darin Adler  <darin@apple.com>
1610
1611         Reviewed by Ken.
1612
1613         - improved multiple submit logic in preparation for making command-click on a form
1614           button load a form in another frame
1615
1616         * kwq/KWQKHTMLPart.h: Added const to a bunch of member functions for cleanup.
1617         Added prepareForUserAction member function.
1618         * kwq/KWQKHTMLPart.mm:
1619         (KWQKHTMLPart::submitForm): Simplified logic and removed special case for "http" and "https".
1620         (KWQKHTMLPart::renderer): Added const.
1621         (KWQKHTMLPart::keyEvent): Added call to prepareForUserAction.
1622         (KWQKHTMLPart::lastEventIsMouseUp): Added const.
1623         (KWQKHTMLPart::eventMayStartDrag): Added const.
1624         (KWQKHTMLPart::mouseDown): Added call to prepareForUserAction.
1625         (KWQKHTMLPart::overrideMediaType): Added const.
1626         (KWQKHTMLPart::canGoBackOrForward): Added const.
1627         (KWQKHTMLPart::prepareForUserAction): Added. Clears _submittedFormURL.
1628         * kwq/KWQAccObject.mm: (-[KWQAccObject accessibilityPerformAction:]): Added call to prepareForUserAction.
1629
1630 2004-08-30  Ken Kocienda  <kocienda@apple.com>
1631
1632         Reviewed by John
1633
1634         Fix for this bug:
1635
1636         <rdar://problem/3762231> REGRESSION (Mail): tab key inserts a single space
1637
1638         * khtml/editing/htmlediting_impl.cpp:
1639         (khtml::isTab): New helper. Checks a DOMString to see if it is one character and
1640         that character is a tab.
1641         (khtml::InputTextCommandImpl::execute): Trap tabs before handling insertion of
1642         other kinds of whitespace. Treat a tab like four spaces. Rearrange the code to
1643         update the ending position after the text insertion to cover the new tab case
1644         where the amount of advance is not the same as the number of character in the
1645         passed-in DOMString (i.e. tabs expand to four characters).
1646         
1647 2004-08-27  Ken Kocienda  <kocienda@apple.com>
1648
1649         Reviewed by Chris
1650
1651         Fix for this bug:
1652         
1653         <rdar://problem/3779706> plain text on pasteboard loses indentation when pasted into Blot
1654
1655         * kwq/KWQKHTMLPart.h:
1656         * kwq/KWQKHTMLPart.mm:
1657         (KWQKHTMLPart::documentFragmentWithText): New function that takes over the code from
1658         KWQKHTMLPart and improves it to handle converting tabs and spaces for suitable
1659         display in HTML.
1660         * kwq/WebCoreBridge.mm:
1661         (-[WebCoreBridge documentFragmentWithText:]): Move smarts from here to KWQKHTMLPart.
1662
1663 2004-08-27  Maciej Stachowiak  <mjs@apple.com>
1664
1665         Reviewed by John.
1666
1667         <rdar://problem/3778314> REGRESSION: Can't proceed to survey questions on Lominger's Apple website
1668
1669         Because we will stop parsing when there is a pending redirection,
1670         avoid setting one if no navigation would actually take place
1671         because the number of steps is out of range.
1672         
1673         * khtml/khtml_part.cpp:
1674         (KHTMLPart::scheduleHistoryNavigation):
1675         * kwq/KWQKHTMLPart.h:
1676         * kwq/KWQKHTMLPart.mm:
1677         (KWQKHTMLPart::canGoBackOrForward):
1678         * kwq/KWQKPartsBrowserInterface.h:
1679         * kwq/WebCoreBridge.h:
1680
1681 2004-08-27  Maciej Stachowiak  <mjs@apple.com>
1682
1683         Reviewed by Chris.
1684
1685         - fixed <rdar://problem/3778043> REGRESSION: innerHTML is broken, breaks automated iBench testing
1686         - also fixed outerHTML, which would spill over past the node for whch it was supposed to get HTML
1687         
1688         * khtml/html/html_elementimpl.cpp:
1689         (HTMLElementImpl::outerHTML):
1690         * khtml/xml/dom2_rangeimpl.cpp:
1691         (DOM::RangeImpl::toHTML):
1692         * khtml/xml/dom_nodeimpl.cpp:
1693         (NodeImpl::toHTML):
1694         (NodeImpl::recursive_toString):
1695         (NodeImpl::recursive_toHTML):
1696         * khtml/xml/dom_nodeimpl.h:
1697         * kwq/WebCoreBridge.mm:
1698         (-[WebCoreBridge markupStringFromNode:nodes:]):
1699
1700         - added new layout tests to cover the problems I fixed
1701         
1702         * layout-tests/fast/innerHTML/001-expected.txt: Added.
1703         * layout-tests/fast/innerHTML/001.html: Added.
1704         * layout-tests/fast/innerHTML/002-expected.txt: Added.
1705         * layout-tests/fast/innerHTML/002.html: Added.
1706         * layout-tests/fast/innerHTML/003-expected.txt: Added.
1707         * layout-tests/fast/innerHTML/003.html: Added.
1708
1709 2004-08-27  David Hyatt  <hyatt@apple.com>
1710
1711         Fix for 3739239, getComputedStyle of top not being implemented broke a site that checked for it.
1712         
1713         Reviewed by kocienda
1714
1715         * khtml/css/css_computedstyle.cpp:
1716         (DOM::valueForLength):
1717         (DOM::CSSComputedStyleDeclarationImpl::getPositionOffsetValue):
1718         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
1719         * khtml/css/css_computedstyle.h:
1720
1721 2004-08-27  John Sullivan  <sullivan@apple.com>
1722
1723         Reviewed by Ken.
1724         
1725         Tweaked option-tab handling to match good suggestion from Tim Omernick of OmniWeb
1726
1727         * kwq/KWQTextArea.mm:
1728         removed override of textDidChange:
1729         (-[KWQTextAreaTextView keyDown:]):
1730         moved option-tab handling that was in textDidChange to here. Rearranged existing code
1731         a little for clarity.
1732
1733 2004-08-27  Adele Amchan  <adele@apple.com>
1734
1735         Reviewed by Darin.
1736
1737         Fix for:
1738         <rdar://problem/3689949> Provide contentWindow access on an iframe
1739
1740         * khtml/ecma/kjs_html.cpp:
1741         (KJS::HTMLElement::getValueProperty): added cases for contentWindow for frames and iframes
1742         * khtml/ecma/kjs_html.h: added contentWindow to the list of properties for frames and iframes
1743         * khtml/ecma/kjs_html.lut.h: regenerated file
1744         * khtml/html/html_baseimpl.cpp:
1745         (HTMLFrameElementImpl::contentPart): factored out old contentDocument code to return KHTMLPart for frame
1746         (HTMLFrameElementImpl::contentDocument): now just gets the contentDocument from contentPart
1747         * khtml/html/html_baseimpl.h: added declaration for contentPart
1748
1749 === Safari-161 ===
1750
1751 2004-08-27  Ken Kocienda  <kocienda@apple.com>
1752
1753         Reviewed by Darin
1754
1755         Fix for this bug:
1756         
1757         <rdar://problem/3778059> Odd behaviour when editing between blockquote elements
1758
1759         * khtml/editing/htmlediting_impl.cpp:
1760         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): This function should not move
1761         the selection out of the current block, ever. This is exactly what the bug reported.
1762         What was I thinking? Now, the code looks at the passed-in position and then the equivalent
1763         upstream and downstream positions to see if the selection can be placed there after the
1764         delete, and settles on the block containing the passed-in position as a fallback.
1765         * layout-tests/editing/inserting/insert-3778059-fix-expected.txt: Added.
1766         * layout-tests/editing/inserting/insert-3778059-fix.html: Added.
1767
1768 2004-08-26  Richard Williamson   <rjw@apple.com>
1769
1770         Boiler plate for canvas gradients and patterns.
1771
1772         Reviewed by John.
1773
1774         * khtml/ecma/kjs_html.cpp:
1775         (KJS::Context2DFunction::tryCall):
1776         (Context2D::tryPut):
1777         (Context2D::~Context2D):
1778         (KJS::GradientFunction::tryCall):
1779         (Gradient::Gradient):
1780         (Gradient::tryGet):
1781         (Gradient::getValueProperty):
1782         (Gradient::tryPut):
1783         (Gradient::putValue):
1784         (Gradient::~Gradient):
1785         (ImagePattern::ImagePattern):
1786         (ImagePattern::tryGet):
1787         (ImagePattern::getValueProperty):
1788         (ImagePattern::tryPut):
1789         (ImagePattern::putValue):
1790         (ImagePattern::~ImagePattern):
1791         * khtml/ecma/kjs_html.h:
1792         (KJS::Gradient::toBoolean):
1793         (KJS::Gradient::classInfo):
1794         (KJS::Gradient::):
1795         (KJS::ImagePattern::toBoolean):
1796         (KJS::ImagePattern::classInfo):
1797         (KJS::ImagePattern::):
1798         * khtml/ecma/kjs_html.lut.h:
1799         (KJS::):
1800
1801 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1802
1803         Reviewed by John
1804
1805         Fix for this bug:
1806         
1807         <rdar://problem/3777899> REGRESSION (Mail): only first of several misspelled words separated by 
1808         carriage returns is marked
1809
1810         * khtml/editing/htmlediting_impl.cpp:
1811         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): Give the spellchecker a slightly larger 
1812         selection to work with while typing. This should preclude bugs of this type.
1813
1814 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1815
1816         Reviewed by Chris
1817         
1818         Fix for this bug:
1819         
1820         <rdar://problem/3777804> Deleting all content in a document can result in giant tall-as-window insertion point
1821
1822         * khtml/rendering/render_box.cpp:
1823         (RenderBox::caretPos): Always use the font height for calculating the caret height in 
1824         non-replaced elements (like blocks), rather than the height of the box.
1825
1826 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1827
1828         Silly me. Forgot to add this file before.
1829
1830         * layout-tests/editing/inserting/insert-3775316-fix-expected.txt: Added.
1831
1832 2004-08-26  David Hyatt  <hyatt@apple.com>
1833
1834         Fix for 3777172, crash from nested colgroup.  Don't allow nested table sections or col groups.
1835         
1836         Reviewed by darin
1837
1838         * khtml/html/htmlparser.cpp:
1839         (KHTMLParser::insertNode):
1840
1841 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1842
1843         Reviewed by Hyatt
1844
1845         Fix for this bug:
1846         
1847         <rdar://problem/3775316> document sprouts an extra newline character at the end
1848
1849         * khtml/editing/htmlediting_impl.cpp:
1850         (khtml::InputNewlineCommandImpl::doApply): There was in insufficient check
1851         in the code which adds extra BR elements at the ends of blocks, which we do 
1852         to work around the fact that BR elements, when they are the last element in a
1853         block, do not render. Now the code sees whether there already is one of these
1854         extra BR's in the document and won't add and "extra" extra. 
1855         * layout-tests/editing/inserting/insert-3775316-fix.html: Added.
1856
1857 2004-08-26  David Hyatt  <hyatt@apple.com>
1858
1859         Fix for 3710721 and 3504114, crashes because of bad ownership model for list markers.
1860         
1861         Reviewed by mjs
1862
1863         * khtml/rendering/render_container.cpp:
1864         (RenderContainer::detach):
1865         * khtml/rendering/render_list.cpp:
1866         (RenderListItem::setStyle):
1867         (RenderListItem::detach):
1868         (RenderListItem::updateMarkerLocation):
1869         * khtml/rendering/render_list.h:
1870
1871 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1872
1873         Reviewed by John
1874
1875         * khtml/editing/htmlediting_impl.cpp:
1876         (khtml::ApplyStyleCommandImpl::doApply): Remove the StayInBlock modifier from the
1877         call to upstream when passing the start position to removeStyle(). This makes the
1878         start position sufficiently upstream so that all relevant style tags are removed.
1879         (khtml::ApplyStyleCommandImpl::removeStyle): Pass the start position to nodeFullySelected.
1880         (khtml::ApplyStyleCommandImpl::nodeFullySelected): Change interface so start position
1881         for calculation is passed in, rather than recalculating it every time.
1882         * khtml/editing/htmlediting_impl.h: nodeFullySelected interface change.
1883         * khtml/xml/dom_position.h: Add a comment about the working of upstream() and
1884         downstream().
1885
1886 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1887
1888         Fix garbled contenteditable attribute. I must have checked
1889         this in with a typo.
1890
1891         * layout-tests/editing/deleting/delete-3775172-fix.html
1892
1893 2004-08-25  Kevin Decker  <kdecker@apple.com>
1894
1895         Reviewed by John and Maciej.
1896
1897         - Fixes SAP bug <rdar://problem/3751295> Personalize link at the
1898         top gives an error in the pop-up window. 
1899
1900         * khtml/ecma/kjs_window.cpp:
1901         (WindowFunc::tryCall): Passes a referrer to KHTMLPart::begin() 
1902
1903 2004-08-25  Richard Williamson   <rjw@apple.com>
1904
1905         Updated to <canvas> API to match the spec.  (Still need
1906         to implement gradients and patterns.)
1907
1908         Reviewed by Ken.
1909
1910         * khtml/ecma/kjs_html.cpp:
1911         (KJS::Context2DFunction::tryCall):
1912         (Context2D::getValueProperty):
1913         (Context2D::drawingContext):
1914         (Context2D::colorRefFromValue):
1915         (Context2D::colorFromValue):
1916         (Context2D::setShadow):
1917         (Context2D::putValue):
1918         (Context2D::save):
1919         (Context2D::restore):
1920         (Context2D::Context2D):
1921         * khtml/ecma/kjs_html.h:
1922         (KJS::Context2D::):
1923         * khtml/ecma/kjs_html.lut.h:
1924         (KJS::):
1925
1926 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1927
1928         * layout-tests/editing/deleting/delete-3775172-fix.html: Wrong version of test checked in
1929         a moment ago.
1930
1931 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1932
1933         Added test case for <rdar://problem/3775172> Blot crashes after typing one character then deleting it
1934
1935         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt: Added.
1936         * layout-tests/editing/deleting/delete-3775172-fix.html: Added.
1937
1938 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1939
1940         * layout-tests/editing/style/style-3690704-fix-expected.txt: Fewer styling spans added
1941         on this test as a result of the previously-checked-in fix.
1942
1943 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1944
1945         Reviewed by John
1946
1947         Fix for this bug:
1948         
1949         <rdar://problem/3775214> BR elements cause unnecessary spans to be added when applying style
1950
1951         * khtml/editing/htmlediting_impl.cpp:
1952         (khtml::ApplyStyleCommandImpl::doApply): BR elements can be grouped more liberally with other nodes
1953         now in the iteration when attempting to find nodes that can be styled together with one span.
1954         * layout-tests/editing/style/style-3690704-fix-expected.txt: Updated with new results after
1955         bug fix.
1956
1957 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1958
1959         Reviewed by John
1960
1961         Fix for this bug:
1962         
1963         <rdar://problem/3775172> Blot crashes after typing one character then deleting it
1964
1965         * khtml/css/css_computedstyle.cpp:
1966         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Bail early if the element
1967         being queried does not have a renderer or that renderer does not have a style. Prevents
1968         a crash in the cases that it does not.
1969         * khtml/editing/htmlediting_impl.cpp:
1970         (khtml::DeleteSelectionCommandImpl::doApply): Add one more case to deleting when the
1971         start and end nodes are different. If the downstream end node is the last node in the
1972         block, then it may need to be deleted completely. Before this patch, the code
1973         erroneously assumed that any deletion in this node had to be trimming of a text node.
1974         This was asserted, and the description in 3775172 shows a simple case where this assertion
1975         does not hold. The additional case and associated checks now make it all better.
1976         * layout-tests/editing/deleting/delete-3775172-fix.html: Added.
1977
1978 2004-08-25  David Hyatt  <hyatt@apple.com>
1979
1980         Fix for 3365086, large tables crash Safari.  Make sure to use ints rather than shorts for row and column
1981         counts.  Also fix a pathological array resize scenario for tables as rows are added.
1982         
1983         Reviewed by darin
1984
1985         * khtml/rendering/render_table.cpp:
1986         (RenderTable::splitColumn):
1987         (RenderTable::appendColumn):
1988         (RenderTableSection::RenderTableSection):
1989         (RenderTableSection::ensureRows):
1990         (RenderTableSection::setCellWidths):
1991         (RenderTableSection::calcRowHeight):
1992         (RenderTableSection::layoutRows):
1993         (RenderTableSection::paint):
1994         (RenderTableSection::recalcCells):
1995         (RenderTableSection::clearGrid):
1996         * khtml/rendering/render_table.h:
1997         (khtml::RenderTableSection::numRows):
1998
1999 2004-08-25  David Hyatt  <hyatt@apple.com>
2000
2001         To save memory in the common case, move the margin***Collapse variables into the CSS3 struct instead of
2002         bloating the surround struct.
2003         
2004         * khtml/rendering/render_style.cpp:
2005         (StyleSurroundData::StyleSurroundData):
2006         (StyleSurroundData::operator==):
2007         (marginBottomCollapse):
2008         (StyleCSS3NonInheritedData::operator==):
2009         (RenderStyle::diff):
2010         * khtml/rendering/render_style.h:
2011         (khtml::RenderStyle::marginTopCollapse):
2012         (khtml::RenderStyle::marginBottomCollapse):
2013         (khtml::RenderStyle::setMarginTopCollapse):
2014         (khtml::RenderStyle::setMarginBottomCollapse):
2015
2016 2004-08-25  David Hyatt  <hyatt@apple.com>
2017
2018         Fix the "extra space in TypePad blogs" Emerson problem by adding the ability to collapse away margins.
2019         Also added support for explicitly preventing margin collapsing.
2020         
2021         Reviewed by mjs
2022
2023         * khtml/css/cssparser.cpp:
2024         (CSSParser::parseValue):
2025         * khtml/css/cssproperties.c:
2026         (hash_prop):
2027         (findProp):
2028         * khtml/css/cssproperties.h:
2029         * khtml/css/cssproperties.in:
2030         * khtml/css/cssstyleselector.cpp:
2031         (khtml::CSSStyleSelector::applyProperty):
2032         * khtml/css/cssvalues.c:
2033         (hash_val):
2034         (findValue):
2035         * khtml/css/cssvalues.h:
2036         * khtml/css/cssvalues.in:
2037         * khtml/rendering/render_block.cpp:
2038         (khtml::RenderBlock::isSelfCollapsingBlock):
2039         (khtml::RenderBlock::layoutBlockChildren):
2040         * khtml/rendering/render_style.cpp:
2041         (StyleSurroundData::StyleSurroundData):
2042         (StyleSurroundData::operator==):
2043         (RenderStyle::diff):
2044         * khtml/rendering/render_style.h:
2045         (khtml::):
2046         (khtml::RenderStyle::marginTopCollapse):
2047         (khtml::RenderStyle::marginBottomCollapse):
2048         (khtml::RenderStyle::setMarginTopCollapse):
2049         (khtml::RenderStyle::setMarginBottomCollapse):
2050         (khtml::RenderStyle::initialMarginTopCollapse):
2051         (khtml::RenderStyle::initialMarginBottomCollapse):
2052
2053 2004-08-24  Ken Kocienda  <kocienda@apple.com>
2054
2055         Reviewed by Hyatt
2056
2057         Improved the ability of the bridge to report selection state.     
2058
2059         * khtml/editing/htmlediting_impl.cpp:
2060         (khtml::TypingCommandImpl::doApply): Bail when there is no selection.
2061         * kwq/WebCoreBridge.h: Added an enum to report selection state. These constants
2062         mirror those used in DOM::Selection.
2063         * kwq/WebCoreBridge.mm:
2064         (-[WebCoreBridge selectionState]): Replacement for haveSelection. Returns a value 
2065         from an enum telling whether the selection is in the None, Caret, or Range state, 
2066         rather than just true/false for the Range state as it did before.
2067
2068 2004-08-24  David Hyatt  <hyatt@apple.com>
2069
2070         Make sure the ifdef XSLT is present for Panther.
2071         
2072         * khtml/xml/xml_tokenizer.cpp:
2073         (khtml::XMLTokenizer::insertErrorMessageBlock):
2074
2075 2004-08-24  David Hyatt  <hyatt@apple.com>
2076
2077         Polish the XML error message so that it indicates when a document is the result of an XSL transformation
2078         when reporting line/col #s.
2079         
2080         * khtml/xml/dom_docimpl.cpp:
2081         (DocumentImpl::applyXSLTransform):
2082         * khtml/xml/xml_tokenizer.cpp:
2083         (khtml::XMLTokenizer::insertErrorMessageBlock):
2084         * khtml/xsl/xslt_processorimpl.cpp:
2085         (DOM::XSLTProcessorImpl::documentFromXMLDocPtr):
2086
2087 2004-08-24  David Hyatt  <hyatt@apple.com>
2088
2089         Add support for Atom and RSS MIME types to the set of XML types.
2090         
2091         Reviewed by rjw
2092
2093         * khtml/ecma/xmlhttprequest.cpp:
2094         (KJS::XMLHttpRequest::getValueProperty):
2095         * khtml/khtml_part.cpp:
2096         (KHTMLPart::begin):
2097         * khtml/misc/loader.cpp:
2098         (CachedXSLStyleSheet::CachedXSLStyleSheet):
2099         (CachedXBLDocument::CachedXBLDocument):
2100         * khtml/xml/dom_xmlimpl.cpp:
2101         (DOM::ProcessingInstructionImpl::checkStyleSheet):
2102
2103 2004-08-24  Chris Blumenberg  <cblu@apple.com>
2104
2105         Fixed: <rdar://problem/3746447> hang loading geocities.com/cinemaorchestra
2106
2107         Reviewed by john.
2108
2109         * khtml/rendering/render_frames.cpp:
2110         (RenderPartObject::updateWidget): do nothing if the src URL is the same as the part's URL
2111
2112 2004-08-24  Ken Kocienda  <kocienda@apple.com>
2113
2114         Reviewed by Chris
2115
2116         Fix for this bug:
2117         
2118         <rdar://problem/3773564> REGRESSION (125-159): Code to remove HTML styles before applying new HTML styles is broken
2119
2120         * khtml/editing/htmlediting_impl.cpp:
2121         (khtml::ApplyStyleCommandImpl::doApply): Unrelated change to constrain downstream position of selection
2122         start to block boundaries. This is a new feature of the downstream function and I missed this usage
2123         when adding the feature.
2124         (khtml::ApplyStyleCommandImpl::removeCSSStyle): There once was code to remove style attributes from spans
2125         which became emptied as a result of removing CSS properties, but I do not see such code in the 
2126         tree any more. A quick review of the ChangeLog did not reveal anything. I do not remember making such
2127         a change myself...
2128         
2129         In any case, I have restored logic to prune out styling spans we insert if the process of 
2130         removing styles caused a span-plus-styles node to become emptied of markup which changes the style
2131         of its contents. This fixes the bug.
2132
2133 2004-08-24  Ken Kocienda  <kocienda@apple.com>
2134
2135         Reviewed by John
2136
2137         Fix for this bug:
2138         
2139         <rdar://problem/3765535> paste of text with newlines into text with newlines results in broken doc, crash
2140         
2141         This is a "belt and suspenders" fix. The issue is with the paste code path which was creating
2142         zero-length DOM text nodes when a selection being pasted ended with a newline. The normal
2143         code path for parsing HTML does not allow this, but the code to convert newlines to BR's 
2144         during paste was creating such nodes. This will no longer happen.
2145         
2146         In the case where someone inserts such zero-length nodes using the DOM API, the render tree
2147         will no longer create render objects for these nodes, and it was these empty render text 
2148         nodes that was confusing the code doing editing navigation.
2149
2150         * khtml/xml/dom_textimpl.cpp:
2151         (CharacterDataImpl::rendererIsNeeded): Do not create renderers for zero-length DOM text nodes.
2152         * khtml/xml/dom_textimpl.h:
2153         * kwq/WebCoreBridge.mm:
2154         (-[WebCoreBridge documentFragmentWithText:]): Do not insert zero-length DOM text nodes as part
2155         of converting line-end sequences to BR's.
2156
2157 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
2158
2159         Reviewed by Richard.
2160
2161         - reduce cost of innerHTML from O(N^2) to O(N*D) where N is the
2162         number of nodes and D is the maximum DOM tree depth.
2163         
2164         * khtml/xml/dom_nodeimpl.cpp:
2165         (NodeImpl::recursive_toString): New static helper method for
2166         recursive_toHTML - this is recursive for children but iterative
2167         for siblings.
2168         (NodeImpl::recursive_toHTML): Call the helper with this as the
2169         first argument.
2170         * khtml/xml/dom_nodeimpl.h:
2171
2172 2004-08-23  David Hyatt  <hyatt@apple.com>
2173
2174         Fix for 3558334. 
2175
2176         Init the encodedURL explicitly for CSSStyleSelectors.  Construction time was too early to be passing in the
2177         document m_url, since it doesn't get set during construction.
2178
2179         Fix for 3769643, crash on vancouverblast.org.
2180         
2181         Reviewed by darin
2182
2183         * khtml/css/cssstyleselector.cpp:
2184         (khtml::CSSStyleSelector::CSSStyleSelector):
2185         (khtml::CSSStyleSelector::init):
2186         (khtml::CSSStyleSelector::setEncodedURL):
2187         * khtml/css/cssstyleselector.h:
2188         * khtml/xml/dom_docimpl.cpp:
2189         (DocumentImpl::DocumentImpl):
2190         (DocumentImpl::setURL):
2191         (DocumentImpl::recalcStyleSelector):
2192         * khtml/xml/dom_docimpl.h:
2193         (DOM::DocumentImpl::URL):
2194
2195 2004-08-23  Kevin Decker  <kdecker@apple.com>
2196
2197         Reviewed by Maciej.
2198
2199         - fixed rdar://problem/3681094> Crash in KJS::WindowFunc::tryCall       with application/xhtml+xml Content-Type
2200         * khtml/ecma/kjs_window.cpp:
2201         (WindowFunc::tryCall): since this is an xml document, we get the
2202         domain from the xmlDocImpl(), not docImpl().
2203
2204 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
2205
2206         Reviewed by Darin.
2207
2208         <rdar://problem/3771426> assertion failed due to reentering dispatchImageLoadEventsNow
2209         
2210         * khtml/xml/dom_docimpl.cpp:
2211         (DocumentImpl::dispatchImageLoadEventsNow): Avoid re-entering this
2212         function, since it uses a data member for the copy of the list of events
2213         to be dispatched.
2214
2215 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
2216
2217         Reviewed by Darin.
2218
2219         <rdar://problem/3770306> XMLHttpRequest does not honor character set encoding
2220
2221         * khtml/ecma/xmlhttprequest.cpp:
2222         (KJS::XMLHttpRequest::slotData): Get encoding from the transfer job.
2223         * kwq/KWQKJobClasses.h:
2224         * kwq/KWQKJobClasses.mm:
2225         (KIO::TransferJobPrivate::TransferJobPrivate): Added retrievedCharset
2226         flag.
2227         (KIO::TransferJob::retrieveCharset): New method, gets the charset
2228         from the response.
2229         (KIO::TransferJob::queryMetaData): Handle charset.
2230         (KIO::TransferJob::emitReceivedResponse): Clear retreivedCharset flag.
2231         * kwq/KWQLoader.h:
2232         * kwq/KWQLoader.mm:
2233         (KWQResponseTextEncodingName): New function, gets the encoding from the response.
2234
2235 2004-08-23  David Hyatt  <hyatt@apple.com>
2236
2237         Apply leo's fix to marquees.
2238         
2239         Reviewed by hyatt
2240
2241         * khtml/rendering/render_layer.cpp:
2242         (Marquee::start):
2243
2244 2004-08-20  Darin Adler  <darin@apple.com>
2245
2246         Reviewed by Maciej.
2247
2248         - added an ascii() member function to DOMString and DOMStringImpl to help debugging
2249
2250         * khtml/dom/dom_string.h: Add ascii member function for debugging.
2251         * khtml/dom/dom_string.cpp: (DOM::DOMString::ascii): Added. Calls through to DOMStringImpl::ascii.
2252         * khtml/xml/dom_stringimpl.h: Add ascii member function for debugging.
2253         * khtml/xml/dom_stringimpl.cpp: (DOM::DOMStringImpl::ascii): Added. Makes a new buffer and puts
2254         a simple ASCII version in it. Maybe make it better about characters outside the 0x20-0x7E range
2255         some day, but for now this is way better than what we had before.
2256
2257 2004-08-20  David Hyatt  <hyatt@apple.com>
2258
2259         Divorce the notion of a marquee being stopped from JS from the notion of being suspended by the back/forward cache.
2260
2261         * khtml/ecma/kjs_html.cpp:
2262         (KJS::HTMLElementFunction::tryCall):
2263         * khtml/rendering/render_layer.cpp:
2264         (m_direction):
2265         (Marquee::start):
2266         (Marquee::stop):
2267         (Marquee::updateMarqueePosition):
2268         * khtml/rendering/render_layer.h:
2269
2270 2004-08-20  Richard Williamson   <rjw@apple.com>
2271
2272         Implemented new JNI abstraction.  We no longer invoke Java methods
2273         directly with JNI, rather we call into the plugin.  This allows the
2274         plugin to dispatch the call to the appropriate VM thread.  This
2275         change should (will?) fix a whole class of threading related problems with
2276         the Java VM.
2277
2278         Reviewed by Hyatt.
2279
2280         * kwq/KWQKHTMLPart.mm:
2281         (KWQKHTMLPart::getAppletInstanceForView):
2282         * kwq/WebCoreBridge.mm:
2283         (rootForView):
2284         (-[WebCoreBridge executionContextForView:]):
2285
2286 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
2287
2288         Reviewed by Darin.
2289
2290         More text paint cleanup. Separated the background and foreground
2291         passes instead of doing a weird for loop thing. Eliminated
2292         redundant if conditions. Added comments.
2293
2294         * khtml/rendering/render_text.cpp:
2295         (RenderText::paint):
2296
2297 2004-08-19  Ken Kocienda  <kocienda@apple.com>
2298
2299         Reviewed by Darin
2300
2301         * khtml/css/css_computedstyle.cpp:
2302         (DOM::): Changed CopyProperties constant to InheritableProperties. This reflects the
2303         name change of copy() to copyInheritableProperties()
2304         (DOM::CSSComputedStyleDeclarationImpl::copyInheritableProperties: Renamed from copy().
2305         Now just copies those properties which can be inherited.
2306         (DOM::CSSComputedStyleDeclarationImpl::diff): Add a couple null checks.
2307         * khtml/css/css_computedstyle.h: copyInheritableProperties name change. No longer needs to be virtual.
2308         * khtml/css/css_valueimpl.cpp: Removed unneeded copy() function from CSSStyleDeclarationImpl.
2309         * khtml/css/css_valueimpl.h: Ditto.
2310         * khtml/editing/htmlediting.cpp:
2311         (khtml::EditCommand::typingStyle): Added.
2312         (khtml::EditCommand::setTypingStyle): Added.
2313         * khtml/editing/htmlediting.h:
2314         * khtml/editing/htmlediting_impl.cpp:
2315         (khtml::StyleChange::currentlyHasStyle): Fix leak of computed style used in this function.
2316         (khtml::EditCommandImpl::EditCommandImpl): Initialize m_typingStyle.
2317         (khtml::EditCommandImpl::~EditCommandImpl): Deref m_typingStyle.
2318         (khtml::EditCommandImpl::assignTypingStyle): New helper used in setting typing style.
2319         (khtml::EditCommandImpl::setTypingStyle): New setter.
2320         (khtml::DeleteSelectionCommandImpl::doApply): Use new method for managing typing style.
2321         * khtml/editing/htmlediting_impl.h:
2322         (khtml::EditCommandImpl::typingStyle): New accessor.
2323         * khtml/khtml_part.cpp:
2324         (KHTMLPart::appliedEditing): Restores typing style from command after setting selection.
2325         (KHTMLPart::applyStyle): Does a diff between the current style and the style of the caret.
2326         * khtml/khtml_part.h:
2327         * khtml/xml/dom_position.cpp:
2328         (DOM::Position::computedStyle): Now returns a CSSComputedStyleDeclarationImpl instead of a plain
2329         CSSStyleDeclarationImpl.
2330         * khtml/xml/dom_position.h:
2331         * layout-tests/editing/style/style-3681552-fix-002-expected.txt:
2332
2333 2004-08-20  Trey Matteson  <trey@apple.com>
2334
2335         3655407 - Editing: -complete: method unimplemented (WebKit editing API)
2336
2337         One new support routine here.
2338
2339         Reviewed by John
2340
2341         * kwq/WebCoreBridge.h:
2342         * kwq/WebCoreBridge.mm:
2343         (-[WebCoreBridge caretRectAtNode:offset:]):  New routine.
2344         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
2345         Fixed former misleading method name.
2346
2347 2004-08-20  Ken Kocienda  <kocienda@apple.com>
2348
2349         Reviewed by Trey
2350
2351         Fix for this bug:
2352         
2353         <rdar://problem/3768378> crash typing newline in Blot
2354
2355         * khtml/editing/htmlediting_impl.cpp:
2356         (khtml::InputNewlineCommandImpl::doApply): Adding an assert in a recent change
2357         showed up that inserting newlines that was not being handled correctly for the 
2358         case described in the bug. I added a new case to handle inserting BR's when
2359         at the caret max offset for a node, and this new code runs instead of the
2360         fall-through case that should not have been running and triggered the assert.
2361         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Regenerated results.
2362         * layout-tests/editing/inserting/insert-br-case6-expected.txt: Added.
2363         * layout-tests/editing/inserting/insert-br-case6.html: Added.
2364
2365 2004-08-20  Trey Matteson  <trey@apple.com>
2366
2367         Fixing: Spellchecker called once or twice for every char typed.
2368
2369         Reviewed by Ken
2370
2371         * khtml/khtml_part.cpp:
2372         (KHTMLPart::setSelection):  Don't do any spell checking if we're typing (it's done
2373         elsewhere, in markMisspellingsAfterTyping)
2374  
2375 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
2376
2377         Reviewed by John.
2378
2379         - fixed <rdar://problem/3549369> Crash at www.e1.ru in HTMLTokenizer::notifyFinished
2380
2381         Probably also fixed the following likely duplicates:
2382
2383         <rdar://problem/3503938> Safari crashed opening many tabs (HTMLTokenizer::notifyFinished(khtml::CachedObject*))
2384         <rdar://problem/3566332> CrashTracer: ..405 crashes at com.apple.WebCore: QString::QString[unified] + 0x5c
2385         <rdar://problem/3703964> CrashTracer: ...86 crashes at com.apple.WebCore: QString::QString[unified] + 0x5c
2386         <rdar://problem/3703969> CrashTracer: ..234 crashes at com.apple.WebCore: HTMLTokenizer::notifyFinished + 0x1c8
2387
2388         * khtml/xml/dom_docimpl.cpp:
2389         (DocumentImpl::open): call setParsing(true), because we need to know we are once again
2390         parsing when we re-open a document that has previously completed loading.
2391
2392 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
2393
2394         Reviewed by Dave and Darin.
2395
2396         * khtml/rendering/render_text.cpp:
2397         (RenderText::paint): Split apple and non-apple code paths to allow further cleanup.
2398
2399 2004-08-19  Darin Adler  <darin@apple.com>
2400
2401         Reviewed by Dave.
2402
2403         - fixed <rdar://problem/3767274> crash in partForWidget inside setFocus (test page attached)
2404
2405         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::nextKeyViewInFrame): Remove code to do position
2406         the widget; no longer needed since we reworked how widgets get their positions.
2407         * kwq/KWQWidget.mm: (QWidget::setFocus): Ditto. This was the one that caused the bug.
2408
2409 2004-08-19  David Hyatt  <hyatt@apple.com>
2410
2411         Fix crash when text is contained inside a table-colgroup.
2412         
2413         Reviewed by john
2414
2415         * khtml/xml/dom_textimpl.cpp:
2416         (TextImpl::rendererIsNeeded):
2417
2418 2004-08-19  Trey Matteson  <trey@apple.com>
2419
2420         Unexpected errors hit while finding word boundaries, leading to crash.
2421
2422         Reviewed by Ken.
2423
2424         * kwq/KWQTextUtilities.cpp:
2425         (KWQFindWordBoundary):  Don't call UCFindTextBreak with edge cases it thinks
2426         are param errors, and pass correct mask for forward case.  Also fix off-by-one
2427         crashers in fallback code.
2428
2429 2004-08-19  David Hyatt  <hyatt@apple.com>
2430
2431         Make XSLT imports/includes work.  This code has to be turned off until the newer version of libxslt is
2432         available.
2433         
2434         Reviewed by kocienda
2435
2436         * khtml/css/css_ruleimpl.cpp:
2437         (CSSImportRuleImpl::init):
2438         * khtml/xml/dom_docimpl.cpp:
2439         (DocumentImpl::DocumentImpl):
2440         (DocumentImpl::~DocumentImpl):
2441         (DocumentImpl::applyXSLTransform):
2442         * khtml/xml/dom_docimpl.h:
2443         (DOM::DocumentImpl::setTransformSource):
2444         (DOM::DocumentImpl::transformSource):
2445         * khtml/xml/dom_xmlimpl.cpp:
2446         (DOM::ProcessingInstructionImpl::checkStyleSheet):
2447         * khtml/xml/xml_tokenizer.cpp:
2448         (khtml::matchFunc):
2449         (khtml::openFunc):
2450         (khtml::readFunc):
2451         (khtml::writeFunc):
2452         (khtml::createQStringParser):
2453         (khtml::XMLTokenizer::setTransformSource):
2454         * khtml/xsl/xsl_stylesheetimpl.cpp:
2455         (DOM::XSLStyleSheetImpl::XSLStyleSheetImpl):
2456         (DOM::XSLStyleSheetImpl::~XSLStyleSheetImpl):
2457         (DOM::XSLStyleSheetImpl::isLoading):
2458         (DOM::XSLStyleSheetImpl::clearDocuments):
2459         (DOM::XSLStyleSheetImpl::parseString):
2460         (DOM::XSLStyleSheetImpl::loadChildSheets):
2461         (DOM::XSLStyleSheetImpl::loadChildSheet):
2462         (DOM::XSLImportRuleImpl::parentStyleSheet):
2463         (DOM::XSLStyleSheetImpl::compileStyleSheet):
2464         (DOM::XSLStyleSheetImpl::locateStylesheetSubResource):
2465         (DOM::XSLImportRuleImpl::XSLImportRuleImpl):
2466         (DOM::XSLImportRuleImpl::~XSLImportRuleImpl):
2467         (DOM::XSLImportRuleImpl::setStyleSheet):
2468         (DOM::XSLImportRuleImpl::isLoading):
2469         (DOM::XSLImportRuleImpl::loadSheet):
2470         * khtml/xsl/xsl_stylesheetimpl.h:
2471         (DOM::XSLStyleSheetImpl::setOwnerDocument):
2472         (DOM::XSLStyleSheetImpl::setDocument):
2473         (DOM::XSLStyleSheetImpl::markAsProcessed):
2474         (DOM::XSLStyleSheetImpl::processed):
2475         (DOM::XSLImportRuleImpl::href):
2476         (DOM::XSLImportRuleImpl::styleSheet):
2477         (DOM::XSLImportRuleImpl::isImportRule):
2478         * khtml/xsl/xslt_processorimpl.cpp:
2479         (DOM::m_sourceDocument):
2480         (DOM::stylesheetLoadFunc):
2481         (DOM::XSLTProcessorImpl::transformDocument):
2482         * khtml/xsl/xslt_processorimpl.h:
2483
2484 === Safari-158 ===
2485
2486 2004-08-18  Trey Matteson  <trey@apple.com>
2487
2488         3765958 - downstreamPosition() can hit infinite loop when at end of doc
2489         
2490         The problem was that I had a position that was after the maximum position in the text
2491         node, because it was the old caret position before a backspace was processed.  Later
2492         I happened to call downstream() on that position, and hit the bug.  Fix is to consider
2493         a position past the end point of its node if it is *greater than* or equal to its max offset.
2494                         
2495         Reviewed by Ken.
2496
2497         * khtml/xml/dom_positioniterator.cpp:
2498         (DOM::PositionIterator::atEnd):
2499
2500 2004-08-18  David Hyatt  <hyatt@apple.com>
2501
2502         - did WebCore part of <rdar://problem/3682969> SLIDER: absolute left position of slider should be headline only
2503
2504         Make the header overlap the footer in the zero-line case.  Changes to Emerson's template will ensure the
2505         header draws over the footer.
2506         
2507         Reviewed by darin
2508
2509         * khtml/rendering/render_block.cpp:
2510         (khtml::getHeightForLineCount):
2511
2512 2004-08-18  Richard Williamson   <rjw@apple.com>
2513
2514         Replace horrible pollForAppletInView: with new
2515         webPlugInGetApplet.  The details of how the applet instance
2516         is provided now belong to the Java team.  Yeh.
2517                 
2518         Reviewed by Chris.
2519
2520         * kwq/KWQKHTMLPart.mm:
2521         (KWQKHTMLPart::getAppletInstanceForView):
2522         * kwq/WebCoreBridge.h:
2523
2524 2004-08-18  Chris Blumenberg  <cblu@apple.com>
2525
2526         Fixed: <rdar://problem/3692199> 8A146: Safari crashes in toHTMLWithOptions, selection with no renderer (various sites)
2527
2528         Reviewed by trey.
2529
2530         * khtml/xml/dom2_rangeimpl.cpp:
2531         (DOM::RangeImpl::toHTML): renamed, don't assume that nodes of the range had renderers, use the common ancestor of the range as the root
2532         * khtml/xml/dom2_rangeimpl.h:
2533         * khtml/xml/dom_nodeimpl.cpp:
2534         (NodeImpl::recursive_toHTML): renamed, removed code that determines whether to include the root in the HTML, leave this up to the caller
2535         * khtml/xml/dom_nodeimpl.h:
2536         * kwq/WebCoreBridge.mm:
2537         (-[WebCoreBridge markupStringFromNode:nodes:]): call renamed methods
2538         (-[WebCoreBridge markupStringFromRange:nodes:]): ditto
2539
2540 2004-08-18  Ken Kocienda  <kocienda@apple.com>
2541
2542         * khtml/css/css_valueimpl.cpp:
2543         (CSSStyleDeclarationImpl::copy): Roll back silly last minute change that broke this code.
2544         Note to self: read code before making changes to it.
2545
2546 2004-08-18  Ken Kocienda  <kocienda@apple.com>
2547
2548         Coded by Darin and Ken
2549
2550         * khtml/css/css_computedstyle.cpp: Added CopyProperties static array. This contains
2551         the properties we implement that we also want to copy in the new
2552         CSSComputedStyleDeclarationImpl::copy described below.
2553         (DOM::CSSComputedStyleDeclarationImpl::copy): New function. In this class, copies the
2554         computed values of all the properties listed in CopyProperties. In essence, this makes
2555         a freeze-dired version of a computed style.
2556         (DOM::CSSComputedStyleDeclarationImpl::diff): Removes every property from the passed-in 
2557         CSSStyleDeclarationImpl that is also in the computed style.
2558         * khtml/css/css_computedstyle.h:
2559         * khtml/css/css_valueimpl.cpp:
2560         (CSSStyleDeclarationImpl::copy): New function. In this class, the copy operation is
2561         straightforward. Returns a copy that will be unchanged when the original changes.
2562         * khtml/css/css_valueimpl.h:
2563         (DOM::CSSStyleDeclarationImpl::values): Added a accessor suitable for use when the 
2564         CSSStyleDeclarationImpl is const.
2565
2566 2004-08-17  Maciej Stachowiak  <mjs@apple.com>
2567
2568         Reviewed by Darin.
2569
2570         <rdar://problem/3703768> CrashTracer: ...50 crashes at com.apple.WebCore: KHTMLPart::xmlDocImpl const + 0
2571         
2572         * khtml/khtmlview.cpp:
2573         (KHTMLView::viewportMouseMoveEvent): Add a nil check and an
2574         assertion for m_part being null. It seems impossible for this to
2575         happen, so we want to debug it ourselves, but in the meantime,
2576         let's try to avoid causing crashes for our users.
2577
2578 2004-08-17  David Hyatt  <hyatt@apple.com>
2579
2580         Fix the line truncation function for Emerson so that at the far left setting of the slider, only the header
2581         is visible.
2582         
2583         Reviewed by darin
2584
2585         * khtml/rendering/render_block.cpp:
2586         (khtml::getHeightForLineCount):
2587         * khtml/rendering/render_flexbox.cpp:
2588         (khtml::RenderFlexibleBox::layoutVerticalBox):
2589
2590 2004-08-17  Ken Kocienda  <kocienda@apple.com>
2591
2592         Reviewed by Hyatt
2593
2594         Rewrite of the command that deletes a selection. I deleted great 
2595         big swaths of bug-ridden code to accomplish this and replaced it
2596         with code that is much cleaner and smarter.
2597         
2598         Also, renamed equivalentUpstreamPosition and equivalentDownstreamPosition to
2599         upstream to downstream, respectively.
2600         
2601         Added a couple of new helper methods.
2602         
2603         * khtml/editing/htmlediting.cpp: DeleteCollapsibleWhitespaceCommand and
2604         RemoveNodeAndPruneCommand now obsolete. A huge win.
2605         * khtml/editing/htmlediting.h: Ditto.
2606         * khtml/editing/htmlediting_impl.cpp:
2607         (khtml::debugPosition): Fix printf which had a placeholder, but no argument passed in the varargs.
2608         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): New helper. Much simplified and cleaner
2609         version of 
2610         (khtml::ApplyStyleCommandImpl::doApply): upstream/downstream name change
2611         (khtml::ApplyStyleCommandImpl::nodeFullySelected):  upstream/downstream name change
2612         (khtml::DeleteSelectionCommandImpl::doApply):  upstream/downstream name change
2613         (khtml::DeleteTextCommandImpl::DeleteTextCommandImpl): Add an assert to check that the
2614         passed offset is less than the length of the text node.
2615         (khtml::InputNewlineCommandImpl::insertNodeAfterPosition): upstream/downstream name change
2616         (khtml::InputNewlineCommandImpl::insertNodeBeforePosition): upstream/downstream name change
2617         (khtml::InputNewlineCommandImpl::doApply): upstream/downstream name change
2618         (khtml::InputTextCommandImpl::prepareForTextInsertion): upstream/downstream name change
2619         (khtml::InputTextCommandImpl::execute): upstream/downstream name change
2620         (khtml::InputTextCommandImpl::insertSpace): upstream/downstream name change
2621         (khtml::ReplaceSelectionCommandImpl::doApply): upstream/downstream name change
2622         (khtml::TypingCommandImpl::issueCommandForDeleteKey): upstream/downstream name change
2623         (khtml::TypingCommandImpl::deleteKeyPressed):
2624         * khtml/editing/htmlediting_impl.h:
2625         * khtml/xml/dom_position.cpp:
2626         (DOM::Position::previousWordBoundary):
2627         (DOM::Position::nextWordBoundary):
2628         (DOM::Position::upstream):
2629         (DOM::Position::downstream):
2630         (DOM::Position::inRenderedText): Add null check.
2631         (DOM::Position::isRenderedCharacter): New helper.
2632         (DOM::isWS): New helper in this file.
2633         (DOM::Position::leadingWhitespacePosition): New helper. Factored out from htmlediting_impl.cpp.
2634         (DOM::Position::trailingWhitespacePosition): Ditto.
2635         (DOM::Position::debugPosition): Add null check.
2636         * khtml/xml/dom_position.h:
2637         * khtml/xml/dom_selection.cpp:
2638         (DOM::Selection::toRange): upstream/downstream name change
2639         (DOM::Selection::validate): upstream/downstream name change
2640         (DOM::Selection::debugPosition): upstream/downstream name change
2641         * layout-tests/editing/deleting/delete-block-contents-003-expected.txt: Updated tests with new expected results.
2642         * layout-tests/editing/deleting/delete-contiguous-ws-001-expected.txt: Ditto.
2643         * layout-tests/editing/deleting/delete-selection-001-expected.txt: Ditto.
2644         * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt: Ditto.
2645         * layout-tests/editing/inserting/insert-br-case1-expected.txt: Ditto.
2646         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Ditto.
2647         * layout-tests/editing/style/style-3681552-fix-002-expected.txt: Ditto.
2648
2649 2004-08-17  Trey Matteson  <trey@apple.com>
2650
2651         Various spelling fixes.
2652
2653         Reviewed by Ken.
2654
2655         * khtml/khtml_part.cpp:
2656         (KHTMLPart::setSelection): No misspellings in the spelling code comments
2657         * khtml/xml/dom_docimpl.cpp:
2658         (DocumentImpl::removeMarker):  Repaint if doc changes.  Sometimes the markers
2659         were not being erased when you clicked in a word.
2660         * khtml/xml/dom_position.cpp:
2661         (DOM::Position::previousWordBoundary):  Small optimization.  Bail after first
2662         try if the second try will not come out any different.
2663         (DOM::Position::nextWordBoundary):  Ditto
2664         * kwq/KWQKHTMLPart.mm:
2665         (KWQKHTMLPart::markMisspellingsInSelection):  Comment.
2666
2667 2004-08-17  Darin Adler  <darin@apple.com>
2668
2669         Reviewed by Maciej.
2670
2671         - fixed <rdar://problem/3689700> crash loading page; stoxx.com (works in IE and Firefox)
2672
2673         * khtml/khtml_part.h: Make completeURL public.
2674         * kwq/KWQKJavaAppletWidget.mm: (KJavaAppletWidget::KJavaAppletWidget): Complete the base URL
2675         before passing it across the bridge. This sidesteps the crashing bug in CFURL, filed as
2676         '<rdar://problem/3764632> CFURLCreateAbsoluteURLWithBytes crashes if passed the string "../.."'
2677         and also is obviously correct behavior that may fix other sites too.
2678
2679         - fixed <rdar://problem/3547725> Crashes at csuohio.edu, list box vs. mouse event problem (Spoof No Fix)
2680
2681         * kwq/KWQListBox.mm:
2682         (QListBox::~QListBox): Nil out the pointer from the KWQTableView back to the widget by calling
2683         a new detach method.
2684         (-[KWQTableView detach]): Set the pointer to the QListBox to 0. Also set the delegate and data
2685         source to nil, so we don't need nil checks in delegate and data source methods.
2686         (-[KWQTableView mouseDown:]): Add nil check.
2687         (-[KWQTableView keyDown:]): Add nil check.
2688         (-[KWQTableView keyUp:]): Add nil check.
2689         (-[KWQTableView becomeFirstResponder]): Add nil check.
2690         (-[KWQTableView resignFirstResponder]): Add nil check.
2691         (-[KWQTableView canBecomeKeyView]): Add nil check.
2692         (-[KWQTableView tableViewSelectionDidChange:]): Add nil checks, even though this is a delegate
2693         callback, to handle cases where calls to JavaScript result in the QListBox going away partway
2694         through.
2695         (-[KWQTableView drawRow:clipRect:]): Add nil check.
2696         (-[KWQTableView _accessibilityTableCell:tableColumn:]): Add nil check.
2697
2698 2004-08-17  Trey Matteson  <trey@apple.com>
2699
2700         Fix ASSERT in spelling marker management.
2701
2702         Reviewed by John.
2703
2704         * khtml/xml/dom_docimpl.cpp:
2705         (DocumentImpl::shiftMarkers):  Use assert instead of ASSERT.
2706         Tweak test to allow for a start position of 0.
2707
2708 2004-08-17  Trey Matteson  <trey@apple.com>
2709
2710         3764147 - failure of subframe to load leaves links in parent doc broken
2711
2712         Reviewed by Maciej.
2713
2714         * khtml/khtml_part.cpp:
2715         (KHTMLPart::childBegin):  New method to mark part as not complete.
2716         (KHTMLPart::processObjectRequest):  Mark child part imcomplete, so if we
2717         later get a failure on load it won't think it's already complete and do nothing.
2718         * khtml/khtml_part.h:
2719
2720 === Safari-157 ===
2721
2722 2004-08-16  David Hyatt  <hyatt@apple.com>
2723
2724         Fix the #define.  I had it all backwards.
2725         
2726         * WebCorePrefix.h:
2727
2728 2004-08-16  David Hyatt  <hyatt@apple.com>
2729
2730         Land initial support for XSLT using xml-stylesheet PIs.
2731         
2732         * WebCore.pbproj/project.pbxproj:
2733         * khtml/khtml_part.cpp:
2734         (KHTMLPart::replaceDocImpl):
2735         * khtml/khtml_part.h:
2736         * khtml/khtmlview.h:
2737         * khtml/xml/dom_docimpl.cpp:
2738         (DocumentImpl::DocumentImpl):
2739         (DocumentImpl::~DocumentImpl):
2740         (DocumentImpl::recalcStyleSelector):
2741         (DocumentImpl::applyXSLTransform):
2742         (DocumentImpl::setTransformSourceDocument):
2743         * khtml/xml/dom_docimpl.h:
2744         (DOM::DocumentImpl::setTransformSource):
2745         (DOM::DocumentImpl::transformSource):
2746         (DOM::DocumentImpl::transformSourceDocument):
2747         * khtml/xml/dom_xmlimpl.cpp:
2748         (DOM::ProcessingInstructionImpl::checkStyleSheet):
2749         * khtml/xml/dom_xmlimpl.h:
2750         (DOM::ProcessingInstructionImpl::isXSL):
2751         * khtml/xml/xml_tokenizer.cpp:
2752         (khtml::matchFunc):
2753         (khtml::openFunc):
2754         (khtml::createQStringParser):
2755         (khtml::XMLTokenizer::processingInstruction):
2756         (khtml::XMLTokenizer::finish):
2757         (khtml::XMLTokenizer::setTransformSource):
2758         * khtml/xml/xml_tokenizer.h:
2759         (khtml::Tokenizer::setTransformSource):
2760         * khtml/xml/xsl_stylesheetimpl.cpp: Removed.
2761         * khtml/xml/xsl_stylesheetimpl.h: Removed.
2762         * khtml/xsl/xsl_stylesheetimpl.cpp: Added.
2763         (DOM::XSLStyleSheetImpl::XSLStyleSheetImpl):
2764         (DOM::XSLStyleSheetImpl::~XSLStyleSheetImpl):
2765         (DOM::XSLStyleSheetImpl::isLoading):
2766         (DOM::XSLStyleSheetImpl::checkLoaded):
2767         (DOM::XSLStyleSheetImpl::docLoader):
2768         (DOM::XSLStyleSheetImpl::parseString):
2769         * khtml/xsl/xsl_stylesheetimpl.h: Added.
2770         (DOM::XSLStyleSheetImpl::isXSLStyleSheet):
2771         (DOM::XSLStyleSheetImpl::type):
2772         (DOM::XSLStyleSheetImpl::ownerDocument):
2773         (DOM::XSLStyleSheetImpl::document):
2774         (DOM::XSLStyleSheetImpl::clearDocument):
2775         * khtml/xsl/xslt_processorimpl.cpp: Added.
2776         (DOM::m_sourceDocument):
2777         (DOM::XSLTProcessorImpl::~XSLTProcessorImpl):
2778         (DOM::XSLTProcessorImpl::transformDocument):
2779         (DOM::bufferWrite):
2780         (DOM::XSLTProcessorImpl::addToResult):
2781         (DOM::XSLTProcessorImpl::documentFromXMLDocPtr):
2782         * khtml/xsl/xslt_processorimpl.h: Added.
2783
2784 2004-08-16  Maciej Stachowiak  <mjs@apple.com>
2785
2786         Fix build.
2787
2788         * khtml/khtml_part.cpp:
2789         (KHTMLPart::isImmediateRedirectPending):
2790
2791 2004-08-16  Richard Williamson   <rjw@apple.com>
2792
2793         Fixed <rdar://problem/3704339> Context2D forces integer positions in drawImage
2794
2795         Use floats instead of ints to draw images.
2796
2797         Reviewed by Ken.
2798
2799         * khtml/ecma/kjs_html.cpp:
2800         (KJS::Context2DFunction::tryCall):
2801         * kwq/KWQPainter.h:
2802         * kwq/KWQPainter.mm:
2803         (QPainter::drawPixmap):
2804         (QPainter::drawFloatPixmap):
2805
2806 2004-08-13  Maciej Stachowiak  <mjs@apple.com>
2807
2808         Reviewed by Darin.
2809
2810         - fixed <rdar://problem/3752509> Pop up windows not showing up within SAP's BW Module (changing location.href on new window created by window.open)
2811         
2812         (actually the previous fix for this bug was mostly correct, but
2813         this additional change is needed to avoid the regression in
2814         <rdar://problem/3751025> REGRESSION: website rejects Safari 125.9
2815         as "need to upgrade to IE 6", but didn't reject 125.8
2816
2817         So if merging for a software update, make sure to include both
2818         this and the previous fix.
2819         
2820         * khtml/html/htmltokenizer.cpp:
2821         (khtml::HTMLTokenizer::write): When there is an immediate reidrect pending,
2822         make sure to stop tokenizing, because we need to make sure no further
2823         script tags are processed beyond the one that triggered the redirect.
2824         * khtml/khtml_part.cpp:
2825         (KHTMLPart::isImmediateRedirectPending): New method to allow
2826         checking if a redirect is pending.
2827         * khtml/khtml_part.h:
2828
2829 2004-08-15  David Hyatt  <hyatt@apple.com>
2830
2831         - fixed <rdar://problem/3760508> REGRESSION (154-155): No text in textarea
2832
2833         Fix the blank textarea problem by ensuring that any change to a <textarea>'s DOM children causes the form control
2834         to resync with the DOM.  This behavior matches WinIE.
2835         
2836         Reviewed by kocienda
2837
2838         * khtml/html/html_formimpl.cpp:
2839         (HTMLTextAreaElementImpl::childrenChanged):
2840         * khtml/html/html_formimpl.h:
2841
2842 2004-08-13  Trey Matteson  <trey@apple.com>
2843
2844         3761794 Slider doesn't call onmouseup handler
2845
2846         Reviewed by Hyatt
2847
2848         * khtml/rendering/render_form.cpp:
2849         (RenderSlider::RenderSlider):  Listen for signal.
2850         (RenderSlider::slotClicked):  Pass to superclass.
2851         * khtml/rendering/render_form.h:
2852         * kwq/KWQSlider.h:
2853         * kwq/KWQSlider.mm:
2854         (-[KWQSlider mouseDown:]):  Generate mouseUp and clicked events,
2855         since AK consumes the mouseUp event in a modal tracking loop.
2856         (QSlider::QSlider):  Make signal.
2857         (QSlider::clicked):  Send signal.
2858
2859 2004-08-12  Trey Matteson  <trey@apple.com>
2860
2861         3761329 - query result links all dead in ingrammicro.com (sometimes)
2862         3761328 - links in some docs dead when doc is loaded from WebArchive
2863
2864         Make sure to get part to completed state when end is called,
2865         even if we have no doc.  See WebKit changelog for more info.
2866
2867         Reviewed by Richard and Darin.
2868
2869         * khtml/khtml_part.cpp:
2870         (KHTMLPart::end):
2871
2872 2004-08-13  Trey Matteson  <trey@apple.com>
2873
2874         3761098 - red dotted underline for misspelled words shows up in drag image
2875
2876         Reviewed by Ken
2877
2878         * khtml/rendering/render_text.cpp:
2879         (RenderText::paint):  Don't draw misspelling when creating selection image.
2880
2881 2004-08-12  Richard Williamson   <rjw@apple.com>
2882
2883         Bring npruntime.h and friends closer to compliance with
2884         latest spec.
2885
2886         Reviewed by Maciej.
2887
2888         * kwq/KWQKHTMLPart.mm:
2889         (KWQKHTMLPart::windowScriptNPObject):
2890
2891 2004-08-12  Maciej Stachowiak  <mjs@apple.com>
2892
2893         Reviewed by Richard.
2894
2895         <rdar://problem/3245706> URLs with backslashes instead of slashes work on WinIE; should work on Safari (SAP)
2896         <rdar://problem/3506429> <BASE> tag containing backslash is breaking images with absolute URLs
2897         
2898         * kwq/KWQKURL.mm:
2899         (substituteBackslashes): Helper method
2900         (KURL::KURL): If the URL contains any backslashes, substitute all
2901         that appear before the query or fragment.
2902
2903 2004-08-12  Ken Kocienda  <kocienda@apple.com>
2904
2905         Reviewed by Chris
2906
2907         Fix for this bug:
2908         
2909         <rdar://problem/3761014> command-down-arrow takes you to start of document instead of end of document
2910
2911         * khtml/xml/dom_selection.cpp:
2912         (DOM::Selection::modifyExtendingRightForward): Code used to assume, incorrectly, that index 1 of the
2913         document element was beyond the last node in the document. But this is not true, since the document
2914         element is the HTML element (generally). Instead, move to the index equal to the number of children
2915         of the document element. This puts us past everything.
2916         (DOM::Selection::modifyMovingRightForward): Ditto.
2917
2918 2004-08-12  Ken Kocienda  <kocienda@apple.com>
2919
2920         Reviewed by Trey
2921
2922         Fix for this bug:
2923         
2924         <rdar://problem/3695446> shift-down-arrow on last line of editable text should select to end of document
2925         
2926         Detect when current position is on first or last line and move to the
2927         start or end of that line, respectively.
2928
2929         * khtml/xml/dom_position.cpp:
2930         (DOM::Position::previousLinePosition)
2931         (DOM::Position::nextLinePosition)
2932
2933 === Safari-156 ===
2934
2935 2004-08-12  Ken Kocienda  <kocienda@apple.com>
2936
2937         Reviewed by Darin
2938
2939         Some consolidation in style application code.
2940
2941         * khtml/editing/htmlediting_impl.cpp:
2942         (khtml::StyleChange::StyleChange): Made this a full-on class and added a couple of 
2943         members and a constructors to make a StyleChange from a CSSStyleDeclarationImpl, as
2944         well as from a CSSStyleDeclarationImpl and a Position.
2945         (khtml::StyleChange::init): Common init function for StyleChange constructors.
2946         (khtml::StyleChange::currentlyHasStyle): Moved this here from ApplyStyleCommandImpl.
2947         (khtml::CompositeEditCommandImpl::applyTypingStyle): Tweak to adjust to new StyleChange
2948         interface.
2949         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Ditto.
2950         * khtml/editing/htmlediting_impl.h:
2951         (khtml::StyleChange::StyleChange):
2952         (khtml::StyleChange::cssStyle): New accessor.
2953         (khtml::StyleChange::applyBold): Ditto.
2954         (khtml::StyleChange::applyItalic): Ditto.
2955         * khtml/xml/dom_position.cpp:
2956         (DOM::Position::computedStyle): New helper.
2957         * khtml/xml/dom_position.h: Ditto.
2958
2959 2004-08-12  Ken Kocienda  <kocienda@apple.com>
2960
2961         Reviewed by Darin
2962
2963         Fix for this bug:
2964         <rdar://problem/3751098> HTML email has one set of SPAN tags per character in the message
2965         
2966         Progress on this bug:
2967         <rdar://problem/3755562> Typing styles do not use same tag application conventions as font and color panel
2968
2969         * khtml/editing/htmlediting_impl.cpp:
2970         (khtml::CompositeEditCommandImpl::applyTypingStyle): Name changed from createTypingStyleElement.
2971         Also, interface changed to take the node to which the typing style is to be applied. 
2972         This makes it easier to apply what may be up to three levels of nested tags to get the 
2973         desired style (<B>, <I>, and <SPAN STYLE="">).
2974         Also, Borrow some of the style change smarts from ApplyStyleCommandImpl to use bold and
2975         italic tags for applying styles when that is apprpriate. This creates on opportunity to
2976         factor the code to do this so that this function and the ApplyStyleCommandImpl class can
2977         share the implementation. I will follow up with a change to do that after landing this
2978         change. Some future code factoring could be done here to bring together some similar code
2979         into one place.
2980         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Add comment about code factoring work.
2981         (khtml::ApplyStyleCommandImpl::computeStyleChange): StyleChange struct no longer a member of the
2982         ApplyStyleCommandImpl class. CompositeEditCommandImpl needs it now in its applyTypingStyle()
2983         function.
2984         (khtml::InputNewlineCommandImpl::doApply): Pass along node to style to applyTypingStyle.
2985         (khtml::InputTextCommandImpl::prepareForTextInsertion): Ditto.
2986         * khtml/editing/htmlediting_impl.h:
2987         (khtml::StyleChange::StyleChange): Pull this struct out of ApplyStyleCommandImpl so 
2988         CompositeEditCommandImpl can use it.
2989         * khtml/khtml_part.cpp:
2990         (KHTMLPart::notifySelectionChanged): Always clear typing style when the selection
2991         changes, not only when closing typing. This fixes 3751098.
2992         
2993         These three tests actually had results that treated the buggy behavior as correct!
2994         
2995         * layout-tests/editing/style/style-3681552-fix-001-expected.txt
2996         * layout-tests/editing/style/style-3681552-fix-002-expected.txt
2997         * layout-tests/editing/style/typing-style-002-expected.txt
2998
2999 2004-08-12  Darin Adler  <darin@apple.com>
3000
3001         Reviewed by Ken.
3002
3003         - fixed <rdar://problem/3740485> Repro crash involving replacing content that includes form field
3004
3005         * kwq/KWQLineEdit.mm: (QLineEdit::selectAll): Since this function calls selectText: which has a side
3006         effect of making the text field be first responder, call to bridge first to make it first responder.
3007         The bridge version lets WebHTMLView know we are changing the responder, avoiding some unpleasantness
3008         because it sets the "changing focus programmatically" flag. Without that flag set, we were getting
3009         an additional setFocusNode(0) call, which is unnecessary and incorrect.
3010
3011 2004-08-12  Darin Adler  <darin@apple.com>
3012
3013         Reviewed by Ken.
3014
3015         - fixed <rdar://problem/3758756> copying text selected with down arrow results in all text to end of document
3016
3017         * khtml/xml/dom2_rangeimpl.h: Make startNode and pastEndNode public.
3018         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::pastEndNode): Fix bug where this would return
3019         one node too far in the case where the end container was not a text node.
3020
3021         * khtml/xml/dom_nodeimpl.cpp:
3022         (NodeImpl::recursive_toHTMLWithOptions): Rewrite loop, using startNode and pastEndNode,
3023         to fix bug where it would run past the end node, including too many nodes in the generated
3024         HTML. Nice side benefit: easier to read the code.
3025
3026 2004-08-11  Chris Blumenberg  <cblu@apple.com>
3027
3028         Fixed: <rdar://problem/3758216> PARENTAL: buttons on parental controls page only work once
3029
3030         Reviewed by john.
3031
3032         * kwq/KWQKHTMLPart.mm:
3033         (KWQKHTMLPart::submitForm): prevent a form from being submitted more than once only if it uses a scheme of http or https
3034
3035 2004-08-11  Darin Adler  <darin@apple.com>
3036
3037         Reviewed by Ken.
3038
3039         - fixed <rdar://problem/3715878> 8A162: connect.apple.com password field showed in cleartext
3040
3041         * kwq/KWQTextField.mm: (-[KWQSecureTextField textDidEndEditing:]):
3042         Enhanced workaround for shifting focus from one secure text field to another so that it works
3043         even for the case of shifting focus from a secure text field back to itself.
3044
3045 2004-08-11  Ken Kocienda  <kocienda@apple.com>
3046
3047         Missed adding this file before.
3048
3049         * kwq/KWQTextUtilities.mm: Added.
3050         (KWQFindNextWordFromIndex):
3051
3052 2004-08-11  Ken Kocienda  <kocienda@apple.com>
3053
3054         Reviewed by Trey
3055
3056         Efficiency improvements on string manipulations in these two new function
3057         implementations. Use the versions of QString append/prepend that take
3058         (QChar *c, uint length) instead of creating new strings each time.
3059
3060         * khtml/xml/dom_position.cpp:
3061         (DOM::Position::previousWordPosition): Changed, as described above.
3062         (DOM::Position::nextWordPosition): Ditto.
3063
3064 2004-08-11  Ken Kocienda  <kocienda@apple.com>
3065
3066         Reviewed by Darin
3067
3068         Fix for this bug:
3069         <rdar://problem/3675812> Moving a word at a time does not use the correct conception of "word"
3070         
3071         I have implemented versions of previousWordPosition and nextWordPosition that are now
3072         different than previousWordBoundary and nextWordBoundary. The behavior of the new
3073         functions attempts to match what Cocoa does as closely as it can. Let the bug filing begin! 
3074
3075         * WebCore.pbproj/project.pbxproj: Added KWQTextUtilities.mm
3076         * khtml/misc/helper.cpp:
3077         (khtml::nextWordFromIndex): Glue to call through to KWQFindNextWordFromIndex.
3078         * khtml/misc/helper.h: Declare the function above.
3079         * khtml/misc/khtml_text_operations.cpp: Added SimplifiedBackwardsTextIterator class.
3080         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator): New
3081         (khtml::SimplifiedBackwardsTextIterator::advance): Ditto.
3082         (khtml::SimplifiedBackwardsTextIterator::handleTextNode): Ditto.
3083         (khtml::SimplifiedBackwardsTextIterator::handleReplacedElement): Ditto.
3084         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode): Ditto.
3085         (khtml::SimplifiedBackwardsTextIterator::exitNode): Ditto.
3086         (khtml::SimplifiedBackwardsTextIterator::emitCharacter): Ditto.
3087         (khtml::SimplifiedBackwardsTextIterator::range): Ditto.
3088         * khtml/misc/khtml_text_operations.h:
3089         (khtml::SimplifiedBackwardsTextIterator::atEnd): Ditto.
3090         (khtml::SimplifiedBackwardsTextIterator::length): Ditto.
3091         (khtml::SimplifiedBackwardsTextIterator::characters): Ditto.
3092         * khtml/xml/dom_position.cpp:
3093         (DOM::Position::previousWordBoundary): Updated to gather appropriate text and call through to
3094         AppKit to perform the same calculations NSText uses.
3095         (DOM::Position::nextWordBoundary): Ditto.
3096         (DOM::Position::previousWordPosition): Unrelated change to fix case where the function could get "stuck".
3097         (DOM::Position::nextWordPosition): Ditto
3098         (DOM::Position::equivalentDeepPosition): Changed to look backwards if the position's offset is equal
3099         to the number of child nodes it has. This handles more cases correctly, like when the position is
3100         gives as one beyond the end of a document element's last child.
3101         * kwq/KWQTextUtilities.h: Declared KWQFindNextWordFromIndex.
3102         * kwq/KWQTextUtilities.mm: Added.
3103         (KWQFindNextWordFromIndex): New function.
3104
3105 2004-08-11  Ken Kocienda  <kocienda@apple.com>
3106
3107         Reviewed by John
3108
3109         Fix for this bug:
3110         
3111         <rdar://problem/3732702> crash in CSSComputedStyleDeclarationImpl running devtools.com editing sample code
3112
3113         * khtml/khtml_part.cpp:
3114         (KHTMLPart::selectionComputedStyle): Added a null check.
3115
3116 2004-08-10  Darin Adler  <darin@apple.com>
3117
3118         Reviewed by Trey.
3119
3120         - fixed <rdar://problem/3710123> Loading iframe that replaces content in the parent document crashes Safari
3121
3122         I fixed three problems:
3123
3124             1) script interpreter destroyed while it was interpreting scripts, caused random havoc
3125             2) code trying to get to view after view was detached from part, caused nil-deref
3126             3) signals sent to parent after child was no longer in the parent's frames list, caused nil-deref
3127
3128         Now the test page works fine. Hope the real sites do too.
3129
3130         * khtml/khtml_part.h: Add connectChild and disconnectChild helper functions (private).
3131         * khtml/khtml_part.cpp:
3132         (KHTMLPart::clear): Call disconnectChild on each frame as we detach it (see below).
3133         (KHTMLPart::end): Ref the part at the start, and deref the part at the end, of this function.
3134         Otherwise, we can end up destroying the part, and hence the interpreter, inside a script that
3135         the interpreter itself is running.
3136         (KHTMLPart::slotFinishedParsing): Add another check for a nil m_view, after the call to
3137         checkCompleted.
3138         (KHTMLPart::checkCompleted): Remove bogus if statement with empty body.
3139         (KHTMLPart::processObjectRequest): Call disconnectChild to disconnect the child <-> parent signals of the
3140         old child that the new one is replacing, and connectChild to connect the signals (nicer factoring).
3141         (KHTMLPart::slotChildCompleted): Fixed up a confusing boolean if/expression to be simpler. Not related to
3142         the bug fix, but an earlier version of the fix had changes in this function.
3143         (KHTMLPart::connectChild): Added. Connects the appropriate signals for a child frame.
3144         (KHTMLPart::disconnectChild): Added. Disconnects the same signals that connectChild connects.
3145
3146         * kwq/KWQKHTMLPart.mm: (KHTMLPart::frameDetached): Added a call to disconnectChild before removing the
3147         child from the frames list.
3148
3149 2004-08-09  Maciej Stachowiak  <mjs@apple.com>
3150
3151         Reviewed by Trey.
3152
3153         WebCore part of:
3154
3155         - made basic marked text highlighting work to complete basic level of <rdar://problem/3704359> input method support not yet implemented for HTML editing
3156
3157         * kwq/WebCoreBridge.mm:
3158         (-[WebCoreBridge setMarkedDOMRange:]): Added this new call to support storing
3159         a marked range in WebCore. The provided DOMRange must start and end in the same
3160         node, which must be a text node.
3161         (-[WebCoreBridge markedDOMRange]): New call to get the marked range. 
3162         (-[WebCoreBridge clearMarkedDOMRange]): New call to clear the marked range.
3163         * kwq/WebCoreBridge.h: Prototype new methods.
3164         * kwq/KWQKHTMLPart.mm:
3165         (KWQKHTMLPart::markedRange): Implementation of WebCore call above.
3166         (KWQKHTMLPart::setMarkedRange): Implementation of WebCore call above -
3167         store the marked range, and repaint new and old nodes if needed.
3168         (KWQKHTMLPart::clear): Clear marked range.
3169         * kwq/KWQKHTMLPart.h: Prototype new methods.
3170         * khtml/rendering/render_text.cpp:
3171         (InlineTextBox::paintMarkedTextBackground): New method to paint the background
3172         for marked text, modeled on paintSelection.
3173         (RenderText::paint): Optionally handle painting marked text
3174         background as well as selection background in the marked text
3175         pass.
3176         * khtml/rendering/render_text.h: Prototype new method.
3177
3178 2004-08-10  Darin Adler  <darin@apple.com>
3179
3180         Reviewed by Dave.
3181
3182         - switch PCRE to do UTF-16 directly instead of converting to/from UTF-8 for speed
3183
3184         * kwq/KWQRegExp.mm:
3185         (QRegExp::KWQRegExpPrivate::compile): Null-terminate the pattern and pass it.
3186         (QRegExp::match): Use the 16-bit string directly, no need to convert to UTF-8.
3187
3188 2004-08-10  Darin Adler  <darin@apple.com>
3189
3190         Reviewed by Ken.
3191
3192         - minor cleanup
3193
3194         * khtml/editing/jsediting.cpp: Capitalize command names to match Windows.
3195         The dictionary lookup is case insensitive.
3196
3197         * kwq/KWQFoundationExtras.h: Remove inaccurate comment.
3198
3199 2004-08-10  Trey Matteson  <trey@apple.com>
3200
3201         3757094 - crash spell checking after a paste
3202
3203         Reviewed by Ken
3204
3205         * khtml/rendering/render_text.cpp:
3206         (InlineTextBox::paintSelection):  Add nil check.
3207
3208 2004-08-09  Trey Matteson  <trey@apple.com>
3209
3210         3756195 - spell checking leaves misspelling marker behind after bad word is deleted
3211         ... and other follow-on spell check fixes
3212
3213         Reviewed by Ken
3214
3215         * khtml/rendering/render_text.cpp:
3216         (InlineTextBox::paintMarker):  Close inspection shows we were drawing the 
3217         misspelling marker one pixel lower than AK, and one pixel outside the selection
3218         rect we draw, in the case of Times-16.  So move it up one.  Still not an exact
3219         match for AK, but less bad.
3220         * khtml/xml/dom_docimpl.cpp:
3221         (DocumentImpl::removeMarker):  Track whether we make any changes, so we only
3222         repaint if something actually changed.
3223         (DocumentImpl::removeAllMarkers):  New utility.
3224         (DocumentImpl::removeAllMarkers):  Use clear() instead of (errant)
3225         hand-rolled loop to empty array.
3226         (DocumentImpl::shiftMarkers):  Track whether we make any changes, so we only
3227         repaint if something actually changed.
3228         * khtml/xml/dom_docimpl.h:
3229         * khtml/xml/dom_textimpl.cpp:
3230         (CharacterDataImpl::deleteData):  Along with shifting existing markers around,
3231         remove any markers in the deleted range.  Fixes 3756195.
3232         (CharacterDataImpl::replaceData):  Ditto for the replaced range.
3233         * kwq/KWQKHTMLPart.mm:
3234         (KWQKHTMLPart::updateSpellChecking): comment
3235
3236 2004-08-08  Trey Matteson  <trey@apple.com>
3237
3238         3745023 - Safari crashes trying to access anchor while downloading
3239
3240         I bet this is behind a few other crashers as well.  In this bug the start of the
3241         download leaves a KWQPageState hanging around, and when that is freed it damages
3242         the part and view.  If you're still using that page, you're dead.
3243
3244         The fix is to properly invalidate the PageState when we receive an error before
3245         reaching WebFrameCommitted state.  Normally this happens when a page is reheated
3246         from the PageState, but in this case we never manage to leave the page to begin
3247         with, although we've already created the PageState.
3248
3249         Other errors besides the synthetic one download generates would have caused similar
3250         crashing.  Another example would be clicking on a second link before the load
3251         caused by clicking on the first link reached committed state.
3252
3253         Reviewed by Richard
3254
3255         * kwq/WebCoreBridge.h:
3256         * kwq/WebCoreBridge.mm:
3257         (-[WebCoreBridge didNotOpenURL:pageCache:]):  Invalidate the pageCache state
3258         when a load doesn't get off the ground.
3259
3260 2004-08-06  Ken Kocienda  <kocienda@apple.com>
3261
3262         Reviewed by Maciej
3263
3264         Finish off spellchecking support to HTML editing. Includes work to
3265         enable continuous spellchecking.
3266
3267         * khtml/editing/htmlediting_impl.cpp:
3268         (khtml::EditCommandImpl::markMisspellingsInSelection): Basically, a one-liner convenience to
3269         make the call over to the KWQKHTMLPart.
3270         (khtml::ReplaceSelectionCommandImpl::doApply): Did some rearranging of code so that the
3271         inserted content can be spell-checked. The function is basically the same, except for
3272         the addition of calls to markMisspellingsInSelection.
3273         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): New function. Takes a look at the
3274         selection that results after typing and determines whether it needs to spellcheck. 
3275         Since the word containing the current selection is never marked, this does a check to
3276         see if typing made a new word that is not in the current selection. Basically, you
3277         get this by being at the end of a word and typing a space.
3278         (khtml::TypingCommandImpl::typingAddedToOpenCommand): Call markMisspellingsAfterTyping.
3279         * khtml/editing/htmlediting_impl.h: Add new function declarations.
3280          * khtml/khtml_part.cpp:
3281         (KHTMLPart::setSelection): Since spell checks are updated when the selection changes, 
3282         and every selection change passes through here, this is a good place to put the call 
3283         to the spellchecker.
3284         * khtml/rendering/render_text.cpp:
3285         (InlineTextBox::paintMarker): Remove temporary misspelling line drawing code. Replace with
3286         call that does AppKit-style drawing. Fix up some comments.
3287         * khtml/xml/dom_docimpl.cpp:
3288         (DocumentImpl::addMarker): Repaint the node that had the marker added. This makes it show 
3289         up on setting it.
3290         (DocumentImpl::removeMarker): Ditto.
3291         (DocumentImpl::removeAllMarkers): New function. Convenience for clearing all markers.
3292         Used when not in continuous spellchecking mode.
3293         (DocumentImpl::shiftMarkers): Moves markers in response to changes in a node's contents.
3294         This shifts the marker offsets by a given amount. This keeps the markers in the right
3295         place when a user types in a node with markers already set on it.
3296         * khtml/xml/dom_docimpl.h: Added new functions. Removed unnecessary enum qualifier from some
3297         declarations.
3298         * khtml/xml/dom_position.cpp:
3299         (DOM::Position::previousWordBoundary): This function was susceptible to endless loops...and
3300         needlessly so. Basically, if the current position is at a word boundary, run the code again
3301         to find the previous word boundary.
3302         (DOM::Position::nextWordBoundary): Same as above, but for next word boundary.
3303         * khtml/xml/dom_textimpl.cpp:
3304         (CharacterDataImpl::setData): Call shiftMarkers to update markers when this node changes.
3305         (CharacterDataImpl::insertData): Ditto.
3306         (CharacterDataImpl::deleteData): Ditto.
3307         (CharacterDataImpl::replaceData): Ditto.
3308         * kwq/KWQKHTMLPart.h:
3309         * kwq/KWQKHTMLPart.mm:
3310         (KWQKHTMLPart::advanceToNextMisspelling):
3311         (KWQKHTMLPart::markMisspellingsInSelection):
3312         (KWQKHTMLPart::updateSpellChecking):
3313         (KWQKHTMLPart::respondToChangedSelection):
3314         * kwq/KWQPainter.h:
3315         * kwq/KWQPainter.mm:
3316         (QPainter::drawLineForMisspelling): New function. Call over to WebKit to do the drawing.
3317         * kwq/WebCoreBridge.h:
3318         * kwq/WebCoreBridge.mm:
3319         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Pass markMisspellings flag to
3320         setSelection call. 
3321         * kwq/WebCoreTextRenderer.h:
3322
3323 === Safari-155 ===
3324
3325 2004-08-05  David Hyatt  <hyatt@apple.com>
3326
3327         Fix for 3752542, stack overflow that crashes Safari at www.dr.dk.  This bug is a regression caused by a fix that
3328         attempted to repair <caption> behavior to make it behave like Panther.  This fix was incorrect, and in addition
3329         even our <caption> behavior on Panther was incorrect.