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