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