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