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