Fix for 3773809, make sure that overflow regions never end up at an invalid scroll...
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2005-01-21  David Hyatt  <hyatt@apple.com>
2
3         Fix for 3773809, make sure that overflow regions never end up at an invalid scroll offset because of a layout change.
4         
5         Reviewed by kocienda
6
7         * khtml/rendering/render_layer.cpp:
8         (RenderLayer::updateScrollInfoAfterLayout):
9
10 2005-01-21  David Hyatt  <hyatt@apple.com>
11
12         Fix for 3966349, hang loading page.  Make sure that loops using popOneBlock properly check for a null
13         blockStack to avoid an infinite loop.
14         
15         Reviewed by kocienda
16
17         * khtml/html/htmlparser.cpp:
18         (KHTMLParser::parseToken):
19         (KHTMLParser::insertNode):
20         (KHTMLParser::popInlineBlocks):
21
22 2005-01-21  Ken Kocienda  <kocienda@apple.com>
23
24         Reviewed by John
25
26         Fix for this bug:
27         
28         <rdar://problem/3957204> Mail crashed when sending a message in ~InsertParagraphSeparatorInQuotedContentCommand
29
30         * khtml/editing/htmlediting.cpp:
31         (khtml::InsertParagraphSeparatorInQuotedContentCommand::InsertParagraphSeparatorInQuotedContentCommand):
32         InsertParagraphSeparatorInQuotedContentCommand has this member variable: DOM::ElementImpl *m_breakNode;
33         I failed to initialize this variable to null in the constructor, and there is an uncommonly-traveled 
34         code path which does not set this variable to something good. In the destructor, we check for null, 
35         and deref if non-null. Obvious "BOOM" potential. Fixed.
36
37 2005-01-21  Ken Kocienda  <kocienda@apple.com>
38
39         Reviewed by John
40
41         Fix for this bug:
42         
43         <rdar://problem/3966311> REGRESSION (Mail): Hitting return makes space character disappear
44
45         * khtml/editing/htmlediting.cpp:
46         (khtml::InsertParagraphSeparatorCommand::doApply): When writing the code to insert a block
47         in response to the return key, I did not write code to cover the case described in the bug.
48         Now I have.
49         * layout-tests/editing/inserting/insert-div-025-expected.txt: Added.
50         * layout-tests/editing/inserting/insert-div-025.html: Added.
51
52 2005-01-20  Maciej Stachowiak  <mjs@apple.com>
53
54         Reviewed by Ken.
55
56         <rdar://problem/3965196> security fix for javascript: exploit missed one case (already fixed in updates)
57         
58         * khtml/ecma/kjs_window.cpp:
59         (WindowFunc::tryCall): correct mistake in earlier fix for the following bug, caught by Adele:
60
61         <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
62
63 2005-01-20  Maciej Stachowiak  <mjs@apple.com>
64
65         Reviewed by Ken.
66
67         <rdar://problem/3965466> editing needs to insert text before applying typing style
68         
69         * khtml/editing/htmlediting.cpp:
70         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): Remove a FIXME comment.
71         (khtml::InsertLineBreakCommand::doApply): Apply style to the BR
72         node after inserting it.
73         (khtml::InsertTextCommand::prepareForTextInsertion): Don't try to
74         apply style to any new nodes created before inserting.
75         (khtml::InsertTextCommand::input): Apply style to the inserted range
76         after doing the text insert.
77         * khtml/editing/htmlediting.h:
78
79         This change leads to improved results on one of the layout tests:
80         
81         * layout-tests/editing/inserting/insert-div-024-expected.txt:
82
83 === Safari-180 ===
84
85 2005-01-20  Ken Kocienda  <kocienda@apple.com>
86
87         Reviewed by John
88
89         Fix for this bug:
90         
91         <rdar://problem/3964646> REGRESSION (179-180): Typing space at end of line makes following paragraph disappear
92
93         * khtml/editing/htmlediting.cpp:
94         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Recent change to block placeholder removal code 
95         caused this regression. The code became too aggressive in removing block placeholders, and would remove them
96         from blocks other than the block containing the selection.
97         * layout-tests/editing/inserting/insert-div-023-expected.txt: This file had a spurious BR element in it that
98         I did not notice earlier.
99         * layout-tests/editing/inserting/insert-div-024-expected.txt: Ditto.
100
101 2005-01-20  David Hyatt  <hyatt@apple.com>
102
103         Fix for oddness on albertsons.com.  Make sure not to crash when setting/removing style properties on a node
104         with no document.  The bug # is 3813900.
105         
106         Reviewed by john
107
108 2005-01-20  David Harrison  <harrison@apple.com>
109
110         Reviewed by Darin.
111
112         PARTIAL fix for following bug.  Create attributed string with fonts and links.  Still need to add attachments.
113         <rdar://problem/3942606> AX: Support kAXAttributedStringForTextMarkerRangeParameterizedAttribute
114         
115         * kwq/KWQAccObject.mm:
116         (-[KWQAccObject textUnderElement]):
117         Touched up previous checkin to match code review comments.
118         
119         (-[KWQAccObject value]):
120         Use plainText for this one instead of obsolete attributedString.
121         
122         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
123         Advertise AXAttributedStringForTextMarkerRange.
124         
125         (AXAttributeStringAddFont):
126         (AXAttributeStringAddElement):
127         (-[KWQAccObject linkUIElementForNode:]):
128         (-[KWQAccObject _addAttachmentForElement:URL:needsParagraph:usePlaceholder:]):
129         (-[KWQAccObject accessibilityAttributedStringForRange:]):
130         New routines to support AXAttributedStringForTextMarkerRange.
131         
132         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
133         Use new routines instead of obsolete attributedString.
134
135 2005-01-20  David Harrison  <harrison@apple.com>
136
137         Reviewed by Darin.
138
139         <rdar://problem/3960196> AX Crash in DOM::Range::setStartBefore
140
141         * khtml/xml/dom_docimpl.cpp:
142         (DocumentImpl::getAccObjectCache):
143         Adjust when detecting cache in non-top level WebArea.
144         * kwq/KWQAccObject.mm:
145         (-[KWQAccObject textUnderElement]):
146         (-[KWQAccObject accessibilityAttributeValue:]):
147         Make sure the elements document is the current one for the part.
148
149 2005-01-20  Darin Adler  <darin@apple.com>
150
151         Reviewed by John.
152
153         - fixed <rdar://problem/3922980> Mail not crashing, just quitting itself suddenly in -[WebHTMLView(MailExtras) findString:options:]
154
155         * khtml/dom/dom2_range.cpp: (DOM::operator==): Handle null and detached ranges without raising exceptions.
156         The uncaught exception would make the entire program terminate.
157
158         - fixed <rdar://problem/3885729> attempting to modify a computed style does nothing, but should raise a DOM exception
159
160         * kwq/DOM-CSS.mm: (-[DOMCSSStyleDeclaration setProperty:::]): Uncommented this code which I had to disable
161         back in November because Mail was stumbling over it.
162
163         - fixed <rdar://problem/3943049> focus() called during onload handler results in square text field on <input type=search>        
164
165         * kwq/KWQLineEdit.mm: (QLineEdit::baselinePosition): Change computation so it will work even for fields
166         that position their text in a way that depends on vertical size. In the case of a search field, the text
167         is centered, so the old logic was broken.
168         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Set the frame size to
169         something large enough to accomodate the field editor. If we start the frame at size 0,0 we run into
170         AppKit trouble when it insets the frame to figure out the frame for the field editor. In the case of this
171         bug this happens because we become first responder before being sized and positioned by the HTML layout code.
172
173         - improved debugging output when using "po" from gdb with Objective-C DOM
174
175         * kwq/DOM.mm:
176         (-[DOMNode description]): Added. Includes node name ("<tr>") and node value (e.g., string for text node).
177         (-[DOMRange description]): Tweaked format.
178
179 2005-01-19  Richard Williamson   <rjw@apple.com>
180
181         After further discussion with Real we have decided to NOT include the
182         additional CLSID for the real plugin.  See 3958601.
183
184         Reviewed by Darin.
185
186         * khtml/rendering/render_frames.cpp:
187         (RenderPartObject::updateWidget):
188
189 2005-01-19  David Harrison  <harrison@apple.com>
190
191         Reviewed by Maciej.
192
193         <rdar://problem/3949429> AX: word marker routines returns incorrect data for empty line
194
195         Previous checkin for this bug was missing some of the patch.  Editing snafu with multiple changes in tree.
196         
197         * kwq/KWQAccObject.mm:
198         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
199         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
200         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
201         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
202         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
203         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
204         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
205
206 2005-01-19  Ken Kocienda  <kocienda@apple.com>
207
208         Reviewed by John
209
210         * khtml/editing/htmlediting.cpp:
211         (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Small, cosmetic change John and I decided
212         to do on my last checkin, but I forgot to do before landing.
213
214 2005-01-19  Ken Kocienda  <kocienda@apple.com>
215
216         Reviewed by John
217
218         Fix for this bug:
219         
220         <rdar://problem/3959727> REGRESSION (Mail): Style not preserved on blank lines
221
222         * khtml/editing/htmlediting.cpp:
223         (khtml::CompositeEditCommand::applyStyle):
224         (khtml::CompositeEditCommand::insertBlockPlaceholder): New function that unconditionally adds a block placeholder.
225         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Now returns bool based on whether
226         placeholder was added or not.
227         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Now searches all the descendents of a block
228         looking for a placeholder. The old code, which just looked at the last child of a node, started missing
229         once block placeholders became styled (which started happening with this patch).
230         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Now handles applying typing style
231         to a block placeholder at call time, rather than setting the typing style as a latent style that
232         might be applied later. This is an important part of the bug fix.
233         (khtml::DeleteSelectionCommand::doApply): Now uses bool return value from insertBlockPlaceholderIfNeeded()
234         and passes it along to calculateStyleBeforeInsertion, so the case where a block placeholder needs to
235         be styled can be detected.
236         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Changed the way this class
237         managed style. Before it would calculate and set typing style for the block added. This is not
238         sufficient. Added blocks need to styled immediately. Some name changes to instance variables in 
239         this class due to the change to accommodate this change.
240         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Name changes, as above.
241         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): Ditto.
242         (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Ditto.
243         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
244         (khtml::ReplaceSelectionCommand::doApply): Improve check for testing when a placeholder
245         block can be removed in its entirety after the insertion.
246         * khtml/editing/htmlediting.h: Update header accordingly.
247         * khtml/khtml_part.cpp:
248         (KHTMLPart::selectionComputedStyle): Move position for computed style check downstream before
249         doing check when the position is in an empty block (this makes sure any style on any block
250         placeholder is accounted for).
251
252         New layout tests to check bug fix.
253
254         * layout-tests/editing/style/block-style-004-expected.txt: Added.
255         * layout-tests/editing/style/block-style-004.html: Added.
256         * layout-tests/editing/style/block-style-005-expected.txt: Added.
257         * layout-tests/editing/style/block-style-005.html: Added.
258         * layout-tests/editing/style/block-style-006-expected.txt: Added.
259         * layout-tests/editing/style/block-style-006.html: Added.
260
261         Results updated to reflect new block placeholder code.
262
263         * layout-tests/editing/inserting/insert-div-004-expected.txt 
264         * layout-tests/editing/inserting/insert-div-005-expected.txt
265         * layout-tests/editing/inserting/insert-div-006-expected.txt
266         * layout-tests/editing/inserting/insert-div-008-expected.txt
267         * layout-tests/editing/inserting/insert-div-011-expected.txt
268         * layout-tests/editing/inserting/insert-div-012-expected.txt
269         * layout-tests/editing/inserting/insert-div-013-expected.txt
270         * layout-tests/editing/inserting/insert-div-014-expected.txt
271         * layout-tests/editing/inserting/insert-div-015-expected.txt
272         * layout-tests/editing/inserting/insert-div-016-expected.txt
273         * layout-tests/editing/inserting/insert-div-017-expected.txt
274         * layout-tests/editing/inserting/insert-div-018-expected.txt
275         * layout-tests/editing/inserting/insert-div-019-expected.txt
276         * layout-tests/editing/inserting/insert-div-021-expected.txt
277         * layout-tests/editing/inserting/insert-div-022-expected.txt
278         * layout-tests/editing/inserting/insert-div-023-expected.txt
279         * layout-tests/editing/inserting/insert-div-024-expected.txt
280
281 2005-01-19  David Hyatt  <hyatt@apple.com>
282
283         Dont null-check the renderer before submitting, since a script can set it to display:none and still expect the
284         submission to occur.  Fixes bug #3477282.
285         
286         Reviewed by kdecker
287
288         (DOM::HTMLInputElementImpl::defaultEventHandler):
289
290 2005-01-18  Richard Williamson   <rjw@apple.com>
291         
292         Fixed several issues all arising from analysis of plugin detection code at ifilm.com:
293
294         Fixed <rdar://problem/3958592> can't script plug-ins if plug-in is invoked with <object> element instead of <embed>
295         Fixed <rdar://problem/3958597> <object> elements with IDs do not show up as named properties of the document
296         Fixed <rdar://problem/3960973> DOM objects for plugin elements are not accessible
297         Fixed <rdar://problem/3958601> need an additional class ID in WebCore for the Real plug-in
298
299         We now support accessing scriptable plugin objects that are specified with <applet>, <embed>, or <object>
300         tags.  Also, if any of these elements are named they can be accessed from the document or window objects.
301         Finally, DOM methods are properties will be forwarded appropriately for the plugin's root scriptable object.
302
303         Reviewed by Chris.
304
305         * khtml/dom/html_document.cpp:
306         (HTMLDocument::objects):
307         * khtml/dom/html_document.h:
308         * khtml/ecma/kjs_dom.cpp:
309         (DOMDocumentProtoFunc::tryCall):
310         (DOMElementProtoFunc::tryCall):
311         (KJS::getRuntimeObject):
312         * khtml/ecma/kjs_dom.h:
313         * khtml/ecma/kjs_html.cpp:
314         (KJS::HTMLDocument::tryGet):
315         (KJS::HTMLElement::tryGet):
316         (KJS::HTMLCollection::tryGet):
317         (KJS::HTMLCollection::getNamedItems):
318         * khtml/ecma/kjs_window.cpp:
319         (Window::get):
320         * khtml/html/html_miscimpl.cpp:
321         (HTMLCollectionImpl::traverseNextItem):
322         * khtml/html/html_miscimpl.h:
323         (DOM::HTMLCollectionImpl::):
324         * khtml/html/html_objectimpl.cpp:
325         (HTMLAppletElementImpl::getAppletInstance):
326         (HTMLObjectElementImpl::HTMLObjectElementImpl):
327         (HTMLObjectElementImpl::getObjectInstance):
328         * khtml/html/html_objectimpl.h:
329         * khtml/rendering/render_frames.cpp:
330         (RenderPartObject::updateWidget):
331         * kwq/KWQKHTMLPart.h:
332         * kwq/KWQKHTMLPart.mm:
333         (KWQKHTMLPart::getObjectInstanceForView):
334
335 2005-01-18  David Hyatt  <hyatt@apple.com>
336
337         Fix for 3948123, rolling over link erases nearby text.  The repaint rect check for lines was wrong whenever
338         two lines overlapped.
339         
340         Reviewed by kocienda
341
342         * khtml/rendering/render_flow.cpp:
343         (RenderFlow::paintLines):
344
345 2005-01-18  Ken Kocienda  <kocienda@apple.com>
346
347         Reviewed by Hyatt
348         
349         Fix for this bug:
350         
351         <rdar://problem/3960116> Focus rings paint incorrectly for contenteditable blocks in web pages
352
353         * khtml/rendering/render_flow.cpp:
354         (RenderFlow::addFocusRingRects): Fix painting of focus rings so that ring only paints around
355         outermost contenteditable elements.
356
357 2005-01-18  David Harrison  <harrison@apple.com>
358
359         Reviewed by Darin.
360
361         <rdar://problem/3959668> accessibilityFocusedUIElement sometimes returns an ignored element; it must not
362
363         * kwq/KWQAccObject.mm:
364         (-[KWQAccObject accessibilityFocusedUIElement]):
365         Return parentObjectUnignored if focused object is ignored.
366
367 2005-01-18  Ken Kocienda  <kocienda@apple.com>
368
369         Reviewed by John
370
371         Fix for this bug:
372         
373         <rdar://problem/3952877> REGRESSION (Mail): Command-left/right-arrows don't work with file attachment
374
375         * khtml/editing/selection.cpp:
376         (khtml::nodeForInlineBox): New helper function used in reimplementation of function below.
377         (khtml::selectionForLine): Reimplemented using line box smarts. I originally wrote this code when
378         I had a less than full understanding of line layout. I can do better now, and my new version no
379         longer fails to notice attachments when doing the kind of navigation mentioned in the bug.
380
381 2005-01-17  David Harrison  <harrison@apple.com>
382
383         Reviewed by John Sullivan.
384
385         <rdar://problem/3949429> AX: word marker routines returns incorrect data for empty line
386         <rdar://problem/3949848> AX: paragraph marker routines do not work when given a paragraph end marker
387
388         Also fixed sentence support in the same way.
389         
390         * kwq/KWQAccObject.mm:
391         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
392         (-[KWQAccObject doAXNextSentenceEndTextMarkerForTextMarker:]):
393         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
394         (-[KWQAccObject doAXNextParagraphEndTextMarkerForTextMarker:]):
395         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
396         Move one position in desired direction before calling visible_units.cpp code.
397
398 2005-01-17  David Harrison  <harrison@apple.com>
399
400         Updated expected test results.
401         
402         <rdar://problem/3945880> line-ending space seems not to be present
403
404         * layout-tests/editing/deleting/delete-ws-fixup-001-expected.txt:
405         * layout-tests/editing/deleting/delete-ws-fixup-002-expected.txt:
406         * layout-tests/editing/inserting/insert-div-020-expected.txt:
407         * layout-tests/editing/inserting/insert-div-021-expected.txt:
408         * layout-tests/editing/inserting/insert-div-022-expected.txt:
409         * layout-tests/editing/inserting/insert-div-023-expected.txt:
410         * layout-tests/editing/inserting/insert-div-024-expected.txt:
411
412 2005-01-17  David Harrison  <harrison@apple.com>
413
414         Reviewed by Dave Hyatt (bidi.cpp) and Darin Adler (selection.cpp).
415
416         <rdar://problem/3945880> line-ending space seems not to be present
417
418         * khtml/editing/selection.cpp:
419         (khtml::Selection::validate):
420         Extend AFTER_WHITE_SPACE code to support white spac in the middle of paragraphs, not just the end.
421         * khtml/rendering/bidi.cpp:
422         (khtml::RenderBlock::findNextLineBreak):
423         Pick left/rightness of word selection based on being at the end of paragraph (i.e. after a hard line break).
424
425 2005-01-17  Darin Adler  <darin@apple.com>
426
427         Reviewed by John Louch.
428
429         - fixed <rdar://problem/3958503> need screenX and screenY to use WebKit windowFrame delegate
430
431         * khtml/ecma/kjs_window.cpp: (Window::get): Change screenX and screenY to use frameGeometry instead
432         of using mapToGlobal and screen in a complicated way.
433         * kwq/KWQKHTMLView.mm: Removed unused mapToGlobal function.
434         * kwq/KWQWindowWidget.h: Ditto.
435         * kwq/KWQWindowWidget.mm: Ditto.
436
437 2005-01-17  David Hyatt  <hyatt@apple.com>
438
439         Fix a screwup in rightmost/lowets position computation.  3955207.  Make sure floats with layers are still checked.
440
441         Reviewed by kocienda
442         
443         * khtml/rendering/render_block.cpp
444
445 2005-01-17  Ken Kocienda  <kocienda@apple.com>
446
447         Reviewed by John
448
449         <rdar://problem/3953366> Problems with typing attributes in HTML compose
450
451         * khtml/editing/htmlediting.cpp:
452         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Remove misguided "optimization"
453         that tried to sense when typing style could be cleared without actually doing a style diff between
454         before-delete and after-delete positions. Removing this extra check and running the 
455         general-purpose code fixes the bug.
456
457 2005-01-17  Richard Williamson   <rjw@apple.com>
458
459         Fixed <rdar://problem/3753030> Need to ensure same origin for plugin binding invocations (origin security rules)
460
461         Keep track of originating execution context and target execution
462         context for native JS object wrappers, and perform appropriate
463         security checks.
464
465         Reviewed by David Harrison.
466
467         * khtml/ecma/kjs_binding.cpp:
468         (ScriptInterpreter::isGlobalObject):
469         (ScriptInterpreter::isSafeScript):
470         (ScriptInterpreter::interpreterForGlobalObject):
471         * khtml/ecma/kjs_binding.h:
472         * khtml/ecma/kjs_window.cpp:
473         (Window::interpreter):
474         (Window::isSafeScript):
475         * khtml/ecma/kjs_window.h:
476         * kwq/DOMInternal.mm:
477         (-[WebScriptObject _initializeScriptDOMNodeImp]):
478         * kwq/KWQKHTMLPart.mm:
479         (KWQKHTMLPart::windowScriptObject):
480         (KWQKHTMLPart::windowScriptNPObject):
481         * kwq/WebCoreBridge.mm:
482         (rootForView):
483         (-[WebCoreBridge init]):
484
485 2005-01-17  Ken Kocienda  <kocienda@apple.com>
486
487         Reviewed by John
488
489         Fix for this bug:
490         
491         <rdar://problem/3786659> REGRESSION (Mail): editable WebViews don't work with 
492         "size up" and "size down" NSFontManager changes
493
494         * khtml/css/cssparser.cpp:
495         (CSSParser::parseValue): Add support for parsing new font size delta property.
496         * khtml/css/cssproperties.c: Generated file.
497         * khtml/css/cssproperties.h: Ditto.
498         * khtml/css/cssproperties.in: Add support for parsing new font size delta property.
499         * khtml/editing/htmlediting.cpp:
500         (khtml::isEmptyStyleSpan): New helper function. Code existed before, but now factored out for convenient use.
501         (khtml::CompositeEditCommand::removeNodeAttribute): Does check on value to see it exists before creating
502         and running command to do the removal.
503         (khtml::ApplyStyleCommand::doApply): Now calls new applyRelativeFontStyleChange() function as part of its work.
504         (khtml::ApplyStyleCommand::applyRelativeFontStyleChange): New function that does the "heavy lifting" to handle 
505         relative font size changes.
506         (khtml::ApplyStyleCommand::applyInlineStyle): Range check the start and end positions to make sure the start is
507         before or equal to the end. Swap them if not true. I ran into this problem in some similar code in 
508         applyRelativeFontStyleChange(). Moving that goodness here too.
509         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded): Uses a local variable to save a value used often.
510         Code is the same, but reads better now. Function now returns bool as well, just like splitTextAtStartIfNeeded.
511         I use the bool return value now (I obviously did not need it before).
512         (khtml::ApplyStyleCommand::computedFontSize): New helper function.
513         (khtml::ApplyStyleCommand::joinChildTextNodes): Ditto.
514         (khtml::createStyleSpanElement): Ditto.
515         * khtml/editing/htmlediting.h: Update header accordingly.
516         * khtml/editing/jsediting.cpp: Add new command string to enable relative font size changes.
517         * kwq/DOM-CSS.mm:
518         (-[DOMCSSStyleDeclaration _fontSizeDelta]): New convenience.
519         (-[DOMCSSStyleDeclaration _setFontSizeDelta:]): Ditto.
520         * kwq/DOMPrivate.h: Declare new conveniences.
521         * layout-tests/editing/editing.js: Add new JS to enable relative font size changes, as well as explicit font size setting.
522         * layout-tests/editing/style/relative-font-size-change-001-expected.txt: Added.
523         * layout-tests/editing/style/relative-font-size-change-001.html: Added.
524         * layout-tests/editing/style/relative-font-size-change-002-expected.txt: Added.
525         * layout-tests/editing/style/relative-font-size-change-002.html: Added.
526         * layout-tests/editing/style/relative-font-size-change-003-expected.txt: Added.
527         * layout-tests/editing/style/relative-font-size-change-003.html: Added.
528         * layout-tests/editing/style/relative-font-size-change-004-expected.txt: Added.
529         * layout-tests/editing/style/relative-font-size-change-004.html: Added.
530
531 2005-01-14  Darin Adler  <darin@apple.com>
532
533         * khtml/css/cssproperties.c: Regenerated with gperf 3.0.1.
534         * khtml/css/cssvalues.c: Regenerated with gperf 3.0.1.
535         * khtml/misc/htmlattrs.c: Regenerated with gperf 3.0.1.
536         * khtml/misc/htmltags.c: Regenerated with gperf 3.0.1.
537
538 2005-01-14  Chris Blumenberg  <cblu@apple.com>
539
540         Fixed: <rdar://problem/3886415> arrow keys don't work when the user hits Back to return to RSS page
541
542         Reviewed by hyatt.
543
544         (KWQKHTMLPart::openURLFromPageCache): restore mousePressNode
545         (KWQKHTMLPart::mousePressNode): new
546         * kwq/KWQPageState.h:
547         * kwq/KWQPageState.mm:
548         (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:]): save the mousePressNode
549         (-[KWQPageState clear]): clear the mousePressNode
550         (-[KWQPageState dealloc]): deref the mousePressNode
551         (-[KWQPageState mousePressNode]): new
552
553 === Safari-179 ===
554
555 2005-01-13  Vicki Murley <vicki@apple.com>
556
557         Reviewed by Adele.
558
559         - fix <rdar://problem/3946836> Safari about box lists 2004 instead of 2005
560
561         * WebCore.pbproj/project.pbxproj: bump "2004" to "2005"
562
563 2005-01-13  David Harrison  <harrison@apple.com>
564
565         Reviewed by Ken Kocienda.
566         
567         Better fix for 3905066.
568         
569         * khtml/editing/htmlediting.cpp:
570         (khtml::InsertParagraphSeparatorCommand::doApply):
571
572 2005-01-10  Maciej Stachowiak  <mjs@apple.com>
573
574         Reviewed by Darin.
575
576         <rdar://problem/3758033> REGRESSION (Mail): Support attributes in marked text (International input)
577         
578         * khtml/rendering/render_text.cpp:
579         (InlineTextBox::paint): Support painting custom underline markers for
580         marked text in place of generic yellow.
581         (InlineTextBox::paintMarkedTextUnderline): New method that handles this.
582         * khtml/rendering/render_text.h:
583         * kwq/KWQKHTMLPart.h: Declare new methods and structs.
584         * kwq/KWQKHTMLPart.mm:
585         (KWQKHTMLPart::clear): Clear marked test underlines.
586         (KWQKHTMLPart::setMarkedTextRange): Takes attributes and ranges now.
587         (convertAttributesToUnderlines): Converts NSAttributedString attributes
588         to simplified and C++-friendly form.
589         (KWQKHTMLPart::markedTextUsesUnderlines): New method.
590         (KWQKHTMLPart::markedTextUnderlines): New method.
591         * kwq/KWQPainter.mm:
592         (QPainter::drawLineForText): Handle pen width.
593         * kwq/WebCoreBridge.h:
594         * kwq/WebCoreBridge.mm:
595         (-[WebCoreBridge setMarkedTextDOMRange:customAttributes:ranges:]): Take attributes
596         and ranges.
597         * kwq/WebCoreTextRenderer.h:
598
599 2005-01-12  David Harrison  <harrison@apple.com>
600
601         Reviewed by Dave Hyatt.
602
603         <rdar://problem/3888973> AX: Parent AXWebArea of nested AXWebAreas is messed up
604         
605         * kwq/KWQAccObject.mm:
606         (-[KWQAccObject addChildrenToArray:]):
607         Use the widget's outer view.
608
609 2005-01-12  David Harrison  <harrison@apple.com>
610
611         Reviewed by Darin Adler.
612
613         <rdar://problem/3949908> Crash when asking for the kAXLengthForTextMarkerRangeParameterizedAttribute
614         
615         * khtml/xml/dom_nodeimpl.cpp:
616         (NodeImpl::displayNode):
617         Add quotes around text node content.
618         (NodeBaseImpl::childNode):
619         Add nil check to return nil rather than crash when child node not found.
620         * kwq/KWQAccObject.mm:
621         (-[KWQAccObject doAXStringForTextMarkerRange:]):
622         Pass range compliant positions to TextIterator.
623
624 2005-01-12  David Hyatt  <hyatt@apple.com>
625
626         Fix for 3951203, CSS border style incorrectly clipped on inline elements.  Make sure the repaint rect set during
627         line layout is smarter about including the overflow for both old states and new states.
628         
629         Reviewed by john
630
631         * khtml/rendering/bidi.cpp:
632         (khtml::RenderBlock::layoutInlineChildren):
633
634 2005-01-12  David Hyatt  <hyatt@apple.com>
635
636         Fix for bug 3937608, versiontracker.com flashes and displays the right column below content.  Make sure to move
637         tables/overflows that dont fit within a block only in strict mode.
638
639         Fix for bug 3931049, characters dont show up when typing.  Make sure to dirty the right lines when this specific
640         case in editing is hit.
641         
642         Reviewed by darin (first one), kocienda (second one)
643
644         * khtml/rendering/render_block.cpp:
645         (khtml::RenderBlock::getClearDelta):
646         * khtml/rendering/render_flow.cpp:
647         (RenderFlow::dirtyLinesFromChangedChild):
648         * khtml/rendering/render_line.cpp:
649         (khtml::InlineFlowBox::verticallyAlignBoxes):
650
651 2005-01-12  Ken Kocienda  <kocienda@apple.com>
652
653         Reviewed by John
654
655         Fix for this bug:
656         
657         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
658
659         * khtml/editing/htmlediting.cpp:
660         (khtml::DeleteSelectionCommand::initializePositionData): Change test that will prevent block
661         merging. End-of-line test was just wrong. Call new start-of and end-of paragraph functions
662         added to visible_position files.
663         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Add tests for BR elements, which makes
664         tests to determine when to stop moving nodes more complete and correct. Also improved comments.
665         * khtml/editing/visible_position.cpp:
666         (khtml::isFirstVisiblePositionInParagraph): New function.
667         (khtml::isLastVisiblePositionInParagraph): New function.
668         * khtml/editing/visible_position.h: Update header accordingly.
669         * layout-tests/editing/deleting/delete-block-merge-contents-002-expected.txt: New results, slightly different from former
670         results but still correct.
671         * layout-tests/editing/deleting/delete-block-merge-contents-007-expected.txt: Ditto.
672         * layout-tests/editing/deleting/delete-block-merge-contents-018-expected.txt: Added.
673         * layout-tests/editing/deleting/delete-block-merge-contents-018.html: Added.
674         * layout-tests/editing/deleting/delete-block-merge-contents-019-expected.txt: Added.
675         * layout-tests/editing/deleting/delete-block-merge-contents-019.html: Added.
676         * layout-tests/editing/deleting/delete-block-merge-contents-020-expected.txt: Added.
677         * layout-tests/editing/deleting/delete-block-merge-contents-020.html: Added.
678         * layout-tests/editing/deleting/delete-block-merge-contents-021-expected.txt: Added.
679         * layout-tests/editing/deleting/delete-block-merge-contents-021.html: Added.
680         * layout-tests/editing/deleting/delete-line-014-expected.txt: These new results are actually better, and fix a bug.
681
682 2005-01-11  Richard Williamson   <rjw@apple.com>
683
684         Fixed 3922875.  Fall back to DOM object is EMBED element
685         has no associated runtime object.
686
687         Reviewed by Chris.
688
689         * khtml/ecma/kjs_dom.cpp:
690         (KJS::getRuntimeObject):
691         * khtml/ecma/kjs_html.cpp:
692         (KJS::HTMLDocument::tryGet):
693         (KJS::HTMLElement::tryGet):
694         (KJS::HTMLCollection::tryGet):
695         (KJS::HTMLCollection::getNamedItems):
696
697 2005-01-11  David Hyatt  <hyatt@apple.com>
698
699         Fix for 3882299, missing content on gibson.com.  Change our handling of " and ' in certain states of the parser to match
700         other browsers.
701         
702         Reviewed by Maciej
703
704         * khtml/html/htmltokenizer.cpp:
705         (khtml::HTMLTokenizer::parseTag):
706
707 2005-01-11  Chris Blumenberg  <cblu@apple.com>
708
709         Fixed: <rdar://problem/3930733> Mail prints second page of email blank
710
711         Reviewed by dave.
712
713         * khtml/rendering/render_canvas.cpp:
714         (RenderCanvas::paint): cache the print rect since the dirty rect can get changed during printing
715         * khtml/rendering/render_flow.cpp:
716         (RenderFlow::paintLines): removed null check since the print rect should never be null
717         * khtml/rendering/render_list.cpp:
718         (RenderListMarker::paint): ditto
719         * kwq/KWQKHTMLPart.mm:
720         (KWQKHTMLPart::adjustPageHeight): don't set the print rect here since this method is not called for the last page
721
722 2005-01-10  Ken Kocienda  <kocienda@apple.com>
723
724         Reviewed by Hyatt
725
726         Fix for this bug:
727         
728         <rdar://problem/3943648> extra line is inserted after pressing return within quoted text of reply
729
730         * khtml/editing/htmlediting.cpp:
731         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): This bug was the result of a 
732         simple coding mistake. A local variable was erroneously redefined in a deeper scope, and so the 
733         result calculated in that deeper scope was not available when tested.
734
735 2005-01-10  Ken Kocienda  <kocienda@apple.com>
736
737         Reviewed by John
738
739         Fix for this bug:
740         
741         <rdar://problem/3946852> Option-e goes to next line
742
743         * khtml/editing/htmlediting.cpp:
744         (khtml::ReplaceSelectionCommand::doApply): Tweak case used to determine when merging content
745         into the start line is done. We plan to change pretty substantially soon to better handle
746         the problem described in <rdar://problem/3937352> Quote level not maintained when copied 
747         and pasted within a Mail message. In the meantime, this change does no harm, and fixes the bug.
748
749 2005-01-10  Ken Kocienda  <kocienda@apple.com>
750
751         Reviewed by Darin
752
753         Fix for this bug:
754         
755         <rdar://problem/3907005> Applying block styles to a line of text can unexpectedly affect other lines
756
757         * khtml/editing/htmlediting.cpp:
758         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): New function which moves "paragraphs"
759         to their own blocks if needed so that a block style can be applied.
760         (khtml::CompositeEditCommand::isMailBlockquote): Moved this function to base class so it can be used more generally.
761         (khtml::ApplyStyleCommand::applyBlockStyle): Pass a node instead of a block to addBlockStyleIfNeeded().
762         (khtml::ApplyStyleCommand::addBlockStyleIfNeeded): Now accepts a node instead of a block for styling.
763         This function also now calls moveParagraphContentsToNewBlockIfNecessary() to make sure that only the current
764         paragraph is styled.
765         (khtml::SetNodeAttributeCommand::doUnapply): Should not assert on undo if old value of attribute was null.
766         Should remove attributue instead.
767         * khtml/editing/htmlediting.h: Touch function declarations accordingly.
768         * layout-tests/editing/style/create-block-for-style-001-expected.txt: Added.
769         * layout-tests/editing/style/create-block-for-style-001.html: Added.
770         * layout-tests/editing/style/create-block-for-style-002-expected.txt: Added.
771         * layout-tests/editing/style/create-block-for-style-002.html: Added.
772         * layout-tests/editing/style/create-block-for-style-003-expected.txt: Added.
773         * layout-tests/editing/style/create-block-for-style-003.html: Added.
774         * layout-tests/editing/style/create-block-for-style-004-expected.txt: Added.
775         * layout-tests/editing/style/create-block-for-style-004.html: Added.
776         * layout-tests/editing/style/create-block-for-style-005-expected.txt: Added.
777         * layout-tests/editing/style/create-block-for-style-005.html: Added.
778         * layout-tests/editing/style/create-block-for-style-006-expected.txt: Added.
779         * layout-tests/editing/style/create-block-for-style-006.html: Added.
780         * layout-tests/editing/style/create-block-for-style-007-expected.txt: Added.
781         * layout-tests/editing/style/create-block-for-style-007.html: Added.
782         * layout-tests/editing/style/create-block-for-style-008-expected.txt: Added.
783         * layout-tests/editing/style/create-block-for-style-008.html: Added.
784         * layout-tests/editing/style/create-block-for-style-009-expected.txt: Added.
785         * layout-tests/editing/style/create-block-for-style-009.html: Added.
786         * layout-tests/editing/style/create-block-for-style-010-expected.txt: Added.
787         * layout-tests/editing/style/create-block-for-style-010.html: Added.
788         * layout-tests/editing/style/create-block-for-style-011-expected.txt: Added.
789         * layout-tests/editing/style/create-block-for-style-011.html: Added.
790         * layout-tests/editing/style/create-block-for-style-012-expected.txt: Added.
791         * layout-tests/editing/style/create-block-for-style-012.html: Added.
792         * layout-tests/editing/style/create-block-for-style-013-expected.txt: Added.
793         * layout-tests/editing/style/create-block-for-style-013.html: Added.
794
795         Unrelated updates to these expected results.
796         * layout-tests/editing/inserting/insert-div-007-expected.txt
797         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
798
799 2005-01-10  Chris Blumenberg  <cblu@apple.com>
800
801         Fixed: <rdar://problem/3936844> Mail: Messages with rich text do not print
802
803         Reviewed by john.
804
805         * khtml/rendering/render_flow.cpp:
806         (RenderFlow::paintLines): don't do pagination work if printRect is not set
807         * khtml/rendering/render_list.cpp:
808         (RenderListMarker::paint): ditto
809
810 2005-01-10  David Harrison  <harrison@apple.com>
811
812         Reviewed by Darin.
813
814         * kwq/KWQTextUtilities.mm:
815         (currentTextBreakLocaleID):
816         Return empty string (AKA root locale) if locale pref can not be canonicalized.
817
818 2005-01-10  John Sullivan  <sullivan@apple.com>
819
820         Fixed broken Panther build.
821
822         * kwq/KWQTextUtilities.mm:
823         (currentTextBreakLocaleID):
824         This recently-added function was using code copy/pasted from CarbonCore UnicodeUtilities.
825         That code used a Tiger-only function, CFLocaleCreateCanonicalLanguageIdentifierFromString.
826         To fix the build, I added a BUILDING_ON_PANTHER #ifdef that avoids the call to the Tiger
827         function. However, the Tiger-only code was wrong; the string generated using 
828         CFLocaleCreateCanonicalLanguageIdentifierFromString was not used at all, so I fixed that
829         as well.
830
831 2005-01-09  David Harrison  <harrison@apple.com>
832
833         Reviewed by Ken Kocienda.
834
835         <rdar://problem/3786362> REGRESSION (Mail): pasted text loses one newline
836         
837         * khtml/editing/htmlediting.cpp:
838         (khtml::ReplaceSelectionCommand::doApply):
839         Tune check for need for insertParagraphSeparator when hasInterchangeNewline.
840
841 2005-01-09  Darin Adler  <darin@apple.com>
842
843         Reviewed by Harrison.
844
845         - fixed <rdar://problem/3939176> select() method does not work on <input type=search>
846
847         * khtml/html/html_formimpl.cpp: (DOM::HTMLInputElementImpl::select): Changed if statement
848         to a switch statement. Added SEARCH to the set of types that treat the renderer as a
849         RenderLineEdit.
850
851 2005-01-09  David Harrison  <harrison@apple.com>
852
853         Reviewed by Ken Kocienda.
854
855         <rdar://problem/3905066> REGRESSION (Mail): Hitting return key with caret in front of space causes space to become lost (resize fixes)
856
857         Problem was that InsertParagraphSeparatorCommand::doApply() was not collapsing
858         whitespace to a single non-breaking space when splitting a text node.
859
860         * khtml/editing/htmlediting.cpp:
861         (khtml::InsertParagraphSeparatorCommand::doApply):
862
863 2005-01-08  Kevin Decker  <kdecker@apple.com>
864
865         Reviewed by Ken.
866
867         Fixed: <rdar://problem/3924219> Calling setOuterHTML: on a DOMHTMLHtmlElement can crash a program
868
869         * khtml/html/html_elementimpl.cpp:
870         (HTMLElementImpl::setOuterHTML): Added a nil check for fragments who don't have parents.
871
872 2005-01-07  Maciej Stachowiak  <mjs@apple.com>
873
874         Reviewed by Darin.
875         
876         <rdar://problem/3807144> REGRESSION (125-TOT): my bank's website doesn't work (Societe Generale, socgen.com)
877
878         * Khtml/khtml_part.cpp:
879         (KHTMLPart::checkCompleted): If the document is NULL, assume this frame has
880         not started loading yet so it could not possibly be finishing here...
881         (KHTMLPart::stop): ...unless the part is explicitly stopped and there is still
882         no document, in this case we must have hit an error or been loading a non-HTML
883         frame.
884         * khtml/khtml_part.h:
885
886 2005-01-08  David Harrison  <harrison@apple.com>
887
888         Reviewed by Maciej.
889
890         <rdar://problem/3943415> REGRESSION (Mail): double-clicking past word selects previous word instead of only blank space
891         
892         * khtml/editing/selection.cpp:
893         (khtml::Selection::validate):
894         Tune word selections left/right choice to use right if on empty last line.
895
896 2005-01-07  David Harrison  <harrison@apple.com>
897
898         Reviewed by Darin.
899
900         <rdar://problem/3942619> AX: Support sentence ax attributes
901
902         Needed to use the unicode utilities properly.  Twas lame before.
903
904         * khtml/editing/visible_units.cpp:
905         (khtml::previousBoundary):
906         (khtml::nextBoundary):
907         (khtml::startOfWord):
908         (khtml::endOfWord):
909         (khtml::previousWordPosition):
910         (khtml::nextWordPosition):
911         (khtml::startOfSentence):
912         (khtml::endOfSentence):
913         (khtml::previousSentencePosition):
914         (khtml::nextSentencePosition):
915         * kwq/KWQAccObject.mm:
916         (-[KWQAccObject accessibilityAttributeNames]):
917         (-[KWQAccObject accessibilityAttributeValue:]):
918         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
919         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
920         * kwq/KWQTextUtilities.mm:
921         (currentTextBreakLocaleID):
922         (KWQFindSentenceBoundary):
923         (KWQFindNextSentenceFromIndex):
924
925 2005-01-07  Ken Kocienda  <kocienda@apple.com>
926
927         Reviewed by Kevin
928
929         Fix for these bugs:
930         
931         <rdar://problem/3939523> in some cases, text does not retain style info after pressing return twice
932         <rdar://problem/3944492> after pressing return twice, text is bold when it shouldn't be
933
934         * khtml/editing/htmlediting.cpp:
935         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion):
936         Merge the typing style with the computed style for the current position. Fixes both bugs.
937         * khtml/editing/htmlediting.h:
938         * layout-tests/editing/inserting/insert-div-023-expected.txt: Added.
939         * layout-tests/editing/inserting/insert-div-023.html: Added.
940         * layout-tests/editing/inserting/insert-div-024-expected.txt: Added.
941         * layout-tests/editing/inserting/insert-div-024.html: Added.
942
943 2005-01-07  David Hyatt  <hyatt@apple.com>
944
945         Fix for 3941364, make sure tables reset overflowWidth/Height when they lay out again.  Fixes the odd scrolling
946         behavior on worldofwarcraft.com.
947         
948         Reviewed by kevin
949
950         * khtml/rendering/render_table.cpp:
951         (RenderTable::layout):
952
953 2005-01-06  David Hyatt  <hyatt@apple.com>
954
955         Fix for 3932418 and 3920998, assertion failures caused by stray inline content inside tables.  Bulletproof the hit testing to
956         ignore inline flows in this case.
957         
958         Reviewed by kevin
959
960         * khtml/rendering/render_block.cpp:
961         (khtml::RenderBlock::nodeAtPoint):
962
963 2005-01-07  Ken Kocienda  <kocienda@apple.com>
964
965         Reviewed by Hyatt
966
967         Fix for this bug:
968         
969         <rdar://problem/3848412> for forwarded message, tabbing to message view scrolls to bottom of view
970
971         * kwq/KWQKHTMLPart.mm:
972         (KWQKHTMLPart::nextKeyViewInFrame): Don't scroll the focus node to visible if it is not
973         in the document, or if it is not a descendent of the document element. In the case of the bug,
974         since the selection has not yet been set up, the focus node passed here is the HTML element, and
975         that does not yield a rect that is useful to us here. So now, in the case the bug mentions, we do nothing.
976
977 2005-01-06  Kevin Decker  <kdecker@apple.com>
978
979         Reviewed by mjs.
980
981         Fixed: <rdar://problem/3932215> REGRESSION (125-177): iFrame example at developer.apple.com fails in Safari
982
983         * khtml/khtml_part.cpp:
984         (KHTMLPart::processObjectRequest): m_bComplete was never true for frames generated by Javascript due to our synchronous loading and as a result, scheduled redirects wouldn't fire in KHTMLPart::scheduleLocationChange().  By virtue of being an empty document, a document is complete.  In this special case it's safe at this point to call checkCompleted() which sets m_bComplete true. 
985
986 === Safari-178 ===
987
988 2005-01-06  David Harrison  <harrison@apple.com>
989
990         Reviewed by Chris.
991
992         (addendum to previous checkin for this bug) 
993         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
994
995         Fix line navigation.  Add AXUIElementForTextMarker.
996
997         * kwq/KWQAccObject.mm:
998         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
999         (-[KWQAccObject doAXUIElementForTextMarker:]):
1000         (-[KWQAccObject doAXLineForTextMarker:]):
1001         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
1002         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
1003         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
1004         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
1005         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
1006
1007 2005-01-06  Darin Adler  <darin@apple.com>
1008
1009         Reviewed by Ken.
1010
1011         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
1012
1013         (turns out the PLT regression was a false alarm)
1014
1015         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
1016         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
1017         much larger number.
1018         * khtml/html/htmlparser.cpp:
1019         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
1020         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
1021         to eliminate code that used ID_CLOSE_TAG for an array size.
1022         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
1023         that manages isindex to use deref instead of delete.
1024         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
1025         mistake of using ID_CLOSE_TAG for the array size too.
1026         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
1027         there and it would prevent custom tags from working. Added range check before using the forbidden
1028         tag array with the token ID since custom tags will use index values past the end of the array.
1029         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
1030         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
1031         createElement call is still here. Last time I left out a few form element types from this switch;
1032         fixed now.
1033         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
1034         document if getTagID fails; this creates a unique per-document ID.
1035
1036         * khtml/misc/htmltags.c: Regenerated.
1037         * khtml/misc/htmltags.h: Regenerated.
1038
1039         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
1040         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
1041         Also rewrote getTagName to work with the new scheme.
1042
1043 2005-01-06  David Harrison  <harrison@apple.com>
1044         
1045         Fixed Panther build.  Also, do not advertize sentence support since it is incomplete.
1046         
1047         * kwq/KWQAccObject.mm:
1048         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
1049         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
1050         (-[KWQAccObject accessibilityIsAttributeSettable:]):
1051
1052 2005-01-06  David Harrison  <harrison@apple.com>
1053
1054         Reviewed by Dave Hyatt.
1055
1056         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
1057         <rdar://problem/3588548> AX: tabbing does not work correctly with the screen reader and a focused link; need AXFocusedUIElement to work
1058         
1059         Many more AX attributes supported.  Numerous fixes to previous AX work.
1060         
1061         * khtml/editing/visible_units.cpp:
1062         (khtml::startSentenceBoundary):
1063         (khtml::startOfSentence):
1064         (khtml::endSentenceBoundary):
1065         (khtml::endOfSentence):
1066         (khtml::previousSentencePositionBoundary):
1067         (khtml::previousSentencePosition):
1068         (khtml::nextSentencePositionBoundary):
1069         (khtml::nextSentencePosition):
1070         * khtml/editing/visible_units.h:
1071         * khtml/khtmlview.cpp:
1072         (KHTMLView::layout):
1073         * khtml/misc/helper.cpp:
1074         (khtml::findSentenceBoundary):
1075         (khtml::nextSentenceFromIndex):
1076         * khtml/misc/helper.h:
1077         * khtml/misc/htmltags.c:
1078         (hash_tag):
1079         (findTag):
1080         * khtml/rendering/render_container.cpp:
1081         (RenderContainer::removeChildNode):
1082         (RenderContainer::appendChildNode):
1083         (RenderContainer::insertChildNode):
1084         * khtml/rendering/render_object.cpp:
1085         (RenderObject::remove):
1086         * khtml/xml/dom_docimpl.cpp:
1087         (DocumentImpl::getAccObjectCache):
1088         (DocumentImpl::updateSelection):
1089         (DocumentImpl::close):
1090         (DocumentImpl::setFocusNode):
1091         (DocumentImpl::parentDocument):
1092         (DocumentImpl::topDocument):
1093         * khtml/xml/dom_docimpl.h:
1094         * kwq/KWQAccObject.mm:
1095         (-[KWQAccObject accessibilityShouldUseUniqueId]):
1096         (-[KWQAccObject detach]):
1097         (-[KWQAccObject anchorElement]):
1098         (-[KWQAccObject firstChild]):
1099         (-[KWQAccObject lastChild]):
1100         (-[KWQAccObject previousSibling]):
1101         (-[KWQAccObject nextSibling]):
1102         (-[KWQAccObject parentObject]):
1103         (-[KWQAccObject value]):
1104         (-[KWQAccObject accessibilityAttributeNames]):
1105         (-[KWQAccObject accessibilityPerformAction:]):
1106         (-[KWQAccObject textMarkerForVisiblePosition:]):
1107         (-[KWQAccObject visiblePositionForTextMarker:]):
1108         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
1109         (-[KWQAccObject topDocument]):
1110         (-[KWQAccObject topRenderer]):
1111         (-[KWQAccObject topView]):
1112         (-[KWQAccObject accessibilityAttributeValue:]):
1113         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
1114         (-[KWQAccObject doAXLineForTextMarker:]):
1115         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
1116         (-[KWQAccObject doAXStringForTextMarkerRange:]):
1117         (-[KWQAccObject doAXTextMarkerForPosition:]):
1118         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
1119         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
1120         (-[KWQAccObject doAXTextMarkerRangeForUnorderedTextMarkers:]):
1121         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
1122         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
1123         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
1124         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
1125         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
1126         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
1127         (-[KWQAccObject doAXSentenceTextMarkerRangeForTextMarker:]):
1128         (-[KWQAccObject doAXParagraphTextMarkerRangeForTextMarker:]):
1129         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
1130         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
1131         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
1132         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
1133         (-[KWQAccObject doAXNextSentenceEndTextMarkerForTextMarker:]):
1134         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
1135         (-[KWQAccObject doAXNextParagraphEndTextMarkerForTextMarker:]):
1136         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
1137         (-[KWQAccObject doAXLengthForTextMarkerRange:]):
1138         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
1139         (-[KWQAccObject accessibilityHitTest:]):
1140         (-[KWQAccObject accessibilityFocusedUIElement]):
1141         (-[KWQAccObject accessibilityIsAttributeSettable:]):
1142         (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
1143         (-[KWQAccObject setAccObjectID:]):
1144         (-[KWQAccObject removeAccObjectID]):
1145         * kwq/KWQAccObjectCache.h:
1146         * kwq/KWQAccObjectCache.mm:
1147         (KWQAccObjectCache::setAccObject):
1148         (KWQAccObjectCache::removeAccObject):
1149         (KWQAccObjectCache::visiblePositionForTextMarker):
1150         (KWQAccObjectCache::postNotificationToTopWebArea):
1151         (KWQAccObjectCache::postNotification):
1152         (KWQAccObjectCache::handleFocusedUIElementChanged):
1153         * kwq/KWQKHTMLPart.mm:
1154         (KWQKHTMLPart::respondToChangedContents):
1155         * kwq/KWQTextUtilities.h:
1156         * kwq/KWQTextUtilities.mm:
1157         (KWQFindNextWordFromIndex):
1158         (KWQFindSentenceBoundary):
1159         (KWQFindNextSentenceFromIndex):
1160         * kwq/WebCoreBridge.mm:
1161         (-[WebCoreBridge accessibilityTree]):
1162
1163 2005-01-05  Darin Adler  <darin@apple.com>
1164
1165         Reviewed by Ken.
1166
1167         - re-landing a subset of my custom tag change that does not fix the bug, but also does
1168           not introduce a performance regression
1169
1170         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
1171         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
1172
1173         * khtml/editing/htmlediting.cpp:
1174         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
1175         per-document tags and is just better all around for things like the document.
1176         (khtml::debugNode): Ditto.
1177         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
1178         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
1179         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
1180         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
1181
1182         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
1183         non-HTML elements to be nested as desired.
1184
1185         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
1186         * khtml/misc/htmlhashes.cpp:
1187         (khtml::getTagID): Changed return type to unsigned short.
1188         (khtml::getAttrID): Ditto.
1189
1190         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
1191         * khtml/xml/dom_docimpl.cpp:
1192         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
1193         Also updated for a few tags that the parser handled but this did not.
1194
1195         * kwq/KWQRenderTreeDebug.cpp:
1196         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
1197         the tag ID directly, which only works for standard nodes.
1198         (operator<<): Update to call getTagName.
1199         (nodePositionRelativeToRoot): Ditto.
1200         (writeSelection): Ditto.
1201
1202 2005-01-05  Ken Kocienda  <kocienda@apple.com>
1203
1204         Reviewed by Hyatt
1205
1206         Fix for this bug:
1207         
1208         <rdar://problem/3941203> REGRESSION (Mail): Paste inserts content in wrong place
1209
1210         * khtml/editing/htmlediting.cpp:
1211         (khtml::ReplaceSelectionCommand::doApply): Some cleanup and refinement of the concepts used to make
1212         this operation work correctly, particularly in the logic to figure out whether to merge content, and
1213         also performing merges.
1214         * khtml/editing/visible_position.cpp:
1215         (khtml::isFirstVisiblePositionInBlock): Simplification of test used to make this determination.
1216         * khtml/editing/visible_units.cpp:
1217         (khtml::isStartOfParagraph): New helper, used in khtml::ReplaceSelectionCommand::doApply().
1218         (khtml::isEndOfParagraph): Ditto.
1219         * khtml/editing/visible_units.h: Declare new functions.
1220
1221 2005-01-04  Ken Kocienda  <kocienda@apple.com>
1222
1223         Reviewed by John
1224
1225         Fix for this bug:
1226         
1227         <rdar://problem/3926522> Pressing return in a quoted block inserts too many newlines
1228
1229         * khtml/editing/htmlediting.cpp:
1230         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Call to insertBlockPlaceholderIfNeeded()
1231         for the block we are adding was being done at the wrong time, which led to the placeholder remaining
1232         in the document when it was not needed. This resulted in the extra space reported in the bug.
1233
1234 2005-01-04  Kevin Decker  <kdecker@apple.com>
1235
1236         Reviewed by Hyatt.
1237
1238         Fixed: <rdar://problem/3936879> nil-deref, crash in InlineFlowBox::nodeAtPoint closing DHTML menus at hrweb.apple.com
1239
1240         * khtml/rendering/render_block.cpp:
1241         (khtml::RenderBlock::fillInlineSelectionGaps): Added a nil check. If there is no selection, don't try to get the selection's containing block. If we do, we'll crash. 
1242
1243 2005-01-04  David Hyatt  <hyatt@apple.com>
1244
1245         Fix for 3937203, force an update of the dashboard regions when scrollbars are added/removed.
1246         
1247         Reviewed by kevin
1248
1249         * khtml/rendering/render_layer.cpp:
1250         (RenderLayer::updateScrollInfoAfterLayout):
1251
1252 2005-01-04  Ken Kocienda  <kocienda@apple.com>
1253
1254         Reviewed by John
1255
1256         Fix for these two bugs:
1257         
1258         <rdar://problem/3938935> REGRESSION (Mail): Pasting into an empty document mangles content
1259         <rdar://problem/3939148> REGRESSION (Mail): Pasting mistakenly reverses lines
1260
1261         * khtml/editing/htmlediting.cpp:
1262         (khtml::ReplaceSelectionCommand::doApply): For 3938935, add one more case to handle an empty document; merge
1263         neither start nor end. For 3939148, improve the code which adjusts the insertion point during 
1264         the process of pasting. It formerly handled only one of the possible cases.
1265         * layout-tests/editing/pasteboard/paste-text-015-expected.txt: Added.
1266         * layout-tests/editing/pasteboard/paste-text-015.html: Added.
1267
1268 2005-01-04  David Hyatt  <hyatt@apple.com>
1269
1270         Fix for 3936571, placeholder attribute should work for normal inputs for Dashboard.
1271         
1272         Reviewed by john
1273
1274         * khtml/rendering/render_form.cpp:
1275         (RenderLineEdit::updateFromElement):
1276         * kwq/KWQLineEdit.mm:
1277         (QLineEdit::setPlaceholderString):
1278
1279 2005-01-04  David Hyatt  <hyatt@apple.com>
1280
1281         Fix for 3830936, hang on changeforamerica.com.  Make sure to ignore the style not yet available option when
1282         returning pseudo-styles.
1283         
1284         Reviewed by john
1285
1286         * khtml/css/cssstyleselector.cpp:
1287         (khtml::CSSStyleSelector::matchRulesForList):
1288         (khtml::CSSStyleSelector::pseudoStyleForElement):
1289         * khtml/rendering/render_style.cpp:
1290         (RenderStyle::addPseudoStyle):
1291
1292 2005-01-04  Darin Adler  <darin@apple.com>
1293
1294         - rolled out my custom tag name change again -- it caused a 1 ms PLT regression
1295
1296         * khtml/css/cssstyleselector.cpp:
1297         * khtml/editing/htmlediting.cpp:
1298         * khtml/editing/selection.cpp:
1299         * khtml/editing/visible_position.cpp:
1300         * khtml/html/dtd.cpp:
1301         * khtml/html/htmlparser.cpp:
1302         * khtml/html/htmlparser.h:
1303         * khtml/html/htmltokenizer.cpp:
1304         * khtml/misc/htmlhashes.cpp:
1305         * khtml/misc/htmlhashes.h:
1306         * khtml/misc/htmltags.c:
1307         * khtml/misc/htmltags.h:
1308         * khtml/misc/maketags:
1309         * khtml/xml/dom_docimpl.cpp:
1310         * khtml/xml/dom_docimpl.h:
1311         * khtml/xml/dom_nodeimpl.cpp:
1312         * khtml/xml/dom_position.cpp:
1313         * kwq/KWQRenderTreeDebug.cpp:
1314
1315 2005-01-04  Ken Kocienda  <kocienda@apple.com>
1316
1317         Reviewed by John
1318
1319         Fix for this bug:
1320         
1321         <rdar://problem/3927554> Style info applied to remainder of document after a newline is entered
1322
1323         * khtml/editing/htmlediting.cpp:
1324         (khtml::InsertParagraphSeparatorCommand::doApply): Clean up and simplification in code that inserts
1325         a paragraph separator. The bug was all about applying styles to the new paragraph that did not need
1326         to be applied. Now the code will detect when at the end of a style run and will not move and apply 
1327         that ending style to the new paragraph, though it will place that style into the typing style. This
1328         seems to match NSText behavior.
1329         * layout-tests/editing/inserting/insert-div-021-expected.txt: This test result exhibited the bug fixed 
1330         here. The only reason it was not noticed is that the erroneously copied inline was a span, and so did
1331         not have any visible effect on the document.
1332         * layout-tests/editing/inserting/insert-div-022-expected.txt: Added.
1333         * layout-tests/editing/inserting/insert-div-022.html: Added.
1334
1335 2005-01-04  David Hyatt  <hyatt@apple.com>
1336
1337         Fix for 3904562, make sure to clear the outline dictionary when drawing so that random focus rings dont get drawn
1338         all over the place.
1339         
1340         Reviewed by john
1341
1342         * khtml/rendering/render_flow.cpp:
1343         (RenderFlow::paintLines):
1344
1345 2005-01-03  David Hyatt  <hyatt@apple.com>
1346
1347         Fix for float painting regressions 3932524, 3931664, and 3933068.  Make the noPaint flag setting more
1348         robust and make it work regardless of which objects get a layout or not.
1349         
1350         Reviewed by mjs
1351
1352         * khtml/rendering/render_block.cpp:
1353         (khtml::RenderBlock::insertFloatingObject):
1354         (khtml::RenderBlock::addOverhangingFloats):
1355         (khtml::RenderBlock::addIntrudingFloats):
1356         * khtml/rendering/render_block.h:
1357         (khtml::RenderBlock::FloatingObject::FloatingObject):
1358
1359 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
1360
1361         Reviewed by Kevin.
1362
1363         <rdar://problem/3935390> Tiger 8A341: nil deref crash in DOM::NodeImpl::traverseNextNode
1364         
1365         * khtml/html/html_miscimpl.cpp:
1366         (HTMLCollectionImpl::traverseNextItem): Assert that the starting point is not nil,
1367         it should not ever be (now).
1368         (HTMLCollectionImpl::item): When traversing items stop when we hit
1369         nil, meaning the end to avoid triggering above assert (formerly crash).
1370
1371 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
1372
1373         Reviewed by John and Kevin.
1374
1375         <rdar://problem/3870317> REGRESSION(125.9-125.11) broken behavior at test.profoundlearning.com - used to
1376         
1377         * khtml/ecma/kjs_window.cpp:
1378         (Window::get): Look up frame names before buitin window properties
1379         to match other browsers. This regressed because we added a builtin
1380         "toolbar" property but this site had a frame with that name.
1381
1382 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
1383
1384         Reviewed by Darin.
1385
1386         <rdar://problem/3888931> frame naming allows malicious site to bring up a window when you click on a link in another
1387         
1388         Added opener bridge method to help WebKit implement security check
1389         for named frame visibility.
1390         
1391         * khtml/khtml_part.h:
1392         * kwq/WebCoreBridge.h:
1393         * kwq/WebCoreBridge.mm:
1394         (-[WebCoreBridge opener]):
1395
1396 2005-01-03  Ken Kocienda  <kocienda@apple.com>
1397
1398         Reviewed by John
1399
1400         Fix for this bug:
1401         
1402         <rdar://problem/3933926> Tiger8A341: Mail crashes while forwarding embedded HTML message in -[WebCoreBridge ensureSelectionVisible]
1403
1404         * kwq/WebCoreBridge.mm:
1405         (-[WebCoreBridge ensureSelectionVisible]): Put in some null checks to prevent crash experienced in bug.
1406
1407 2005-01-03  David Hyatt  <hyatt@apple.com>
1408
1409         Fix for 3936881, make sure positioned objects prooperly update y-position.
1410         
1411         Reviewed by john
1412
1413         * khtml/rendering/render_block.cpp:
1414         (khtml::RenderBlock::layoutPositionedObjects):
1415
1416 2005-01-03  Ken Kocienda  <kocienda@apple.com>
1417
1418         Reviewed by Harrison
1419         
1420         Fix for this bug:
1421         
1422         <rdar://problem/3928250> REGRESSION (Mail): Typing style lost after hitting return key
1423
1424         * khtml/editing/htmlediting.cpp:
1425         (khtml::InsertLineBreakCommand::preservesTypingStyle): Now implemented, returning yes for this command.
1426         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Initialize new typing style member variable.
1427         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Deref new typing style member variable.
1428         (khtml::InsertParagraphSeparatorCommand::preservesTypingStyle): Now implemented, returning yes for this command.
1429         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion): New function to set the typing style
1430         (khtml::InsertParagraphSeparatorCommand::calculateAndSetTypingStyleAfterInsertion): Function called after the <p>
1431         insertion is done. This function diffs the style created in setFullTypingStyleBeforeInsertion() with the style
1432         of the new <p> and only sets those styles needed to preserve the style in effect before the insertion.
1433         (khtml::InsertParagraphSeparatorCommand::doApply): Call new functions.
1434         (khtml::TypingCommand::preservesTypingStyle): Now yes for inserting line breaks and paragraphs.
1435          * khtml/editing/htmlediting.h: Declare new functions.
1436
1437 2004-12-25  Kevin Decker  <kdecker@apple.com>
1438
1439         Reviewed by Hyatt.
1440
1441         Fixed: <rdar://problem/3505072> hang in KHTMLParser::parseToken (consulting.soroos.net)
1442         
1443         * khtml/html/dtd.cpp: <label> needed a much higher priority such that it will close block elements.  Malformed HTML (ugh) is the only reason why we need to do this. 
1444
1445 2004-12-23  Darin Adler  <darin@apple.com>
1446
1447         Reviewed by Ken.
1448
1449         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
1450
1451         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
1452         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
1453
1454         * khtml/editing/htmlediting.cpp:
1455         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
1456         per-document tags and is just better all around for things like the document.
1457         (khtml::debugNode): Ditto.
1458         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
1459         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
1460         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
1461         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
1462
1463         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
1464         non-HTML elements to be nested as desired.
1465
1466         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
1467         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
1468         much larger number.
1469         * khtml/html/htmlparser.cpp:
1470         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
1471         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
1472         to eliminate code that used ID_CLOSE_TAG for an array size.
1473         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
1474         that manages isindex to use deref instead of delete.
1475         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
1476         mistake of using ID_CLOSE_TAG for the array size too.
1477         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
1478         there and it would prevent custom tags from working. Added range check before using the forbidden
1479         tag array with the token ID since custom tags will use index values past the end of the array.
1480         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
1481         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
1482         createElement call is still here. Last time I left out a few form element types from this switch;
1483         fixed now.
1484         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
1485         document if getTagID fails; this creates a unique per-document ID.
1486
1487         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
1488         * khtml/misc/htmlhashes.cpp:
1489         (khtml::getTagID): Changed return type to unsigned short.
1490         (khtml::getAttrID): Ditto.
1491
1492         * khtml/misc/htmltags.c: Regenerated.
1493         * khtml/misc/htmltags.h: Regenerated.
1494
1495         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
1496         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
1497         Also rewrote getTagName to work with the new scheme.
1498
1499         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
1500         * khtml/xml/dom_docimpl.cpp:
1501         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
1502         Also updated for a few tags that the parser handled but this did not.
1503
1504         * kwq/KWQRenderTreeDebug.cpp:
1505         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
1506         the tag ID directly, which only works for standard nodes.
1507         (operator<<): Update to call getTagName.
1508         (nodePositionRelativeToRoot): Ditto.
1509         (writeSelection): Ditto.
1510
1511 === Safari-177 ===
1512
1513 2004-12-22  Darin Adler  <darin@apple.com>
1514
1515         - rolled out my custom tag name change -- it broke amazon.com
1516
1517         * khtml/css/cssstyleselector.cpp:
1518         * khtml/editing/htmlediting.cpp:
1519         * khtml/editing/selection.cpp:
1520         * khtml/editing/visible_position.cpp:
1521         * khtml/html/dtd.cpp:
1522         * khtml/html/htmlparser.cpp:
1523         * khtml/html/htmlparser.h:
1524         * khtml/html/htmltokenizer.cpp:
1525         * khtml/misc/htmlhashes.cpp:
1526         * khtml/misc/htmlhashes.h:
1527         * khtml/misc/htmltags.c:
1528         * khtml/misc/htmltags.h:
1529         * khtml/misc/maketags:
1530         * khtml/xml/dom_docimpl.cpp:
1531         * khtml/xml/dom_docimpl.h:
1532         * khtml/xml/dom_nodeimpl.cpp:
1533         * khtml/xml/dom_position.cpp:
1534         * kwq/KWQRenderTreeDebug.cpp:
1535
1536 2004-12-22  David Harrison  <harrison@apple.com>
1537
1538         Reviewed by Darin Adler.
1539
1540         * khtml/editing/selection.cpp:
1541         (khtml::Selection::validate):
1542         The selecting/deselecting bad behavior is because the Selection code that expands by words
1543         had an inaccurate test for being at the end of the document (where double-clicking needs
1544         to select the last word).  Fixed that check.
1545
1546 2004-12-22  Adele Amchan  <adele@apple.com>
1547
1548         Reviewed by Chris.
1549
1550         Fix for <rdar://problem/3911650> tabs at safeway.com stop working after a while
1551
1552         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::scrollToAnchor): removed call to cancelRedirection 
1553           so that we match Firefox and WinIE behavior.
1554
1555 2004-12-22  Darin Adler  <darin@apple.com>
1556
1557         Reviewed by Ken.
1558
1559         - fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
1560
1561         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
1562         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
1563
1564         * khtml/editing/htmlediting.cpp:
1565         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
1566         per-document tags and is just better all around for things like the document.
1567         (khtml::debugNode): Ditto.
1568         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
1569         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
1570         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
1571         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
1572
1573         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
1574         non-HTML elements to be nested as desired.
1575
1576         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
1577         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
1578         much larger number.
1579         * khtml/html/htmlparser.cpp:
1580         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
1581         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
1582         to eliminate code that used ID_CLOSE_TAG for an array size.
1583         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
1584         that manages isindex to use deref instead of delete.
1585         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
1586         mistake of using ID_CLOSE_TAG for the array size too.
1587         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
1588         there and it would prevent custom tags from working. Added range check before using the forbidden
1589         tag array with the token ID since custom tags will use index values past the end of the array.
1590         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
1591         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
1592         createElement call is still here.
1593         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
1594         document if getTagID fails; this creates a unique per-document ID.
1595
1596         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
1597         * khtml/misc/htmlhashes.cpp:
1598         (khtml::getTagID): Changed return type to unsigned short.
1599         (khtml::getAttrID): Ditto.
1600
1601         * khtml/misc/htmltags.c: Regenerated.
1602         * khtml/misc/htmltags.h: Regenerated.
1603
1604         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
1605         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
1606         Also rewrote getTagName to work with the new scheme.
1607
1608         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
1609         * khtml/xml/dom_docimpl.cpp:
1610         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
1611         Also updated for a few tags that the parser handled but this did not.
1612
1613         * kwq/KWQRenderTreeDebug.cpp:
1614         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
1615         the tag ID directly, which only works for standard nodes.
1616         (operator<<): Update to call getTagName.
1617         (nodePositionRelativeToRoot): Ditto.
1618         (writeSelection): Ditto.
1619
1620 2004-12-21  David Harrison  <harrison@apple.com>
1621
1622         Reviewed by Ken Kocienda.
1623
1624         <rdar://problem/3924934> REGRESSION: double click at end of line selects start of next line
1625
1626         Problem was the TextIterator was not handling exitNode() from a P block properly.
1627         
1628         * khtml/editing/visible_text.cpp:
1629         (khtml::TextIterator::TextIterator):
1630         Add new param that specifies whether the iterator is for content or for searching.
1631         Search iterators do not prevent newlines at the beginning.
1632         (khtml::TextIterator::advance):
1633         Added some comments.
1634         (khtml::TextIterator::handleTextNode):
1635         Added some comments.
1636         (khtml::TextIterator::exitNode):
1637         Emit newline for P (and other) blocks with position following the block, instead of the m_lastTextNode.
1638         (khtml::TextIterator::emitCharacter):
1639         Added some comments.
1640         (khtml::TextIterator::range):
1641         Added some comments.
1642         (khtml::CharacterIterator::CharacterIterator):
1643         Specify search type TextIterator.
1644         (khtml::CharacterIterator::advance):
1645         * khtml/editing/visible_text.h:
1646         (khtml::):
1647         Add new TextIterator::TextIterator param that specifies whether the iterator is for content or for searching.
1648         * khtml/editing/visible_units.cpp:
1649         (khtml::nextWordBoundary):
1650         Specify search type TextIterator.
1651
1652 2004-12-21  David Harrison  <harrison@apple.com>
1653
1654         Reviewed by Ken Kocienda.
1655
1656         <rdar://problem/3924695> REGRESSION (Mail): double-clicking past end of line shows no selection, should select to EOL
1657         
1658         Problem was that RenderText::setSelectionState did not handle the SelectionStart case where start and end are the end of the line.
1659         Fixed by pretending the start == end-1 in that situation, as long as end > 0.
1660         
1661         * khtml/rendering/render_text.cpp:
1662         (RenderText::setSelectionState)
1663
1664 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
1665
1666         Reviewed by John.
1667
1668         <rdar://problem/3929187> WebKit needs to restrict access to certain window operations by domain
1669         
1670         * khtml/ecma/kjs_window.cpp:
1671         (Window::get): Change most window functions to be restricted by
1672         XSS domain check.
1673
1674 2004-12-21  Ken Kocienda  <kocienda@apple.com>
1675
1676         Reviewed by John
1677
1678         Fix for this bug:
1679         
1680         <rdar://problem/3928305> selecting an entire line and typing over causes new inserted text at top of document
1681
1682         * khtml/editing/htmlediting.cpp:
1683         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent): New function to detect case
1684         formerly undetected and unhandled. This is the crux of the bug fix.
1685         (khtml::DeleteSelectionCommand::doApply): Call insertPlaceholderForAncestorBlockContent() during
1686         execution of command.
1687         * khtml/editing/htmlediting.h: Declare new function.
1688         * layout-tests/editing/deleting/delete-3928305-fix-expected.txt: Added.
1689         * layout-tests/editing/deleting/delete-3928305-fix.html: Added.
1690
1691 2004-12-21  Ken Kocienda  <kocienda@apple.com>
1692
1693         Reviewed by me
1694
1695         * khtml/editing/htmlediting.cpp:
1696         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Note to self: Must compile code before
1697         checking in (aka must return false from function returning bool).
1698
1699 2004-12-21  Ken Kocienda  <kocienda@apple.com>
1700
1701         Reviewed by John
1702         
1703         Fix for this bug:
1704         
1705         <rdar://problem/3927752> Crash in khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded(DOM::NodeImpl*)
1706
1707         * khtml/editing/htmlediting.cpp:
1708         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Added some null checks.
1709         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Ditto.
1710
1711 2004-12-21  Ken Kocienda  <kocienda@apple.com>
1712
1713         Reviewed by Darin
1714
1715         * khtml/editing/htmlediting.cpp:
1716         (khtml::ReplacementFragment::mergeStartNode): Refine concept of how this node is found based on
1717         further experiements.
1718         (khtml::ReplaceSelectionCommand::doApply): Add a special case for determining merges that need to
1719         be done if the insertion point is in an empty block.
1720         * layout-tests/editing/pasteboard/paste-text-012-expected.txt: Added.
1721         * layout-tests/editing/pasteboard/paste-text-012.html: Added.
1722         * layout-tests/editing/pasteboard/paste-text-013-expected.txt: Added.
1723         * layout-tests/editing/pasteboard/paste-text-013.html: Added.
1724         * layout-tests/editing/pasteboard/paste-text-014-expected.txt: Added.
1725         * layout-tests/editing/pasteboard/paste-text-014.html: Added.
1726
1727 2004-12-21  Darin Adler  <darin@apple.com>
1728
1729         Reviewed by Ken.
1730
1731         - fixed <rdar://problem/3899133> text search in a Safari window takes a very long time on Tiger updates page (and some other pages)
1732
1733         * khtml/editing/visible_text.h: Add an "offset base node" parameter to emitCharacter, and also
1734         add a field to track it. Must make a few things mutable so we can update them in the range accessor.
1735         * khtml/editing/visible_text.cpp:
1736         (khtml::TextIterator::advance): Pass in base node and offsets rather than computing actual offsets
1737         using the node's index. We only compute the node index if actually asked for the range.
1738         (khtml::TextIterator::handleTextNode): Pass 0 for base node and set base node to 0 when setting
1739         up the offsets.
1740         (khtml::TextIterator::handleTextBox): Ditto.
1741         (khtml::TextIterator::handleReplacedElement): Pass base node and set base node instead of calling
1742         nodeIndex.
1743         (khtml::TextIterator::handleNonTextNode): Pass 0 for offset.
1744         (khtml::TextIterator::exitNode): More of the same.
1745         (khtml::TextIterator::emitCharacter): Ditto.
1746         (khtml::TextIterator::range): If an offset base node is stored, then get its node index, and then
1747         add that in to the offsets. Doing the work here guarantees it's done only once when doing a text search.
1748
1749         - another small fix
1750
1751         * khtml/khtml_part.cpp: Removed SPEED_DEBUG define. Not sure why it was on.
1752
1753 === Safari-176 ===
1754
1755 2004-12-20  Ken Kocienda  <kocienda@apple.com>
1756
1757         Reviewed by Darin
1758
1759         * khtml/editing/htmlediting.cpp:
1760         (khtml::DeleteSelectionCommand::moveNodesAfterNode): My one-liner for this bug introduced layout test
1761         regressions: <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
1762         Rolling out until I can develop a real fix.
1763
1764 2004-12-20  David Harrison  <harrison@apple.com>
1765
1766         Reviewed by Dave Hyatt.
1767         
1768         Initial checkin of AXTextMarkerRef support.
1769
1770         * khtml/xml/dom_docimpl.cpp:
1771         (DocumentImpl::updateSelection):
1772         (DocumentImpl::setFocusNode):
1773         * kwq/KWQAccObject.h:
1774         * kwq/KWQAccObject.mm:
1775         (-[KWQAccObject detach]):
1776         (-[KWQAccObject anchorElement]):
1777         (-[KWQAccObject addChildrenToArray:]):
1778         (-[KWQAccObject accessibilityAttributeNames]):
1779         (-[KWQAccObject accessibilityActionDescription:]):
1780         (-[KWQAccObject accessibilityPerformAction:]):
1781         (-[KWQAccObject textMarkerRangeFromMarkers:andEndMarker:]):
1782         (-[KWQAccObject textMarkerForVisiblePosition:]):
1783         (-[KWQAccObject visiblePositionForTextMarker:]):
1784         (-[KWQAccObject AXTextMarkerRangeCopyStartMarkerWrapper:]):
1785         (-[KWQAccObject AXTextMarkerRangeCopyEndMarkerWrapper:]):
1786         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
1787         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
1788         (-[KWQAccObject accessibilityAttributeValue:]):
1789         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
1790         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
1791         (-[KWQAccObject getSelectedTextMarkerRange]):
1792         (-[KWQAccObject doAXLineForTextMarker:]):
1793         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
1794         (-[KWQAccObject doAXStringForTextMarkerRange:]):
1795         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
1796         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
1797         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
1798         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
1799         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
1800         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
1801         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
1802         (-[KWQAccObject accessibilityFocusedUIElement]):
1803         (-[KWQAccObject clearChildren]):
1804         (-[KWQAccObject accObjectID]):
1805         (-[KWQAccObject setAccObjectID:]):
1806         (-[KWQAccObject removeAccObjectID]):
1807         * kwq/KWQAccObjectCache.h:
1808         * kwq/KWQAccObjectCache.mm:
1809         (KWQAccObjectCache::KWQAccObjectCache):
1810         (KWQAccObjectCache::~KWQAccObjectCache):
1811         (KWQAccObjectCache::getAccObjectID):
1812         (KWQAccObjectCache::removeAccObjectID):
1813         (KWQAccObjectCache::textMarkerForVisiblePosition):
1814         (KWQAccObjectCache::visiblePositionForTextMarker):
1815
1816 2004-12-19  Darin Adler  <darin@apple.com>
1817
1818         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added nil check.
1819
1820 2004-12-19  Darin Adler  <darin@apple.com>
1821
1822         Reviewed by Kevin.
1823
1824         - a garbage collection fix
1825
1826         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added a more-extensive comment and fixed the BUILDING_ON_PANTHER
1827         #ifndef to use #if (in practice, either is OK).
1828         * kwq/KWQKURL.mm: (KURL::getNSURL): Use KWQCFAutorelease instead of autorelease.
1829
1830 2004-12-17  David Hyatt  <hyatt@apple.com>
1831
1832         Fix for 3923255, specified percentage heights of divs with overflow auto inside tables not honored.
1833         
1834         Reviewed by kocienda
1835
1836         * khtml/rendering/render_box.cpp:
1837         (RenderBox::calcPercentageHeight):
1838         * khtml/rendering/render_table.cpp:
1839         (RenderTableSection::layoutRows):
1840
1841 2004-12-17  David Harrison  <harrison@apple.com>
1842
1843         Reviewed by Ken Kocienda.
1844
1845         <rdar://problem/3924930> REGRESSION: triple click does not select to end of line
1846         
1847         * khtml/editing/visible_units.cpp:
1848         (khtml::endOfParagraph):
1849         When includeLineBreak is true, allow traversal to next node after enclosingBlockFlowElement.
1850
1851 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1852
1853         Reviewed by Vicki
1854
1855         * khtml/editing/htmlediting.cpp:
1856         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Missed deleting some now-obsolete expcetion
1857         codes when I added the createBreakElement() function.
1858
1859 2004-12-17  Richard Williamson   <rjw@apple.com>
1860
1861         Set the floor of max cacheable object size to 40K.  This restores
1862         the long standing floor.  Lower floor deleteriously impacts the PLT.
1863         Reviewed by Hyatt.
1864
1865         * khtml/khtml_part.cpp:
1866         (KHTMLPart::checkCompleted):
1867         * khtml/misc/loader.cpp:
1868         (Cache::setSize):
1869
1870 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1871
1872         Reviewed by Hyatt
1873
1874         Fix for this bug:
1875         
1876         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
1877
1878         * khtml/editing/htmlediting.cpp:
1879         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Stop merging nodes when a <br> is hit.
1880         Formerly checked only for block boundary.
1881
1882 2004-12-17  David Harrison  <harrison@apple.com>
1883
1884         Reviewed by Darin.
1885
1886                 Add KWQCFAutorelease for autoreleasing CF objects.
1887         * kwq/KWQFoundationExtras.h:
1888         (KWQCFAutorelease):
1889         New.
1890
1891 2004-12-17  David Harrison  <harrison@apple.com>
1892
1893         Reviewed by Darin.
1894
1895                 Fix GC compatibility in getNSString.
1896
1897         * kwq/KWQString.mm:
1898         (QString::getNSString):
1899                 Use NSString allocator instead of CFString, so that autorelease works under GC.
1900
1901 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1902
1903         Reviewed by Hyatt
1904
1905         Fix for this bug:
1906         
1907         <rdar://problem/3890973> REGRESSION (Mail): Deleting reorders remaining text
1908
1909         * khtml/editing/htmlediting.cpp:
1910         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Added check to ensure that moving content will not
1911         move it after the <body> element.
1912
1913 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1914
1915         Reviewed by me
1916         
1917         Added new layout tests covering cases from recent bug fixes.
1918
1919         * layout-tests/editing/inserting/insert-div-018-expected.txt: Added.
1920         * layout-tests/editing/inserting/insert-div-018.html: Added.
1921         * layout-tests/editing/inserting/insert-div-019-expected.txt: Added.
1922         * layout-tests/editing/inserting/insert-div-019.html: Added.
1923         * layout-tests/editing/inserting/insert-div-020-expected.txt: Added.
1924         * layout-tests/editing/inserting/insert-div-020.html: Added.
1925         * layout-tests/editing/inserting/insert-div-021-expected.txt: Added.
1926         * layout-tests/editing/inserting/insert-div-021.html: Added.
1927
1928 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1929
1930         Reviewed by me
1931
1932         Changes in layout resulting from giving <p> elements no margin rather than 0.1em margin.
1933
1934         * layout-tests/editing/inserting/insert-div-013-expected.txt
1935         * layout-tests/editing/inserting/insert-div-014-expected.txt
1936
1937 2004-12-17  Ken Kocienda  <kocienda@apple.com>
1938
1939         Reviewed by John
1940
1941         Fix for this bug:
1942         
1943         <rdar://problem/3925317> Increase quote in email and with cursor below the quote the new line appears above the quote
1944
1945         * khtml/editing/htmlediting.cpp:
1946         (khtml::InsertParagraphSeparatorCommand::doApply):
1947         * khtml/editing/visible_position.cpp: Refine rules for whether to use the starting node or the starting
1948         block as the reference node for the insertion of the new block.
1949         (khtml::isLastVisiblePositionInBlock): Tweak rules again. Descendants of following blocks should answer true.
1950         I worked this all out on the whiteboard this time. This should be the last tweak.
1951
1952 2004-12-17  Kevin Decker  <kdecker@apple.com>
1953
1954         Reviewed by Ken.
1955
1956         Fixed <rdar://problem/3824438> Need a clean way for Dashboard to detect when an XML parsing error occurs
1957
1958         * khtml/xml/xml_tokenizer.cpp:
1959         (khtml::XMLTokenizer::insertErrorMessageBlock): In the xml error report, instead of a generic <div>, use <parsererror> to match Mozilla.
1960
1961 2004-12-16  Ken Kocienda  <kocienda@apple.com>
1962
1963         Reviewed by Chris
1964
1965         Fix for this bug:
1966         
1967         <rdar://problem/3924888> REGRESSION (Mail): Hitting return key at end of line does not insert visible newline
1968
1969         * khtml/editing/htmlediting.cpp:
1970         (khtml::InsertParagraphSeparatorCommand::doApply): Tweaked code I added just before to fix 3924486, so that
1971         it checks the downstream node for the starting position.
1972
1973 2004-12-16  Ken Kocienda  <kocienda@apple.com>
1974
1975         Reviewed by Chris
1976
1977         Added new createBreakElement() function that makes creating a <br> element a one-liner.
1978         Converted all the code that used to call the DocumentImpl, and dealt with the exceptionCode,
1979         over to this new helper.
1980
1981         * khtml/editing/htmlediting.cpp:
1982         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Now uses new helper function.
1983         (khtml::InsertLineBreakCommand::doApply): Ditto.
1984         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
1985         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
1986         (khtml::ReplaceSelectionCommand::doApply): Ditto.
1987         (khtml::createBreakElement): New helper.
1988         * khtml/editing/htmlediting.h: Ditto.
1989
1990 2004-12-16  David Hyatt  <hyatt@apple.com>
1991
1992         Fix a bug where vertical-align values that depended on their parent's value went crazy if the parent was
1993         vertical-align top or bottom.  The bug is 3771007, bankofamerica's ebills page.
1994         
1995         Reviewed by kocienda
1996
1997         * khtml/rendering/render_object.cpp:
1998         (RenderObject::getVerticalPosition):
1999
2000 2004-12-16  Ken Kocienda  <kocienda@apple.com>
2001
2002         Reviewed by John
2003
2004         Fix for these bugs:
2005         
2006         <rdar://problem/3924486> REGRESSION (Mail): Hitting return key does not insert visible newline
2007         <rdar://problem/3924579> REGRESSION (Mail): After deleting, hitting return key does not insert visible newline
2008
2009         * khtml/editing/htmlediting.cpp:
2010         (khtml::InsertParagraphSeparatorCommand::doApply): For the first bug, detect when inserting a <p> will
2011         make a visible <br> collapse. For the second bug, move the code that inserts the new <p> after
2012         a check which may move the node used as the reference node for the insertion. Also change this code to
2013         insert the <p> after the last sibling of the starting position, to move it past the nodes we're going
2014         to want to shift into the new <p>.
2015
2016 2004-12-16  Darin Adler  <darin@apple.com>
2017
2018         Reviewed by Ken.
2019
2020         - use <p> elements rather than <br> when pasting plain text; also use margin of 0 rather than 0.1 em
2021           after talking this over with Dave and Ken
2022
2023         * khtml/editing/htmlediting.h: Added createDefaultParagraphElement and createBlockPlaceholderElement.
2024         * khtml/editing/htmlediting.cpp:
2025         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Use new createBlockPlaceholderElement
2026         helper so this can share code with the plain-text conversion code.
2027         (khtml::InsertParagraphSeparatorCommand::createParagraphElement): Use new createDefaultParagraphElement
2028         helper so this can share code with the plain-text conversion code.
2029         (khtml::createDefaultParagraphElement): Added.
2030         (khtml::createBlockPlaceholderElement): Added.
2031
2032         * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Use paragraphs rather than
2033         <br> elements for pasting plain text.
2034
2035         - regenerated these files with the newer gperf
2036
2037         * khtml/css/cssproperties.c: Regenerated.
2038         * khtml/css/cssvalues.c: Regenerated.
2039         * khtml/misc/htmlattrs.c: Regenerated.
2040         * khtml/misc/htmltags.c: Regenerated.
2041
2042 2004-12-16  Ken Kocienda  <kocienda@apple.com>
2043
2044         Reviewed by Hyatt
2045
2046         Fix for this bug:
2047         
2048         <rdar://problem/3924291> REGRESSION (Mail): Crash deleting content following a <p> element
2049
2050         * khtml/xml/dom_nodeimpl.cpp:
2051         (NodeImpl::enclosingInlineElement): Fixed problem in this function where recursive search for
2052         parent that is not an inline would skip past previous siblings of nodes which were blocks. Now
2053         it stops looking in this situation. This problem eventually caused the delete code to try to 
2054         merge a node under a descendent.
2055
2056 2004-12-16  Adele Amchan  <adele@apple.com>
2057
2058         Change by Richard, reviewed by me.
2059
2060         Fix for: <rdar://problem/3923983> background image decoding prevents page with 0Kb image from finishing to load
2061
2062         * khtml/misc/loader.cpp: (CachedImage::data): Added call to notifyFinished so the 0Kb image case finishes loading.
2063
2064 2004-12-16  Adele Amchan  <adele@apple.com>
2065
2066         Reviewed by Chris.
2067
2068         Fix for: <rdar://problem/3534824> VIP: some navigation links on safeway.com don't work due to a JavaScript quirk
2069
2070         Added a call to ObjectImp::get before Window::get just returns Undefined.  
2071         This was preventing us from getting the toString function from a Window object.
2072
2073         * khtml/ecma/kjs_window.cpp: (Window::get):
2074
2075 2004-12-16  Ken Kocienda  <kocienda@apple.com>
2076
2077         Reviewed by John
2078         
2079         Fix for this bug:
2080         
2081         <rdar://problem/3918351> REGRESSION (Mail, 173-175+): Return before first char of line leaves insertion point in wrong place
2082         
2083         * khtml/editing/htmlediting.cpp:
2084         (khtml::InsertParagraphSeparatorCommand::doApply): Basically, did a rewrite of this function
2085         to do a better job than it was doing before. Added several test cases to prove I am on a 
2086         better track.
2087         * khtml/editing/visible_position.cpp:
2088         (khtml::isFirstVisiblePositionInBlock): Tweaked the rules a bit to fix an issue very similar to the
2089         leaving-the-bar-node case problem I just fixed in a recent checkin (relevant markup: <p>foo</p>bar).
2090         This function was returning true for the first position in "bar". Wrong. Also tightened up other 
2091         rule: Should not report true when relationship between blocks cannot be determined.
2092         (khtml::isLastVisiblePositionInBlock): Tightened up rule as above: Should not report true 
2093         when relationship between blocks cannot be determined.
2094         * layout-tests/editing/inserting/insert-div-010-expected.txt: Added.
2095         * layout-tests/editing/inserting/insert-div-010.html: Added.
2096         * layout-tests/editing/inserting/insert-div-011-expected.txt: Added.
2097         * layout-tests/editing/inserting/insert-div-011.html: Added.
2098         * layout-tests/editing/inserting/insert-div-012-expected.txt: Added.
2099         * layout-tests/editing/inserting/insert-div-012.html: Added.
2100         * layout-tests/editing/inserting/insert-div-013-expected.txt: Added.
2101         * layout-tests/editing/inserting/insert-div-013.html: Added.
2102         * layout-tests/editing/inserting/insert-div-014-expected.txt: Added.
2103         * layout-tests/editing/inserting/insert-div-014.html: Added.
2104         * layout-tests/editing/inserting/insert-div-015-expected.txt: Added.
2105         * layout-tests/editing/inserting/insert-div-015.html: Added.
2106         * layout-tests/editing/inserting/insert-div-016-expected.txt: Added.
2107         * layout-tests/editing/inserting/insert-div-016.html: Added.
2108         * layout-tests/editing/inserting/insert-div-017-expected.txt: Added.
2109         * layout-tests/editing/inserting/insert-div-017.html: Added.
2110             
2111 2004-12-16  Ken Kocienda  <kocienda@apple.com>
2112
2113         Reviewed by me
2114         
2115         Added a layout test based on my last checkin.
2116
2117         * layout-tests/editing/selection/move-by-word-001-expected.txt: Added.
2118         * layout-tests/editing/selection/move-by-word-001.html: Added.
2119
2120 2004-12-16  Ken Kocienda  <kocienda@apple.com>
2121
2122         Reviewed by John
2123
2124         Fix for this bug:
2125         
2126         <rdar://problem/3917929> REGRESSION (Mail): Command-left-arrow leaves insertion point too high after specific steps
2127
2128         * khtml/editing/visible_text.cpp:
2129         (khtml::SimplifiedBackwardsTextIterator::advance): Add new check for leaving a text node and iterating
2130         backwards into a different block that is an descendent of the block containing the text node (as in leaving 
2131         the "bar" node in this example: <p>foo</p>bar).
2132         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode): Call new emitNewlineForBROrText helper.
2133         (khtml::SimplifiedBackwardsTextIterator::emitNewlineForBROrText): Factor out code from handleNonTextNode, since
2134         it is called from there, and now also from advance().
2135
2136 2004-12-15  Darin Adler  <darin@apple.com>
2137
2138         Reviewed by Ken.
2139         
2140         - fixed problem where plain-text would put a blank line between each <p> even when they have no margins
2141
2142         * khtml/editing/visible_text.cpp: (khtml::TextIterator::exitNode): Add more checks and only set the
2143         "add one more newline" flag if the margin is sufficient. A more complete fix would ignore the node
2144         type altogether and use the render tree instead.
2145
2146 2004-12-14  John Sullivan  <sullivan@apple.com>
2147
2148         Reviewed by Ken.
2149         
2150         - rest of WebCore fix for <rdar://problem/3790011> undoable operations all say "Undo" 
2151         in the menu, no specific action names
2152
2153         * khtml/editing/edit_actions.h: new header, contains EditAction enum
2154         (renamed from HTMLEditAction, formerly in htmlediting.h)
2155
2156         * ForwardingHeaders/editing/edit_actions.h: new forwarding header
2157         
2158         * khtml/editing/htmlediting.h:
2159         removed HTMLEditAction enum in favor of including edit_actions.h; added khtml::
2160         namespace to EditAction usages; added m_editingAction ivar to ApplyStyleCommand
2161
2162         * khtml/editing/htmlediting.cpp:
2163         (khtml::EditCommandPtr::editingAction):
2164         update for enum name change
2165         (khtml::EditCommand::editingAction):
2166         ditto
2167         (khtml::ApplyStyleCommand::ApplyStyleCommand):
2168         added editingAction parameter to this constructor
2169         (khtml::ApplyStyleCommand::editingAction):
2170         return new ivar
2171         (khtml::DeleteSelectionCommand::editingAction):
2172         update for enum name change
2173         (khtml::MoveSelectionCommand::editingAction):
2174         ditto
2175         (khtml::TypingCommand::editingAction):
2176         ditto
2177         (khtml::ReplaceSelectionCommand::editingAction):
2178         ditto
2179         
2180         * khtml/khtml_part.h:
2181         added EditAction parameter to applyStyle and computeAndSetTypingStyle
2182         * khtml/khtml_part.cpp:
2183         (KHTMLPart::computeAndSetTypingStyle):
2184         added EditAction parameter
2185         (KHTMLPart::applyStyle):
2186         ditto
2187
2188         * kwq/KWQKHTMLPart.mm:
2189         (KWQKHTMLPart::registerCommandForUndoOrRedo):
2190         do the cast from EditAction to WebUndoAction a different way to match other code
2191         
2192         * kwq/WebCoreBridge.h:
2193         * kwq/WebCoreBridge.mm:
2194         (-[WebCoreBridge setTypingStyle:withUndoAction:]):
2195         added WebUndoAction parameter, passed into ApplyStyleCommand constructor
2196         (-[WebCoreBridge applyStyle:withUndoAction:]):
2197         ditto
2198
2199         * WebCore.pbproj/project.pbxproj:
2200         updated for new files
2201
2202 2004-12-14  David Hyatt  <hyatt@apple.com>
2203
2204         Fix for 3562458, rowspan and colspan converted to ints so that large values will work for them.  Remove
2205         the ridiculous 1024 limit on the span values.
2206
2207         * khtml/html/html_tableimpl.cpp:
2208         (HTMLTableCellElementImpl::parseHTMLAttribute):
2209         * khtml/rendering/render_table.cpp:
2210         (RenderTableCell::collapsedBottomBorder):
2211         * khtml/rendering/render_table.h:
2212         (khtml::RenderTableCell::colSpan):
2213         (khtml::RenderTableCell::setColSpan):
2214         (khtml::RenderTableCell::rowSpan):
2215         (khtml::RenderTableCell::setRowSpan):
2216         (khtml::RenderTableCol::span):
2217         (khtml::RenderTableCol::setSpan):
2218
2219 2004-12-14  David Hyatt  <hyatt@apple.com>
2220
2221         Make sure <col> and <colgroup> can have spans updated dynamically as well.
2222         
2223         Reviewed by rjw
2224
2225         * khtml/html/html_tableimpl.cpp:
2226         (HTMLTableColElementImpl::parseHTMLAttribute):
2227         * khtml/rendering/render_table.cpp:
2228         (RenderTableCell::updateFromElement):
2229         (RenderTableCol::updateFromElement):
2230
2231 2004-12-14  David Hyatt  <hyatt@apple.com>
2232
2233         Fix for 3833123, setting a cell's colspan does not update rendering like it should.
2234         
2235         Reviewed by rjw
2236
2237         * khtml/html/html_tableimpl.cpp:
2238         (HTMLTableCellElementImpl::parseHTMLAttribute):
2239         * khtml/rendering/render_table.cpp:
2240         (RenderTableCell::RenderTableCell):
2241         (RenderTableCell::updateFromElement):
2242
2243 2004-12-14  Chris Blumenberg  <cblu@apple.com>
2244
2245         Fixed: <rdar://problem/3864536> crash copying text from other apps and pasting in a sticky in dashboard
2246
2247         Reviewed by hyatt.
2248
2249         * khtml/editing/markup.cpp:
2250         (khtml::createFragmentFromText): ref and deref the fragment since calling appendChild can completely deref it
2251
2252 2004-12-14  David Hyatt  <hyatt@apple.com>
2253
2254         Fix for 3785211. Make sure to do a layout with the old position before doing a layout after changing to the new position.
2255         This is actually a regression from my positioned object DHTML optimization.
2256         
2257         Reviewed by kocienda
2258
2259         * khtml/rendering/render_object.cpp:
2260         (RenderObject::setStyle):
2261
2262 2004-12-14  David Hyatt  <hyatt@apple.com>
2263
2264         Make sure the class attribute works when newlines are present in the attribute.
2265
2266         Reviewed by kocienda
2267
2268         * khtml/html/html_elementimpl.cpp:
2269         (HTMLNamedAttrMapImpl::parseClassAttribute):
2270
2271 2004-12-14  David Hyatt  <hyatt@apple.com>
2272
2273         Fix for 3724938, float element is duplicated and paints twice.  The logic for when to paint floats was
2274         actually fairly screwed up.  This patch simplifies the logic and makes addOverhangingFloats easier to
2275         read by splitting it into two separate functions.
2276         
2277         Reviewed by kocienda
2278
2279         * khtml/rendering/render_block.cpp:
2280         (khtml::RenderBlock::layoutBlockChildren):
2281         (khtml::RenderBlock::clearFloats):
2282         (khtml::RenderBlock::addOverhangingFloats):
2283         (khtml::RenderBlock::addIntrudingFloats):
2284         * khtml/rendering/render_block.h:
2285
2286 2004-12-14  John Sullivan  <sullivan@apple.com>
2287
2288         Reviewed by Ken.
2289         
2290         - added Undo action names for Cut, Paste, and Drag
2291
2292         * khtml/editing/htmlediting.h:
2293         * khtml/editing/htmlediting.cpp:
2294         (khtml::DeleteSelectionCommand::editingAction):
2295         overridden to return HTMLEditActionCut
2296         (khtml::MoveSelectionCommand::editingAction):
2297         overridden to return HTMLEditActionDrag
2298         (khtml::ReplaceSelectionCommand::editingAction):
2299         overridden to return HTMLEditActionPaste
2300
2301 2004-12-14  John Sullivan  <sullivan@apple.com>
2302
2303         Reviewed by Ken.
2304         
2305         - architecture for WebCore part of fix for <rdar://problem/3790011> undoable operations all say "Undo" in the menu, 
2306         no specific action names
2307           
2308         The remaining step is to make each EditCommand subclass override editingAction() to return an
2309         appropriate value. (Unfortunately the mapping between subclass and user-distinguishable action
2310         is not completely straightforward, so this next step isn't trivial.)
2311
2312         * khtml/editing/htmlediting.h:
2313         new enum for HTMLEditAction
2314
2315         * khtml/editing/htmlediting.cpp:
2316         (khtml::EditCommandPtr::editingAction):
2317         new method, calls through to EditCommand
2318         (khtml::EditCommand::editingAction):
2319         new method for subclasses to override, returns HTMLEditActionUnspecified at this level
2320         (khtml::TypingCommand::editingAction):
2321         proof of concept override, returns HTMLEditActionTyping
2322                 
2323         * kwq/KWQKHTMLPart.h:
2324         declare new private bottleneck method registerCommandForUndoOrRedo
2325         * kwq/KWQKHTMLPart.mm:
2326         (KWQKHTMLPart::registerCommandForUndoOrRedo):
2327         new bottleneck method to reduce code duplication; now calls over the bridge
2328         to get the localized string to use for the Undo action name
2329         (KWQKHTMLPart::registerCommandForUndo):
2330         now calls new bottleneck method
2331         (KWQKHTMLPart::registerCommandForRedo):
2332         now calls new bottleneck method
2333         
2334         * kwq/WebCoreBridge.h:
2335         new enum for WebUndoAction, maps directly to HTMLEditAction.
2336         Declaration of nameForUndoAction:
2337
2338 2004-12-14  Darin Adler  <darin@apple.com>
2339
2340         Reviewed by John.
2341
2342         - added a bunch of missing nil checks; our old version of inherits used to work for nil (by accident)
2343
2344         * khtml/rendering/render_frames.cpp:
2345         (RenderPart::~RenderPart): Check widget for nil.
2346         (RenderPart::setWidget): Ditto.
2347         (RenderFrame::slotViewCleared): Ditto.
2348         (RenderPartObject::slotViewCleared): Ditto.
2349
2350 2004-12-13  Darin Adler  <darin@apple.com>
2351
2352         Reviewed by Ken.
2353
2354         - moved markup-related functions into new sources files in the editing directory
2355         - removed all of the uses of dynamic_cast, preparing to turn off RTTI to make our code smaller and slightly faster
2356
2357         * ForwardingHeaders/editing/markup.h: Added.
2358         * khtml/editing/markup.h: Added.
2359         * khtml/editing/markup.cpp: Added.
2360
2361         * WebCore.pbproj/project.pbxproj: Added markup.h/cpp.
2362
2363         * khtml/dom/dom_node.cpp: (Node::toHTML): Call createMarkup since there's no toHTML in NodeImpl any more.
2364         * khtml/html/html_elementimpl.cpp:
2365         (HTMLElementImpl::innerHTML): Changed to call createMarkup.
2366         (HTMLElementImpl::outerHTML): Ditto.
2367
2368         * khtml/ecma/kjs_window.cpp:
2369         (Window::retrieveWindow): Comment out assert that uses dynamic_cast.
2370         (Window::retrieveActive): Ditto.
2371
2372         * khtml/editing/htmlediting.h: Added forward class declaration needed now that I removed one elsewhere.
2373         * khtml/xml/dom_docimpl.h: Ditto.
2374
2375         * khtml/khtml_part.cpp:
2376         (KHTMLPart::slotDebugDOMTree): Use createMarkup instead of toHTML.
2377         (KHTMLPart::processObjectRequest): Use inherits instead of dynamic_cast.
2378
2379         * khtml/rendering/render_image.cpp: (RenderImage::paint): Add an explicit QChar conversion so this code
2380         still works even with the additional replace overloads added to QString.
2381         * kwq/KWQTextCodec.mm: (QTextCodec::fromUnicode): Ditto.
2382
2383         * khtml/rendering/render_object.h: Removed the version of arenaDelete that does not take an object
2384         base pointer, because it used dynamic_cast in its implementation. Made the other version public.
2385         * khtml/rendering/render_object.cpp: Ditto.
2386         * khtml/rendering/render_replaced.cpp: (RenderWidget::deref): Pass object base pointer to arenaDelete.
2387
2388         * khtml/xml/dom2_rangeimpl.h: Removed extra parameters from toHTML, and unneeded includes and declarations.
2389         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::toHTML): Changed to call createMarkup, and moved all
2390         the support code into markup.cpp.
2391
2392         * khtml/xml/dom_nodeimpl.h: Moved toHTML and related functions into markup.cpp.
2393         * khtml/xml/dom_nodeimpl.cpp: Ditto.
2394
2395         * khtml/xml/dom_position.cpp:
2396         (DOM::startPosition): Implemented the version of this that takes a RangeImpl. Also added null checks
2397         so these return null positions rather than raising exceptions.
2398         (DOM::endPosition): Ditto.
2399
2400         * khtml/khtmlview.h: Added an APPLE_CHANGES function so inherits can detect this class without dynamic_cast.
2401         * kwq/KWQFrame.h: Ditto.
2402         * kwq/KWQFrame.mm: (QFrame::isQFrame): Ditto.
2403         * kwq/KWQKPartsPart.h: Ditto.
2404         * kwq/KWQKPartsPart.mm: (KParts::ReadOnlyPart::isKPartsReadOnlyPart): Ditto.
2405         * kwq/KWQScrollView.h: Ditto.
2406         * kwq/KWQScrollView.mm: (QScrollView::isQScrollView): Ditto.
2407         * kwq/KWQKHTMLPart.h: Ditto.
2408         * kwq/KWQKHTMLPart.mm:
2409         (KHTMLView::isKHTMLView): Ditto.
2410         (KWQKHTMLPart::setTitle): Added an explicit QChar conversion so this code still works even with the additional
2411         replace overloads added to QString.
2412         (KWQKHTMLPart::setStatusBarText): Ditto.
2413         (KWQKHTMLPart::runJavaScriptAlert): Ditto.
2414         (KWQKHTMLPart::runJavaScriptConfirm): Ditto.
2415         (KWQKHTMLPart::runJavaScriptPrompt): Ditto.
2416         (KWQKHTMLPart::attributedString): Ditto.
2417         (KWQKHTMLPart::isCharacterSmartReplaceExempt): Ditto.
2418         (KWQKHTMLPart::isKHTMLPart): That dynamic_cast thing (see above).
2419
2420         * kwq/KWQObject.h: Added virtual methods for the few cases where we need dynamic_cast-like behavior.
2421         * kwq/KWQObject.mm:
2422         (QObject::inherits): Changed to not use dynamic cast.
2423         (QObject::isKHTMLPart): Added. Returns false.
2424         (QObject::isKHTMLView): Ditto.
2425         (QObject::isKPartsReadOnlyPart): Ditto.
2426         (QObject::isQFrame): Ditto.
2427         (QObject::isQScrollView): Ditto.
2428
2429         * kwq/KWQRenderTreeDebug.cpp:
2430         (write): Changed to use inherits rather than dynamic_cast.
2431         (writeSelection): Ditto.
2432
2433         * kwq/KWQSlot.mm: (KWQSlot::call): Call through to the version with just a job pointer parameter rather
2434         than going straight on to the "no parameters at all" version.
2435
2436         * kwq/KWQString.h:
2437         * kwq/KWQString.mm: (QString::replace): Added overloads.
2438         * kwq/WebCoreBridge.mm:
2439         (-[WebCoreBridge markupStringFromNode:nodes:]): Changed to call functions in markup.h.
2440         (-[WebCoreBridge markupStringFromRange:nodes:]): Ditto.
2441         (-[WebCoreBridge selectedString]): Added an explicit QChar conversion so this code still works even with
2442         the additional replace overloads added to QString.
2443         (-[WebCoreBridge stringForRange:]): Ditto.
2444         (-[WebCoreBridge copyDOMNode:copier:]): Changed to call functions in markup.h.
2445         (-[WebCoreBridge elementAtPoint:]): QChar conversion.
2446         (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]): Changed to call functions in markup.h.
2447         (-[WebCoreBridge documentFragmentWithText:]): Changed to call functions in markup.h.
2448
2449 2004-12-13  Ken Kocienda  <kocienda@apple.com>
2450
2451         Reviewed by John
2452
2453         Fix for this bug:
2454         
2455         <rdar://problem/3917956> REGRESSION (Mail): pasting can leave insertion point inside pasted text
2456
2457         * khtml/editing/htmlediting.cpp:
2458         (khtml::ReplaceSelectionCommand::doApply): Fix coding mistake. Calculations of bool flag based on 
2459         leading and trailing whitespace positions was reversed! I must have introduced this error recently
2460         when changing around this code.
2461
2462 2004-12-13  David Hyatt  <hyatt@apple.com>
2463
2464         Fix for 3915787, macobserver doesn't paint.  floatRect() needed to be const in the base class.  Also hit-testing
2465         and painting was using the wrong rect when setting up the x/y of the rect.
2466         
2467         Reviewed by mjs
2468
2469         * khtml/rendering/render_block.cpp:
2470         (khtml::RenderBlock::paint):
2471         (khtml::RenderBlock::nodeAtPoint):
2472         * khtml/rendering/render_object.h:
2473         (khtml::RenderObject::floatRect):
2474
2475 2004-12-13  Ken Kocienda  <kocienda@apple.com>
2476
2477         Reviewed by John
2478
2479         Fix for this bug:
2480         
2481         <rdar://problem/3917863> REGRESSION (Mail): pasting two lines of plain text copied from an RTF document results in two styles
2482
2483         Code to figuire out the end node to merge was missing the font tag in the second paragraph
2484         written out by AppKit convert-to-HTML function. I refined the algorithm to be smarter.
2485
2486         * khtml/editing/htmlediting.cpp:
2487         (khtml::ReplacementFragment::mergeEndNode): Refine algorithm used to walk through the fragment being pasted
2488         looking for the node that is the last inline in the last block of the fragment. The old algorithm was 
2489         insufficiently powerful.
2490         (khtml::ReplacementFragment::enclosingBlock): New helper function.
2491         * khtml/editing/htmlediting.h: Add declaration for new helper function.
2492         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: Added.
2493         * layout-tests/editing/pasteboard/paste-text-011.html: Added.
2494
2495 2004-12-13  Ken Kocienda  <kocienda@apple.com>
2496
2497         Reviewed by John
2498
2499         WebCore side of fix for this bug:
2500         
2501         <rdar://problem/3768372> REGRESSION (Mail): paste of text ending in whitespace loses whitespace
2502
2503         Note that we are coordinating with Doug Davidson on the AppKit team to make a complete fix for this
2504         bug. This change involves our half of the needed changes.
2505         
2506         Note that a lot of this change has to do with changing code to use a <br> element instead of
2507         a comment node as the mechanism to annotate HTML with information used to fix the bug. In some
2508         other places, code to handle comments in markup can be removed since we do not use comments for
2509         such annotations after this change.
2510
2511         * khtml/editing/htmlediting.cpp: Remove isComment() helper; no longer needed.
2512         (khtml::ReplacementFragment::ReplacementFragment): Change m_hasInterchangeNewlineComment name to m_hasInterchangeNewline.
2513         (khtml::ReplacementFragment::isInterchangeNewlineNode): Name changed from isInterchangeNewlineComment.
2514         (khtml::ReplacementFragment::isInterchangeConvertedSpaceSpan): Local variable name convertedSpaceSpanClass changed to
2515         convertedSpaceSpanClassString to match other uses of the idiom used here.
2516         (khtml::ReplaceSelectionCommand::doApply): Change hasInterchangeNewlineComment() name to hasInterchangeNewline().
2517         * khtml/editing/htmlediting.h: Change names as noted in .cpp file. Remove isComment() helper; no longer needed.
2518         (khtml::ReplacementFragment::hasInterchangeNewline):  Change hasInterchangeNewlineComment() name to hasInterchangeNewline().
2519         * khtml/html/html_elementimpl.cpp:
2520         (HTMLElementImpl::createContextualFragment): No longer has includeCommentsInDOM flag; no longer needed as we do not
2521         annotate fragments with comments any longer.
2522         * khtml/html/html_elementimpl.h: Ditto.
2523         * khtml/xml/dom2_rangeimpl.cpp: Remove addCommentToHTMLMarkup() helper. No longer needed.
2524         (DOM::interchangeNewlineMarkupString): New helper to return <br> element markup we use to annotate content for interchange.
2525         (DOM::RangeImpl::toHTML): No longer uses addCommentToHTMLMarkup; now calls interchangeNewlineMarkupString(). Remove
2526         spurious semi-colon.
2527         * khtml/xml/dom2_rangeimpl.h: Remove obsolete addCommentToHTMLMarkup() function and EAddToMarkup enum.
2528         * kwq/WebCoreBridge.mm:
2529         (-[WebCoreBridge documentFragmentWithMarkupString:baseURLString:]): No longer pass bool to ask for including comments
2530         in DOM when calling createContextualFragment().
2531
2532 2004-12-10  John Sullivan  <sullivan@apple.com>
2533
2534         fixed deployment build bustage that John Louch ran into
2535
2536         * kwq/KWQTextEdit.mm:
2537         (QTextEdit::setScrollBarModes):
2538         move bool declaration inside exception-handling block to avoid obscure
2539         compiler error
2540
2541 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
2542
2543         Reviewed by Richard.
2544
2545         <rdar://problem/3907484> REGRESSION (125-173): crash when KWQTextField is dealloc'ed while setting focus (profoundlearning.com)
2546         
2547         * kwq/KWQWidget.mm:
2548         (QWidget::setFocus): Handle the case where setting focus removed
2549         us from the superview - this can happen due to style changes on
2550         focus change.
2551
2552 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2553
2554         Reviewed by Hyatt
2555
2556         Fix for this bug:
2557         
2558         <rdar://problem/3915008> REGRESSION (Mail): Too much white space between lines separated by carriage returns
2559
2560         There are a number of interesting things we could do to fix this bug, including SPI and involving
2561         the WebKit delegate, etc., however it seems reasonable to start with a hard-coded default that
2562         will fix the bug in the general case until such time as we can come up with more specific
2563         solutions. 
2564         
2565         So, I added a helper method to create <p> elements with an inline style that sets top and bottom margins
2566         to 0.1em.
2567
2568         * khtml/editing/htmlediting.cpp:
2569         (khtml::InsertParagraphSeparatorCommand::createParagraphElement): New factory method to create
2570         paragraph elements to insert. Also adds style information to keep the <p> from having "too-big" margins.
2571         (khtml::InsertParagraphSeparatorCommand::doApply): Call new factory method.
2572         * khtml/editing/htmlediting.h: Add createParagraphElement() declaration.
2573
2574 2004-12-10  Darin Adler  <darin@apple.com>
2575
2576         Reviewed by Hyatt.
2577
2578         - fixed <rdar://problem/3910419> setting style={overflow:hidden} for <textarea> does not prevent appearance of scrollbars
2579
2580         * khtml/rendering/render_form.h: Remove now-unneeded wrap parameter.
2581         * khtml/rendering/render_form.cpp:
2582         (RenderSubmitButton::rawText): Convert to QChar explicitly.
2583         (RenderLineEdit::updateFromElement): Ditto.
2584         (RenderLineEdit::slotTextChanged): Ditto.
2585         (RenderSelect::updateFromElement): Ditto.
2586         (TextAreaWidget::TextAreaWidget): Moved out most of the initialization since it's not something
2587         that requires a derived class. Now we don't use this class at all for WebCore, but they still
2588         have it for KDE.
2589         (TextAreaWidget::event): Moved out the ifdefs.
2590         (RenderTextArea::RenderTextArea): Moved setting code from TextAreaWidget here. Put a bunch that
2591         we don't need at all inside !APPLE_CHANGES, and removed the setting for scroll bars, since that's
2592         now done in setStyle.
2593         (RenderTextArea::handleFocusOut): Use type QTextEdit instead of TextAreaWidget since that's all
2594         that's needed and WebCore no longer has TextAreaWidget.
2595         (RenderTextArea::calcMinMaxWidth): Ditto.
2596         (RenderTextArea::setStyle): Add code to set scroll bar modes based on wrap setting combined with
2597         overflow style.
2598         (RenderTextArea::updateFromElement): Use type QTextEdit.
2599         (RenderTextArea::text): Ditto.
2600         (RenderTextArea::select): Ditto.
2601
2602         * kwq/KWQTextArea.mm:
2603         (-[KWQTextArea _configureTextViewForWordWrapMode]): Don't set horizontal scroller visibility here,
2604         since it's now handled by QTextEdit.
2605         (-[KWQTextArea initWithFrame:]): Don't set vertical scroller visibility or scroller auto-hiding.
2606
2607         * kwq/KWQTextEdit.h: Add setScrollBarModes function to be used instead of separate setter for
2608         the horizontal and vertical mode; needed because AppKit switches "autohide" for both at once.
2609         * kwq/KWQTextEdit.mm: (QTextEdit::setScrollBarModes): Added.
2610
2611 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2612
2613         Reviewed by Darin
2614
2615         Fix for this bug:
2616         
2617         <rdar://problem/3915047> HItting return in empty document inserts <p> but 
2618         insertion point does not move
2619
2620         * khtml/editing/htmlediting.cpp:
2621         (khtml::InsertParagraphSeparatorCommand::doApply): The issue is that the
2622         code to insert the <p> element for the return is not detecting the fact
2623         that the document is empty. Inserting a <p> into an empty body will not
2624         "add a new line" as the user expects. With this change, we'll add a second 
2625         <p> when the root editable element has no rendered kids.
2626
2627 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
2628
2629         Reviewed by John.
2630
2631         <rdar://problem/3912979> REGRESSION (125-173): repro crash in HTMLCollectionImpl code (www.clubtravel.ie)
2632
2633         * khtml/html/html_miscimpl.cpp:
2634         (HTMLCollectionImpl::traverseNextItem): Pass base when traversing
2635         the initial one step, otherwise we might inadvertantly step
2636         outside the collection base, thereby causing assertion failures or
2637         other badness later.
2638
2639 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2640
2641         Reviewed by Chris
2642
2643         * khtml/editing/htmlediting.cpp:
2644         (khtml::InsertParagraphSeparatorCommand::doApply): There is a starting block which is supposed to 
2645         act as the root node for this operation. However, a loop was incorrectly coded, and a parent node
2646         search could escape this node. Also, one other piece to code to move nodes to the new <p> element
2647         should do nothing if the starting point for the selection is itself the starting block.
2648         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Similar changes, in spirit, to the above
2649         function, though the names and concepts are slightly different.
2650
2651 2004-12-10  Maciej Stachowiak  <mjs@apple.com>
2652
2653         Reviewed by Ken.
2654
2655         <rdar://problem/3907705> REGRESSION (172-173): DHTML menus are broken at hrweb.apple.com
2656         
2657         * khtml/dom/html_document.cpp:
2658         (HTMLDocument::nameableItems): New method, wrapper for HTMLCollection creation.
2659         * khtml/dom/html_document.h:
2660         * khtml/ecma/kjs_html.cpp:
2661         (KJS::HTMLDocument::tryGet): use doc.nameableItems(), not doc.all()!
2662         * khtml/html/html_miscimpl.cpp:
2663         (HTMLCollectionImpl::traverseNextItem): Added new DOC_NAMEABLE_ITEMS type, this represents
2664         the items that can be accessed directly as a document propery, in particular forms, images,
2665         objects, applets and embeds.
2666         (HTMLCollectionImpl::updateNameCache): Fix some nameCache/idCache confusion.
2667         (HTMLFormCollectionImpl::updateNameCache): Ditto.
2668         * khtml/html/html_miscimpl.h:
2669         (DOM::HTMLCollectionImpl::): Added new type.
2670
2671 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2672
2673         Reviewed by John
2674
2675         Fix for this bug:
2676         
2677         <rdar://problem/3914779> REGRESSION (Mail): Cannot arrow navigate to position before last character on text-wrapped line
2678
2679         * khtml/rendering/render_text.cpp:
2680         (RenderText::caretRect): Code was not detecting space at the end of a line correctly. Now it does.
2681
2682 2004-12-10  Ken Kocienda  <kocienda@apple.com>
2683
2684         Reviewed by John
2685
2686         Fix for this bug:
2687
2688         <rdar://problem/3914755> REGRESSION (Mail): Insertion point disappears after pasting paragraph
2689
2690         * khtml/editing/htmlediting.cpp:
2691         (khtml::ReplaceSelectionCommand::doApply): Selection could end up in a "placeholder" node
2692         that was removed from the document when pasting. This caused the disappearance. Now this
2693         is detected, and the selection is shifted to a node that is in the document.
2694
2695 2004-12-09  Richard Williamson   <rjw@apple.com>
2696
2697         Check to disable threaded decoding during
2698         layout tests wasn't invoking function, just checking address of 
2699         function, which would always return true.
2700         
2701         * kwq/WebCoreImageRendererFactory.m:
2702         (+[WebCoreImageRendererFactory shouldUseThreadedDecoding]):
2703
2704 2004-12-09  David Hyatt  <hyatt@apple.com>
2705
2706         Fix for 3892686, left/top overflow was not being propagated properly up to containing blocks because of a math
2707         error.
2708
2709         Also fix a bug I noticed on the same page where relative position offsets were not being added in properly for
2710         all inlines when repainting.
2711         
2712         Reviewed by rjw
2713
2714         * khtml/rendering/render_block.cpp:
2715         (khtml::RenderBlock::layoutBlockChildren):
2716         * khtml/rendering/render_flow.cpp:
2717         (RenderFlow::getAbsoluteRepaintRect):
2718
2719 2004-12-09  David Hyatt  <hyatt@apple.com>
2720
2721         Fix for 3867545, finance.yahoo.com lays out incorrectly.  Add a quirk that will prevent tables from moving
2722         down below floats when there is insufficient space.  Instead we will match Gecko and just spill out of the
2723         containing block to the right.  This appears to be the more common desired behavior, despite being wrong.
2724         WinIE sometimes wraps and sometimes doesn't, but it's really hard for us to match its inconsistency.
2725         
2726         Reviewed by john
2727
2728         * khtml/rendering/render_block.cpp:
2729         (khtml::RenderBlock::getClearDelta):
2730         * layout-tests/apple-only/base/www.cnn.com/index-expected.txt:
2731         * layout-tests/apple-only/base/www.ebay.com/index-expected.txt:
2732         * layout-tests/apple-only/base/www.excite.com/index-expected.txt:
2733         * layout-tests/fast/block/margin-collapse/102-expected.txt:
2734         * layout-tests/fast/block/margin-collapse/102.html:
2735
2736 2004-12-09  Richard Williamson   <rjw@apple.com>
2737
2738         Fixed <rdar://problem/3914078> worldclock crashing gc related
2739
2740         Use ProtectedValue for Context2D instance members.
2741
2742         Reviewed by Maciej.
2743
2744         * khtml/ecma/kjs_html.h:
2745
2746 2004-12-09  John Sullivan  <sullivan@apple.com>
2747
2748         Reviewed by Dave.
2749         
2750         - fixed <rdar://problem/3731099> Move AXTitle string for image elements to AXDescription
2751
2752         * kwq/KWQAccObject.mm:
2753         (-[KWQAccObject title]): moved image alt tag code out of here
2754         (-[KWQAccObject accessibilityDescription]): moved image alt tag code into this new method
2755         (-[KWQAccObject accessibilityAttributeNames]): include AXDescription in the set of attributes
2756         that ordinary elements return; this means that ordinary elements that aren't images will return
2757         a nil description, which isn't ideal, but is in keeping with the way the rest of these attributes
2758         work here.
2759         (-[KWQAccObject accessibilityAttributeValue:]):
2760         call accessibilityDescription when asked for AXDescription
2761
2762 2004-12-09  Ken Kocienda  <kocienda@apple.com>
2763
2764         Reviewed by Harrison
2765
2766         Fix for this bug:
2767         
2768         <rdar://problem/3910425> REGRESSION (Mail): Crash in ReplaceSelectionCommand; selection is empty, leading to null deref
2769
2770         * khtml/editing/htmlediting.cpp:
2771         (khtml::MoveSelectionCommand::doApply): The node representing the destination for the move may have
2772         been deleted. If this is the case, set the destination to the node the delete command provides in
2773         its ending selection.
2774
2775 === Safari-175 ===
2776
2777 2004-12-09  Ken Kocienda  <kocienda@apple.com>
2778
2779         Reviewed by John
2780         
2781         Fix for this bug:
2782         
2783         <rdar://problem/3912841> REGRESSION (173-TOT): Some images report 0x0 dimensions on layout tests, causes spurious test failures
2784
2785         The new threaded image decoding capability can throw off layout tests. The issue is that the decoding
2786         callback may not be delivered before the program asks for the dimensions of an image in order to
2787         wrote the layout dimensions. More generally, I think we need to ensure that there are no races in
2788         layout tests, so I have added a flag to the render tree debug code that we can set when debugging.
2789
2790         * kwq/KWQRenderTreeDebug.cpp:
2791         (debuggingRenderTree): New function. Returns flag which tells whether the program is debugging the render tree.
2792         (externalRepresentation): Sets debuggingRenderTree flag to true;
2793         * kwq/KWQRenderTreeDebug.h:
2794         * kwq/WebCoreImageRendererFactory.m:
2795         (+[WebCoreImageRendererFactory shouldUseThreadedDecoding]): Checks debuggingRenderTree flag and will not
2796         do threaded decoding in any case if the flag is set.
2797
2798 2004-12-09  Chris Blumenberg  <cblu@apple.com>
2799
2800         Fix for busting XMLHTTPRequest.
2801
2802         Reviewed by kocienda.
2803
2804         * khtml/misc/loader.cpp:
2805         (Loader::servePendingRequests): pass true for deliverAllData
2806         * kwq/KWQKJob.h:
2807         (KIO::get): take deliverAllData param
2808         (KIO::http_post): ditto
2809         * kwq/KWQKJobClasses.h:
2810         * kwq/KWQKJobClasses.mm:
2811         (KIO::TransferJob::TransferJob): if deliverAllData, create signal with data param
2812         (KIO::TransferJob::emitResult): if deliverAllData, call signal with data param
2813
2814 2004-12-09  Ken Kocienda  <kocienda@apple.com>
2815
2816         Reviewed by John
2817
2818         <rdar://problem/3911011> REGRESSION (Mail): Spaces at end of line causing word wrap lost when copied/pasted
2819
2820         * khtml/xml/dom_nodeimpl.cpp:
2821         (NodeImpl::renderedText): Fixed the code so that spaces at the end of lines are not skipped.
2822
2823 2004-12-07  Richard Williamson   <rjw@apple.com>
2824
2825         Support threaded image decoding on machines w/ > 2 CPUs.
2826
2827         Reviewed by Maciej and Chris.
2828
2829         * khtml/misc/loader.cpp:
2830         (CachedImageCallback::notifyUpdate):
2831         (CachedImageCallback::notifyFinished):
2832         (CachedImageCallback::notifyDecodingError):
2833         (CachedImageCallback::handleError):
2834         (CachedImageCallback::clear):
2835         (CachedImage::CachedImage):
2836         (CachedImage::clear):
2837         (CachedImage::data):
2838         (CachedImage::checkNotify):
2839         (Loader::servePendingRequests):
2840         (Loader::slotFinished):
2841         (Loader::numRequests):
2842         (Loader::cancelRequests):
2843         (Loader::removeBackgroundDecodingRequest):
2844         * khtml/misc/loader.h:
2845         (khtml::CachedImageCallback::CachedImageCallback):
2846         (khtml::CachedImageCallback::ref):
2847         (khtml::CachedImageCallback::deref):
2848         (khtml::CachedImage::decoderCallback):
2849         * khtml/rendering/render_object.cpp:
2850         (RenderObject::setPixmap):
2851         * kwq/KWQPixmap.h:
2852         * kwq/KWQPixmap.mm:
2853         (-[WebImageCallback initWithCallback:khtml::]):
2854         (-[WebImageCallback _commonTermination]):
2855         (-[WebImageCallback dealloc]):
2856         (-[WebImageCallback finalize]):
2857         (-[WebImageCallback notify]):
2858         (-[WebImageCallback setImageSourceStatus:]):
2859         (-[WebImageCallback status]):
2860         (QPixmap::shouldUseThreadedDecoding):
2861         (QPixmap::receivedData):
2862         * kwq/WebCoreImageRenderer.h:
2863         * kwq/WebCoreImageRendererFactory.h:
2864         * kwq/WebCoreImageRendererFactory.m:
2865         (+[WebCoreImageRendererFactory shouldUseThreadedDecoding]):
2866         (+[WebCoreImageRendererFactory setShouldUseThreadedDecoding:]):
2867
2868 2004-12-07  Ken Kocienda  <kocienda@apple.com>
2869
2870         Reviewed by John
2871
2872         * khtml/editing/htmlediting.cpp:
2873         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Fix a problem with my
2874         change in thei code yesterday. Call to insertBlockPlaceholderIfNeeded() must be done
2875         after new block has been inserted, otherwise a crash can result. Shuffle down call 
2876         to insertBlockPlaceholderIfNeeded() a couple of lines (where the node is inserted), 
2877         and all is good.
2878
2879 2004-12-07  Ken Kocienda  <kocienda@apple.com>
2880
2881         Reviewed by John
2882
2883         Fix for this bug:
2884         
2885         <rdar://problem/3907422> REGRESSION (Mail): Pasting quoted content can place content after body element
2886
2887         * khtml/editing/htmlediting.cpp:
2888         (khtml::ReplaceSelectionCommand::doApply): Detect when the body element is the "reference block" used
2889         for determining the location for inserting content. Do not allow an insert before or after if the
2890         reference block is the body. Perform insertNodeAt(0) and appendNode, respectively, in the block-is-body case.
2891         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt: Added.
2892         * layout-tests/editing/inserting/insert-3907422-fix.html: Added.
2893
2894 2004-12-07  Darin Adler  <darin@apple.com>
2895
2896         Reviewed by Don.
2897
2898         - fixed <rdar://problem/3908701> REGRESSION: Cursor does not change to "hand" over active links
2899
2900         * kwq/KWQEvent.mm: (positionForEvent): Add NSMouseMoved to list of events that have mouse location.
2901
2902 2004-12-07  Ken Kocienda  <kocienda@apple.com>
2903
2904         Reviewed by John
2905
2906         Changed name of constant from KHTMLInterchangeNewline to AppleInterchangeNewline.
2907         I discussed this with Hyatt and he agreed that going with "Apple" names was OK.
2908
2909         * khtml/editing/html_interchange.h: Name change, as described above.
2910         * khtml/editing/htmlediting.cpp:
2911         (khtml::ReplacementFragment::isInterchangeNewlineComment): Ditto.
2912         * khtml/xml/dom2_rangeimpl.cpp:
2913         (DOM::RangeImpl::toHTML): Ditto.
2914
2915 2004-12-07  Ken Kocienda  <kocienda@apple.com>
2916
2917         Reviewed by me
2918         
2919         Added a couple more layout tests.
2920
2921         * layout-tests/editing/deleting/delete-line-013-expected.txt: Added.
2922         * layout-tests/editing/deleting/delete-line-013.html: Added.
2923         * layout-tests/editing/deleting/delete-line-014-expected.txt: Added.
2924         * layout-tests/editing/deleting/delete-line-014.html: Added.
2925
2926 2004-12-06  Maciej Stachowiak  <mjs@apple.com>
2927
2928         Reviewed by Hyatt.
2929
2930         - fixed <rdar://problem/3906974> assertion failure in QWidget::beforeMouseDown clicking on <select multiple>
2931         
2932         * kwq/KWQListBox.mm:
2933         (QListBox::QListBox): Initialize KWQListBoxScrollView with this.
2934         (-[KWQListBoxScrollView initWithListBox:]): Make this class a KWQWidgetHolder.
2935         (-[KWQListBoxScrollView widget]): See above.
2936         (-[KWQTableView mouseDown:]): Pass outerView rather than self to beforeMouseDown and
2937         afterMouseDown, to avoid triggering an assertion failure.
2938
2939 2004-12-06  David Hyatt  <hyatt@apple.com>
2940
2941         Fix for 3615411, the linesAppended optimization was old and broken, and it's easier with the new code fixes
2942         made by me, kocienda and harrison to just remove it.
2943         
2944         Reviewed by mjs
2945
2946         * khtml/rendering/bidi.cpp:
2947         (khtml::RenderBlock::layoutInlineChildren):
2948         * khtml/rendering/render_block.cpp:
2949         (khtml:::RenderFlow):
2950         * khtml/rendering/render_block.h:
2951         * khtml/rendering/render_flow.cpp:
2952         (RenderFlow::dirtyLinesFromChangedChild):
2953
2954 2004-12-06  David Hyatt  <hyatt@apple.com>
2955
2956         Fix for 3787133, some web pages print with many blank pages.  Make sure to use the real page print rect and
2957         not a damage rect that can be changed when intersected with the clip regions of the web page.
2958         
2959         Reviewed by john
2960
2961         * khtml/rendering/render_canvas.h:
2962         (khtml::RenderCanvas::printRect):
2963         (khtml::RenderCanvas::setPrintRect):
2964         * khtml/rendering/render_flow.cpp:
2965         (RenderFlow::paintLines):
2966         * khtml/rendering/render_list.cpp:
2967         (RenderListMarker::paint):
2968         * kwq/KWQKHTMLPart.mm:
2969         (KWQKHTMLPart::adjustPageHeight):
2970
2971 2004-12-06  David Harrison  <harrison@apple.com>
2972
2973         Reviewed by Ken Kocienda and Dave Hyatt (OOPS!).
2974
2975                 <rdar://problem/3849947> Typing after pasting line does not appear until after window resize.
2976                 
2977                 
2978         * khtml/rendering/render_flow.cpp:
2979         (RenderFlow::dirtyLinesFromChangedChild):
2980                 Dirty the line above because new child can inval the cached line break position of previous line.
2981
2982 2004-12-06  David Hyatt  <hyatt@apple.com>
2983
2984         Fix for 3254464, radio buttons do not work for quiz on netscape.com.  Left/top overflow needed to be implemented.
2985         This also fixes 3106907, link hover color only partially set on rollover and the more general architecture bug
2986         3126929, handle top/left overflow.
2987
2988         This patch also fixes 3902891, scroll bar of position:fixed content moves when a page is scrolled.
2989
2990         Finally, the Emerson regression 3869718 (error involving computing the rightmost/lowest position of overflow:auto
2991         regions and web pages) has been fixed.
2992         
2993         Reviewed by mjs
2994
2995         * khtml/rendering/bidi.cpp:
2996         (khtml::RenderBlock::computeHorizontalPositionsForLine):
2997         (khtml::RenderBlock::checkLinesForOverflow):
2998         * khtml/rendering/render_block.cpp:
2999         (khtml:::RenderFlow):
3000         (khtml::RenderBlock::overflowHeight):
3001         (khtml::RenderBlock::overflowWidth):
3002         (khtml::RenderBlock::overflowLeft):
3003         (khtml::RenderBlock::overflowTop):
3004         (khtml::RenderBlock::overflowRect):
3005         (khtml::RenderBlock::layoutBlock):
3006         (khtml::RenderBlock::layoutBlockChildren):
3007         (khtml::RenderBlock::paint):
3008         (khtml::RenderBlock::floatRect):
3009         (khtml::RenderBlock::lowestPosition):
3010         (khtml::RenderBlock::rightmostPosition):
3011         (khtml::RenderBlock::leftmostPosition):
3012         (khtml::RenderBlock::nodeAtPoint):
3013         * khtml/rendering/render_block.h:
3014         * khtml/rendering/render_box.h:
3015         (khtml::RenderBox::borderBox):
3016         (khtml::RenderBox::borderTopExtra):
3017         (khtml::RenderBox::borderBottomExtra):
3018         * khtml/rendering/render_layer.cpp:
3019         (RenderLayer::paintScrollbars):
3020         (mustExamineRenderer):
3021         (RenderLayer::intersectsDamageRect):
3022         (RenderLayer::containsPoint):
3023         * khtml/rendering/render_line.cpp:
3024         (khtml::InlineFlowBox::placeBoxesHorizontally):
3025         (khtml::InlineFlowBox::verticallyAlignBoxes):
3026         * khtml/rendering/render_line.h:
3027         (khtml::InlineBox::leftOverflow):
3028         (khtml::InlineBox::rightOverflow):
3029         (khtml::InlineFlowBox::setVerticalOverflowPositions):
3030         (khtml::RootInlineBox::RootInlineBox):
3031         (khtml::RootInlineBox::leftOverflow):
3032         (khtml::RootInlineBox::rightOverflow):
3033         (khtml::RootInlineBox::setVerticalOverflowPositions):
3034         (khtml::RootInlineBox::setHorizontalOverflowPositions):
3035         * khtml/rendering/render_object.h:
3036         (khtml::RenderObject::borderBox):
3037         (khtml::RenderObject::overflowLeft):
3038         (khtml::RenderObject::overflowTop):
3039         (khtml::RenderObject::overflowRect):
3040         (khtml::RenderObject::floatRect):
3041         * khtml/rendering/render_table.cpp:
3042         (RenderTable::layout):
3043         (RenderTable::paint):
3044         (RenderTable::paintBoxDecorations):
3045         (RenderTable::calcMinMaxWidth):
3046         * khtml/rendering/render_table.h:
3047         (khtml::RenderTableCell::borderTopExtra):
3048         (khtml::RenderTableCell::borderBottomExtra):
3049         * kwq/KWQRect.h:
3050         * kwq/KWQRect.mm:
3051         (QRect::inflate):
3052
3053 2004-12-06  Maciej Stachowiak  <mjs@apple.com>
3054
3055         Reviewed by John.
3056
3057         - fixed <rdar://problem/3903797> scripts can cause other frames/windows to execute arbitrary script using javascript: URLs
3058         
3059         I changed all unprotected places that can navigate a different
3060         window or frame from script to check for a javascript: URL, and if
3061         found, to check for safety using cross-site-script rules. 
3062
3063         I considered a few other possible exploits and made no change:
3064
3065         - document.location is already protected because the document
3066         object itself is protected
3067
3068         - frame.src, frame.location, iframe.src and targetted links are
3069         all safe because setting the URL of a frame to a javascript: URL
3070         executes the script in the context of the parent
3071
3072         * khtml/ecma/kjs_window.cpp:
3073         (WindowFunc::tryCall):
3074         (Location::put):
3075         (LocationFunc::tryCall):
3076
3077 2004-12-06  Ken Kocienda  <kocienda@apple.com>
3078
3079         Reviewed by Maciej
3080
3081         Fix for this bug:
3082         
3083         <rdar://problem/3890955> 8A314: Forward delete sometimes fails to delete the selected quoted text
3084
3085         * khtml/editing/htmlediting.cpp:
3086         (khtml::DeleteSelectionCommand::handleSpecialCaseBRDelete): Fixed bonehead coding mistake in the
3087         check for one of the special cases being checked for in this function. The specific case 
3088         intends to check for a selection that is only a <br> after a block ends (as in </div><br>). If it
3089         sees such markup, it deletes only the <br> and bails. However, this code would run in *any*
3090         case where a selection ended in a <br> after a block and would not delete any part of the
3091         selection preceding the <br>. Bad. I have tightened the check to see that only a <br> is
3092         selected.
3093
3094         Fixing the bug above was accomplished with an additional call to DOM::Position::downstream. This
3095         new use of the function exposed this bug:
3096         
3097         <rdar://problem/3907666> Incorrectly coded loop in Position::downstream can lead to infinite loop
3098
3099         * khtml/xml/dom_position.cpp:
3100         (DOM::Position::downstream): I am ashamed of my first cut at this. Rewrote the loop so it does 
3101         not have this fatal flaw. It is a much better design as well.
3102         
3103         * layout-tests/editing/deleting/delete-3800834-fix-expected.txt: Changes made this test
3104         have what I consider to be a better result. Going with it.
3105
3106 2004-12-06  Chris Blumenberg  <cblu@apple.com>
3107
3108         Fixed: <rdar://problem/3871718> REGRESSION (125-168): text marked bold with font that does not have bold variant copies as non-bold
3109
3110         Reviewed by hyatt.
3111
3112         * kwq/DOM.mm:
3113         (-[DOMElement _font]): new SPI for AppKit
3114         * kwq/DOMPrivate.h:
3115
3116 2004-12-06  Darin Adler  <darin@apple.com>
3117
3118         Reviewed by Maciej.
3119
3120         - fixed <rdar://problem/3906327> Select All of a large document is slow (>15 secs on my machine for attached specimen)
3121
3122         * kwq/KWQScrollView.mm: (QScrollView::updateContents): Intersect with visibleRect before calling through
3123         to NSView to dirty; NSView could also be more efficient in this case (I filed 3906343).
3124
3125 2004-12-06  John Sullivan  <sullivan@apple.com>
3126
3127         Darin found what appears to be the real leak that we were falsely blaming
3128         on the 'leaks' tool (3880245). I made the change, and ran layout tests and PLT to make
3129         sure nothing barfed.
3130
3131         * khtml/css/cssparser.cpp:
3132         (CSSParser::parseValue):
3133         call clearProperties() instead of just setting numParsedProperties to 0
3134         (CSSParser::parseDeclaration):
3135         ditto
3136         (CSSParser::createStyleDeclaration):
3137         ditto
3138
3139 2004-12-06  Ken Kocienda  <kocienda@apple.com>
3140
3141         Reviewed by me
3142         
3143         New layout tests.
3144
3145         * layout-tests/editing/inserting/insert-div-001-expected.txt: Added.
3146         * layout-tests/editing/inserting/insert-div-001.html: Added.
3147         * layout-tests/editing/inserting/insert-div-002-expected.txt: Added.
3148         * layout-tests/editing/inserting/insert-div-002.html: Added.
3149         * layout-tests/editing/inserting/insert-div-003-expected.txt: Added.
3150         * layout-tests/editing/inserting/insert-div-003.html: Added.
3151         * layout-tests/editing/inserting/insert-div-004-expected.txt: Added.
3152         * layout-tests/editing/inserting/insert-div-004.html: Added.
3153         * layout-tests/editing/inserting/insert-div-005-expected.txt: Added.
3154         * layout-tests/editing/inserting/insert-div-005.html: Added.
3155         * layout-tests/editing/inserting/insert-div-006-expected.txt: Added.
3156         * layout-tests/editing/inserting/insert-div-006.html: Added.
3157         * layout-tests/editing/inserting/insert-div-007-expected.txt: Added.
3158         * layout-tests/editing/inserting/insert-div-007.html: Added.
3159         * layout-tests/editing/inserting/insert-div-008-expected.txt: Added.
3160         * layout-tests/editing/inserting/insert-div-008.html: Added.
3161         * layout-tests/editing/inserting/insert-div-009-expected.txt: Added.
3162         * layout-tests/editing/inserting/insert-div-009.html: Added.
3163
3164 2004-12-06  Ken Kocienda  <kocienda@apple.com>
3165
3166         Reviewed by Harrison
3167
3168         Fix for this bug:
3169         
3170         <rdar://problem/3906948> REGRESSION (Mail): Insert paragraph code can make the insertion point "stick" in place.
3171
3172         * khtml/editing/htmlediting.cpp:
3173         (khtml::InsertParagraphSeparatorCommand::doApply): Call insertBlockPlaceholderIfNeeded(), passing block
3174         being added to this function. This ensures that the added block has a height.
3175         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
3176
3177 2004-12-06  Ken Kocienda  <kocienda@apple.com>
3178  
3179         Reviewed by John
3180         
3181         * khtml/dom/dom_string.cpp:
3182         (DOM::DOMString::substring): Expose method already on DOMStrimgImpl.
3183         * khtml/dom/dom_string.h: Ditto.
3184         * khtml/editing/htmlediting.cpp:
3185         (khtml::CompositeEditCommand::rebalanceWhitespace): New helper to create and execute a
3186         RebalanceWhitespaceCommand instance.
3187         (khtml::DeleteSelectionCommand::doApply): Call rebalanceWhitespace() after running command.
3188         (khtml::InsertLineBreakCommand::doApply): Ditto.
3189         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
3190         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
3191         (khtml::InsertTextCommand::input): Ditto.
3192         (khtml::RebalanceWhitespaceCommand::RebalanceWhitespaceCommand): New command.
3193         (khtml::RebalanceWhitespaceCommand::~RebalanceWhitespaceCommand): Ditto.
3194         (khtml::RebalanceWhitespaceCommand::doApply): Ditto.
3195         (khtml::RebalanceWhitespaceCommand::doUnapply): Ditto.
3196         (khtml::RebalanceWhitespaceCommand::preservesTypingStyle): Ditto.
3197         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Ditto.
3198         * khtml/editing/htmlediting.h: Ditto.
3199         (khtml::RebalanceWhitespaceCommand::): Ditto.
3200
3201 2004-12-05  Darin Adler  <darin@apple.com>
3202
3203         - fixed small problem in my check-in from yesterday
3204
3205         * kwq/KWQEvent.mm:
3206         (positionForEvent): Get location from event without raising exception if it's the wrong type.
3207         (clickCountForEvent): Same, for clickCount.
3208         (QMouseEvent::QMouseEvent): Use the new helper functions so this can be constructed even with
3209         the wrong type of NSEvent. Required for cases where a keyboard event causes a "click" and we need
3210         to synthesize a QMouseEvent for KHTML internal use, using the key down NSEvent.
3211
3212 2004-12-04  Darin Adler  <darin@apple.com>
3213
3214         Reviewed by John.
3215
3216         - fixed <rdar://problem/3878329> REGRESSION (169-170): colors are wrong for my.yahoo.com due to CSS background parsing changes
3217
3218         * khtml/css/cssparser.cpp: (CSSParser::parseBackgroundShorthand): Changed function so it doesn't rely on the position
3219         attribute being at the end of the array and then moved position attribute before color attribute so it takes precedence.
3220         Since "0" can be both the X coordinate of a position and a legal color (meaning black), we need to do position first.
3221
3222         - fixed <rdar://problem/3760869> click events for input type=button or type=checkbox don't have flags like shiftKey set
3223
3224         * khtml/rendering/render_form.h: Remove unused RenderFormElement fields.
3225         * khtml/rendering/render_form.cpp:
3226         (RenderFormElement::RenderFormElement): Take out code to set a bunch of unused fields.
3227         (RenderFormElement::slotClicked): Change to create the QMouseEvent from the actual mouse event rather than
3228         creating it with all the flags set to 0, using the new QMouseEvent constructor that does so.
3229
3230         * kwq/KWQEvent.h: Added constructor that takes no parameters which uses the current event from AppKit.
3231         Made the click count getter const and added an isDoubleClick that matches the logic used elsewhere.
3232         Added a fixState helper method so the constructors can save code.
3233         * kwq/KWQEvent.mm:
3234         (QMouseEvent::QMouseEvent): Factored out the state-fixing code that was in the two existing constructors
3235         and added a third constructor that uses the "current event" from AppKit (used above).
3236         (QMouseEvent::fixState): Compute state and click count based on event type.
3237
3238         - fixed first symptom of <rdar://problem/3830936> REGRESSION (125-165): crash due to null font family, hang at changeforamerica.com
3239
3240         * kwq/KWQFontFamily.mm: (KWQFontFamily::getNSFamily): Handle empty strings specially so we don't run into trouble when
3241         the family name is a null string. This prevents the crash, but there are still other problems that may have the same
3242         underlying cause in CSS.
3243
3244         - fixed <rdar://problem/3829808> Safari crashes when adding a DOM node that was removed from an XMLHTTP request result
3245
3246         * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::insertedIntoDocument):
3247         Added nil check before calling scheduleRelayout. This is new code so the nil-dereference is a recent regression.
3248
3249 2004-12-03  Chris Blumenberg  <cblu@apple.com>
3250
3251         New fixes for:
3252         <rdar://problem/3685766> WebDataSource is missing subresources when they use cached WebCore data
3253         <rdar://problem/3722434> REGRESSION?: Assertion failure trying to drag image in iframe (itapema.sc.gov.br)
3254         <rdar://problem/3903173> REGRESSION (172-TOT): assertion failure and crash in slotAllData logging into hotmail account
3255         <rdar://problem/3902749> REGRESSION (Tiger): missing image symbol does not appear
3256
3257         Reviewed by darin, rjw, kocienda.
3258
3259         * khtml/misc/loader.cpp:
3260         (CachedObject::~CachedObject):
3261         (CachedCSSStyleSheet::checkNotify):
3262         (Loader::servePendingRequests):
3263         (Loader::slotFinished):
3264         (Loader::slotReceivedResponse):
3265         (Cache::requestImage):
3266         (Cache::requestScript):
3267         * khtml/misc/loader.h:
3268         (khtml::CachedObject::CachedObject):
3269         (khtml::CachedObject::response):
3270         (khtml::CachedObject::allData):
3271         * kwq/KWQKJobClasses.h:
3272         * kwq/KWQKJobClasses.mm:
3273         (KIO::TransferJobPrivate::TransferJobPrivate):
3274         (KIO::TransferJobPrivate::~TransferJobPrivate):
3275         (KIO::TransferJob::TransferJob):
3276         (KIO::TransferJob::assembleResponseHeaders):
3277         (KIO::TransferJob::retrieveCharset):
3278         (KIO::TransferJob::emitResult):
3279         (KIO::TransferJob::emitReceivedResponse):
3280         * kwq/KWQLoader.h:
3281         * kwq/KWQLoader.mm:
3282         (KWQHeaderStringFromDictionary):
3283         (KWQCheckCacheObjectStatus):
3284         (KWQIsResponseURLEqualToURL):
3285         (KWQResponseURL):
3286         (KWQResponseMIMEType):
3287         (KWQCacheObjectExpiresTime):
3288         (khtml::CachedObject::setResponse):
3289         (khtml::CachedObject::setAllData):
3290         * kwq/KWQPixmap.h:
3291         * kwq/KWQPixmap.mm:
3292         (QPixmap::QPixmap):
3293         * kwq/KWQResourceLoader.mm:
3294         (-[KWQResourceLoader finishJobAndHandle:]):
3295         (-[KWQResourceLoader cancel]):
3296         (-[KWQResourceLoader reportError]):
3297         (-[KWQResourceLoader finishWithData:]):
3298         * kwq/KWQSignal.h:
3299         * kwq/KWQSignal.mm:
3300         (KWQSignal::call):
3301         * kwq/KWQSlot.h:
3302         * kwq/KWQSlot.mm:
3303         (KWQSlot::KWQSlot):
3304         (KWQSlot::call):
3305         * kwq/WebCoreBridge.h:
3306         * kwq/WebCoreResourceLoader.h:
3307
3308 2004-12-04  Darin Adler  <darin@apple.com>
3309
3310         Reviewed by John.
3311
3312         - fixed <rdar://problem/3876093> REGRESSION (166-167): Setting slider control's value from JavaScript has no effect (breaks RSS)
3313
3314         * khtml/rendering/render_form.cpp:
3315         (RenderSlider::updateFromElement): Call setValue to update the value of the DOM element rather than
3316         modifying the m_value data member directly. We don't use m_value at all for sliders now, and in fact
3317         the code relies on the fact that m_value is null. Setting m_value to a non-null value was causing the bug.
3318         (RenderSlider::slotSliderValueChanged): Ditto.
3319
3320 2004-12-03  John Sullivan  <sullivan@apple.com>
3321
3322         Reviewed by Ken.
3323         
3324         - fixed <rdar://problem/3889411> REGRESSION (125-172): repro crash in 
3325         khtml::BackgroundLayer::cullEmptyLayers
3326
3327         * khtml/rendering/render_style.cpp:
3328         (BackgroundLayer::cullEmptyLayers):
3329         added missing nil check
3330
3331 === Safari-173 ===
3332
3333 2004-12-03  Ken Kocienda  <kocienda@apple.com>
3334
3335         Reviewed by me
3336
3337         Roll out some recent changes by Chris that caused a performance regression.
3338         Fix is in hand, but it is a little risky this close to a submission. So,
3339         we have decided to roll back the change with the regression and roll in
3340         the new code after we submit.
3341
3342         * khtml/css/cssproperties.c:
3343         (hash_prop):
3344         (findProp):
3345         * khtml/css/cssvalues.c:
3346         (hash_val):
3347         (findValue):
3348         * khtml/misc/htmlattrs.c:
3349         (hash_attr):
3350         (findAttr):
3351         * khtml/misc/htmltags.c:
3352         (hash_tag):
3353         (findTag):
3354         * khtml/misc/loader.cpp:
3355         (CachedObject::~CachedObject):
3356         (CachedObject::setResponse):
3357         (CachedCSSStyleSheet::checkNotify):
3358         (Loader::servePendingRequests):
3359         (Loader::slotFinished):
3360         (Loader::slotReceivedResponse):
3361         (Cache::requestImage):
3362         (Cache::requestScript):
3363         * khtml/misc/loader.h:
3364         (khtml::CachedObject::CachedObject):
3365         (khtml::CachedObject::response):
3366         * kwq/KWQKJobClasses.h:
3367         * kwq/KWQKJobClasses.mm:
3368         (KIO::TransferJobPrivate::TransferJobPrivate):
3369         (KIO::TransferJobPrivate::~TransferJobPrivate):
3370         (KIO::TransferJob::TransferJob):
3371         (KIO::TransferJob::assembleResponseHeaders):
3372         (KIO::TransferJob::retrieveCharset):
3373         (KIO::TransferJob::emitResult):
3374         (KIO::TransferJob::emitReceivedResponse):
3375         * kwq/KWQLoader.h:
3376         * kwq/KWQLoader.mm:
3377         (KWQHeaderStringFromDictionary):
3378         (KWQCheckCacheObjectStatus):
3379         (KWQRetainResponse):
3380         (KWQReleaseResponse):
3381         (KWQIsResponseURLEqualToURL):
3382         (KWQResponseURL):
3383         (KWQResponseMIMEType):
3384         (KWQResponseTextEncodingName):
3385         (KWQResponseHeaderString):
3386         (KWQCacheObjectExpiresTime):
3387         (KWQLoader::KWQLoader):
3388         * kwq/KWQPixmap.h:
3389         * kwq/KWQPixmap.mm:
3390         (QPixmap::QPixmap):
3391         * kwq/KWQResourceLoader.mm:
3392         (-[KWQResourceLoader finishJobAndHandle]):
3393         (-[KWQResourceLoader cancel]):
3394         (-[KWQResourceLoader reportError]):
3395         (-[KWQResourceLoader finish]):
3396         * kwq/KWQSignal.h:
3397         * kwq/KWQSignal.mm:
3398         (KWQSignal::call):
3399         * kwq/KWQSlot.h:
3400         * kwq/KWQSlot.mm:
3401         (KWQSlot::KWQSlot):
3402         (KWQSlot::call):
3403         * kwq/WebCoreBridge.h:
3404         * kwq/WebCoreResourceLoader.h:
3405
3406 2004-12-03  John Sullivan  <sullivan@apple.com>
3407
3408         Reviewed by Chris.
3409         
3410         - fixed <rdar://problem/3903990> can't tab to all items on www.google.com any more (other pages too?)
3411
3412         * kwq/KWQKHTMLPart.mm:
3413         (KWQKHTMLPart::nextKeyViewInFrameHierarchy):
3414         when checking whether we moved the focus to another view, make sure we didn't "move" it to
3415         our documentView, because that's no move at all.
3416
3417 2004-12-03  Darin Adler  <darin@apple.com>
3418
3419         Reviewed by Vicki.
3420
3421         - fixed <rdar://problem/3901109> REGRESSION (171-172): repro crash in DOM::NodeImpl::setChanged at chick-fil-a.com
3422
3423         * khtml/css/css_valueimpl.cpp: (DOM::CSSMutableStyleDeclarationImpl::CSSMutableStyleDeclarationImpl):
3424         Added missing initialization for base class and node pointer.
3425
3426         - fixed a few places that could leave dangling node pointers
3427
3428         * khtml/html/html_baseimpl.cpp: (HTMLBodyElementImpl::~HTMLBodyElementImpl):
3429         Clear out the node pointer when the node is destroyed.
3430         * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::~HTMLElementImpl): Ditto.
3431
3432 2004-12-03  Chris Blumenberg  <cblu@apple.com>
3433
3434         Fix for performance regression. My original patch added a signal for passing the data of a resource to its WebCore cache object. This patch passes the data with the preexisting "finished" symbol so we make less calls. 
3435         Fixed: <rdar://problem/3903173> REGRESSION (172-TOT): assertion failure and crash in slotAllData logging into hotmail account
3436
3437         Reviewed by rjw.
3438
3439         * khtml/misc/loader.cpp:
3440         (Loader::servePendingRequests): pass data param to slotFinished, removed allData signal
3441         (Loader::slotFinished): take data param
3442         * khtml/misc/loader.h:
3443         * kwq/KWQKJobClasses.h:
3444         * kwq/KWQKJobClasses.mm:
3445         (KIO::TransferJob::TransferJob): have m_result take a data param, removed m_allData
3446         (KIO::TransferJob::emitResult): take data param and pass it
3447         * kwq/KWQResourceLoader.mm:
3448         (-[KWQResourceLoader finishJobAndHandle:]): take data param and pass it
3449         (-[KWQResourceLoader cancel]): pass nil for data
3450         (-[KWQResourceLoader reportError]): ditto
3451         (-[KWQResourceLoader finishWithData:]): pass data
3452         * kwq/KWQSlot.mm:
3453         (KWQSlot::KWQSlot): pass data param to slotFinished
3454         (KWQSlot::call): added support for slotFinished_Loader, removed slotAllData
3455
3456 2004-12-03  Ken Kocienda  <kocienda@apple.com>
3457
3458         Reviewed by John
3459
3460         Did some clean up in the Position class as a result of trying to write some new layout
3461         tests and discovering a bug along the way.
3462
3463         I removed these three functions from the Position class:
3464         
3465         1. bool isFirstRenderedPositionOnLine() const;
3466         2. bool isLastRenderedPositionOnLine() const;
3467         3. static bool renderersOnDifferentLine(RenderObject *r1, long o1, RenderObject *r2, long o2);
3468         4. bool inFirstEditableInRootEditableElement() const;
3469
3470         The first two have replacements in the VisiblePosition class, and some code has been
3471         moved to use these new variants. The third function was a helper used only by these
3472         first two function, and can be removed as well. The fourth function was not used by anyone.
3473
3474         * khtml/editing/htmlediting.cpp:
3475         (khtml::InsertTextCommand::input): Change over to use VisiblePosition isFirstVisiblePositionOnLine().
3476         * khtml/editing/visible_position.cpp:
3477         (khtml::visiblePositionsOnDifferentLines): Added an additional check for blocks to this function.
3478         Incorrect results were being returned when asking about positions at the starts of blocks.
3479         * khtml/xml/dom_position.cpp:
3480         (DOM::Position::previousCharacterPosition): Change over to use VisiblePosition isFirstVisiblePositionOnLine().
3481         (DOM::Position::nextCharacterPosition): Change over to use VisiblePosition isLastVisiblePositionOnLine().
3482         (DOM::Position::rendersInDifferentPosition): Removed use of #3 helper in a log message. We can live without it.
3483         * khtml/xml/dom_position.h: Update header for deletions.
3484
3485 2004-12-03  Ken Kocienda  <kocienda@apple.com>
3486
3487         Reviewed by John
3488
3489         Terminology change in execCommand command identifiers. Specifically, the name of 
3490         "InsertNewline" command has been changed to "InsertLineBreak". This matches the 
3491         terminology used by AppKit. It is also more accurate, since the insertion of a
3492         "br" element is what the command does. The inspiration for this change is so the 
3493         -insertNewline AppKit method can be mapped to insert a new "div" element in 
3494         a document and avoid ambiguity with what the javascript editing command does.
3495         
3496         * khtml/editing/jsediting.cpp
3497         * layout-tests/editing/deleting/delete-tab-004.html
3498         * layout-tests/editing/editing.js
3499         * layout-tests/editing/inserting/insert-3654864-fix.html
3500         * layout-tests/editing/inserting/insert-3659587-fix.html
3501         * layout-tests/editing/inserting/insert-3775316-fix.html
3502         * layout-tests/editing/inserting/insert-3800346-fix.html
3503         * layout-tests/editing/inserting/insert-br-001.html
3504         * layout-tests/editing/inserting/insert-br-002.html
3505         * layout-tests/editing/inserting/insert-br-003.html
3506         * layout-tests/editing/inserting/insert-br-004.html
3507         * layout-tests/editing/inserting/insert-br-005.html
3508         * layout-tests/editing/inserting/insert-br-006.html
3509         * layout-tests/editing/inserting/insert-br-007.html
3510         * layout-tests/editing/inserting/insert-br-008.html
3511         * layout-tests/editing/inserting/insert-tab-004.html
3512         * layout-tests/editing/inserting/insert-text-with-newlines.html
3513         * layout-tests/editing/pasteboard/paste-text-010.html
3514
3515 2004-12-02  Ken Kocienda  <kocienda@apple.com>
3516
3517         Reviewed by John
3518
3519         Fix for this bug:
3520         
3521         <rdar://problem/3786362> REGRESSION (Mail): pasted text loses one newline
3522
3523         * khtml/editing/htmlediting.cpp:
3524         (khtml::InsertLineBreakCommand::doApply): Added check for strict mode before adding an extra br element
3525         at the end of a block. This is only necessary in quirks mode. Also, lower-case "br" used to make element.
3526         (khtml::ReplaceSelectionCommand::doApply): If the replacement adds a br element as the last element
3527         in a block and the document is in quirks mode, add an additional br to make the one in the 
3528         replacement content show up. This turns out to be much the same logic as is done in InsertLineBreakCommand.
3529         * layout-tests/editing/inserting/insert-3786362-fix-expected.txt: Added.
3530         * layout-tests/editing/inserting/insert-3786362-fix.html: Added.
3531
3532 2004-12-02  Richard Williamson   <rjw@apple.com>
3533
3534         Fixed <rdar://problem/3841332> REGRESSION (125.9-167u): repro crash in -[KWQPageState invalidate] involving .Mac images
3535
3536         Ensure that the document is cleared when leaving a non-HTML page.  This ensures that
3537         the b/f cache won't incorrectly trash the previous state when restoring.
3538
3539         Reviewed by John.
3540
3541         * kwq/WebCoreBridge.h:
3542         * kwq/WebCoreBridge.mm:
3543         (-[WebCoreBridge openURL:reload:contentType:refresh:lastModified:pageCache:]):
3544         (-[WebCoreBridge canCachePage]):
3545         (-[WebCoreBridge clear]):
3546
3547 2004-12-02  Ken Kocienda  <kocienda@apple.com>
3548
3549         Reviewed by Richard
3550
3551         Fix for this bug:
3552         
3553         <rdar://problem/3857775> 8A293: Mail.app crashes converting copy-pasted text into plain text
3554
3555         * khtml/xml/dom2_rangeimpl.cpp:
3556         (DOM::RangeImpl::commonAncestorContainer): Return the document element if no common ancestor container
3557         was found. This can happen in cases where the DOM was built from malformed markup (as in the case
3558         of this bug where there is content after the body tag). Did a little code clean up as well.
3559         (DOM::RangeImpl::compareBoundaryPoints): Made code more robust by adding some null checks.
3560
3561 2004-12-02  Ken Kocienda  <kocienda@apple.com>
3562
3563         Reviewed by Chris
3564
3565         Fix for this bug:
3566         
3567         <rdar://problem/3668157> REGRESSION (Mail): shift-click deselects when selection was created right-to-left
3568
3569         * khtml/khtml_part.cpp:
3570         (KHTMLPart::handleMousePressEventSingleClick): Use RangeImpl::compareBoundaryPoints
3571         to figure out which end of the selection to extend.
3572
3573 2004-12-02  David Harrison  <harrison@apple.com>
3574
3575         Reviewed by Ken Kocienda.
3576
3577                 <rdar://problem/3834917> REGRESSION (Mail): double-clicking blank line selects end of previous line
3578                 Fixed originally reported bug plus the case of double-clicking whitespace at the beginning of a line, which has a similar result.
3579
3580         * khtml/editing/visible_text.cpp:
3581         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator):
3582         (khtml::SimplifiedBackwardsTextIterator::handleTextNode):
3583         (khtml::SimplifiedBackwardsTextIterator::handleReplacedElement):
3584         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode):
3585         (khtml::SimplifiedBackwardsTextIterator::emitCharacter):
3586         Distinguish BR from whitespace.
3587         * khtml/editing/visible_text.h:
3588         Distinguish BR from whitespace.
3589         * khtml/editing/visible_units.cpp:
3590         (khtml::previousWordBoundary):
3591         Use UPSTREAM visible position now that SimplifiedBackwardsTextIterator distinguishes BR from whitespace.  Otherwise, double-clicking at end of line would result in caret selection at start of next line. 
3592
3593 2004-12-02  Ken Kocienda  <kocienda@apple.com>
3594
3595         Reviewed by John
3596
3597         Fix for this bug:
3598         
3599         <rdar://problem/3900996> Crash dragging past end of contentEditable DIV, at DOM::RangeImpl::pastEndNode() const + 24
3600
3601         * khtml/xml/dom_position.cpp:
3602         (DOM::Position::equivalentRangeCompliantPosition): Fixed this function so that it constrains the offset
3603         of the position to be >= 0 and <= number of kids of its node. Not doing this constraining led to a DOM
3604         exception trying to use a Position returned from this function to set the boundary point of a Range (which
3605         eventually led to the crash). Since this crash happened, it seems like this function was failing in its
3606         contract to return a range-compliant position, hence the need for this fix.
3607
3608 2004-12-01  Ken Kocienda  <kocienda@apple.com>
3609
3610         Reviewed by me
3611
3612         Moving code only.
3613
3614         * khtml/editing/htmlediting.cpp: Move ReplaceSelectionCommand into alphabetical order with
3615         regard to other editing commands. The class had a name change ages ago, and it was never
3616         moved.
3617         * khtml/editing/htmlediting.h: Ditto.
3618
3619 2004-12-01  Ken Kocienda  <kocienda@apple.com>
3620
3621         Reviewed by Hyatt
3622         
3623         Some improvements for paste, including some new code to annotate
3624         whitespace when writing to the pasteboard to ensure that the meaning
3625         of the markup on the pasteboard is unambiguous.
3626         
3627         There is also new code for reading this annotated markup from the pasteboard,
3628         removing the nodes that were added only to prevent ambiguity.
3629
3630         * WebCore.pbproj/project.pbxproj: Added html_interchange.h and html_interchange.cpp files.
3631         The header should have been added earlier, but I did not do so.
3632         * khtml/editing/html_interchange.cpp: Added.
3633         (convertHTMLTextToInterchangeFormat):
3634         * khtml/editing/html_interchange.h: Added some new constants for use with whitespace annotations.
3635         * khtml/editing/htmlediting.cpp:
3636         (khtml::ReplacementFragment::ReplacementFragment): Now looks for and removes annotations added for whitespace.
3637         Also fixed a bug in the code that counts blocks in a fragment.
3638         (khtml::ReplacementFragment::isInterchangeConvertedSpaceSpan): New helper. Recognizes annotation spans.
3639         (khtml::ReplacementFragment::insertNodeBefore): New helper.
3640         (khtml::ReplaceSelectionCommand::doApply): Fixed a bug in the code that sets the start position
3641         for the replacement after deleting. This was causing a bug when pasting at the end of a block.
3642         * khtml/editing/htmlediting.h: Add some new declarations.
3643         * khtml/xml/dom2_rangeimpl.cpp:
3644         (DOM::RangeImpl::toHTML): Calls to startMarkup now pass true for the new annotate flag.
3645         * khtml/xml/dom_nodeimpl.cpp:
3646         (NodeImpl::stringValueForRange): New helper.
3647         (NodeImpl::renderedText): New helper to return only the rendered text in a node.
3648         (NodeImpl::startMarkup): Now takes an additional flag to control whether interchange annotations
3649         should be added. Called by the paste code.
3650         * khtml/xml/dom_nodeimpl.h: Added and modified function declarations.
3651
3652         New test to check the khtml::ReplaceSelectionCommand::doApply fix.
3653         * layout-tests/editing/pasteboard/paste-text-010-expected.txt: Added.
3654         * layout-tests/editing/pasteboard/paste-text-010.html: Added.
3655
3656 2004-11-30  Chris Blumenberg  <cblu@apple.com>
3657
3658         * ChangeLog: removed conflict marker
3659
3660 2004-11-30  Chris Blumenberg  <cblu@apple.com>
3661
3662         Fixed:
3663         <rdar://problem/3685766> WebDataSource is missing subresources when they use cached WebCore data
3664         <rdar://problem/3722434> REGRESSION?: Assertion failure trying to drag image in iframe (itapema.sc.gov.br)
3665
3666         Reviewed by darin.
3667
3668         * khtml/misc/loader.cpp:
3669         (CachedObject::~CachedObject): release m_allData
3670         (CachedObject::setAllData): new
3671         (Loader::servePendingRequests): connect slotAllData
3672         (Loader::slotAllData): new
3673         (Cache::requestImage): tweak
3674         * khtml/misc/loader.h:
3675         (khtml::CachedObject::CachedObject): set allData to 0
3676         (khtml::CachedObject::allData): new
3677         * kwq/KWQKJobClasses.h:
3678         * kwq/KWQKJobClasses.mm:
3679         (KIO::TransferJob::TransferJob): set m_allData
3680         (KIO::TransferJob::emitAllData): new
3681         * kwq/KWQLoader.mm:
3682         (KWQCheckCacheObjectStatus): pass WebKit the data instead of the length of the resource
3683         * kwq/KWQResourceLoader.mm:
3684         (-[KWQResourceLoader finishWithData:]): renamed to pass all data for the resource
3685         * kwq/KWQSlot.mm:
3686         (KWQSlot::KWQSlot): support for slotAllData
3687         (KWQSlot::call):
3688         * kwq/WebCoreBridge.h:
3689         * kwq/WebCoreResourceLoader.h:
3690
3691 2004-11-30  Maciej Stachowiak  <mjs@apple.com>
3692
3693         Reviewed by John.
3694
3695 2004-11-30  Maciej Stachowiak  <mjs@apple.com>
3696
3697         Reviewed by John.
3698
3699         <rdar://problem/3805311> REGRESSION (159-163): onload in dynamically written document not called (causes blank search page at Japanese EPP site, many others)
3700
3701         * khtml/khtml_part.cpp:
3702         (KHTMLPart::begin): call setParsing on document here after opening
3703         - from now on we'll only set parsing to true for a document open
3704         caused by page loading, not a programmatic one.
3705         * khtml/xml/dom_docimpl.cpp:
3706         (DocumentImpl::open): don't setParsing to true here any more.
3707
3708 2004-11-30  Maciej Stachowiak  <mjs@apple.com>
3709
3710         Reviewed by John.
3711
3712         - fix recent regression from collection perf fixes.
3713         
3714         * khtml/html/html_miscimpl.cpp:
3715         (HTMLFormCollectionImpl::updateNameCache): Look up the name
3716         attribute in the name cache, not the id cache (d'oh!)
3717
3718 2004-11-30  Darin Adler  <darin@apple.com>
3719
3720         Reviewed by Ken.
3721
3722         - rolled in a KDE fix for a problem that may underlie a number of crashes
3723
3724         * khtml/xml/dom2_rangeimpl.cpp: (RangeImpl::compareBoundaryPoints): Rolled in a change from
3725         the KDE guys to fix a subtle problem. Code said "n = n =".
3726
3727         - rolled in a KDE fix for a containingBlock crash
3728
3729         * khtml/rendering/render_object.cpp: Roll in a change from KDE that adds frameset to the list of
3730         elements that can not be a containingBlock. They said this fixes a crash, although I did not look
3731         into that further.
3732
3733         - fixed <rdar://problem/3884660> 8A305: Repro crash in QScrollBar::setValue (affects Safari RSS)
3734
3735         * kwq/KWQButton.mm:
3736         (-[KWQButton initWithQButton:]): Set up target and action here instead of in caller.
3737         (-[KWQButton detachQButton]): Added.
3738         (-[KWQButton sendConsumedMouseUpIfNeeded]): Check button for nil instead of checking target.
3739         (-[KWQButton mouseDown:]): Add calls to QWidget::beforeMouseDown/afterMouseDown.
3740         (-[KWQButton widget]): Added.
3741         (-[KWQButton becomeFirstResponder]): Added check to handle when button is 0.
3742         (-[KWQButton resignFirstResponder]): Ditto.
3743         (-[KWQButton canBecomeKeyView]): Ditto.
3744         (QButton::QButton): Remove target and action setup; handled in KWQButton now.
3745         (QButton::~QButton): Call detachQButton instead of setTarget:nil.
3746
3747         * kwq/KWQComboBox.mm:
3748         (QComboBox::~QComboBox): Call detachQComboBox.
3749         (-[KWQPopUpButtonCell detachQComboBox]): Added.
3750         (-[KWQPopUpButtonCell trackMouse:inRect:ofView:untilMouseUp:]): Handle case where box is 0.
3751         (-[KWQPopUpButtonCell setHighlighted:]): Ditto.
3752         (-[KWQPopUpButton action:]): Ditto.
3753         (-[KWQPopUpButton widget]): Tweaked.
3754         (-[KWQPopUpButton mouseDown:]): Added. Calls QWidget::beforeMouseDown/afterMouseDown.
3755         (-[KWQPopUpButton becomeFirstResponder]): Handle case where widget is 0.
3756         (-[KWQPopUpButton resignFirstResponder]): Ditto.
3757         (-[KWQPopUpButton canBecomeKeyView]): Ditto.
3758
3759         * kwq/KWQLineEdit.mm: (QLineEdit::~QLineEdit): Updated to use new detachQLineEdit name.
3760
3761         * kwq/KWQListBox.mm:
3762         (-[KWQTableView mouseDown:]): Added. Calls QWidget::beforeMouseDown/afterMouseDown.
3763
3764         * kwq/KWQScrollBar.h: Removed m_scroller field.
3765         * kwq/KWQScrollBar.mm:
3766         (-[KWQScrollBar initWithQScrollBar:]): Rearranged a little bit.
3767         (-[KWQScrollBar detachQScrollBar]): Added.
3768         (-[KWQScrollBar widget]): Added.
3769         (-[KWQScrollBar mouseDown:]): Added.  Calls QWidget::beforeMouseDown and afterMouseDown.
3770         (QScrollBar::QScrollBar): Changed to no longer set m_scroller.
3771         (QScrollBar::~QScrollBar): Changed to call detachQScrollBar. No longer calls removeFromSuperview.
3772         (QScrollBar::setValue): Chagned to use getView instad of m_scrollBar.
3773         (QScrollBar::setKnobProportion): Ditto.
3774         (QScrollBar::scrollbarHit): Ditto.
3775
3776         * kwq/KWQScrollView.mm:
3777         (QScrollView::addChild): Changed to call QWidget to add to superview to accomodate the
3778         hack where we don't remove right away when doing mouse tracking.
3779         (QScrollView::removeChild): Changed to call QWidget to remove from superview to accomodate
3780         the hack where we don't add right away when doing mouse tracking.
3781
3782         * kwq/KWQSlider.h: Added destructor.
3783         * kwq/KWQSlider.mm:
3784         (-[KWQSlider initWithQSlider:]): Tweaked a little.
3785         (-[KWQSlider detachQSlider]): Added.
3786         (-[KWQSlider mouseDown:]): Added call to QWidget::beforeMouseDown/afterMouseDown.
3787         (-[KWQSlider widget]): Added.
3788         (QSlider::~QSlider): Added. Calls detachQSlider.
3789
3790         * kwq/KWQTextArea.h: Added detachQTextEdit method.
3791         * kwq/KWQTextArea.mm:
3792         (-[KWQTextArea detachQTextEdit]): Added.
3793         (-[KWQTextArea textDidChange:]): Added check for widget of 0.
3794         (-[KWQTextArea becomeFirstResponder]): Ditto.
3795         (-[KWQTextArea nextKeyView]): Ditto.
3796         (-[KWQTextArea previousKeyView]): Ditto.
3797         (-[KWQTextArea drawRect:]): Ditto.
3798         (-[KWQTextAreaTextView insertTab:]): Ditto.
3799         (-[KWQTextAreaTextView insertBacktab:]): Ditto.
3800         (-[KWQTextAreaTextView shouldDrawInsertionPoint]): Ditto.
3801         (-[KWQTextAreaTextView selectedTextAttributes]): Ditto.
3802         (-[KWQTextAreaTextView mouseDown:]): Ditto.
3803         (-[KWQTextAreaTextView keyDown:]): Ditto.
3804         (-[KWQTextAreaTextView keyUp:]): Ditto.
3805
3806         * kwq/KWQTextEdit.h: Added ~QTextEdit.
3807         * kwq/KWQTextEdit.mm: (QTextEdit::~QTextEdit): Added. Calls detachQTextEdit.
3808
3809         * kwq/KWQTextField.h: Changed invalidate to detachQLineEdit.
3810         * kwq/KWQTextField.mm: (-[KWQTextFieldController detachQLineEdit]): Changed.
3811
3812         * kwq/KWQWidget.h: Added addToSuperview/removeFromSuperview for use from QScrollView.
3813         Added beforeMouseDown and afterMouseDown for use in widget implementations.
3814         Removed unused hasMouseTracking function.
3815         * kwq/KWQWidget.mm:
3816         (QWidget::QWidget): Initialize two new fields.
3817         (QWidget::~QWidget): Added code to remove view when widget is destroyed.
3818         (QWidget::getOuterView): Remove unneeded exception blocking since we're just caling superview.
3819         (QWidget::addToSuperview): Added.
3820         (QWidget::removeFromSuperview): Added.
3821         (QWidget::beforeMouseDown): Added.
3822         (QWidget::afterMouseDown): Added.
3823
3824         * khtml/rendering/render_layer.cpp:
3825         (RenderLayer::setHasHorizontalScrollbar): Remove parent parameter; let addChild call addSubview:.
3826         (RenderLayer::setHasVerticalScrollbar): Ditto.
3827
3828 2004-11-30  Ken Kocienda  <kocienda@apple.com>
3829
3830         Reviewed by John
3831
3832         Fix for this bug:
3833         
3834         <rdar://problem/3863031> REGRESSION (Mail): caret continues flashing while mouse is down
3835
3836         * khtml/khtml_part.cpp:
3837         (KHTMLPart::timerEvent): Add a check for whether the mouse is down. Keep the caret drawn
3838         with no blink if it is.
3839
3840 2004-11-30  Ken Kocienda  <kocienda@apple.com>
3841
3842         Reviewed by John
3843
3844         Fix for this bug:
3845         
3846         <rdar://problem/3861602> cursor gets lost trying to backspace to delete a form control
3847
3848         * khtml/khtml_part.cpp:
3849         (KHTMLPart::setFocusNodeIfNeeded): This function would clear the selection if a <button>
3850         or <input type=image> was checked for focus since these elements are keyboard-focusable,
3851         but not mouse focusable. Also, this function did not work hard enough to set the focused
3852         node, and was content to clear it if the first element checked failed the test, rather
3853         than looking more at parents. This would have the effect of clearing, then resetting the