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