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