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