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