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