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