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