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