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