445d05bd49ce379e762d952886913ace084e0939
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2005-02-10  David Harrison  <harrison@apple.com>
2
3         Reviewed by Darin.
4
5         <rdar://problem/3991532> REGRESSION (Mail): Triple-click on trailing blank line should select previous line but doesn't
6
7         * khtml/css/cssvalues.c:
8         (hash_val):
9         (findValue):
10         * khtml/editing/selection.cpp:
11         (khtml::Selection::validate):
12         Do moral equiavalent of LeftWordIfOnBoundary for PARAGRAPH.
13
14 2005-02-10  David Harrison  <harrison@apple.com>
15
16         Reviewed by Darin.
17
18         <rdar://problem/3991848> Double-click on first character selects wrong item
19
20         * khtml/editing/selection.cpp:
21         (khtml::Selection::validate):
22         Honor the fact that clicking on a character positions the cursor on the left side of the character.
23
24 2005-02-10  David Hyatt  <hyatt@apple.com>
25
26         Fix for 3980778, repro crash in RootInlineBox::paint.  Make sure that when merging blocks we dirty them for layout
27         up front. That way as we do the merge, we dont attempt to examine the lines in dirtyLinesForChangedChild.
28         
29         Reviewed by mjs
30
31         * khtml/rendering/render_block.cpp:
32         (khtml::RenderBlock::removeChild):
33
34 2005-02-10  David Hyatt  <hyatt@apple.com>
35
36         Fix for 3987010, fix a bug that caused the self-collapsing-block-cleared-float bit to never get set correctly.
37         
38         Reviewed by mjs
39
40         * khtml/rendering/render_block.h:
41         (khtml::RenderBlock::MarginInfo::setSelfCollapsingBlockClearedFloat):
42
43 2005-02-10  David Hyatt  <hyatt@apple.com>
44
45         Fix  for 3992440, text not wrapping correctly on half moon bay web site.  Refine an incorrect optimization I
46         added to be less restrictive.
47         
48         Reviewed by mjs
49
50         * khtml/rendering/render_block.cpp:
51         (khtml::RenderBlock::layoutBlockChildren):
52
53 2005-02-08  Maciej Stachowiak  <mjs@apple.com>
54
55         Reviewed by Darin.
56
57         <rdar://problem/3977973> pages on ebay leak referenced JavaScript objects -- over time browsing becomes super-slow
58
59         I fixed this by removing all event listeners for a document, it's
60         children, and any disconnected nodes that used to be in the
61         document at document detach time. Mozilla temporarily disables
62         event listeners on such nodes, but re-enables them if you
63         re-parant a node into a new document. However, in WebCore, you
64         can't re-parent a node into another document, so there is no
65         observable change in behavior.
66
67         We have to do this to break the possible reference cycles between
68         event listeners and the dom nodes they are attached to (e.g. via
69         scope chain, as in this case).
70
71         * khtml/xml/dom_docimpl.cpp:
72         (DocumentImpl::detach):
73         (DocumentImpl::removeAllEventListenersFromAllNodesx):
74         (DocumentImpl::registerDisconnectedNodeWithEventListeners):
75         (DocumentImpl::unregisterDisconnectedNodeWithEventListeners):
76         (DocumentImpl::removeAllDisconnectedNodeEventListeners):
77         * khtml/xml/dom_docimpl.h:
78         * khtml/xml/dom_nodeimpl.cpp:
79         (NodeImpl::~NodeImpl):
80         (NodeImpl::addEventListener):
81         (NodeImpl::removeEventListener):
82         (NodeImpl::removeAllEventListeners):
83         (NodeImpl::removeHTMLEventListener):
84         (NodeImpl::insertedIntoDocument):
85         (NodeImpl::removedFromDocument):
86         * khtml/xml/dom_nodeimpl.h:
87
88 2005-02-09  Chris Blumenberg  <cblu@apple.com>
89
90         Fixed: <rdar://problem/3999213> Sometimes 2 Windows Media Player plugin instances are loaded
91
92         Reviewed by hyatt.
93
94         * khtml/html/html_objectimpl.cpp:
95         (HTMLObjectElementImpl::attach): Set needWidgetUpdate to false before calling updateWidget because updateWidget may cause this method or another method (which also calls updateWidget) to be called.
96         (HTMLObjectElementImpl::recalcStyle): ditto
97
98 2005-02-09  David Harrison  <harrison@apple.com>
99
100         Reviewed by Darin.
101         
102         <rdar://problem/3937447> Mail-689: Arrow key navigation in new message body stops working when a line ends with a bold word
103         
104         Added affinity to VisiblePosition.  Changed Selection code to use affinity more.
105         
106         (Partial) <rdar://problem/3982096> editing/pasteboard/paste-text-007 is failing
107         
108         Changed ReplaceSelectionCommand to also pay attention to the top children of the incoming fragment, not just the very last node inserted, when deciding whether to insert a paragraph for the Apple interchange newline.
109
110         * khtml/ecma/kjs_window.cpp:
111         (SelectionFunc::tryCall):
112         * khtml/editing/htmlediting.cpp:
113         (khtml::EditCommandPtr::setStartingSelection):
114         (khtml::EditCommandPtr::setEndingSelection):
115         (khtml::EditCommand::setStartingSelection):
116         (khtml::EditCommand::setEndingSelection):
117         (khtml::CompositeEditCommand::deleteInsignificantTextDownstream):
118         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
119         (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
120         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
121         (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
122         (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
123         (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
124         (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
125         (khtml::ApplyStyleCommand::joinChildTextNodes):
126         (khtml::DeleteSelectionCommand::initializePositionData):
127         (khtml::DeleteSelectionCommand::handleGeneralDelete):
128         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
129         (khtml::DeleteSelectionCommand::doApply):
130         (khtml::InsertLineBreakCommand::doApply):
131         (khtml::InsertParagraphSeparatorCommand::doApply):
132         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
133         (khtml::InsertTextCommand::input):
134         (khtml::MoveSelectionCommand::doApply):
135         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand):
136         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand):
137         (khtml::ReplaceSelectionCommand::doApply):
138         (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
139         (khtml::ReplaceSelectionCommand::updateNodesInserted):
140         (khtml::TypingCommand::deleteKeyPressed):
141         (khtml::TypingCommand::forwardDeleteKeyPressed):
142         (khtml::TypingCommand::markMisspellingsAfterTyping):
143         * khtml/editing/htmlediting.h:
144         * khtml/editing/selection.cpp:
145         (khtml::Selection::Selection):
146         (khtml::Selection::init):
147         (khtml::Selection::moveTo):
148         (khtml::Selection::modifyExtendingRightForward):
149         (khtml::Selection::modifyMovingRightForward):
150         (khtml::Selection::modifyExtendingLeftBackward):
151         (khtml::Selection::modifyMovingLeftBackward):
152         (khtml::Selection::modify):
153         (khtml::Selection::xPosForVerticalArrowNavigation):
154         (khtml::Selection::clear):
155         (khtml::Selection::setBase):
156         (khtml::Selection::setExtent):
157         (khtml::Selection::setBaseAndExtent):
158         (khtml::Selection::layout):
159         (khtml::Selection::validate):
160         * khtml/editing/selection.h:
161         (khtml::Selection::startAffinity):
162         (khtml::Selection::endAffinity):
163         (khtml::Selection::baseAffinity):
164         (khtml::Selection::extentAffinity):
165         (khtml::operator==):
166         * khtml/editing/text_affinity.h:
167         (khtml::):
168         * khtml/editing/visible_position.cpp:
169         (khtml::VisiblePosition::VisiblePosition):
170         (khtml::VisiblePosition::init):
171         (khtml::VisiblePosition::initUpstream):
172         (khtml::VisiblePosition::initDownstream):
173         (khtml::VisiblePosition::next):
174         (khtml::VisiblePosition::previous):
175         (khtml::startVisiblePosition):
176         (khtml::endVisiblePosition):
177         * khtml/editing/visible_position.h:
178         (khtml::VisiblePosition::):
179         (khtml::VisiblePosition::VisiblePosition):
180         (khtml::VisiblePosition::affinity):
181         (khtml::VisiblePosition::setAffinity):
182         (khtml::operator==):
183         * khtml/editing/visible_units.cpp:
184         (khtml::previousBoundary):
185         (khtml::nextBoundary):
186         (khtml::startOfLine):
187         (khtml::endOfLine):
188         (khtml::previousLinePosition):
189         (khtml::nextLinePosition):
190         (khtml::startOfParagraph):
191         (khtml::endOfParagraph):
192         (khtml::previousParagraphPosition):
193         (khtml::nextParagraphPosition):
194         (khtml::startOfBlock):
195         (khtml::endOfBlock):
196         (khtml::startOfDocument):
197         (khtml::endOfDocument):
198         * khtml/editing/visible_units.h:
199         * khtml/khtml_part.cpp:
200         (KHTMLPart::findTextNext):
201         (KHTMLPart::selectClosestWordFromMouseEvent):
202         (KHTMLPart::handleMousePressEventTripleClick):
203         (KHTMLPart::handleMousePressEventSingleClick):
204         (KHTMLPart::handleMouseMoveEventSelection):
205         (KHTMLPart::khtmlMouseReleaseEvent):
206         (KHTMLPart::selectAll):
207         (KHTMLPart::computeAndSetTypingStyle):
208         (KHTMLPart::selectionComputedStyle):
209         * khtml/rendering/render_br.cpp:
210         (RenderBR::positionForCoordinates):
211         * khtml/xml/dom_docimpl.cpp:
212         (DocumentImpl::updateSelection):
213         * khtml/xml/dom_nodeimpl.cpp:
214         (NodeBaseImpl::setFocus):
215         * khtml/xml/dom_position.cpp:
216         (DOM::Position::previousCharacterPosition):
217         (DOM::Position::nextCharacterPosition):
218         * khtml/xml/dom_position.h:
219         * kwq/KWQAccObject.mm:
220         (-[KWQAccObject value]):
221         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
222         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
223         (-[KWQAccObject accessibilityAttributeValue:]):
224         (-[KWQAccObject doAXLineForTextMarker:]):
225         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
226         (-[KWQAccObject doAXTextMarkerForPosition:]):
227         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
228         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
229         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
230         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
231         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
232         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
233         (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
234         * kwq/KWQAccObjectCache.mm:
235         (KWQAccObjectCache::textMarkerForVisiblePosition):
236         (KWQAccObjectCache::visiblePositionForTextMarker):
237         * kwq/KWQKHTMLPart.mm:
238         (KWQKHTMLPart::findString):
239         (KWQKHTMLPart::advanceToNextMisspelling):
240         (KWQKHTMLPart::styleForSelectionStart):
241         (KWQKHTMLPart::baseWritingDirectionForSelectionStart):
242         (KWQKHTMLPart::setSelectionFromNone):
243         (KWQKHTMLPart::respondToChangedSelection):
244         * kwq/WebCoreBridge.mm:
245         (-[WebCoreBridge setSelectedDOMRange:affinity:]):
246         (-[WebCoreBridge selectionAffinity]):
247         (-[WebCoreBridge setMarkDOMRange:]):
248         (-[WebCoreBridge _visiblePositionForPoint:]):
249         (-[WebCoreBridge moveDragCaretToPoint:]):
250         (-[WebCoreBridge editableDOMRangeForPoint:]):
251         (-[WebCoreBridge ensureSelectionVisible]):
252         (-[WebCoreBridge rangeOfCharactersAroundCaret]):
253
254 2005-02-09  Chris Blumenberg  <cblu@apple.com>
255
256         Fixed: <rdar://problem/3985211> Seed: Mail: Drag-and-drop destination indicator / insertion point disappears
257
258         Reviewed by kocienda.
259
260         * khtml/rendering/render_block.cpp:
261         (khtml::RenderBlock::paintCaret): new
262         (khtml::RenderBlock::paintObject): call paintCaret for the cursor caret and the drag caret
263         * khtml/rendering/render_block.h:
264
265 === Safari-185 ===
266
267 2005-02-08  Ken Kocienda  <kocienda@apple.com>
268
269         Reviewed by John
270
271         Fix for this bug:
272         
273         <rdar://problem/3996344> Entire document content is deleted when only the first paragraph was supposed to be
274
275         Problem stems from my attempt to fix this bug: <rdar://problem/3986155> Insertion point goes 
276         to beginning of doc after deleting.
277         
278         I added an "optimization" that proved to do more harm than good. So, basically, the fix is to remove code.
279
280         * khtml/editing/htmlediting.cpp:
281         (khtml::DeleteSelectionCommand::handleGeneralDelete)
282
283 2005-02-07  Darin Adler  <darin@apple.com>
284
285         Reviewed by Kevin.
286
287         - fixed <rdar://problem/3890352> REGRESSION (125-170, Panther-only): pasted textarea contents disappear (exception in NSText)
288
289         * kwq/KWQTextArea.mm: (-[KWQTextArea tile]): Don't resize the text view immediately here.
290         Use performWithDelay to defer it to avoid the re-entrancy that bothers the Panther version
291         of NSTextView. On Tiger, leave the code alone.
292
293 2005-02-07  Adele Amchan  <adele@apple.com>
294
295         Reviewed by Darin.
296
297         Fix for <rdar://problem/3993628> REGRESSION (180-181): Logitelnet bank's website doesn't work
298
299         This fixes an oversight in the fix for <rdar://problem/3964286>.  
300         We're now making sure there is a document before calling checkCompleted in slotLoaderRequestDone.
301         That function is called even when other parts finish loads of their subresources, so we could end
302         up calling checkCompleted before we had a document. We also looked over all the other calls to
303         checkCompleted to convince ourselves no other call sites had a similar issue.
304
305         * khtml/khtml_part.cpp: (KHTMLPart::slotLoaderRequestDone): Check if doc is nil before calling
306         checkCompleted.
307
308 2005-02-07  Ken Kocienda  <kocienda@apple.com>
309
310         Reviewed by Darin
311
312         Fix for this bug:
313         
314         <rdar://problem/3953302> Replacing quoted text ends up with blue-colored text that is not quoted
315
316         * khtml/editing/htmlediting.cpp:
317         (khtml::DeleteSelectionCommand::doApply): Removed special case delete code for select all. It was
318         causing as many bugs as it fixed. What's more, the design concept is a bit shaky. By removing
319         this special case, the bug goes away.
320         * khtml/editing/htmlediting.h: Remove declaration.
321         
322         Test results using selectAll() updated to reflect changed behavior.
323         
324         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt:
325         * layout-tests/editing/deleting/delete-select-all-001-expected.txt:
326         * layout-tests/editing/deleting/delete-select-all-003-expected.txt:
327         * layout-tests/editing/inserting/insert-3654864-fix-expected.txt:
328         * layout-tests/editing/inserting/insert-3775316-fix-expected.txt:
329         * layout-tests/editing/inserting/insert-3851164-fix-expected.txt:
330         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt:
331         * layout-tests/editing/pasteboard/paste-text-015-expected.txt:
332
333 2005-02-06  Darin Adler  <darin@apple.com>
334
335         Reviewed by Ken.
336
337         - fixed <rdar://problem/3994164> setting a new style attribute with setAttribute("style") doesn't blow away the old style
338
339         * khtml/css/css_valueimpl.h: Renamed parseProperty to parseDeclaration, since it's used to parse
340         an entire style declaration, not a single property.
341         * khtml/css/css_valueimpl.cpp: (DOM::CSSMutableStyleDeclarationImpl::parseDeclaration): Renamed,
342         and added code to clear m_values.
343         * khtml/html/html_elementimpl.cpp: (HTMLElementImpl::parseHTMLAttribute): Call function by its
344         new name, and remove some unnecessary comments.
345
346 2005-02-06  Darin Adler  <darin@apple.com>
347
348         Reviewed by Maciej.
349
350         - fixed <rdar://problem/3993722> need oncut and onpaste handlers implemented for <textarea> (needed for widgets)
351
352         * kwq/KWQTextArea.mm:
353         (-[KWQTextAreaTextView dispatchHTMLEvent:]): Added.
354         (-[KWQTextAreaTextView cut:]): Dispatch "before cut" and "cut" events.
355         (-[KWQTextAreaTextView copy:]): Dispatch "before copy" and "copy" events.
356         (-[KWQTextAreaTextView paste:]): Dispatch "before paste" and "paste" events.
357         (-[KWQTextAreaTextView pasteAsPlainText:]): Ditto.
358         (-[KWQTextAreaTextView pasteAsRichText:]): Ditto.
359
360 2005-02-06  Darin Adler  <darin@apple.com>
361
362         Reviewed by Maciej.
363
364         - fixed <rdar://problem/3943038> <input type=search> that is focused in onload handler doesn't have a visible editor
365
366         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::setFocusNode): Always update layout before giving focus to a widget.
367         This prevents the bad case where we give a widget focus before it has been positioned or sized, causing us to
368         exercise edge cases AppKit doesn't handle well.
369
370         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Remove workaround code I added
371         to fix bug 3943049. Updating the layout fixes the same problem in a cleaner, safer way, and solves another problem,
372         with the way the clip view is set up.
373
374 2005-02-06  Darin Adler  <darin@apple.com>
375
376         Reviewed by Maciej.
377
378         - fixed <rdar://problem/3425232> textarea won't trigger onchange action when clicking to new field
379
380         * khtml/rendering/render_form.h: Added new m_dirty data member.
381         * khtml/rendering/render_form.cpp:
382         (RenderTextArea::RenderTextArea): Initialize m_dirty to false.
383         (RenderTextArea::detach): Call value() on the DOM element to cause it to fetch the value from this object.
384         (RenderTextArea::handleFocusOut): Ditto. Also send the onchange event based only on the m_dirty flag.
385         (RenderTextArea::updateFromElement): Clear the m_dirty flag if the edited value is blown away by a value
386         that comes from the DOM element. Remove code to clear the element's m_dirtyvalue flag; that's an unnecessary
387         optimization, and ideally we'll stop having code in the render object that knows about that flag later.
388         (RenderTextArea::slotTextChanged): Set the m_dirty flag.
389
390 2005-02-06  Darin Adler  <darin@apple.com>
391
392         Reviewed by Maciej.
393
394         - re-fixed <rdar://problem/3760910> please add support for custom tag names in HTML
395
396         * khtml/xml/dom_docimpl.cpp:
397         (DocumentImpl::tagId): Use ID_LAST_TAG + 1 for the ID of the first assigned tag ID. Before we'd use ID_LAST_TAG,
398         which resulted in the same number being used for ID_COMMENT and the first custom tag.
399         (DocumentImpl::tagName): Use ID_LAST_TAG + 1, as above.
400         (DocumentImpl::namespaceURI): Change a < ID_LAST_TAG to <= ID_LAST_TAG in the same spirit as above.
401
402 2005-02-06  Darin Adler  <darin@apple.com>
403
404         Reviewed by Maciej.
405
406         - fixed <rdar://problem/3986639> Crash occurs after choosing Undo Typing from the Edit menu
407
408         * kwq/KWQTextArea.mm: (-[KWQTextArea viewWillMoveToWindow:]): Remove actions from undo manager when the view is
409         removed from the window. Unfortunately, to do this the code has to know that the target of NSTextView actions
410         will be the text storage object, but given the NSText architecture, that's pretty clear.
411
412 2005-02-05  Chris Blumenberg  <cblu@apple.com>
413
414         Fixed: <rdar://problem/3991974> REGRESSION: www.jabra.com world location screen does not work
415
416         Reviewed by hyatt.
417
418         * kwq/KWQKJavaAppletWidget.mm:
419         (KJavaAppletWidget::KJavaAppletWidget): fallback to the document's base URL if there is no baseURL attribute
420         * kwq/WebCoreBridge.h:
421         * kwq/WebCoreBridge.mm:
422         (-[WebCoreBridge baseURL]): new
423
424 2005-02-04  David Harrison  <harrison@apple.com>
425
426         Reviewed by Darin.
427
428         Rolled out Ken's accidental checkin when committing <rdar://problem/3986155> fix yesterday.
429         
430         * khtml/editing/selection.cpp:
431         (khtml::Selection::validate):
432
433 2005-02-04  Adele Amchan  <adele@apple.com>
434
435         Reviewed by Darin.
436
437         Fix for <rdar://problem/3758785> Safari no longer works at BankOfAmerica online banking for military users
438   
439         When closing the document, if a body doesn't exist we now create one.  This bug was preventing the onload handler from
440         firing in cases where there wasn't a body.  In the BankOfAmerica case, the page was just a bit of script where the onload
441         handler redirected to the correct page.
442
443         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close):
444
445 2005-02-03  Ken Kocienda  <kocienda@apple.com>
446
447         Reviewed by Chris
448
449         Fix for this bug:
450         
451         <rdar://problem/3986155> Insertion point goes to beginning of doc after deleting
452
453         * khtml/editing/htmlediting.cpp:
454         (khtml::DeleteSelectionCommand::setStartNode): New convenience to handle reference counting when setting.
455         (khtml::DeleteSelectionCommand::handleGeneralDelete): This contains the crux of the bug fix. Improve tests
456         that detect when a selected node needs to be retained, rather than deleted, to preserve the intent of the user.
457         This has the side effect of causing the insertion point placement code to succeed rather than fail. Before
458         this fix, the failure of the insertion point placement code caused the insertion point to jump to the start
459         of the document, which is the symptom that can be perceived by users when editing.
460         * khtml/editing/htmlediting.h: Add setStartNode declaration.
461         * khtml/editing/visible_units.cpp:
462         (khtml::startOfBlock): This function had a stubbed-in non-tested implementation. Implement and 
463         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001-expected.txt: Added.
464         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001.html: Added.
465         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt: Added.
466         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002.html: Added.
467         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt: Added.
468         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003.html: Added.
469         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt: Added.
470         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004.html: Added.
471         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt: Added.
472         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005.html: Added.
473         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt: Added.
474         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006.html: Added.
475
476 === Safari-183 ===
477
478 2005-02-03  Richard Williamson   <rjw@apple.com>
479
480         Fixed <rdar://problem/3987419> Stocks and Weather leak what appears to XMLHTTPRequest results
481
482         XMLHTTPRequests were causing massive leaks.  _webcore_initWithHeaderString: did funky things with
483         self replacement.  Re-wrote to use more traditional factory constructor avoiding self replacement.
484         
485         Reviewed by David Harrison.
486
487         * kwq/KWQLoader.mm:
488         (+[NSDictionary _webcore_dictionaryWithHeaderString:]):
489         (KWQServeRequest):
490         (KWQServeSynchronousRequest):
491
492 2005-02-03  Chris Blumenberg  <cblu@apple.com>
493
494         Fixed: <rdar://problem/3938763> Cannot view Windows Media Player videos (soundtrack is played twice with delay)
495
496         Reviewed by hyatt.
497
498         * khtml/html/html_objectimpl.cpp:
499         (HTMLObjectElementImpl::attach): set needWidgetUpdate to false right after calling updateWidget because dispatchHTMLEvent can end up calling this method again
500         (HTMLObjectElementImpl::recalcStyle): ditto
501
502 2005-02-02  John Sullivan  <sullivan@apple.com>
503
504         Reviewed by Chris.
505
506         - WebCore part of fix for <rdar://problem/3980651> REGRESSION (125-180): Huge number of pages printed from certain page, 
507         iFrame involved
508         
509         This also fixes the problems with printing from GMail, yay!
510
511         * khtml/rendering/render_flow.cpp:
512         (RenderFlow::paintLines):
513         If the current line is taller than the entire page height (e.g. tall iFrame), don't try
514         to avoid splitting it across pages.
515         
516         * kwq/WebCoreBridge.mm:
517         (-[WebCoreBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
518         Handle error cases in a more obvious manner; this will cause future problems like this
519         to print a blank page and complain to the console on debug builds, rather than print a 
520         zillionty mostly-blank pages.
521
522 2005-02-02  Chris Blumenberg  <cblu@apple.com>
523
524         Fixed: <rdar://problem/3960304> can't load a particular applet (at www.escape.de) unless it's the first applet to be loaded
525
526         Reviewed by hyatt.
527
528         * khtml/rendering/render_frames.cpp:
529         (RenderPartObject::updateWidget): when getting the MIME type from the PARAM tag, make sure the MIME type is the text from the left of the semi-colon if there is one. We do this elsewhere as well.
530
531 2005-02-02  Chris Blumenberg  <cblu@apple.com>
532
533         Fixed: <rdar://problem/3983628> control-click on WebView is not selecting the word under the cursor (Mail, non-editable WebView)
534
535         Reviewed by rjw.
536
537         * kwq/KWQKHTMLPart.mm:
538         (KWQKHTMLPart::sendContextMenuEvent): check if SPI to always enable selecting closest word is enabled
539         * kwq/WebCoreBridge.h:
540
541 2005-02-02  Ken Kocienda  <kocienda@apple.com>
542
543         Reviewed by me
544
545         * khtml/editing/markup.cpp:
546         (khtml::createMarkup): Removed debug spam I committed earlier in error.
547
548 2005-02-02  Ken Kocienda  <kocienda@apple.com>
549
550         Reviewed by Darin
551
552         Fix for this bug:
553         
554         <rdar://problem/3823109> WebKit should support -toggleBaseWritingDirection: (bidi editing support)
555
556         Since base writing direction is a paragraph-level property in AppKit, and we use the CSS direction
557         property in WebCore, which can be applied to inline elements as well as blocks, a new notion has
558         been added to the WebCore apply style logic. It is now possible to force all properties in a 
559         style declaration to be applied as though they were block properties.
560
561         * khtml/editing/htmlediting.cpp:
562         (khtml::ApplyStyleCommand::ApplyStyleCommand): Add an enum and a flag to this command that controls whether to force all
563         properties in the style to be applied as block styles. Default is "no", retaining previous behavior.
564         (khtml::ApplyStyleCommand::doApply): Switch on new flag to apply styles as before, or force all preoperties to be applied
565         as block styles.
566         * khtml/editing/htmlediting.h:
567         (khtml::ApplyStyleCommand::): Add an enum and a flag, as above.
568         * khtml/khtml_part.cpp:
569         (KHTMLPart::applyParagraphStyle): New method to force application of all style properties as block styles.
570         * khtml/khtml_part.h: Update header declarations.
571         * kwq/KWQKHTMLPart.h: Update header declarations.
572         * kwq/KWQKHTMLPart.mm:
573         (KWQKHTMLPart::baseWritingDirectionForSelectionStart): Accessor to help WebKit do a toggle operation on 
574         writing direction.
575         * kwq/WebCoreBridge.h: Update header declarations.
576         * kwq/WebCoreBridge.mm:
577         (-[WebCoreBridge applyParagraphStyle:withUndoAction:]): New method to force application of all style properties as block styles.
578         (-[WebCoreBridge baseWritingDirectionForSelectionStart]): Accessor to help WebKit do a toggle operation on 
579         writing direction.
580
581         Fix for this bug:
582         
583         <rdar://problem/3985035> REGRESSION (Mail): Text copied from wrapped line contains extra character when pasted
584
585         * khtml/editing/markup.cpp:
586         (khtml::renderedText): Add an enum and a flag to this command that controls whether to force all
587         This is the result of an error in the code that computes the rendered text that is selected 
588         when copying. Since spaces collapse at the end of lines, and these spaces need to be copied 
589         when the selection spans line endings, code runs to compute this text. However, this code 
590         was also running incorrectly in cases where lines wrapped. I have now added the missing 
591         test to check that the selection does indeed extend to the end of the line.
592
593
594 2005-02-02  Ken Kocienda  <kocienda@apple.com>
595
596         Reviewed by Darin
597
598         Fix for these bugs:
599         
600         <rdar://problem/3984894> REGRESSION (Mail): Command-right-arrow in reply does the wrong thing (two ways)
601         <rdar://problem/3985130> REGRESSION (Mail): command-right-arrow in pasted RTF selects only up to tab
602
603         * khtml/editing/visible_units.cpp:
604         (khtml::endOfLine): Two separate problems in this new function recently added to take the place of
605         selectionForLine. In the first, endOfLine did not stop at BR elements, and returned the position
606         beyond them. In the second, the VisiblePosition constructor gives the wrong answer in certain cases.
607         Darin is going to work on a solution for that problem. In the meantime, I can fix the symptom of this
608         bug by going down to the last leaf child of the root line box; a one line change we will roll out when
609         Darin's fix is in.
610
611 2005-02-01  Richard Williamson   <rjw@apple.com>
612
613         Fixed <rdar://problem/3985535> QT Plug-in JavaScript support now fails in <embed> tag only case
614
615         Reviewed by Maciej.
616
617         * khtml/ecma/kjs_html.cpp:
618         (KJS::HTMLDocument::tryGet):
619
620 2005-02-01  John Sullivan  <sullivan@apple.com>
621
622         Written by Darin, reviewed and tested by me
623         
624         - fixed <rdar://problem/3969684> Panther-only: extra blank lines between 
625         pasted content from Blot
626
627         * kwq/KWQKHTMLPart.mm:
628         (KWQKHTMLPart::attributedString):
629         don't emit paragraph breaks if the margins are tiny; matches what
630         we do for plain-text conversion
631
632 === Safari-182 ===
633
634 2005-02-01  Ken Kocienda  <kocienda@apple.com>
635
636         Reviewed by John
637
638         Fix for this bug:
639         
640         <rdar://problem/3985160> Deficiencies in pasting architecture blocking progress on other bugs
641
642         * khtml/editing/html_interchange.h: Move style span text used to mark element added to 
643         add style to this header.
644         * khtml/editing/htmlediting.cpp:
645         (khtml::styleSpanClassString): Change to use constant moved to html_interchange.h.
646         (khtml::isStyleSpan): New helper function. Checks if this is a span we added to apply style.
647         (khtml::CompositeEditCommand::insertNodeBefore): Added an assert to check that the node
648         we are inserting before is not the body.
649         (khtml::CompositeEditCommand::insertNodeAfter): Ditto, but check is for after.
650         (khtml::ReplacementFragment::ReplacementFragment): Added code to process the "default style"
651         that is added by the copy code.
652         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): first and last nodes inserted are
653         now member variables instead of function locals. Initialize them here.
654         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand): Deref first and last nodes inserted
655         if necessary.
656         (khtml::ReplaceSelectionCommand::doApply): Change design to fix the bug. Major change is to
657         separate out the code that inserts nodes into the tree so additional styling checks can
658         be done in a centralized way. Also got rid of the notion of "merging into the end block." That
659         concept was just wrong.
660         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Tweak interface now that first and 
661         last nodes inserted are member variables.
662         (khtml::ReplaceSelectionCommand::insertNodeAfterAndUpdateNodesInserted): New helper used
663         by replace code to do the stated DOM operation and update state internal to the command.
664         This will also be a catch point to handle the kinds of additional style checks needed to
665         make paste work right.
666         (khtml::ReplaceSelectionCommand::insertNodeAtAndUpdateNodesInserted): Ditto.
667         (khtml::ReplaceSelectionCommand::insertNodeBeforeAndUpdateNodesInserted): Ditto.
668         (khtml::ReplaceSelectionCommand::updateNodesInserted): Ditto.
669         * khtml/editing/htmlediting.h: Update declarations as needed.
670         * khtml/editing/markup.cpp:
671         (khtml::createMarkup): Adds a "default style" span to the content written to the pasteboard.
672         This will help us to fix some of the bugs blocked by the bug above.
673         * khtml/xml/dom_nodeimpl.cpp:
674         (NodeImpl::lastDescendent): New helper.
675         * khtml/xml/dom_nodeimpl.h: Ditto.
676         * khtml/xml/dom_position.cpp:
677         (DOM::Position::upstream): Fixed a bug which would allow the upstream position returned to be
678         in unrendered content.
679         (DOM::Position::downstream): Ditto.
680
681         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt: Ending positions tweaked due to 
682         changes in upstream() and downstream() functions.
683         * layout-tests/editing/inserting/insert-3851164-fix-expected.txt: Ditto
684         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt: Ditto
685         * layout-tests/editing/selection/extend-by-character-006-expected.txt: Ditto
686
687         * layout-tests/editing/pasteboard/paste-text-003-expected.txt: Changed what we expect, given
688         new behavior of paste code.
689
690 2005-01-31  John Sullivan  <sullivan@apple.com>
691
692         Reviewed by Dave Hyatt.
693         
694         - fixed <rdar://problem/3983097> Tabbing on RSS pages gets stuck in search field 
695         with "full keyboard navigation" off
696
697         * kwq/KWQSlider.h:
698         * kwq/KWQSlider.mm:
699         (QSlider::focusPolicy):
700         Implemented this method for KWQSlider. It is needed for our widget subclasses that
701         can become focused in some situations. I missed this when fixing 3949203 because
702         it only comes into play when tab-to-controls is on, and because the other relevant
703         methods are objective-C methods.
704
705 2005-01-31  David Harrison  <harrison@apple.com>
706
707         Reviewed by Darin.
708
709         <rdar://problem/3964164> AXWebArea needs to unregister on going invisible
710
711         * khtml/xml/dom_docimpl.cpp:
712         (DocumentImpl::detach):
713         Detach the AX UIElement for the AXWebArea.
714
715 2005-01-31  David Harrison  <harrison@apple.com>
716
717         Reviewed by Darin
718
719         <rdar://problem/3850876> AX: button exposed as only an AXImage at http://appleseed.apple.com/ site (<input type=image>)
720
721         * khtml/rendering/render_form.h:
722         (khtml::RenderImageButton::isImageButton):
723         New.
724         * khtml/rendering/render_image.h:
725         (khtml::RenderImage::isImageButton):
726         New.
727         * kwq/KWQAccObject.mm:
728         (-[KWQAccObject isImageButton]):
729         (-[KWQAccObject actionElement]):
730         (-[KWQAccObject role]):
731         (-[KWQAccObject accessibilityActionNames]):
732         (-[KWQAccObject accessibilityPerformAction:]):
733         Represent RenderImageButton elements as buttons instead of images.
734
735 2005-01-31  David Harrison  <harrison@apple.com>
736
737         Prevent nil dereference in debug code.
738
739         * khtml/xml/dom_nodeimpl.cpp:
740         (NodeImpl::displayTree):
741         Stop when parent is 0, too.
742
743 2005-01-31  John Sullivan  <sullivan@apple.com>
744
745         Reviewed by Dave Hyatt.
746         
747         - fixed <rdar://problem/3949203> cannot tab to, within, or out of the RSS sidebar
748
749         * kwq/KWQSlider.mm:
750         (-[KWQSlider becomeFirstResponder]):
751         (-[KWQSlider resignFirstResponder]):
752         (-[KWQSlider nextKeyView]):
753         (-[KWQSlider previousKeyView]):
754         (-[KWQSlider canBecomeKeyView]):
755         (-[KWQSlider nextValidKeyView]):
756         (-[KWQSlider previousValidKeyView]):
757         Copied these methods from KWQButton. The lack of special handling for first-responder-ness
758         here was causing the focus to get "stuck" on the RSS page's slider widget. Added FIXME
759         about how it would be nice to share more of this code rather than replicating it in each
760         KWQ widget subclass.
761
762 2005-01-31  Darin Adler  <darin@apple.com>
763
764         Reviewed by Harrison.
765
766         - fixed <rdar://problem/3980066> Double-click on single character moves insertion point to previous line
767
768         * khtml/khtml_part.cpp:
769         (KHTMLPart::selectClosestWordFromMouseEvent): Set affinity too.
770         (KHTMLPart::handleMousePressEventTripleClick): Ditto.
771         (KHTMLPart::handleMouseMoveEventSelection): Ditto.
772         (KHTMLPart::khtmlMouseReleaseEvent): Ditto.
773
774         * khtml/editing/selection.cpp:
775         (khtml::Selection::modifyExtendingRightForward): Use endOfLine and endOfDocument.
776         (khtml::Selection::modifyMovingRightForward): Ditto.
777         (khtml::Selection::modifyExtendingLeftBackward): Use startOfLine and startOfDocument.
778         (khtml::Selection::modifyMovingLeftBackward): Ditto.
779         (khtml::Selection::validate): Rewrote the section that handles double-click. Two main fixes: 1) use isStartOfLine to
780         check for another case where we want to select the word to the right, and 2) use isEndOfParagraph, which seems
781         to work correctly in cases where isLastVisiblePositionInParagraph is giving the wrong answer. Also changed the line
782         code to use startOfLine/endOfLine and the document code to use startOfDocument/endOfDocument.
783
784 2005-01-31  Darin Adler  <darin@apple.com>
785
786         Reviewed by Harrison.
787
788         - fixed <rdar://problem/3935275> unexpected quit scrolling over link; last.fm (works in IE and Firefox)
789
790         * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): By using the correct document, fix the crash reported here.
791         The page still crashes when you close the browser window, but it's not trivial to fix so I'll file a new bug after that.
792
793 2005-01-31  Darin Adler  <darin@apple.com>
794
795         Reviewed by Ken and Harrison.
796
797         - fixed <rdar://problem/3947901> REGRESSION (Mail): Pasting paragraph of rich text leaves insertion point before pasted text
798         - fixed <rdar://problem/3949790> hitting return after underlined line results in too much or too little underlined
799         - fixed <rdar://problem/3981759> nil-deref and crash when pasting just a paragraph break
800         - fixed a couple problems I discovered while working with bug 3949790
801
802         * khtml/editing/htmlediting.cpp:
803         (khtml::ApplyStyleCommand::applyInlineStyle): Pass StayInBlock to upstream. Without this, we end up going too far
804         upstream in the test case in bug 3949790.
805         (khtml::ApplyStyleCommand::removeInlineStyle): Pass StayInBlock to upstream and downstream. Same reason as above.
806         (khtml::ReplaceSelectionCommand::doApply): Update endPos if inserting a new node and endPos is using that node's
807         parent and an offset past the node being inserted. That change fixes a problem with the position of the insertion point
808         after pasting into the top level of a document (from test cases in 3947901 and 3949790). When setting insertionPos, use
809         code that works when lastNodeInserted is a block rather than a text node. That change fixes a problem where a newline is
810         not added when pasting an entire paragraph into the end of a document (from test case in 3949790). Added nil check before
811         checking if lastNodeInserted is a <br> element, which fixes the crash when pasting just a paragraph break.
812
813         * khtml/editing/visible_units.h: Filled out the set of calls to add some boolean checks for lines (needed for the
814         bug fix), and calls for blocks (not yet implemented), and documents. The document checks may need refinement to
815         properly handle documents with a mix of editable and non-editable content, but for now they just refactor code
816         and make things a little clearer. Also removed the "include line break" parameter from endOfSentence.
817         * khtml/editing/visible_units.cpp:
818         (khtml::rootBoxForLine): Added.
819         (khtml::startOfLine): Added. Algorithm taken from selectionForLine in selection.cpp.
820         (khtml::endOfLine): Ditto.
821         (khtml::inSameLine): Added.
822         (khtml::isStartOfLine): Added.
823         (khtml::isEndOfLine): Added.
824         (khtml::endOfSentence): Removed "include line break" parameter.
825         (khtml::inSameParagraph): Added a null check.
826         (khtml::isStartOfParagraph): Ditto.
827         (khtml::isEndOfParagraph): Ditto.
828         (khtml::startOfBlock): Added.
829         (khtml::endOfBlock): Added.
830         (khtml::inSameBlock): Added.
831         (khtml::isStartOfBlock): Added.
832         (khtml::isEndOfBlock): Added.
833         (khtml::startOfDocument): Added.
834         (khtml::endOfDocument): Added.
835         (khtml::inSameDocument): Added.
836         (khtml::isStartOfDocument): Added.
837         (khtml::isEndOfDocument): Added.
838
839 2005-01-30  Darin Adler  <darin@apple.com>
840
841         Reviewed by John.
842
843         - fixed <rdar://problem/3977000> form data set posted for <input type="image" ...> omits name/value pair
844
845         * khtml/html/html_formimpl.cpp:
846         (DOM::HTMLInputElementImpl::appendFormData): Append a name/value pair for type IMAGE in addition to the X/Y
847         coordinates.
848
849 2005-01-30  Darin Adler  <darin@apple.com>
850
851         Reviewed by John.
852
853         - fixed <rdar://problem/3974246> REGRESSION (125-180): popup menus are missing item text on Harmony Remote web site
854
855         * khtml/html/html_formimpl.cpp: (DOM::HTMLOptionElementImpl::text): Change this function to traverse the entire tree
856         and gather all the text rather than just looking at immediate children.
857
858         * khtml/xml/dom_nodeimpl.h: Added const.
859         * khtml/xml/dom_nodeimpl.cpp:
860         (NodeImpl::traverseNextNode): Added const.
861         (NodeImpl::traverseNextSibling): Ditto.
862         (NodeImpl::traversePreviousNodePostOrder): Ditto.
863         (NodeImpl::detach): Add a missing nil check.
864
865 2005-01-30  Darin Adler  <darin@apple.com>
866
867         Reviewed by John.
868
869         - fixed <rdar://problem/3864536> crash copying text from other apps and pasting in a sticky in dashboard
870
871         * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Added missing ref/deref of newly created element.
872
873 2005-01-28  Darin Adler  <darin@apple.com>
874
875         * khtml/css/cssproperties.c: Regenerated with newer gperf.
876
877 2005-01-28  David Harrison  <harrison@apple.com>
878
879         Reviewed by John Sullivan.
880
881         <rdar://problem/3968144> AX need to be able to focus an AXLink by setting AXFocused to true
882         
883         * kwq/KWQAccObject.mm:
884         (-[KWQAccObject accessibilityPerformAction:]):
885         (-[KWQAccObject accessibilityIsAttributeSettable:]):
886         Add AXFocused for AXLinks.
887
888 2005-01-28  David Harrison  <harrison@apple.com>
889
890         Reviewed by Darin.
891
892         <rdar://problem/3584942> AX: Safari Accessibility parent-child mismatch
893
894         Use AppKit SPI _accessibilityParentForSubview to return KWQAccObject parent of AppKit AX object.
895         
896         * kwq/KWQAccObject.mm:
897         (-[KWQAccObject _accessibilityParentForSubview:]):
898         New.
899
900 2005-01-27  Adele Amchan  <adele@apple.com>
901
902         fixed by Darin, reviewed by me.
903
904         <rdar://problem/3976314> REGRESSION (180-TOT): submitting password fields fail on Panther
905
906         * kwq/KWQTextField.mm: (-[KWQTextFieldController string]): on panther, the secure text field's editor 
907         does not contain the real string, so now we just call stringValue on the field in that case.
908
909 2005-01-26  Maciej Stachowiak  <mjs@apple.com>
910
911         Reviewed by Darin, Hyatt and Ken.
912
913         <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
914         
915         * khtml/css/css_computedstyle.cpp:
916         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Add support
917         for -khtml-text-decorations-in-effect property. This works like text-docration
918         but follows proper inline semantics, that is, if a parent is causing text
919         decoration then -khtml-text-decorations-in-effect on this element will reflect that.
920         * khtml/css/cssproperties.in: Add -khtml-text-decorations-in-effect property.
921         * khtml/css/cssproperties.h: regenerated
922         * khtml/css/cssvalues.c: regenerated
923         * khtml/css/cssparser.cpp: regenerated
924         * khtml/css/cssproperties.c: regenerated
925
926         * khtml/css/css_valueimpl.h: Made copyPropertiesInSet public.
927
928         * khtml/editing/htmlediting.cpp:
929         (khtml::StyleChange::init): Handle -khtml-text-decorations-in-effect
930         specially, translate to text-decoration
931         (khtml::ApplyStyleCommand::applyInlineStyle): Fix a comment.
932         (khtml::ApplyStyleCommand::removeInlineStyle): Add new way of pushing down
933         text-decoration styles around the edges of the selected range.
934         (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAroundNode): Helper for this.
935         (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): ditto
936         (khtml::ApplyStyleCommand::nodeFullyUnselected): ditto
937         (khtml::hasTextDecorationProperty): ditto
938         (khtml::highestAncestorWithTextDecoration): ditto
939         (khtml::ApplyStyleCommand::extractTextDecorationStyle): ditto
940         (khtml::ApplyStyleCommand::extractAndNegateTextDecorationStyle): ditto
941         (khtml::ApplyStyleCommand::applyTextDecorationStyle): ditto
942         * khtml/editing/htmlediting.h: Prototype new methods.
943         * khtml/editing/jsediting.cpp: Make underline execCommand use the new CSS property.
944
945         - as a necessary part of the fix, fixed the longstanding problem
946         that mutating an element's inlineStyleDecl would not property
947         update its style attribute. now it does.
948         
949         * khtml/css/css_valueimpl.cpp:
950         (DOM::CSSMutableStyleDeclarationImpl::setChanged): If this is an inline style
951         declaration, tell the element it's style attribute needs updating.
952         * khtml/html/html_elementimpl.cpp:
953         (HTMLElementImpl::invalidateStyleAttribute): New method, just calls down
954         to the dom element.
955         (HTMLElementImpl::updateStyleAttribute): Regenerate style attribute from
956         inline style declaration.
957         * khtml/html/html_elementimpl.h: Prototype new stuff.
958         * khtml/xml/dom_elementimpl.cpp:
959         (ElementImpl::ElementImpl): Initialize new attribute.
960         (ElementImpl::updateStyleAttributeIfNeeded): New method to check if the style
961         is dirty and this is an html element, and if so call the html element to
962         regenerate the style attribute.
963         (ElementImpl::attributes): update style if needed
964         (ElementImpl::getAttribute): ditto
965         (ElementImpl::hasAttributes): ditto
966         (ElementImpl::dump): ditto
967         (XMLElementImpl::cloneNode): ditto
968         * khtml/xml/dom_elementimpl.h:
969         (DOM::ElementImpl::isStyleAttributeValid): new method to manage style attr
970         dirty bit
971         (DOM::ElementImpl::setStyleAttributeValid): ditto
972
973         - added new layout tests for underlining:
974         
975         * layout-tests/editing/editing.js:
976         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt: Added.
977         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt: Added.
978         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold.html: Added.
979         * layout-tests/editing/style/remove-underline-across-paragraph.html: Added.
980         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt: Added.
981         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt: Added.
982         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold.html: Added.
983         * layout-tests/editing/style/remove-underline-after-paragraph.html: Added.
984         * layout-tests/editing/style/remove-underline-expected.txt: Added.
985         * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt: Added.
986         * layout-tests/editing/style/remove-underline-from-stylesheet.html: Added.
987         * layout-tests/editing/style/remove-underline-in-bold-expected.txt: Added.
988         * layout-tests/editing/style/remove-underline-in-bold.html: Added.
989         * layout-tests/editing/style/remove-underline.html: Added.
990         * layout-tests/editing/style/underline-expected.txt: Added.
991         * layout-tests/editing/style/underline.html: Added.
992
993 2005-01-27  David Hyatt  <hyatt@apple.com>
994
995         Fix for 3875199, search field needs to be able to  show a magnifying  glass without a dropdown menu.
996         
997         Reviewed by kocienda
998
999         * khtml/html/html_formimpl.cpp:
1000         (DOM::HTMLInputElementImpl::HTMLInputElementImpl):
1001         (DOM::HTMLInputElementImpl::parseHTMLAttribute):
1002         * kwq/KWQLineEdit.mm:
1003         (QLineEdit::setMaxResults):
1004
1005 2005-01-27  Ken Kocienda  <kocienda@apple.com>
1006
1007         Reviewed by Maciej
1008
1009         Fix for this bug:
1010         
1011         <rdar://problem/3973254> Deletions of ranges does not coalesce correctly with subsequent typing
1012
1013         * khtml/editing/htmlediting.cpp:
1014         (khtml::InsertTextCommand::deleteCharacter): Remove this dead code.
1015         (khtml::ReplaceSelectionCommand::editingAction): Moved this code to a better place in the file. 
1016         It was in with unrelated functions.
1017         (khtml::TypingCommand::TypingCommand): Reorganize initialization list so it is easier to read.
1018         (khtml::TypingCommand::issueCommandForDeleteKey): Remove dead code. Roll in remaining code into deleteKeyPressed.
1019         (khtml::TypingCommand::deleteKeyPressed): Add in support for carrying along smart delete flag.
1020         (khtml::TypingCommand::forwardDeleteKeyPressed): New function. Makes forward delete work like
1021         "regular" delete in terms of coalescing typing.
1022         (khtml::TypingCommand::doApply): Add case for ForwardDeleteKey.
1023         (khtml::TypingCommand::preservesTypingStyle): Ditto.
1024         * khtml/editing/htmlediting.h:
1025         (khtml::TypingCommand::): Add ForwardDeleteKey constant. Remove a couple declarations for now-dead code.
1026         (khtml::TypingCommand::smartDelete): New accessor.
1027         (khtml::TypingCommand::setSmartDelete): Ditto.
1028         * kwq/WebCoreBridge.h:
1029         * kwq/WebCoreBridge.mm:
1030         (-[WebCoreBridge deleteKeyPressedWithSmartDelete:]): Add smart delete flag.
1031         (-[WebCoreBridge forwardDeleteKeyPressedWithSmartDelete:]): New method.
1032         * khtml/editing/jsediting.cpp: Add supprt for ForwardDelete command
1033         * layout-tests/editing/editing.js: Ditto.
1034         * layout-tests/editing/deleting/delete-and-undo-expected.txt: Added.
1035         * layout-tests/editing/deleting/delete-and-undo.html: Added.
1036         * layout-tests/editing/deleting/forward-delete-expected.txt: Added.
1037         * layout-tests/editing/deleting/forward-delete.html: Added.
1038
1039 === Safari-181 ===
1040
1041 2005-01-27  David Harrison  <harrison@apple.com>
1042
1043         Reviewed by Ken.
1044
1045         <rdar://problem/3962214> AX: AXLeftLineTextMarkerRangeForTextMarker returns incorrect range
1046
1047         * kwq/KWQAccObject.mm:
1048         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
1049         Allowed for selection to end of line including the linebreak.
1050         
1051 2005-01-27  David Harrison  <harrison@apple.com>
1052
1053         Reviewed by Darin, Ken.
1054
1055         <rdar://problem/3964470> AX: Include attachments in AXAttributedStringForTextMarkerRange
1056
1057         * kwq/KWQAccObject.mm:
1058         (-[KWQAccObject isAttachment]):
1059         (-[KWQAccObject attachmentView]):
1060         (-[KWQAccObject role]):
1061         (-[KWQAccObject subrole]):
1062         (-[KWQAccObject roleDescription]):
1063         (-[KWQAccObject value]):
1064         (-[KWQAccObject title]):
1065         (-[KWQAccObject accessibilityDescription]):
1066         (-[KWQAccObject accessibilityIsIgnored]):
1067         (-[KWQAccObject accessibilityAttributeNames]):
1068         (-[KWQAccObject accessibilityAttributeValue:]):
1069         Make attachments accessible.
1070         
1071         (CreateCGColorIfDifferent):
1072         (AXAttributeStringSetColor):
1073         (AXAttributeStringSetNumber):
1074         (AXAttributeStringSetFont):
1075         (AXAttributeStringSetStyle):
1076         (AXAttributeStringSetElement):
1077         (AXLinkElementForNode):
1078         (AXAttributedStringAppendText):
1079         (AXAttributedStringAppendReplaced):
1080         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
1081         Add attachments and more text attributes to AXAttributedStringForTextMarkerRange.
1082
1083 2005-01-27  Darin Adler  <darin@apple.com>
1084
1085         Reviewed by John.
1086
1087         - fixed <rdar://problem/3807935> DOM CSS computed style line-height is wrong in two ways
1088
1089         * khtml/css/css_computedstyle.cpp: (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
1090         Use specified size rather than computed size when dealing with a percentage for line height.
1091
1092 2005-01-27  Darin Adler  <darin@apple.com>
1093
1094         Reviewed by John.
1095
1096         - fixed <rdar://problem/3971372> SWB: template function DOM_cast() won't compile with gcc 4.0
1097         - fixed other gcc 4.0 compiling problems Patrick Beard pointed out on the phone
1098
1099         * kwq/DOMInternal.h: (DOM_cast): Change the "failToCompile()" trick to use a dependent name.
1100         Nowadays, if a name is not dependent, it is checked at template definition time. But we want
1101         a failure only at template instantiation time.
1102
1103         * ForwardingHeaders/editing/text_granularity.h: Added. Needed but a bug in the 3.3 compiler made
1104         it compile anyway without this.
1105
1106         - other changes
1107
1108         * khtml/html/html_miscimpl.h: For clarity, mark these functions virtual too. They are automatically
1109         virtual because the base class ones are virtual, but it's ugly to leave it this way.
1110
1111 2005-01-26  Ken Kocienda  <kocienda@apple.com>
1112
1113         Reviewed by Hyatt
1114
1115         Fix for this bug:
1116         
1117         <rdar://problem/3971609> REGRESSION (Mail): up/down arrow navigation broken after rewrapping text by resizing window
1118         <rdar://problem/3975661> REGRESSION (Mail): left/right arrow navigation can place insertion point after last character on line
1119
1120         * khtml/editing/selection.cpp:
1121         (khtml::Selection::modifyAffinity): PARAGRAPH and LINE movements should not alter affinity. This was
1122         just a mistake before when it reset to upstream in some cases.
1123         * khtml/rendering/render_line.cpp:
1124         (khtml::RootInlineBox::closestLeafChildForXPos): Move this function down from InlineBox, and 
1125         rework the implementation. This fixes 3971609.
1126         * khtml/rendering/render_line.h:
1127         * khtml/rendering/render_text.cpp:
1128         (RenderText::caretRect): Rework the algorithm to fix 3975661. This regressed when we began placing
1129         the spaces on the end of lines in text boxes when lines wrap.
1130
1131 2005-01-26  Richard Williamson   <rjw@apple.com>
1132
1133         Fixed <rdar://problem/3972522> (179-180) 40% slowdown on iBench JavaScript test
1134
1135         I added a member variable to ObjectImp.  This changed it's size and consequently
1136         hampered the optimizations built into the garbage collector.  Objects no longer
1137         fit within the allocators cell size, and thus allocation fell back to a slower
1138         allocator.
1139
1140         As a result of this fix I also dramatically cleaned up how runtime objects are
1141         accessed.  The path mostly *removes* code.
1142         
1143         Reviewed by Chris.
1144
1145         * khtml/ecma/kjs_dom.cpp:
1146         (DOMDocumentProtoFunc::tryCall):
1147         (DOMElementProtoFunc::tryCall):
1148         (KJS::getRuntimeObject):
1149         * khtml/ecma/kjs_dom.h:
1150         * khtml/ecma/kjs_html.cpp:
1151         (KJS::HTMLDocument::tryGet):
1152         (KJS::HTMLElement::tryGet):
1153         (KJS::HTMLElement::implementsCall):
1154         (KJS::HTMLElement::call):
1155         (KJS::HTMLElement::tryPut):
1156         (KJS::HTMLCollection::tryGet):
1157         (KJS::HTMLCollection::getNamedItems):
1158         * khtml/ecma/kjs_html.h:
1159         * khtml/ecma/kjs_window.cpp:
1160         (Window::get):
1161
1162 2005-01-26  Richard Williamson   <rjw@apple.com>
1163
1164         Fixed <rdar://problem/3757712> REGRESSION (Mail): WebCore does not allow Devanagari ligature input
1165
1166         For now we are using ICU UBreakIterator to determine grapheme boundaries for
1167         cursor and deletion.  This does not match what Cocoa does exactly, but does match
1168         what Carbon does.  The areas are difference are obscure, but, according to
1169         Deborah Goldsmith, using the UBreakIterator is the reasonable approach.
1170
1171         Reviewed by Ken.
1172
1173         * khtml/rendering/render_text.cpp:
1174         (RenderText::previousOffset):
1175         (RenderText::nextOffset):
1176
1177 2005-01-25  David Harrison  <harrison@apple.com>
1178
1179         Reviewed by Maciej and Richard.
1180
1181         <rdar://problem/3963731> AX VO: Changing window sizes causes a crash using with Voice Over - KWQPtrDictImpl::clear
1182
1183         * khtml/html/html_miscimpl.cpp:
1184         (HTMLCollectionImpl::HTMLCollectionImpl):
1185         Ensure that isHTMLDocument before calling HTMLDocument-only method.
1186
1187 2005-01-25  Richard Williamson   <rjw@apple.com>
1188
1189         Part one of fix for <rdar://problem/3757712> REGRESSION (Mail): WebCore does not allow Devanagari ligature input
1190
1191         This patch changes the semantics of next() and previous() on
1192         VisiblePosition to move a grapheme (character cluster) at a
1193         time.  This means that cursor navigation with correctly move
1194         over an entire cluster.
1195
1196         However, the expected behavior for deleting a grapheme is to
1197         delete individual code points, thus decomposing the grapheme
1198         into it constituent parts.  That will be addressed in the next
1199         part of the fix.
1200
1201         Reviewed by Ken.
1202
1203         * khtml/editing/visible_position.cpp:
1204         (khtml::VisiblePosition::previousPosition):
1205         (khtml::VisiblePosition::nextPosition):
1206         * khtml/editing/visible_position.h:
1207         * khtml/rendering/render_object.cpp:
1208         (RenderObject::previousOffset):
1209         (RenderObject::nextOffset):
1210         * khtml/rendering/render_object.h:
1211         * khtml/rendering/render_text.cpp:
1212         (RenderText::previousOffset):
1213         (RenderText::nextOffset):
1214         (RenderText::findNextInlineTextBox):
1215         * khtml/rendering/render_text.h:
1216         * khtml/xml/dom_nodeimpl.cpp:
1217         (NodeImpl::previousOffset):
1218         (NodeImpl::nextOffset):
1219         * khtml/xml/dom_nodeimpl.h:
1220
1221 2005-01-25  David Harrison  <harrison@apple.com>
1222
1223         Reviewed by Maciej.
1224
1225         <rdar://problem/3973067> AXWebArea for http://apple.netscape.com/ has an empty AXLinkUIElements
1226
1227         * kwq/KWQAccObject.mm:
1228         (-[KWQAccObject accessibilityAttributeValue:]):
1229         Omit ignored AXLinks from AXLinkUIElements result
1230
1231 2005-01-25  Ken Kocienda  <kocienda@apple.com>
1232
1233         Reviewed by John
1234
1235         Fix for this bug:
1236         
1237         <rdar://problem/3972851> REGRESSION (179-180+): Repro crash in ApplyStyleCommand::cleanUpEmptyStyleSpans
1238
1239         * khtml/editing/htmlediting.cpp:
1240         (khtml::ApplyStyleCommand::cleanUpEmptyStyleSpans): Added two null checks.
1241
1242 2005-01-25  Ken Kocienda  <kocienda@apple.com>
1243
1244         Reviewed by John
1245
1246         Fix for this bug:
1247         
1248         <rdar://problem/3954710> Mail crashed while editing signatures - NodeImpl::isBlockFlow
1249
1250         The fix is more general than for this one bug, and may work to fix many crashers. The problem
1251         is that the ReplaceSelectionCommand never checked whether its starting selection is empty. If
1252         it is, then we need to bail before doing the work of the command, which we need to deref the
1253         start and end points of the selection in order to do its work. I think you can see the crash
1254         potential.
1255
1256         * khtml/editing/htmlediting.cpp:
1257         (khtml::ReplaceSelectionCommand::doApply): Assert selection is not empty.
1258         * kwq/WebCoreBridge.mm:
1259         (partHasSelection): New helper function to test that bridge has a part with a selection.
1260         
1261         Use new helper function to test part and selection; return from these function if this test fails.
1262         
1263         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:])
1264         (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:])
1265         (-[WebCoreBridge alterCurrentSelection:direction:granularity:])
1266         (-[WebCoreBridge rangeByAlteringCurrentSelection:verticalDistance:])
1267         (-[WebCoreBridge alterCurrentSelection:verticalDistance:])
1268         (-[WebCoreBridge documentFragmentWithText:])
1269         (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:smartReplace:])
1270         (-[WebCoreBridge insertLineBreak])
1271         (-[WebCoreBridge insertParagraphSeparator])
1272         (-[WebCoreBridge insertParagraphSeparatorInQuotedContent])
1273         (-[WebCoreBridge insertText:selectInsertedText:])
1274         (-[WebCoreBridge deleteSelectionWithSmartDelete:])
1275         (-[WebCoreBridge ensureSelectionVisible])
1276
1277 2005-01-24  Kevin Decker  <kdecker@apple.com>
1278
1279         Reviewed by Darin.
1280
1281         Fixed <rdar://problem/3932374> REGRESSION: 'ReferenceError - Can't find variable' JavaScript error at webxpress.fidelity.com
1282
1283         * khtml/html/html_miscimpl.h: Missing virtual identifiers for namedItem() and nextNamedItem() exposed a flaw that prevented finding variables in form [HTMLFormCollectionImpl] scopes.
1284         
1285
1286 2005-01-24  Vicki Murley <vicki@apple.com>
1287
1288         Reviewed by kocienda.
1289
1290         - fix <rdar://problem/3810661> computed style not handled for Apple extensions
1291  
1292         * khtml/css/css_computedstyle.cpp: (DOM::):
1293         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): add -apple-line-clamp and -apple-text-size-adjust
1294
1295 2005-01-24  Darin Adler  <darin@apple.com>
1296
1297         Reviewed by Kevin.
1298
1299         - fixed <rdar://problem/3969884> REGRESSION (179-180): Typing password not echoed as "bullets" at paypal.com when field is first focused
1300
1301         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]):
1302         Sizing up the form editor, which fixes things for normal fields and search fields,
1303         screws things up for password fields. Eventually, I'll need to figure out why this is
1304         and file a bug so that the AppKit team fixes it. In the mean time, just check for the
1305         case of the secure text field, and don't size up in that case.
1306
1307 2005-01-24  Ken Kocienda  <kocienda@apple.com>
1308
1309         Reviewed by Hyatt
1310
1311         Fix for this bug:
1312         
1313         <rdar://problem/3963560> 8A354: Inserting Japanese text to the line head causes line break
1314
1315         * khtml/editing/htmlediting.cpp:
1316         (khtml::ReplaceSelectionCommand::doApply): Add one more case where we merge content into the
1317         existing line. This covers the situation see using the steps to reproduce this bug.
1318
1319 2005-01-21  Maciej Stachowiak  <mjs@apple.com>
1320
1321         Reviewed by Darin.
1322
1323         <rdar://problem/3967572> Editing should split elements before removing style
1324         
1325         * khtml/editing/htmlediting.cpp:
1326         (khtml::CompositeEditCommand::splitElement):
1327         (khtml::CompositeEditCommand::mergeIdenticalElements):
1328         (khtml::CompositeEditCommand::wrapContentsInDummySpan):
1329         (khtml::CompositeEditCommand::splitTextNodeContainingElement):
1330         (khtml::ApplyStyleCommand::applyInlineStyle):
1331         (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
1332         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
1333         (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
1334         (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
1335         (khtml::areIdenticalElements):
1336         (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
1337         (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
1338         (khtml::ApplyStyleCommand::cleanUpEmptyStyleSpans):
1339         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded):
1340         (khtml::InsertParagraphSeparatorCommand::doApply):
1341         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
1342         (khtml::InsertTextCommand::prepareForTextInsertion):
1343         (khtml::SplitTextNodeCommand::doUnapply):
1344         (khtml::SplitElementCommand::SplitElementCommand):
1345         (khtml::SplitElementCommand::~SplitElementCommand):
1346         (khtml::SplitElementCommand::doApply):
1347         (khtml::SplitElementCommand::doUnapply):
1348         (khtml::MergeIdenticalElementsCommand::MergeIdenticalElementsCommand):
1349         (khtml::MergeIdenticalElementsCommand::~MergeIdenticalElementsCommand):
1350         (khtml::MergeIdenticalElementsCommand::doApply):
1351         (khtml::MergeIdenticalElementsCommand::doUnapply):
1352         (khtml::WrapContentsInDummySpanCommand::WrapContentsInDummySpanCommand):
1353         (khtml::WrapContentsInDummySpanCommand::~WrapContentsInDummySpanCommand):
1354         (khtml::WrapContentsInDummySpanCommand::doApply):
1355         (khtml::WrapContentsInDummySpanCommand::doUnapply):
1356         (khtml::SplitTextNodeContainingElementCommand::SplitTextNodeContainingElementCommand):
1357         (khtml::SplitTextNodeContainingElementCommand::~SplitTextNodeContainingElementCommand):
1358         (khtml::SplitTextNodeContainingElementCommand::doApply):
1359         * khtml/editing/htmlediting.h:
1360
1361         New layout test that shows the side benefit of this.
1362         
1363         * layout-tests/editing/style/unbold-in-bold-expected.txt: Added.
1364         * layout-tests/editing/style/unbold-in-bold.html: Added.
1365
1366 2005-01-24  Darin Adler  <darin@apple.com>
1367
1368         Reviewed by John.
1369
1370         - fixed <rdar://problem/3933435> -[DOMRange cloneContents] sometimes alters the original DOMRange
1371
1372         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::processContents): Fixed code that was collapsing
1373         the range after processing the contents. That's right for extract and delete, but not clone.
1374
1375         - fixed <rdar://problem/3714184> inline input works incorrectly when I type Korean slowly in textfield in form on www.google.co.kr
1376         - fixed <rdar://problem/3193848> Can't enter SSN to sign up for Chase visa online account (changing focus inside key press handler)
1377         - fixed <rdar://problem/3874683> REGRESSION (161-162): Crash after typing command-Z to undo after pasting text with newline in it into a text field <input type=text>
1378
1379         * kwq/KWQLineEdit.mm:
1380         (QLineEdit::text): Changed to call a new string method on the controller instead of calling
1381         stringValue, since stringValue has a bad side effect of ending inline input.
1382         (QLineEdit::selectAll): Changed to only call selectText: when the field is already selected.
1383         When you are giving the field focus, it automatically gets all selected, and this change
1384         is required in the case where we defer the focus change.
1385
1386         * kwq/KWQTextField.h: Added a new string method to the controller.
1387         * kwq/KWQTextField.mm:
1388         (-[KWQTextFieldController setMaximumLength:]): Call the new string method instead of using stringValue.
1389         (-[KWQTextFieldController controlTextDidChange:]): Removed the code to truncate at the first CR or LF.
1390         That's now handled in the shouldChangeTextInRange method instead.
1391         (-[KWQTextFieldController textView:shouldHandleEvent:]): Add new logic to defer responder changes until
1392         after the event is handled. This makes sure the key gets into the field that's already handling it at
1393         rather than ending up in the newly-focused field if the key press handler focuses a different element.
1394         (-[KWQTextFieldController textView:didHandleEvent:]): Turn off deferral here, now that the key press
1395         has been handled.
1396         (-[KWQTextFieldController string]): Added. Calls stringValue only if there's no editor. If there is
1397         an editor, calls string on that instead.
1398         (-[KWQTextFieldController textView:shouldChangeTextInRange:replacementString:]): Added. Called by
1399         the three field subclasses. Truncates incoming strings at the first CR or LF character. This works
1400         properly with Undo, and the old technique did not.
1401         (-[KWQTextFieldController preprocessString:]): Added. Helper used for all the setStringValue methods
1402         so they all truncate at the first CR or LF as well as truncating to the appropriate length.
1403         (-[KWQTextField setStringValue:]): Changed to call the controller.
1404         (-[KWQTextField textView:shouldChangeTextInRange:replacementString:]): Added. Calls the controller.
1405         (-[KWQSecureTextField setStringValue:]): More of the same.
1406         (-[KWQSecureTextField textView:shouldChangeTextInRange:replacementString:]): Ditto.
1407         (-[KWQSearchField setStringValue:]): Ditto.
1408         (-[KWQSearchField textView:shouldChangeTextInRange:replacementString:]): Ditto.
1409
1410         * kwq/KWQWidget.h: Added the new setDeferFirstResponderChanges function.
1411         * kwq/KWQWidget.mm:
1412         (QWidget::~QWidget): Clear out the deferredFirstResponder global just in case we are destroyed
1413         while we "have the ball".
1414         (QWidget::hasFocus): If we are in the deferred mode, use the global to decide who to say is focused.
1415         (QWidget::setFocus): If we are in the deferred mode, set the global instead of making something be
1416         the first responder.
1417         (QWidget::setDeferFirstResponderChanges): Set the boolean. If the boolean is being cleared, then
1418         get the deferred first responder and call setFocus on it again, which will do the work we didn't
1419         want to do earlier.
1420
1421 2005-01-24  Ken Kocienda  <kocienda@apple.com>
1422
1423         Reviewed by John
1424
1425         Fix for this bug:
1426         
1427         <rdar://problem/3964350> Deleting all content and typing in a message gets one letter, then beeps
1428
1429         This is a problem with the way we turn key events, when a user starts typing, into editing commands. 
1430         Right now, that initial delete key in an empty window is turned into an editing command, and much 
1431         editing code runs that need not run. What's more, this is confusing the selection machinery. The
1432         solution is to detect the "delete in an empty window" case and don't turn this into an editing
1433         command at all.
1434
1435         * khtml/editing/htmlediting.cpp:
1436         (khtml::TypingCommand::deleteKeyPressed)
1437
1438 2005-01-23  Adele Amchan  <adele@apple.com>
1439
1440         Fixed <rdar://problem/3964286> REGRESSION (178-179): menus and "go to old site" link at Ameritrade's new site don't work
1441
1442         Removed check for document from checkCompleted.  In this case, WebCore never knew that a WebImageView was complete because 
1443         it fell into this document check case in checkCompleted.  
1444         Added check for document to tokenizerProcessedData (see <rdar://problem/3807144>)
1445
1446         Reviewed by Darin.
1447
1448         * khtml/khtml_part.cpp:
1449         (KHTMLPart::stop):
1450         (KHTMLPart::checkCompleted):
1451         * khtml/khtml_part.h:
1452         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::tokenizerProcessedData):
1453
1454 2005-01-21  Richard Williamson   <rjw@apple.com>
1455
1456         Fixed <rdar://problem/3759399> Javascript / Liveconnect problems ((event handler):Undefined value)
1457
1458         Java applets specified with <object> or <embed> weren't scriptable.  Now they are.
1459
1460         Reviewed by Chris.
1461
1462         * khtml/html/html_objectimpl.cpp:
1463         (HTMLEmbedElementImpl::getEmbedInstance):
1464         (HTMLObjectElementImpl::getObjectInstance):
1465
1466 2005-01-21  Ken Kocienda  <kocienda@apple.com>
1467
1468         Reviewed by John
1469
1470         Fix for this bug:
1471         
1472         <rdar://problem/3959464> REGRESSION (Mail): Insertion point goes back to beginning of document after deleting
1473
1474         * khtml/editing/htmlediting.cpp:
1475         (khtml::DeleteSelectionCommand::handleGeneralDelete): Add special case to handle retaining a fully-selected block.
1476         This fixes the bug.
1477         * layout-tests/editing/deleting/delete-3959464-fix-expected.txt: Added.
1478         * layout-tests/editing/deleting/delete-3959464-fix.html: Added.
1479
1480 2005-01-21  Richard Williamson   <rjw@apple.com>
1481
1482         Fixed <rdar://problem/3966998> REGRESSION(179-TOT) clicking on gmail message brings me to blank screen
1483
1484         getElementById() sometimes returns Undefined() instead of Null().
1485
1486         Reviewed by Hyatt.
1487
1488         * khtml/ecma/kjs_dom.cpp:
1489         (DOMDocumentProtoFunc::tryCall):
1490
1491 2005-01-21  David Hyatt  <hyatt@apple.com>
1492
1493         Fix for 3773809, make sure that overflow regions never end up at an invalid scroll offset because of a layout change.
1494         
1495         Reviewed by kocienda
1496
1497         * khtml/rendering/render_layer.cpp:
1498         (RenderLayer::updateScrollInfoAfterLayout):
1499
1500 2005-01-21  David Hyatt  <hyatt@apple.com>
1501
1502         Fix for 3966349, hang loading page.  Make sure that loops using popOneBlock properly check for a null
1503         blockStack to avoid an infinite loop.
1504         
1505         Reviewed by kocienda
1506
1507         * khtml/html/htmlparser.cpp:
1508         (KHTMLParser::parseToken):
1509         (KHTMLParser::insertNode):
1510         (KHTMLParser::popInlineBlocks):
1511
1512 2005-01-21  Ken Kocienda  <kocienda@apple.com>
1513
1514         Reviewed by John
1515
1516         Fix for this bug:
1517         
1518         <rdar://problem/3957204> Mail crashed when sending a message in ~InsertParagraphSeparatorInQuotedContentCommand
1519
1520         * khtml/editing/htmlediting.cpp:
1521         (khtml::InsertParagraphSeparatorInQuotedContentCommand::InsertParagraphSeparatorInQuotedContentCommand):
1522         InsertParagraphSeparatorInQuotedContentCommand has this member variable: DOM::ElementImpl *m_breakNode;
1523         I failed to initialize this variable to null in the constructor, and there is an uncommonly-traveled 
1524         code path which does not set this variable to something good. In the destructor, we check for null, 
1525         and deref if non-null. Obvious "BOOM" potential. Fixed.
1526
1527 2005-01-21  Ken Kocienda  <kocienda@apple.com>
1528
1529         Reviewed by John
1530
1531         Fix for this bug:
1532         
1533         <rdar://problem/3966311> REGRESSION (Mail): Hitting return makes space character disappear
1534
1535         * khtml/editing/htmlediting.cpp:
1536         (khtml::InsertParagraphSeparatorCommand::doApply): When writing the code to insert a block
1537         in response to the return key, I did not write code to cover the case described in the bug.
1538         Now I have.
1539         * layout-tests/editing/inserting/insert-div-025-expected.txt: Added.
1540         * layout-tests/editing/inserting/insert-div-025.html: Added.
1541
1542 2005-01-20  Maciej Stachowiak  <mjs@apple.com>
1543
1544         Reviewed by Ken.
1545
1546         <rdar://problem/3965196> security fix for javascript: exploit missed one case (already fixed in updates)
1547         
1548         * khtml/ecma/kjs_window.cpp:
1549         (WindowFunc::tryCall): correct mistake in earlier fix for the following bug, caught by Adele:
1550
1551 2005-01-20  Maciej Stachowiak  <mjs@apple.com>
1552
1553         Reviewed by Ken.
1554
1555         <rdar://problem/3965466> editing needs to insert text before applying typing style
1556         
1557         * khtml/editing/htmlediting.cpp:
1558         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): Remove a FIXME comment.
1559         (khtml::InsertLineBreakCommand::doApply): Apply style to the BR
1560         node after inserting it.
1561         (khtml::InsertTextCommand::prepareForTextInsertion): Don't try to
1562         apply style to any new nodes created before inserting.
1563         (khtml::InsertTextCommand::input): Apply style to the inserted range
1564         after doing the text insert.
1565         * khtml/editing/htmlediting.h:
1566
1567         This change leads to improved results on one of the layout tests:
1568         
1569         * layout-tests/editing/inserting/insert-div-024-expected.txt:
1570
1571 === Safari-180 ===
1572
1573 2005-01-20  Ken Kocienda  <kocienda@apple.com>
1574
1575         Reviewed by John
1576
1577         Fix for this bug:
1578         
1579         <rdar://problem/3964646> REGRESSION (179-180): Typing space at end of line makes following paragraph disappear
1580
1581         * khtml/editing/htmlediting.cpp:
1582         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Recent change to block placeholder removal code 
1583         caused this regression. The code became too aggressive in removing block placeholders, and would remove them
1584         from blocks other than the block containing the selection.
1585         * layout-tests/editing/inserting/insert-div-023-expected.txt: This file had a spurious BR element in it that
1586         I did not notice earlier.
1587         * layout-tests/editing/inserting/insert-div-024-expected.txt: Ditto.
1588
1589 2005-01-20  David Hyatt  <hyatt@apple.com>
1590
1591         Fix for oddness on albertsons.com.  Make sure not to crash when setting/removing style properties on a node
1592         with no document.  The bug # is 3813900.
1593         
1594         Reviewed by john
1595
1596 2005-01-20  David Harrison  <harrison@apple.com>
1597
1598         Reviewed by Darin.
1599
1600         PARTIAL fix for following bug.  Create attributed string with fonts and links.  Still need to add attachments.
1601         <rdar://problem/3942606> AX: Support kAXAttributedStringForTextMarkerRangeParameterizedAttribute
1602         
1603         * kwq/KWQAccObject.mm:
1604         (-[KWQAccObject textUnderElement]):
1605         Touched up previous checkin to match code review comments.
1606         
1607         (-[KWQAccObject value]):
1608         Use plainText for this one instead of obsolete attributedString.
1609         
1610         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
1611         Advertise AXAttributedStringForTextMarkerRange.
1612         
1613         (AXAttributeStringAddFont):
1614         (AXAttributeStringAddElement):
1615         (-[KWQAccObject linkUIElementForNode:]):
1616         (-[KWQAccObject _addAttachmentForElement:URL:needsParagraph:usePlaceholder:]):
1617         (-[KWQAccObject accessibilityAttributedStringForRange:]):
1618         New routines to support AXAttributedStringForTextMarkerRange.
1619         
1620         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
1621         Use new routines instead of obsolete attributedString.
1622
1623 2005-01-20  David Harrison  <harrison@apple.com>
1624
1625         Reviewed by Darin.
1626
1627         <rdar://problem/3960196> AX Crash in DOM::Range::setStartBefore
1628
1629         * khtml/xml/dom_docimpl.cpp:
1630         (DocumentImpl::getAccObjectCache):
1631         Adjust when detecting cache in non-top level WebArea.
1632         * kwq/KWQAccObject.mm:
1633         (-[KWQAccObject textUnderElement]):
1634         (-[KWQAccObject accessibilityAttributeValue:]):
1635         Make sure the elements document is the current one for the part.
1636
1637 2005-01-20  Darin Adler  <darin@apple.com>
1638
1639         Reviewed by John.
1640
1641         - fixed <rdar://problem/3922980> Mail not crashing, just quitting itself suddenly in -[WebHTMLView(MailExtras) findString:options:]
1642
1643         * khtml/dom/dom2_range.cpp: (DOM::operator==): Handle null and detached ranges without raising exceptions.
1644         The uncaught exception would make the entire program terminate.
1645
1646         - fixed <rdar://problem/3885729> attempting to modify a computed style does nothing, but should raise a DOM exception
1647
1648         * kwq/DOM-CSS.mm: (-[DOMCSSStyleDeclaration setProperty:::]): Uncommented this code which I had to disable
1649         back in November because Mail was stumbling over it.
1650
1651         - fixed <rdar://problem/3943049> focus() called during onload handler results in square text field on <input type=search>        
1652
1653         * kwq/KWQLineEdit.mm: (QLineEdit::baselinePosition): Change computation so it will work even for fields
1654         that position their text in a way that depends on vertical size. In the case of a search field, the text
1655         is centered, so the old logic was broken.
1656         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Set the frame size to
1657         something large enough to accomodate the field editor. If we start the frame at size 0,0 we run into
1658         AppKit trouble when it insets the frame to figure out the frame for the field editor. In the case of this
1659         bug this happens because we become first responder before being sized and positioned by the HTML layout code.
1660
1661         - improved debugging output when using "po" from gdb with Objective-C DOM
1662
1663         * kwq/DOM.mm:
1664         (-[DOMNode description]): Added. Includes node name ("<tr>") and node value (e.g., string for text node).
1665         (-[DOMRange description]): Tweaked format.
1666
1667 2005-01-19  Richard Williamson   <rjw@apple.com>
1668
1669         After further discussion with Real we have decided to NOT include the
1670         additional CLSID for the real plugin.  See 3958601.
1671
1672         Reviewed by Darin.
1673
1674         * khtml/rendering/render_frames.cpp:
1675         (RenderPartObject::updateWidget):
1676
1677 2005-01-19  David Harrison  <harrison@apple.com>
1678
1679         Reviewed by Maciej.
1680
1681         <rdar://problem/3949429> AX: word marker routines returns incorrect data for empty line
1682
1683         Previous checkin for this bug was missing some of the patch.  Editing snafu with multiple changes in tree.
1684         
1685         * kwq/KWQAccObject.mm:
1686         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
1687         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
1688         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
1689         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
1690         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
1691         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
1692         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
1693
1694 2005-01-19  Ken Kocienda  <kocienda@apple.com>
1695
1696         Reviewed by John
1697
1698         * khtml/editing/htmlediting.cpp:
1699         (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Small, cosmetic change John and I decided
1700         to do on my last checkin, but I forgot to do before landing.
1701
1702 2005-01-19  Ken Kocienda  <kocienda@apple.com>
1703
1704         Reviewed by John
1705
1706         Fix for this bug:
1707         
1708         <rdar://problem/3959727> REGRESSION (Mail): Style not preserved on blank lines
1709
1710         * khtml/editing/htmlediting.cpp:
1711         (khtml::CompositeEditCommand::applyStyle):
1712         (khtml::CompositeEditCommand::insertBlockPlaceholder): New function that unconditionally adds a block placeholder.
1713         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Now returns bool based on whether
1714         placeholder was added or not.
1715         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Now searches all the descendents of a block
1716         looking for a placeholder. The old code, which just looked at the last child of a node, started missing
1717         once block placeholders became styled (which started happening with this patch).
1718         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Now handles applying typing style
1719         to a block placeholder at call time, rather than setting the typing style as a latent style that
1720         might be applied later. This is an important part of the bug fix.
1721         (khtml::DeleteSelectionCommand::doApply): Now uses bool return value from insertBlockPlaceholderIfNeeded()
1722         and passes it along to calculateStyleBeforeInsertion, so the case where a block placeholder needs to
1723         be styled can be detected.
1724         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Changed the way this class
1725         managed style. Before it would calculate and set typing style for the block added. This is not
1726         sufficient. Added blocks need to styled immediately. Some name changes to instance variables in 
1727         this class due to the change to accommodate this change.
1728         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Name changes, as above.
1729         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): Ditto.
1730         (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Ditto.
1731         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
1732         (khtml::ReplaceSelectionCommand::doApply): Improve check for testing when a placeholder
1733         block can be removed in its entirety after the insertion.
1734         * khtml/editing/htmlediting.h: Update header accordingly.
1735         * khtml/khtml_part.cpp:
1736         (KHTMLPart::selectionComputedStyle): Move position for computed style check downstream before
1737         doing check when the position is in an empty block (this makes sure any style on any block
1738         placeholder is accounted for).
1739
1740         New layout tests to check bug fix.
1741
1742         * layout-tests/editing/style/block-style-004-expected.txt: Added.
1743         * layout-tests/editing/style/block-style-004.html: Added.
1744         * layout-tests/editing/style/block-style-005-expected.txt: Added.
1745         * layout-tests/editing/style/block-style-005.html: Added.
1746         * layout-tests/editing/style/block-style-006-expected.txt: Added.
1747         * layout-tests/editing/style/block-style-006.html: Added.
1748
1749         Results updated to reflect new block placeholder code.
1750
1751         * layout-tests/editing/inserting/insert-div-004-expected.txt 
1752         * layout-tests/editing/inserting/insert-div-005-expected.txt
1753         * layout-tests/editing/inserting/insert-div-006-expected.txt
1754         * layout-tests/editing/inserting/insert-div-008-expected.txt
1755         * layout-tests/editing/inserting/insert-div-011-expected.txt
1756         * layout-tests/editing/inserting/insert-div-012-expected.txt
1757         * layout-tests/editing/inserting/insert-div-013-expected.txt
1758         * layout-tests/editing/inserting/insert-div-014-expected.txt
1759         * layout-tests/editing/inserting/insert-div-015-expected.txt
1760         * layout-tests/editing/inserting/insert-div-016-expected.txt
1761         * layout-tests/editing/inserting/insert-div-017-expected.txt
1762         * layout-tests/editing/inserting/insert-div-018-expected.txt
1763         * layout-tests/editing/inserting/insert-div-019-expected.txt
1764         * layout-tests/editing/inserting/insert-div-021-expected.txt
1765         * layout-tests/editing/inserting/insert-div-022-expected.txt
1766         * layout-tests/editing/inserting/insert-div-023-expected.txt
1767         * layout-tests/editing/inserting/insert-div-024-expected.txt
1768
1769 2005-01-19  David Hyatt  <hyatt@apple.com>
1770
1771         Dont null-check the renderer before submitting, since a script can set it to display:none and still expect the
1772         submission to occur.  Fixes bug #3477282.
1773         
1774         Reviewed by kdecker
1775
1776         (DOM::HTMLInputElementImpl::defaultEventHandler):
1777
1778 2005-01-18  Richard Williamson   <rjw@apple.com>
1779         
1780         Fixed several issues all arising from analysis of plugin detection code at ifilm.com:
1781
1782         Fixed <rdar://problem/3958592> can't script plug-ins if plug-in is invoked with <object> element instead of <embed>
1783         Fixed <rdar://problem/3958597> <object> elements with IDs do not show up as named properties of the document
1784         Fixed <rdar://problem/3960973> DOM objects for plugin elements are not accessible
1785         Fixed <rdar://problem/3958601> need an additional class ID in WebCore for the Real plug-in
1786
1787         We now support accessing scriptable plugin objects that are specified with <applet>, <embed>, or <object>
1788         tags.  Also, if any of these elements are named they can be accessed from the document or window objects.
1789         Finally, DOM methods are properties will be forwarded appropriately for the plugin's root scriptable object.
1790
1791         Reviewed by Chris.
1792
1793         * khtml/dom/html_document.cpp:
1794         (HTMLDocument::objects):
1795         * khtml/dom/html_document.h:
1796         * khtml/ecma/kjs_dom.cpp:
1797         (DOMDocumentProtoFunc::tryCall):
1798         (DOMElementProtoFunc::tryCall):
1799         (KJS::getRuntimeObject):
1800         * khtml/ecma/kjs_dom.h:
1801         * khtml/ecma/kjs_html.cpp:
1802         (KJS::HTMLDocument::tryGet):
1803         (KJS::HTMLElement::tryGet):
1804         (KJS::HTMLCollection::tryGet):
1805         (KJS::HTMLCollection::getNamedItems):
1806         * khtml/ecma/kjs_window.cpp:
1807         (Window::get):
1808         * khtml/html/html_miscimpl.cpp:
1809         (HTMLCollectionImpl::traverseNextItem):
1810         * khtml/html/html_miscimpl.h:
1811         (DOM::HTMLCollectionImpl::):
1812         * khtml/html/html_objectimpl.cpp:
1813         (HTMLAppletElementImpl::getAppletInstance):
1814         (HTMLObjectElementImpl::HTMLObjectElementImpl):
1815         (HTMLObjectElementImpl::getObjectInstance):
1816         * khtml/html/html_objectimpl.h:
1817         * khtml/rendering/render_frames.cpp:
1818         (RenderPartObject::updateWidget):
1819         * kwq/KWQKHTMLPart.h:
1820         * kwq/KWQKHTMLPart.mm:
1821         (KWQKHTMLPart::getObjectInstanceForView):
1822
1823 2005-01-18  David Hyatt  <hyatt@apple.com>
1824
1825         Fix for 3948123, rolling over link erases nearby text.  The repaint rect check for lines was wrong whenever
1826         two lines overlapped.
1827         
1828         Reviewed by kocienda
1829
1830         * khtml/rendering/render_flow.cpp:
1831         (RenderFlow::paintLines):
1832
1833 2005-01-18  Ken Kocienda  <kocienda@apple.com>
1834
1835         Reviewed by Hyatt
1836         
1837         Fix for this bug:
1838         
1839         <rdar://problem/3960116> Focus rings paint incorrectly for contenteditable blocks in web pages
1840
1841         * khtml/rendering/render_flow.cpp:
1842         (RenderFlow::addFocusRingRects): Fix painting of focus rings so that ring only paints around
1843         outermost contenteditable elements.
1844
1845 2005-01-18  David Harrison  <harrison@apple.com>
1846
1847         Reviewed by Darin.
1848
1849         <rdar://problem/3959668> accessibilityFocusedUIElement sometimes returns an ignored element; it must not
1850
1851         * kwq/KWQAccObject.mm:
1852         (-[KWQAccObject accessibilityFocusedUIElement]):
1853         Return parentObjectUnignored if focused object is ignored.
1854
1855 2005-01-18  Ken Kocienda  <kocienda@apple.com>
1856
1857         Reviewed by John
1858
1859         Fix for this bug:
1860         
1861         <rdar://problem/3952877> REGRESSION (Mail): Command-left/right-arrows don't work with file attachment
1862
1863         * khtml/editing/selection.cpp:
1864         (khtml::nodeForInlineBox): New helper function used in reimplementation of function below.
1865         (khtml::selectionForLine): Reimplemented using line box smarts. I originally wrote this code when
1866         I had a less than full understanding of line layout. I can do better now, and my new version no
1867         longer fails to notice attachments when doing the kind of navigation mentioned in the bug.
1868
1869 2005-01-17  David Harrison  <harrison@apple.com>
1870
1871         Reviewed by John Sullivan.
1872
1873         <rdar://problem/3949429> AX: word marker routines returns incorrect data for empty line
1874         <rdar://problem/3949848> AX: paragraph marker routines do not work when given a paragraph end marker
1875
1876         Also fixed sentence support in the same way.
1877         
1878         * kwq/KWQAccObject.mm:
1879         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
1880         (-[KWQAccObject doAXNextSentenceEndTextMarkerForTextMarker:]):
1881         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
1882         (-[KWQAccObject doAXNextParagraphEndTextMarkerForTextMarker:]):
1883         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
1884         Move one position in desired direction before calling visible_units.cpp code.
1885
1886 2005-01-17  David Harrison  <harrison@apple.com>
1887
1888         Updated expected test results.
1889         
1890         <rdar://problem/3945880> line-ending space seems not to be present
1891
1892         * layout-tests/editing/deleting/delete-ws-fixup-001-expected.txt:
1893         * layout-tests/editing/deleting/delete-ws-fixup-002-expected.txt:
1894         * layout-tests/editing/inserting/insert-div-020-expected.txt:
1895         * layout-tests/editing/inserting/insert-div-021-expected.txt:
1896         * layout-tests/editing/inserting/insert-div-022-expected.txt:
1897         * layout-tests/editing/inserting/insert-div-023-expected.txt:
1898         * layout-tests/editing/inserting/insert-div-024-expected.txt:
1899
1900 2005-01-17  David Harrison  <harrison@apple.com>
1901
1902         Reviewed by Dave Hyatt (bidi.cpp) and Darin Adler (selection.cpp).
1903
1904         <rdar://problem/3945880> line-ending space seems not to be present
1905
1906         * khtml/editing/selection.cpp:
1907         (khtml::Selection::validate):
1908         Extend AFTER_WHITE_SPACE code to support white spac in the middle of paragraphs, not just the end.
1909         * khtml/rendering/bidi.cpp:
1910         (khtml::RenderBlock::findNextLineBreak):
1911         Pick left/rightness of word selection based on being at the end of paragraph (i.e. after a hard line break).
1912
1913 2005-01-17  Darin Adler  <darin@apple.com>
1914
1915         Reviewed by John Louch.
1916
1917         - fixed <rdar://problem/3958503> need screenX and screenY to use WebKit windowFrame delegate
1918
1919         * khtml/ecma/kjs_window.cpp: (Window::get): Change screenX and screenY to use frameGeometry instead
1920         of using mapToGlobal and screen in a complicated way.
1921         * kwq/KWQKHTMLView.mm: Removed unused mapToGlobal function.
1922         * kwq/KWQWindowWidget.h: Ditto.
1923         * kwq/KWQWindowWidget.mm: Ditto.
1924
1925 2005-01-17  David Hyatt  <hyatt@apple.com>
1926
1927         Fix a screwup in rightmost/lowets position computation.  3955207.  Make sure floats with layers are still checked.
1928
1929         Reviewed by kocienda
1930         
1931         * khtml/rendering/render_block.cpp
1932
1933 2005-01-17  Ken Kocienda  <kocienda@apple.com>
1934
1935         Reviewed by John
1936
1937         <rdar://problem/3953366> Problems with typing attributes in HTML compose
1938
1939         * khtml/editing/htmlediting.cpp:
1940         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Remove misguided "optimization"
1941         that tried to sense when typing style could be cleared without actually doing a style diff between
1942         before-delete and after-delete positions. Removing this extra check and running the 
1943         general-purpose code fixes the bug.
1944
1945 2005-01-17  Richard Williamson   <rjw@apple.com>
1946
1947         Fixed <rdar://problem/3753030> Need to ensure same origin for plugin binding invocations (origin security rules)
1948
1949         Keep track of originating execution context and target execution
1950         context for native JS object wrappers, and perform appropriate
1951         security checks.
1952
1953         Reviewed by David Harrison.
1954
1955         * khtml/ecma/kjs_binding.cpp:
1956         (ScriptInterpreter::isGlobalObject):
1957         (ScriptInterpreter::isSafeScript):
1958         (ScriptInterpreter::interpreterForGlobalObject):
1959         * khtml/ecma/kjs_binding.h:
1960         * khtml/ecma/kjs_window.cpp:
1961         (Window::interpreter):
1962         (Window::isSafeScript):
1963         * khtml/ecma/kjs_window.h:
1964         * kwq/DOMInternal.mm:
1965         (-[WebScriptObject _initializeScriptDOMNodeImp]):
1966         * kwq/KWQKHTMLPart.mm:
1967         (KWQKHTMLPart::windowScriptObject):
1968         (KWQKHTMLPart::windowScriptNPObject):
1969         * kwq/WebCoreBridge.mm:
1970         (rootForView):
1971         (-[WebCoreBridge init]):
1972
1973 2005-01-17  Ken Kocienda  <kocienda@apple.com>
1974
1975         Reviewed by John
1976
1977         Fix for this bug:
1978         
1979         <rdar://problem/3786659> REGRESSION (Mail): editable WebViews don't work with 
1980         "size up" and "size down" NSFontManager changes
1981
1982         * khtml/css/cssparser.cpp:
1983         (CSSParser::parseValue): Add support for parsing new font size delta property.
1984         * khtml/css/cssproperties.c: Generated file.
1985         * khtml/css/cssproperties.h: Ditto.
1986         * khtml/css/cssproperties.in: Add support for parsing new font size delta property.
1987         * khtml/editing/htmlediting.cpp:
1988         (khtml::isEmptyStyleSpan): New helper function. Code existed before, but now factored out for convenient use.
1989         (khtml::CompositeEditCommand::removeNodeAttribute): Does check on value to see it exists before creating
1990         and running command to do the removal.
1991         (khtml::ApplyStyleCommand::doApply): Now calls new applyRelativeFontStyleChange() function as part of its work.
1992         (khtml::ApplyStyleCommand::applyRelativeFontStyleChange): New function that does the "heavy lifting" to handle 
1993         relative font size changes.
1994         (khtml::ApplyStyleCommand::applyInlineStyle): Range check the start and end positions to make sure the start is
1995         before or equal to the end. Swap them if not true. I ran into this problem in some similar code in 
1996         applyRelativeFontStyleChange(). Moving that goodness here too.
1997         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded): Uses a local variable to save a value used often.
1998         Code is the same, but reads better now. Function now returns bool as well, just like splitTextAtStartIfNeeded.
1999         I use the bool return value now (I obviously did not need it before).
2000         (khtml::ApplyStyleCommand::computedFontSize): New helper function.
2001         (khtml::ApplyStyleCommand::joinChildTextNodes): Ditto.
2002         (khtml::createStyleSpanElement): Ditto.
2003         * khtml/editing/htmlediting.h: Update header accordingly.
2004         * khtml/editing/jsediting.cpp: Add new command string to enable relative font size changes.
2005         * kwq/DOM-CSS.mm:
2006         (-[DOMCSSStyleDeclaration _fontSizeDelta]): New convenience.
2007         (-[DOMCSSStyleDeclaration _setFontSizeDelta:]): Ditto.
2008         * kwq/DOMPrivate.h: Declare new conveniences.
2009         * layout-tests/editing/editing.js: Add new JS to enable relative font size changes, as well as explicit font size setting.
2010         * layout-tests/editing/style/relative-font-size-change-001-expected.txt: Added.
2011         * layout-tests/editing/style/relative-font-size-change-001.html: Added.
2012         * layout-tests/editing/style/relative-font-size-change-002-expected.txt: Added.
2013         * layout-tests/editing/style/relative-font-size-change-002.html: Added.
2014         * layout-tests/editing/style/relative-font-size-change-003-expected.txt: Added.
2015         * layout-tests/editing/style/relative-font-size-change-003.html: Added.
2016         * layout-tests/editing/style/relative-font-size-change-004-expected.txt: Added.
2017         * layout-tests/editing/style/relative-font-size-change-004.html: Added.
2018
2019 2005-01-14  Darin Adler  <darin@apple.com>
2020
2021         * khtml/css/cssproperties.c: Regenerated with gperf 3.0.1.
2022         * khtml/css/cssvalues.c: Regenerated with gperf 3.0.1.
2023         * khtml/misc/htmlattrs.c: Regenerated with gperf 3.0.1.
2024         * khtml/misc/htmltags.c: Regenerated with gperf 3.0.1.
2025
2026 2005-01-14  Chris Blumenberg  <cblu@apple.com>
2027
2028         Fixed: <rdar://problem/3886415> arrow keys don't work when the user hits Back to return to RSS page
2029
2030         Reviewed by hyatt.
2031
2032         (KWQKHTMLPart::openURLFromPageCache): restore mousePressNode
2033         (KWQKHTMLPart::mousePressNode): new
2034         * kwq/KWQPageState.h:
2035         * kwq/KWQPageState.mm:
2036         (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:]): save the mousePressNode
2037         (-[KWQPageState clear]): clear the mousePressNode
2038         (-[KWQPageState dealloc]): deref the mousePressNode
2039         (-[KWQPageState mousePressNode]): new
2040
2041 === Safari-179 ===
2042
2043 2005-01-13  Vicki Murley <vicki@apple.com>
2044
2045         Reviewed by Adele.
2046
2047         - fix <rdar://problem/3946836> Safari about box lists 2004 instead of 2005
2048
2049         * WebCore.pbproj/project.pbxproj: bump "2004" to "2005"
2050
2051 2005-01-13  David Harrison  <harrison@apple.com>
2052
2053         Reviewed by Ken Kocienda.
2054         
2055         Better fix for 3905066.
2056         
2057         * khtml/editing/htmlediting.cpp:
2058         (khtml::InsertParagraphSeparatorCommand::doApply):
2059
2060 2005-01-10  Maciej Stachowiak  <mjs@apple.com>
2061
2062         Reviewed by Darin.
2063
2064         <rdar://problem/3758033> REGRESSION (Mail): Support attributes in marked text (International input)
2065         
2066         * khtml/rendering/render_text.cpp:
2067         (InlineTextBox::paint): Support painting custom underline markers for
2068         marked text in place of generic yellow.
2069         (InlineTextBox::paintMarkedTextUnderline): New method that handles this.
2070         * khtml/rendering/render_text.h:
2071         * kwq/KWQKHTMLPart.h: Declare new methods and structs.
2072         * kwq/KWQKHTMLPart.mm:
2073         (KWQKHTMLPart::clear): Clear marked test underlines.
2074         (KWQKHTMLPart::setMarkedTextRange): Takes attributes and ranges now.
2075         (convertAttributesToUnderlines): Converts NSAttributedString attributes
2076         to simplified and C++-friendly form.
2077         (KWQKHTMLPart::markedTextUsesUnderlines): New method.
2078         (KWQKHTMLPart::markedTextUnderlines): New method.
2079         * kwq/KWQPainter.mm:
2080         (QPainter::drawLineForText): Handle pen width.
2081         * kwq/WebCoreBridge.h:
2082         * kwq/WebCoreBridge.mm:
2083         (-[WebCoreBridge setMarkedTextDOMRange:customAttributes:ranges:]): Take attributes
2084         and ranges.
2085         * kwq/WebCoreTextRenderer.h:
2086
2087 2005-01-12  David Harrison  <harrison@apple.com>
2088
2089         Reviewed by Dave Hyatt.
2090
2091         <rdar://problem/3888973> AX: Parent AXWebArea of nested AXWebAreas is messed up
2092         
2093         * kwq/KWQAccObject.mm:
2094         (-[KWQAccObject addChildrenToArray:]):
2095         Use the widget's outer view.
2096
2097 2005-01-12  David Harrison  <harrison@apple.com>
2098
2099         Reviewed by Darin Adler.
2100
2101         <rdar://problem/3949908> Crash when asking for the kAXLengthForTextMarkerRangeParameterizedAttribute
2102         
2103         * khtml/xml/dom_nodeimpl.cpp:
2104         (NodeImpl::displayNode):
2105         Add quotes around text node content.
2106         (NodeBaseImpl::childNode):
2107         Add nil check to return nil rather than crash when child node not found.
2108         * kwq/KWQAccObject.mm:
2109         (-[KWQAccObject doAXStringForTextMarkerRange:]):
2110         Pass range compliant positions to TextIterator.
2111
2112 2005-01-12  David Hyatt  <hyatt@apple.com>
2113
2114         Fix for 3951203, CSS border style incorrectly clipped on inline elements.  Make sure the repaint rect set during
2115         line layout is smarter about including the overflow for both old states and new states.
2116         
2117         Reviewed by john
2118
2119         * khtml/rendering/bidi.cpp:
2120         (khtml::RenderBlock::layoutInlineChildren):
2121
2122 2005-01-12  David Hyatt  <hyatt@apple.com>
2123
2124         Fix for bug 3937608, versiontracker.com flashes and displays the right column below content.  Make sure to move
2125         tables/overflows that dont fit within a block only in strict mode.
2126
2127         Fix for bug 3931049, characters dont show up when typing.  Make sure to dirty the right lines when this specific
2128         case in editing is hit.
2129         
2130         Reviewed by darin (first one), kocienda (second one)
2131
2132         * khtml/rendering/render_block.cpp:
2133         (khtml::RenderBlock::getClearDelta):
2134         * khtml/rendering/render_flow.cpp:
2135         (RenderFlow::dirtyLinesFromChangedChild):
2136         * khtml/rendering/render_line.cpp:
2137         (khtml::InlineFlowBox::verticallyAlignBoxes):
2138
2139 2005-01-12  Ken Kocienda  <kocienda@apple.com>
2140
2141         Reviewed by John
2142
2143         Fix for this bug:
2144         
2145         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
2146
2147         * khtml/editing/htmlediting.cpp:
2148         (khtml::DeleteSelectionCommand::initializePositionData): Change test that will prevent block
2149         merging. End-of-line test was just wrong. Call new start-of and end-of paragraph functions
2150         added to visible_position files.
2151         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Add tests for BR elements, which makes
2152         tests to determine when to stop moving nodes more complete and correct. Also improved comments.
2153         * khtml/editing/visible_position.cpp:
2154         (khtml::isFirstVisiblePositionInParagraph): New function.
2155         (khtml::isLastVisiblePositionInParagraph): New function.
2156         * khtml/editing/visible_position.h: Update header accordingly.
2157         * layout-tests/editing/deleting/delete-block-merge-contents-002-expected.txt: New results, slightly different from former
2158         results but still correct.
2159         * layout-tests/editing/deleting/delete-block-merge-contents-007-expected.txt: Ditto.
2160         * layout-tests/editing/deleting/delete-block-merge-contents-018-expected.txt: Added.
2161         * layout-tests/editing/deleting/delete-block-merge-contents-018.html: Added.
2162         * layout-tests/editing/deleting/delete-block-merge-contents-019-expected.txt: Added.
2163         * layout-tests/editing/deleting/delete-block-merge-contents-019.html: Added.
2164         * layout-tests/editing/deleting/delete-block-merge-contents-020-expected.txt: Added.
2165         * layout-tests/editing/deleting/delete-block-merge-contents-020.html: Added.
2166         * layout-tests/editing/deleting/delete-block-merge-contents-021-expected.txt: Added.
2167         * layout-tests/editing/deleting/delete-block-merge-contents-021.html: Added.
2168         * layout-tests/editing/deleting/delete-line-014-expected.txt: These new results are actually better, and fix a bug.
2169
2170 2005-01-11  Richard Williamson   <rjw@apple.com>
2171
2172         Fixed 3922875.  Fall back to DOM object is EMBED element
2173         has no associated runtime object.
2174
2175         Reviewed by Chris.
2176
2177         * khtml/ecma/kjs_dom.cpp:
2178         (KJS::getRuntimeObject):
2179         * khtml/ecma/kjs_html.cpp:
2180         (KJS::HTMLDocument::tryGet):
2181         (KJS::HTMLElement::tryGet):
2182         (KJS::HTMLCollection::tryGet):
2183         (KJS::HTMLCollection::getNamedItems):
2184
2185 2005-01-11  David Hyatt  <hyatt@apple.com>
2186
2187         Fix for 3882299, missing content on gibson.com.  Change our handling of " and ' in certain states of the parser to match
2188         other browsers.
2189         
2190         Reviewed by Maciej
2191
2192         * khtml/html/htmltokenizer.cpp:
2193         (khtml::HTMLTokenizer::parseTag):
2194
2195 2005-01-11  Chris Blumenberg  <cblu@apple.com>
2196
2197         Fixed: <rdar://problem/3930733> Mail prints second page of email blank
2198
2199         Reviewed by dave.
2200
2201         * khtml/rendering/render_canvas.cpp:
2202         (RenderCanvas::paint): cache the print rect since the dirty rect can get changed during printing
2203         * khtml/rendering/render_flow.cpp:
2204         (RenderFlow::paintLines): removed null check since the print rect should never be null
2205         * khtml/rendering/render_list.cpp:
2206         (RenderListMarker::paint): ditto
2207         * kwq/KWQKHTMLPart.mm:
2208         (KWQKHTMLPart::adjustPageHeight): don't set the print rect here since this method is not called for the last page
2209
2210 2005-01-10  Ken Kocienda  <kocienda@apple.com>
2211
2212         Reviewed by Hyatt
2213
2214         Fix for this bug:
2215         
2216         <rdar://problem/3943648> extra line is inserted after pressing return within quoted text of reply
2217
2218         * khtml/editing/htmlediting.cpp:
2219         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): This bug was the result of a 
2220         simple coding mistake. A local variable was erroneously redefined in a deeper scope, and so the 
2221         result calculated in that deeper scope was not available when tested.
2222
2223 2005-01-10  Ken Kocienda  <kocienda@apple.com>
2224
2225         Reviewed by John
2226
2227         Fix for this bug:
2228         
2229         <rdar://problem/3946852> Option-e goes to next line
2230
2231         * khtml/editing/htmlediting.cpp:
2232         (khtml::ReplaceSelectionCommand::doApply): Tweak case used to determine when merging content
2233         into the start line is done. We plan to change pretty substantially soon to better handle
2234         the problem described in <rdar://problem/3937352> Quote level not maintained when copied 
2235         and pasted within a Mail message. In the meantime, this change does no harm, and fixes the bug.
2236
2237 2005-01-10  Ken Kocienda  <kocienda@apple.com>
2238
2239         Reviewed by Darin
2240
2241         Fix for this bug:
2242         
2243         <rdar://problem/3907005> Applying block styles to a line of text can unexpectedly affect other lines
2244
2245         * khtml/editing/htmlediting.cpp:
2246         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): New function which moves "paragraphs"
2247         to their own blocks if needed so that a block style can be applied.
2248         (khtml::CompositeEditCommand::isMailBlockquote): Moved this function to base class so it can be used more generally.
2249         (khtml::ApplyStyleCommand::applyBlockStyle): Pass a node instead of a block to addBlockStyleIfNeeded().
2250         (khtml::ApplyStyleCommand::addBlockStyleIfNeeded): Now accepts a node instead of a block for styling.
2251         This function also now calls moveParagraphContentsToNewBlockIfNecessary() to make sure that only the current
2252         paragraph is styled.
2253         (khtml::SetNodeAttributeCommand::doUnapply): Should not assert on undo if old value of attribute was null.
2254         Should remove attributue instead.
2255         * khtml/editing/htmlediting.h: Touch function declarations accordingly.
2256         * layout-tests/editing/style/create-block-for-style-001-expected.txt: Added.
2257         * layout-tests/editing/style/create-block-for-style-001.html: Added.
2258         * layout-tests/editing/style/create-block-for-style-002-expected.txt: Added.
2259         * layout-tests/editing/style/create-block-for-style-002.html: Added.
2260         * layout-tests/editing/style/create-block-for-style-003-expected.txt: Added.
2261         * layout-tests/editing/style/create-block-for-style-003.html: Added.
2262         * layout-tests/editing/style/create-block-for-style-004-expected.txt: Added.
2263         * layout-tests/editing/style/create-block-for-style-004.html: Added.
2264         * layout-tests/editing/style/create-block-for-style-005-expected.txt: Added.
2265         * layout-tests/editing/style/create-block-for-style-005.html: Added.
2266         * layout-tests/editing/style/create-block-for-style-006-expected.txt: Added.
2267         * layout-tests/editing/style/create-block-for-style-006.html: Added.
2268         * layout-tests/editing/style/create-block-for-style-007-expected.txt: Added.
2269         * layout-tests/editing/style/create-block-for-style-007.html: Added.
2270         * layout-tests/editing/style/create-block-for-style-008-expected.txt: Added.
2271         * layout-tests/editing/style/create-block-for-style-008.html: Added.
2272         * layout-tests/editing/style/create-block-for-style-009-expected.txt: Added.
2273         * layout-tests/editing/style/create-block-for-style-009.html: Added.
2274         * layout-tests/editing/style/create-block-for-style-010-expected.txt: Added.
2275         * layout-tests/editing/style/create-block-for-style-010.html: Added.
2276         * layout-tests/editing/style/create-block-for-style-011-expected.txt: Added.
2277         * layout-tests/editing/style/create-block-for-style-011.html: Added.
2278         * layout-tests/editing/style/create-block-for-style-012-expected.txt: Added.
2279         * layout-tests/editing/style/create-block-for-style-012.html: Added.
2280         * layout-tests/editing/style/create-block-for-style-013-expected.txt: Added.
2281         * layout-tests/editing/style/create-block-for-style-013.html: Added.
2282
2283         Unrelated updates to these expected results.
2284         * layout-tests/editing/inserting/insert-div-007-expected.txt
2285         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
2286
2287 2005-01-10  Chris Blumenberg  <cblu@apple.com>
2288
2289         Fixed: <rdar://problem/3936844> Mail: Messages with rich text do not print
2290
2291         Reviewed by john.
2292
2293         * khtml/rendering/render_flow.cpp:
2294         (RenderFlow::paintLines): don't do pagination work if printRect is not set
2295         * khtml/rendering/render_list.cpp:
2296         (RenderListMarker::paint): ditto
2297
2298 2005-01-10  David Harrison  <harrison@apple.com>
2299
2300         Reviewed by Darin.
2301
2302         * kwq/KWQTextUtilities.mm:
2303         (currentTextBreakLocaleID):
2304         Return empty string (AKA root locale) if locale pref can not be canonicalized.
2305
2306 2005-01-10  John Sullivan  <sullivan@apple.com>
2307
2308         Fixed broken Panther build.
2309
2310         * kwq/KWQTextUtilities.mm:
2311         (currentTextBreakLocaleID):
2312         This recently-added function was using code copy/pasted from CarbonCore UnicodeUtilities.
2313         That code used a Tiger-only function, CFLocaleCreateCanonicalLanguageIdentifierFromString.
2314         To fix the build, I added a BUILDING_ON_PANTHER #ifdef that avoids the call to the Tiger
2315         function. However, the Tiger-only code was wrong; the string generated using 
2316         CFLocaleCreateCanonicalLanguageIdentifierFromString was not used at all, so I fixed that
2317         as well.
2318
2319 2005-01-09  David Harrison  <harrison@apple.com>
2320
2321         Reviewed by Ken Kocienda.
2322
2323         <rdar://problem/3786362> REGRESSION (Mail): pasted text loses one newline
2324         
2325         * khtml/editing/htmlediting.cpp:
2326         (khtml::ReplaceSelectionCommand::doApply):
2327         Tune check for need for insertParagraphSeparator when hasInterchangeNewline.
2328
2329 2005-01-09  Darin Adler  <darin@apple.com>
2330
2331         Reviewed by Harrison.
2332
2333         - fixed <rdar://problem/3939176> select() method does not work on <input type=search>
2334
2335         * khtml/html/html_formimpl.cpp: (DOM::HTMLInputElementImpl::select): Changed if statement
2336         to a switch statement. Added SEARCH to the set of types that treat the renderer as a
2337         RenderLineEdit.
2338
2339 2005-01-09  David Harrison  <harrison@apple.com>
2340
2341         Reviewed by Ken Kocienda.
2342
2343         <rdar://problem/3905066> REGRESSION (Mail): Hitting return key with caret in front of space causes space to become lost (resize fixes)
2344
2345         Problem was that InsertParagraphSeparatorCommand::doApply() was not collapsing
2346         whitespace to a single non-breaking space when splitting a text node.
2347
2348         * khtml/editing/htmlediting.cpp:
2349         (khtml::InsertParagraphSeparatorCommand::doApply):
2350
2351 2005-01-08  Kevin Decker  <kdecker@apple.com>
2352
2353         Reviewed by Ken.
2354
2355         Fixed: <rdar://problem/3924219> Calling setOuterHTML: on a DOMHTMLHtmlElement can crash a program
2356
2357         * khtml/html/html_elementimpl.cpp:
2358         (HTMLElementImpl::setOuterHTML): Added a nil check for fragments who don't have parents.
2359
2360 2005-01-07  Maciej Stachowiak  <mjs@apple.com>
2361
2362         Reviewed by Darin.
2363         
2364         <rdar://problem/3807144> REGRESSION (125-TOT): my bank's website doesn't work (Societe Generale, socgen.com)
2365
2366         * Khtml/khtml_part.cpp:
2367         (KHTMLPart::checkCompleted): If the document is NULL, assume this frame has
2368         not started loading yet so it could not possibly be finishing here...
2369         (KHTMLPart::stop): ...unless the part is explicitly stopped and there is still
2370         no document, in this case we must have hit an error or been loading a non-HTML
2371         frame.
2372         * khtml/khtml_part.h:
2373
2374 2005-01-08  David Harrison  <harrison@apple.com>
2375
2376         Reviewed by Maciej.
2377
2378         <rdar://problem/3943415> REGRESSION (Mail): double-clicking past word selects previous word instead of only blank space
2379         
2380         * khtml/editing/selection.cpp:
2381         (khtml::Selection::validate):
2382         Tune word selections left/right choice to use right if on empty last line.
2383
2384 2005-01-07  David Harrison  <harrison@apple.com>
2385
2386         Reviewed by Darin.
2387
2388         <rdar://problem/3942619> AX: Support sentence ax attributes
2389
2390         Needed to use the unicode utilities properly.  Twas lame before.
2391
2392         * khtml/editing/visible_units.cpp:
2393         (khtml::previousBoundary):
2394         (khtml::nextBoundary):
2395         (khtml::startOfWord):
2396         (khtml::endOfWord):
2397         (khtml::previousWordPosition):
2398         (khtml::nextWordPosition):
2399         (khtml::startOfSentence):
2400         (khtml::endOfSentence):
2401         (khtml::previousSentencePosition):
2402         (khtml::nextSentencePosition):
2403         * kwq/KWQAccObject.mm:
2404         (-[KWQAccObject accessibilityAttributeNames]):
2405         (-[KWQAccObject accessibilityAttributeValue:]):
2406         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2407         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
2408         * kwq/KWQTextUtilities.mm:
2409         (currentTextBreakLocaleID):
2410         (KWQFindSentenceBoundary):
2411         (KWQFindNextSentenceFromIndex):
2412
2413 2005-01-07  Ken Kocienda  <kocienda@apple.com>
2414
2415         Reviewed by Kevin
2416
2417         Fix for these bugs:
2418         
2419         <rdar://problem/3939523> in some cases, text does not retain style info after pressing return twice
2420         <rdar://problem/3944492> after pressing return twice, text is bold when it shouldn't be
2421
2422         * khtml/editing/htmlediting.cpp:
2423         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion):
2424         Merge the typing style with the computed style for the current position. Fixes both bugs.
2425         * khtml/editing/htmlediting.h:
2426         * layout-tests/editing/inserting/insert-div-023-expected.txt: Added.
2427         * layout-tests/editing/inserting/insert-div-023.html: Added.
2428         * layout-tests/editing/inserting/insert-div-024-expected.txt: Added.
2429         * layout-tests/editing/inserting/insert-div-024.html: Added.
2430
2431 2005-01-07  David Hyatt  <hyatt@apple.com>
2432
2433         Fix for 3941364, make sure tables reset overflowWidth/Height when they lay out again.  Fixes the odd scrolling
2434         behavior on worldofwarcraft.com.
2435         
2436         Reviewed by kevin
2437
2438         * khtml/rendering/render_table.cpp:
2439         (RenderTable::layout):
2440
2441 2005-01-06  David Hyatt  <hyatt@apple.com>
2442
2443         Fix for 3932418 and 3920998, assertion failures caused by stray inline content inside tables.  Bulletproof the hit testing to
2444         ignore inline flows in this case.
2445         
2446         Reviewed by kevin
2447
2448         * khtml/rendering/render_block.cpp:
2449         (khtml::RenderBlock::nodeAtPoint):
2450
2451 2005-01-07  Ken Kocienda  <kocienda@apple.com>
2452
2453         Reviewed by Hyatt
2454
2455         Fix for this bug:
2456         
2457         <rdar://problem/3848412> for forwarded message, tabbing to message view scrolls to bottom of view
2458
2459         * kwq/KWQKHTMLPart.mm:
2460         (KWQKHTMLPart::nextKeyViewInFrame): Don't scroll the focus node to visible if it is not
2461         in the document, or if it is not a descendent of the document element. In the case of the bug,
2462         since the selection has not yet been set up, the focus node passed here is the HTML element, and
2463         that does not yield a rect that is useful to us here. So now, in the case the bug mentions, we do nothing.
2464
2465 2005-01-06  Kevin Decker  <kdecker@apple.com>
2466
2467         Reviewed by mjs.
2468
2469         Fixed: <rdar://problem/3932215> REGRESSION (125-177): iFrame example at developer.apple.com fails in Safari
2470
2471         * khtml/khtml_part.cpp:
2472         (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. 
2473
2474 === Safari-178 ===
2475
2476 2005-01-06  David Harrison  <harrison@apple.com>
2477
2478         Reviewed by Chris.
2479
2480         (addendum to previous checkin for this bug) 
2481         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
2482
2483         Fix line navigation.  Add AXUIElementForTextMarker.
2484
2485         * kwq/KWQAccObject.mm:
2486         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2487         (-[KWQAccObject doAXUIElementForTextMarker:]):
2488         (-[KWQAccObject doAXLineForTextMarker:]):
2489         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2490         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2491         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2492         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
2493         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
2494
2495 2005-01-06  Darin Adler  <darin@apple.com>
2496
2497         Reviewed by Ken.
2498
2499         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
2500
2501         (turns out the PLT regression was a false alarm)
2502
2503         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
2504         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
2505         much larger number.
2506         * khtml/html/htmlparser.cpp:
2507         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
2508         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
2509         to eliminate code that used ID_CLOSE_TAG for an array size.
2510         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
2511         that manages isindex to use deref instead of delete.
2512         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
2513         mistake of using ID_CLOSE_TAG for the array size too.
2514         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
2515         there and it would prevent custom tags from working. Added range check before using the forbidden
2516         tag array with the token ID since custom tags will use index values past the end of the array.
2517         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
2518         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
2519         createElement call is still here. Last time I left out a few form element types from this switch;
2520         fixed now.
2521         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
2522         document if getTagID fails; this creates a unique per-document ID.
2523
2524         * khtml/misc/htmltags.c: Regenerated.
2525         * khtml/misc/htmltags.h: Regenerated.
2526
2527         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
2528         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
2529         Also rewrote getTagName to work with the new scheme.
2530
2531 2005-01-06  David Harrison  <harrison@apple.com>
2532         
2533         Fixed Panther build.  Also, do not advertize sentence support since it is incomplete.
2534         
2535         * kwq/KWQAccObject.mm:
2536         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
2537         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2538         (-[KWQAccObject accessibilityIsAttributeSettable:]):
2539
2540 2005-01-06  David Harrison  <harrison@apple.com>
2541
2542         Reviewed by Dave Hyatt.
2543
2544         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
2545         <rdar://problem/3588548> AX: tabbing does not work correctly with the screen reader and a focused link; need AXFocusedUIElement to work
2546         
2547         Many more AX attributes supported.  Numerous fixes to previous AX work.
2548         
2549         * khtml/editing/visible_units.cpp:
2550         (khtml::startSentenceBoundary):
2551         (khtml::startOfSentence):
2552         (khtml::endSentenceBoundary):
2553         (khtml::endOfSentence):
2554         (khtml::previousSentencePositionBoundary):
2555         (khtml::previousSentencePosition):
2556         (khtml::nextSentencePositionBoundary):
2557         (khtml::nextSentencePosition):
2558         * khtml/editing/visible_units.h:
2559         * khtml/khtmlview.cpp:
2560         (KHTMLView::layout):
2561         * khtml/misc/helper.cpp:
2562         (khtml::findSentenceBoundary):
2563         (khtml::nextSentenceFromIndex):
2564         * khtml/misc/helper.h:
2565         * khtml/misc/htmltags.c:
2566         (hash_tag):
2567         (findTag):
2568         * khtml/rendering/render_container.cpp:
2569         (RenderContainer::removeChildNode):
2570         (RenderContainer::appendChildNode):
2571         (RenderContainer::insertChildNode):
2572         * khtml/rendering/render_object.cpp:
2573         (RenderObject::remove):
2574         * khtml/xml/dom_docimpl.cpp:
2575         (DocumentImpl::getAccObjectCache):
2576         (DocumentImpl::updateSelection):
2577         (DocumentImpl::close):
2578         (DocumentImpl::setFocusNode):
2579         (DocumentImpl::parentDocument):
2580         (DocumentImpl::topDocument):
2581         * khtml/xml/dom_docimpl.h:
2582         * kwq/KWQAccObject.mm:
2583         (-[KWQAccObject accessibilityShouldUseUniqueId]):
2584         (-[KWQAccObject detach]):
2585         (-[KWQAccObject anchorElement]):
2586         (-[KWQAccObject firstChild]):
2587         (-[KWQAccObject lastChild]):
2588         (-[KWQAccObject previousSibling]):
2589         (-[KWQAccObject nextSibling]):
2590         (-[KWQAccObject parentObject]):
2591         (-[KWQAccObject value]):
2592         (-[KWQAccObject accessibilityAttributeNames]):
2593         (-[KWQAccObject accessibilityPerformAction:]):
2594         (-[KWQAccObject textMarkerForVisiblePosition:]):
2595         (-[KWQAccObject visiblePositionForTextMarker:]):
2596         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
2597         (-[KWQAccObject topDocument]):
2598         (-[KWQAccObject topRenderer]):
2599         (-[KWQAccObject topView]):
2600         (-[KWQAccObject accessibilityAttributeValue:]):
2601         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2602         (-[KWQAccObject doAXLineForTextMarker:]):
2603         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2604         (-[KWQAccObject doAXStringForTextMarkerRange:]):
2605         (-[KWQAccObject doAXTextMarkerForPosition:]):
2606         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
2607         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
2608         (-[KWQAccObject doAXTextMarkerRangeForUnorderedTextMarkers:]):
2609         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
2610         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
2611         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
2612         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
2613         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
2614         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2615         (-[KWQAccObject doAXSentenceTextMarkerRangeForTextMarker:]):
2616         (-[KWQAccObject doAXParagraphTextMarkerRangeForTextMarker:]):
2617         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
2618         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
2619         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2620         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
2621         (-[KWQAccObject doAXNextSentenceEndTextMarkerForTextMarker:]):
2622         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
2623         (-[KWQAccObject doAXNextParagraphEndTextMarkerForTextMarker:]):
2624         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
2625         (-[KWQAccObject doAXLengthForTextMarkerRange:]):
2626         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
2627         (-[KWQAccObject accessibilityHitTest:]):
2628         (-[KWQAccObject accessibilityFocusedUIElement]):
2629         (-[KWQAccObject accessibilityIsAttributeSettable:]):
2630         (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
2631         (-[KWQAccObject setAccObjectID:]):
2632         (-[KWQAccObject removeAccObjectID]):
2633         * kwq/KWQAccObjectCache.h:
2634         * kwq/KWQAccObjectCache.mm:
2635         (KWQAccObjectCache::setAccObject):
2636         (KWQAccObjectCache::removeAccObject):
2637         (KWQAccObjectCache::visiblePositionForTextMarker):
2638         (KWQAccObjectCache::postNotificationToTopWebArea):
2639         (KWQAccObjectCache::postNotification):
2640         (KWQAccObjectCache::handleFocusedUIElementChanged):
2641         * kwq/KWQKHTMLPart.mm:
2642         (KWQKHTMLPart::respondToChangedContents):
2643         * kwq/KWQTextUtilities.h:
2644         * kwq/KWQTextUtilities.mm:
2645         (KWQFindNextWordFromIndex):
2646         (KWQFindSentenceBoundary):
2647         (KWQFindNextSentenceFromIndex):
2648         * kwq/WebCoreBridge.mm:
2649         (-[WebCoreBridge accessibilityTree]):
2650
2651 2005-01-05  Darin Adler  <darin@apple.com>
2652
2653         Reviewed by Ken.
2654
2655         - re-landing a subset of my custom tag change that does not fix the bug, but also does
2656           not introduce a performance regression
2657
2658         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
2659         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
2660
2661         * khtml/editing/htmlediting.cpp:
2662         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
2663         per-document tags and is just better all around for things like the document.
2664         (khtml::debugNode): Ditto.
2665         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
2666         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
2667         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
2668         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
2669
2670         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
2671         non-HTML elements to be nested as desired.
2672
2673         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
2674         * khtml/misc/htmlhashes.cpp:
2675         (khtml::getTagID): Changed return type to unsigned short.
2676         (khtml::getAttrID): Ditto.
2677
2678         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
2679         * khtml/xml/dom_docimpl.cpp:
2680         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
2681         Also updated for a few tags that the parser handled but this did not.
2682
2683         * kwq/KWQRenderTreeDebug.cpp:
2684         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
2685         the tag ID directly, which only works for standard nodes.
2686         (operator<<): Update to call getTagName.
2687         (nodePositionRelativeToRoot): Ditto.
2688         (writeSelection): Ditto.
2689
2690 2005-01-05  Ken Kocienda  <kocienda@apple.com>
2691
2692         Reviewed by Hyatt
2693
2694         Fix for this bug:
2695         
2696         <rdar://problem/3941203> REGRESSION (Mail): Paste inserts content in wrong place
2697
2698         * khtml/editing/htmlediting.cpp:
2699         (khtml::ReplaceSelectionCommand::doApply): Some cleanup and refinement of the concepts used to make
2700         this operation work correctly, particularly in the logic to figure out whether to merge content, and
2701         also performing merges.
2702         * khtml/editing/visible_position.cpp:
2703         (khtml::isFirstVisiblePositionInBlock): Simplification of test used to make this determination.
2704         * khtml/editing/visible_units.cpp:
2705         (khtml::isStartOfParagraph): New helper, used in khtml::ReplaceSelectionCommand::doApply().
2706         (khtml::isEndOfParagraph): Ditto.
2707         * khtml/editing/visible_units.h: Declare new functions.
2708
2709 2005-01-04  Ken Kocienda  <kocienda@apple.com>
2710
2711         Reviewed by John
2712
2713         Fix for this bug:
2714         
2715         <rdar://problem/3926522> Pressing return in a quoted block inserts too many newlines
2716
2717         * khtml/editing/htmlediting.cpp:
2718         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Call to insertBlockPlaceholderIfNeeded()
2719         for the block we are adding was being done at the wrong time, which led to the placeholder remaining
2720         in the document when it was not needed. This resulted in the extra space reported in the bug.
2721
2722 2005-01-04  Kevin Decker  <kdecker@apple.com>
2723
2724         Reviewed by Hyatt.
2725
2726         Fixed: <rdar://problem/3936879> nil-deref, crash in InlineFlowBox::nodeAtPoint closing DHTML menus at hrweb.apple.com
2727
2728         * khtml/rendering/render_block.cpp:
2729         (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. 
2730
2731 2005-01-04  David Hyatt  <hyatt@apple.com>
2732
2733         Fix for 3937203, force an update of the dashboard regions when scrollbars are added/removed.
2734         
2735         Reviewed by kevin
2736
2737         * khtml/rendering/render_layer.cpp:
2738         (RenderLayer::updateScrollInfoAfterLayout):
2739
2740 2005-01-04  Ken Kocienda  <kocienda@apple.com>
2741
2742         Reviewed by John
2743
2744         Fix for these two bugs:
2745         
2746         <rdar://problem/3938935> REGRESSION (Mail): Pasting into an empty document mangles content
2747         <rdar://problem/3939148> REGRESSION (Mail): Pasting mistakenly reverses lines
2748
2749         * khtml/editing/htmlediting.cpp:
2750         (khtml::ReplaceSelectionCommand::doApply): For 3938935, add one more case to handle an empty document; merge
2751         neither start nor end. For 3939148, improve the code which adjusts the insertion point during 
2752         the process of pasting. It formerly handled only one of the possible cases.
2753         * layout-tests/editing/pasteboard/paste-text-015-expected.txt: Added.
2754         * layout-tests/editing/pasteboard/paste-text-015.html: Added.
2755
2756 2005-01-04  David Hyatt  <hyatt@apple.com>
2757
2758         Fix for 3936571, placeholder attribute should work for normal inputs for Dashboard.
2759         
2760         Reviewed by john
2761
2762         * khtml/rendering/render_form.cpp:
2763         (RenderLineEdit::updateFromElement):
2764         * kwq/KWQLineEdit.mm:
2765         (QLineEdit::setPlaceholderString):
2766
2767 2005-01-04  David Hyatt  <hyatt@apple.com>
2768
2769         Fix for 3830936, hang on changeforamerica.com.  Make sure to ignore the style not yet available option when
2770         returning pseudo-styles.
2771         
2772         Reviewed by john
2773
2774         * khtml/css/cssstyleselector.cpp:
2775         (khtml::CSSStyleSelector::matchRulesForList):
2776         (khtml::CSSStyleSelector::pseudoStyleForElement):
2777         * khtml/rendering/render_style.cpp:
2778         (RenderStyle::addPseudoStyle):
2779
2780 2005-01-04  Darin Adler  <darin@apple.com>
2781
2782         - rolled out my custom tag name change again -- it caused a 1 ms PLT regression
2783
2784         * khtml/css/cssstyleselector.cpp:
2785         * khtml/editing/htmlediting.cpp:
2786         * khtml/editing/selection.cpp:
2787         * khtml/editing/visible_position.cpp:
2788         * khtml/html/dtd.cpp:
2789         * khtml/html/htmlparser.cpp:
2790         * khtml/html/htmlparser.h:
2791         * khtml/html/htmltokenizer.cpp:
2792         * khtml/misc/htmlhashes.cpp:
2793         * khtml/misc/htmlhashes.h:
2794         * khtml/misc/htmltags.c:
2795         * khtml/misc/htmltags.h:
2796         * khtml/misc/maketags:
2797         * khtml/xml/dom_docimpl.cpp:
2798         * khtml/xml/dom_docimpl.h:
2799         * khtml/xml/dom_nodeimpl.cpp:
2800         * khtml/xml/dom_position.cpp:
2801         * kwq/KWQRenderTreeDebug.cpp:
2802
2803 2005-01-04  Ken Kocienda  <kocienda@apple.com>
2804
2805         Reviewed by John
2806
2807         Fix for this bug:
2808         
2809         <rdar://problem/3927554> Style info applied to remainder of document after a newline is entered
2810
2811         * khtml/editing/htmlediting.cpp:
2812         (khtml::InsertParagraphSeparatorCommand::doApply): Clean up and simplification in code that inserts
2813         a paragraph separator. The bug was all about applying styles to the new paragraph that did not need
2814         to be applied. Now the code will detect when at the end of a style run and will not move and apply 
2815         that ending style to the new paragraph, though it will place that style into the typing style. This
2816         seems to match NSText behavior.
2817         * layout-tests/editing/inserting/insert-div-021-expected.txt: This test result exhibited the bug fixed 
2818         here. The only reason it was not noticed is that the erroneously copied inline was a span, and so did
2819         not have any visible effect on the document.
2820         * layout-tests/editing/inserting/insert-div-022-expected.txt: Added.
2821         * layout-tests/editing/inserting/insert-div-022.html: Added.
2822
2823 2005-01-04  David Hyatt  <hyatt@apple.com>
2824
2825         Fix for 3904562, make sure to clear the outline dictionary when drawing so that random focus rings dont get drawn
2826         all over the place.
2827         
2828         Reviewed by john
2829
2830         * khtml/rendering/render_flow.cpp:
2831         (RenderFlow::paintLines):
2832
2833 2005-01-03  David Hyatt  <hyatt@apple.com>
2834
2835         Fix for float painting regressions 3932524, 3931664, and 3933068.  Make the noPaint flag setting more
2836         robust and make it work regardless of which objects get a layout or not.
2837         
2838         Reviewed by mjs
2839
2840         * khtml/rendering/render_block.cpp:
2841         (khtml::RenderBlock::insertFloatingObject):
2842         (khtml::RenderBlock::addOverhangingFloats):
2843         (khtml::RenderBlock::addIntrudingFloats):
2844         * khtml/rendering/render_block.h:
2845         (khtml::RenderBlock::FloatingObject::FloatingObject):
2846
2847 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
2848
2849         Reviewed by Kevin.
2850
2851         <rdar://problem/3935390> Tiger 8A341: nil deref crash in DOM::NodeImpl::traverseNextNode
2852         
2853         * khtml/html/html_miscimpl.cpp:
2854         (HTMLCollectionImpl::traverseNextItem): Assert that the starting point is not nil,
2855         it should not ever be (now).
2856         (HTMLCollectionImpl::item): When traversing items stop when we hit
2857         nil, meaning the end to avoid triggering above assert (formerly crash).
2858
2859 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
2860
2861         Reviewed by John and Kevin.
2862
2863         <rdar://problem/3870317> REGRESSION(125.9-125.11) broken behavior at test.profoundlearning.com - used to
2864         
2865         * khtml/ecma/kjs_window.cpp:
2866         (Window::get): Look up frame names before buitin window properties
2867         to match other browsers. This regressed because we added a builtin
2868         "toolbar" property but this site had a frame with that name.
2869
2870 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
2871
2872         Reviewed by Darin.
2873
2874         <rdar://problem/3888931> frame naming allows malicious site to bring up a window when you click on a link in another
2875         
2876         Added opener bridge method to help WebKit implement security check
2877         for named frame visibility.
2878         
2879         * khtml/khtml_part.h:
2880         * kwq/WebCoreBridge.h:
2881         * kwq/WebCoreBridge.mm:
2882         (-[WebCoreBridge opener]):
2883
2884 2005-01-03  Ken Kocienda  <kocienda@apple.com>
2885
2886         Reviewed by John
2887
2888         Fix for this bug:
2889         
2890         <rdar://problem/3933926> Tiger8A341: Mail crashes while forwarding embedded HTML message in -[WebCoreBridge ensureSelectionVisible]
2891
2892         * kwq/WebCoreBridge.mm:
2893         (-[WebCoreBridge ensureSelectionVisible]): Put in some null checks to prevent crash experienced in bug.
2894
2895 2005-01-03  David Hyatt  <hyatt@apple.com>
2896
2897         Fix for 3936881, make sure positioned objects prooperly update y-position.
2898         
2899         Reviewed by john
2900
2901         * khtml/rendering/render_block.cpp:
2902         (khtml::RenderBlock::layoutPositionedObjects):
2903
2904 2005-01-03  Ken Kocienda  <kocienda@apple.com>
2905
2906         Reviewed by Harrison
2907         
2908         Fix for this bug:
2909         
2910         <rdar://problem/3928250> REGRESSION (Mail): Typing style lost after hitting return key
2911
2912         * khtml/editing/htmlediting.cpp:
2913         (khtml::InsertLineBreakCommand::preservesTypingStyle): Now implemented, returning yes for this command.
2914         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Initialize new typing style member variable.
2915         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Deref new typing style member variable.
2916         (khtml::InsertParagraphSeparatorCommand::preservesTypingStyle): Now implemented, returning yes for this command.
2917         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion): New function to set the typing style
2918         (khtml::InsertParagraphSeparatorCommand::calculateAndSetTypingStyleAfterInsertion): Function called after the <p>
2919         insertion is done. This function diffs the style created in setFullTypingStyleBeforeInsertion() with the style
2920         of the new <p> and only sets those styles needed to preserve the style in effect before the insertion.
2921         (khtml::InsertParagraphSeparatorCommand::doApply): Call new functions.
2922         (khtml::TypingCommand::preservesTypingStyle): Now yes for inserting line breaks and paragraphs.
2923          * khtml/editing/htmlediting.h: Declare new functions.
2924
2925 2004-12-25  Kevin Decker  <kdecker@apple.com>
2926
2927         Reviewed by Hyatt.
2928
2929         Fixed: <rdar://problem/3505072> hang in KHTMLParser::parseToken (consulting.soroos.net)
2930         
2931         * 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. 
2932
2933 2004-12-23  Darin Adler  <darin@apple.com>
2934
2935         Reviewed by Ken.
2936
2937         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
2938
2939         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
2940         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
2941
2942         * khtml/editing/htmlediting.cpp:
2943         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
2944         per-document tags and is just better all around for things like the document.
2945         (khtml::debugNode): Ditto.
2946         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
2947         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
2948         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
2949         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
2950
2951         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
2952         non-HTML elements to be nested as desired.
2953
2954         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
2955         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
2956         much larger number.
2957         * khtml/html/htmlparser.cpp:
2958         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
2959         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
2960         to eliminate code that used ID_CLOSE_TAG for an array size.
2961         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
2962         that manages isindex to use deref instead of delete.
2963         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
2964         mistake of using ID_CLOSE_TAG for the array size too.
2965         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
2966         there and it would prevent custom tags from working. Added range check before using the forbidden
2967         tag array with the token ID since custom tags will use index values past the end of the array.
2968         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
2969         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
2970         createElement call is still here. Last time I left out a few form element types from this switch;
2971         fixed now.
2972         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
2973         document if getTagID fails; this creates a unique per-document ID.
2974
2975         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
2976         * khtml/misc/htmlhashes.cpp:
2977         (khtml::getTagID): Changed return type to unsigned short.
2978         (khtml::getAttrID): Ditto.
2979
2980         * khtml/misc/htmltags.c: Regenerated.
2981         * khtml/misc/htmltags.h: Regenerated.
2982
2983         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
2984         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
2985         Also rewrote getTagName to work with the new scheme.
2986
2987         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
2988         * khtml/xml/dom_docimpl.cpp:
2989         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
2990         Also updated for a few tags that the parser handled but this did not.
2991
2992         * kwq/KWQRenderTreeDebug.cpp:
2993         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
2994         the tag ID directly, which only works for standard nodes.
2995         (operator<<): Update to call getTagName.
2996         (nodePositionRelativeToRoot): Ditto.
2997         (writeSelection): Ditto.
2998
2999 === Safari-177 ===
3000
3001 2004-12-22  Darin Adler  <darin@apple.com>
3002
3003         - rolled out my custom tag name change -- it broke amazon.com
3004
3005         * khtml/css/cssstyleselector.cpp:
3006         * khtml/editing/htmlediting.cpp:
3007         * khtml/editing/selection.cpp:
3008         * khtml/editing/visible_position.cpp:
3009         * khtml/html/dtd.cpp:
3010         * khtml/html/htmlparser.cpp:
3011         * khtml/html/htmlparser.h:
3012         * khtml/html/htmltokenizer.cpp:
3013         * khtml/misc/htmlhashes.cpp:
3014         * khtml/misc/htmlhashes.h:
3015         * khtml/misc/htmltags.c:
3016         * khtml/misc/htmltags.h:
3017         * khtml/misc/maketags:
3018         * khtml/xml/dom_docimpl.cpp:
3019         * khtml/xml/dom_docimpl.h:
3020         * khtml/xml/dom_nodeimpl.cpp:
3021         * khtml/xml/dom_position.cpp:
3022         * kwq/KWQRenderTreeDebug.cpp:
3023
3024 2004-12-22  David Harrison  <harrison@apple.com>
3025
3026         Reviewed by Darin Adler.
3027
3028         * khtml/editing/selection.cpp:
3029         (khtml::Selection::validate):
3030         The selecting/deselecting bad behavior is because the Selection code that expands by words
3031         had an inaccurate test for being at the end of the document (where double-clicking needs
3032         to select the last word).  Fixed that check.
3033
3034 2004-12-22  Adele Amchan  <adele@apple.com>
3035
3036         Reviewed by Chris.
3037
3038         Fix for <rdar://problem/3911650> tabs at safeway.com stop working after a while
3039
3040         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::scrollToAnchor): removed call to cancelRedirection 
3041           so that we match Firefox and WinIE behavior.
3042
3043 2004-12-22  Darin Adler  <darin@apple.com>
3044
3045         Reviewed by Ken.
3046
3047         - fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
3048
3049         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
3050         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
3051
3052         * khtml/editing/htmlediting.cpp:
3053         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
3054         per-document tags and is just better all around for things like the document.
3055         (khtml::debugNode): Ditto.
3056         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
3057         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
3058         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
3059         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
3060
3061         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
3062         non-HTML elements to be nested as desired.
3063
3064         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
3065         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
3066         much larger number.
3067         * khtml/html/htmlparser.cpp:
3068         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
3069         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
3070         to eliminate code that used ID_CLOSE_TAG for an array size.
3071         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
3072         that manages isindex to use deref instead of delete.
3073         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
3074         mistake of using ID_CLOSE_TAG for the array size too.
3075         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
3076         there and it would prevent custom tags from working. Added range check before using the forbidden
3077         tag array with the token ID since custom tags will use index values past the end of the array.
3078         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
3079         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
3080         createElement call is still here.
3081         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
3082         document if getTagID fails; this creates a unique per-document ID.
3083
3084         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
3085         * khtml/misc/htmlhashes.cpp:
3086         (khtml::getTagID): Changed return type to unsigned short.
3087         (khtml::getAttrID): Ditto.
3088
3089         * khtml/misc/htmltags.c: Regenerated.
3090         * khtml/misc/htmltags.h: Regenerated.
3091
3092         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
3093         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
3094         Also rewrote getTagName to work with the new scheme.
3095
3096         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
3097         * khtml/xml/dom_docimpl.cpp:
3098         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
3099         Also updated for a few tags that the parser handled but this did not.
3100
3101         * kwq/KWQRenderTreeDebug.cpp:
3102         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
3103         the tag ID directly, which only works for standard nodes.
3104         (operator<<): Update to call getTagName.
3105         (nodePositionRelativeToRoot): Ditto.
3106         (writeSelection): Ditto.
3107
3108 2004-12-21  David Harrison  <harrison@apple.com>
3109
3110         Reviewed by Ken Kocienda.
3111
3112         <rdar://problem/3924934> REGRESSION: double click at end of line selects start of next line
3113
3114         Problem was the TextIterator was not handling exitNode() from a P block properly.
3115         
3116         * khtml/editing/visible_text.cpp:
3117         (khtml::TextIterator::TextIterator):
3118         Add new param that specifies whether the iterator is for content or for searching.
3119         Search iterators do not prevent newlines at the beginning.
3120         (khtml::TextIterator::advance):
3121         Added some comments.
3122         (khtml::TextIterator::handleTextNode):
3123         Added some comments.
3124         (khtml::TextIterator::exitNode):
3125         Emit newline for P (and other) blocks with position following the block, instead of the m_lastTextNode.
3126         (khtml::TextIterator::emitCharacter):
3127         Added some comments.
3128         (khtml::TextIterator::range):
3129         Added some comments.
3130         (khtml::CharacterIterator::CharacterIterator):
3131         Specify search type TextIterator.
3132         (khtml::CharacterIterator::advance):
3133         * khtml/editing/visible_text.h:
3134         (khtml::):
3135         Add new TextIterator::TextIterator param that specifies whether the iterator is for content or for searching.
3136         * khtml/editing/visible_units.cpp:
3137         (khtml::nextWordBoundary):
3138         Specify search type TextIterator.
3139
3140 2004-12-21  David Harrison  <harrison@apple.com>
3141
3142         Reviewed by Ken Kocienda.
3143
3144         <rdar://problem/3924695> REGRESSION (Mail): double-clicking past end of line shows no selection, should select to EOL
3145         
3146         Problem was that RenderText::setSelectionState did not handle the SelectionStart case where start and end are the end of the line.
3147         Fixed by pretending the start == end-1 in that situation, as long as end > 0.
3148         
3149         * khtml/rendering/render_text.cpp:
3150         (RenderText::setSelectionState)
3151
3152 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
3153
3154         Reviewed by John.
3155
3156         <rdar://problem/3929187> WebKit needs to restrict access to certain window operations by domain
3157         
3158         * khtml/ecma/kjs_window.cpp:
3159         (Window::get): Change most window functions to be restricted by
3160         XSS domain check.
3161
3162 2004-12-21  Ken Kocienda  <kocienda@apple.com>
3163
3164         Reviewed by John
3165
3166         Fix for this bug:
3167         
3168         <rdar://problem/3928305> selecting an entire line and typing over causes new inserted text at top of document
3169
3170         * khtml/editing/htmlediting.cpp:
3171         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent): New function to detect case
3172         formerly undetected and unhandled. This is the crux of the bug fix.
3173         (khtml::DeleteSelectionCommand::doApply): Call insertPlaceholderForAncestorBlockContent() during
3174         execution of command.
3175         * khtml/editing/htmlediting.h: Declare new function.
3176         * layout-tests/editing/deleting/delete-3928305-fix-expected.txt: Added.
3177         * layout-tests/editing/deleting/delete-3928305-fix.html: Added.
3178
3179 2004-12-21  Ken Kocienda  <kocienda@apple.com>
3180
3181         Reviewed by me
3182
3183         * khtml/editing/htmlediting.cpp:
3184         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Note to self: Must compile code before
3185         checking in (aka must return false from function returning bool).
3186
3187 2004-12-21  Ken Kocienda  <kocienda@apple.com>
3188
3189         Reviewed by John
3190         
3191         Fix for this bug:
3192         
3193         <rdar://problem/3927752> Crash in khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded(DOM::NodeImpl*)
3194
3195         * khtml/editing/htmlediting.cpp:
3196         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Added some null checks.
3197         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Ditto.
3198
3199 2004-12-21  Ken Kocienda  <kocienda@apple.com>
3200
3201         Reviewed by Darin
3202
3203         * khtml/editing/htmlediting.cpp:
3204         (khtml::ReplacementFragment::mergeStartNode): Refine concept of how this node is found based on
3205         further experiements.
3206         (khtml::ReplaceSelectionCommand::doApply): Add a special case for determining merges that need to
3207         be done if the insertion point is in an empty block.
3208         * layout-tests/editing/pasteboard/paste-text-012-expected.txt: Added.
3209         * layout-tests/editing/pasteboard/paste-text-012.html: Added.
3210         * layout-tests/editing/pasteboard/paste-text-013-expected.txt: Added.
3211         * layout-tests/editing/pasteboard/paste-text-013.html: Added.
3212         * layout-tests/editing/pasteboard/paste-text-014-expected.txt: Added.
3213         * layout-tests/editing/pasteboard/paste-text-014.html: Added.
3214
3215 2004-12-21  Darin Adler  <darin@apple.com>
3216
3217         Reviewed by Ken.
3218
3219         - fixed <rdar://problem/3899133> text search in a Safari window takes a very long time on Tiger updates page (and some other pages)
3220
3221         * khtml/editing/visible_text.h: Add an "offset base node" parameter to emitCharacter, and also
3222         add a field to track it. Must make a few things mutable so we can update them in the range accessor.
3223         * khtml/editing/visible_text.cpp:
3224         (khtml::TextIterator::advance): Pass in base node and offsets rather than computing actual offsets
3225         using the node's index. We only compute the node index if actually asked for the range.
3226         (khtml::TextIterator::handleTextNode): Pass 0 for base node and set base node to 0 when setting
3227         up the offsets.
3228         (khtml::TextIterator::handleTextBox): Ditto.
3229         (khtml::TextIterator::handleReplacedElement): Pass base node and set base node instead of calling
3230         nodeIndex.
3231         (khtml::TextIterator::handleNonTextNode): Pass 0 for offset.
3232         (khtml::TextIterator::exitNode): More of the same.
3233         (khtml::TextIterator::emitCharacter): Ditto.
3234         (khtml::TextIterator::range): If an offset base node is stored, then get its node index, and then
3235         add that in to the offsets. Doing the work here guarantees it's done only once when doing a text search.
3236
3237         - another small fix
3238
3239         * khtml/khtml_part.cpp: Removed SPEED_DEBUG define. Not sure why it was on.
3240
3241 === Safari-176 ===
3242
3243 2004-12-20  Ken Kocienda  <kocienda@apple.com>
3244
3245         Reviewed by Darin
3246
3247         * khtml/editing/htmlediting.cpp:
3248         (khtml::DeleteSelectionCommand::moveNodesAfterNode): My one-liner for this bug introduced layout test
3249         regressions: <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
3250         Rolling out until I can develop a real fix.
3251
3252 2004-12-20  David Harrison  <harrison@apple.com>
3253
3254         Reviewed by Dave Hyatt.
3255         
3256         Initial checkin of AXTextMarkerRef support.
3257
3258         * khtml/xml/dom_docimpl.cpp:
3259         (DocumentImpl::updateSelection):
3260         (DocumentImpl::setFocusNode):
3261         * kwq/KWQAccObject.h:
3262         * kwq/KWQAccObject.mm:
3263         (-[KWQAccObject detach]):
3264         (-[KWQAccObject anchorElement]):
3265         (-[KWQAccObject addChildrenToArray:]):
3266         (-[KWQAccObject accessibilityAttributeNames]):
3267         (-[KWQAccObject accessibilityActionDescription:]):
3268         (-[KWQAccObject accessibilityPerformAction:]):
3269         (-[KWQAccObject textMarkerRangeFromMarkers:andEndMarker:]):
3270         (-[KWQAccObject textMarkerForVisiblePosition:]):
3271         (-[KWQAccObject visiblePositionForTextMarker:]):
3272         (-[KWQAccObject AXTextMarkerRangeCopyStartMarkerWrapper:]):
3273         (-[KWQAccObject AXTextMarkerRangeCopyEndMarkerWrapper:]):
3274         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
3275         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
3276         (-[KWQAccObject accessibilityAttributeValue:]):
3277         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
3278         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
3279         (-[KWQAccObject getSelectedTextMarkerRange]):
3280         (-[KWQAccObject doAXLineForTextMarker:]):
3281         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
3282         (-[KWQAccObject doAXStringForTextMarkerRange:]):
3283         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
3284         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
3285         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
3286         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
3287         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
3288         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
3289         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
3290         (-[KWQAccObject accessibilityFocusedUIElement]):
3291         (-[KWQAccObject clearChildren]):
3292         (-[KWQAccObject accObjectID]):
3293         (-[KWQAccObject setAccObjectID:]):
3294         (-[KWQAccObject removeAccObjectID]):
3295         * kwq/KWQAccObjectCache.h:
3296         * kwq/KWQAccObjectCache.mm:
3297         (KWQAccObjectCache::KWQAccObjectCache):
3298         (KWQAccObjectCache::~KWQAccObjectCache):
3299         (KWQAccObjectCache::getAccObjectID):
3300         (KWQAccObjectCache::removeAccObjectID):
3301         (KWQAccObjectCache::textMarkerForVisiblePosition):
3302         (KWQAccObjectCache::visiblePositionForTextMarker):
3303
3304 2004-12-19  Darin Adler  <darin@apple.com>
3305
3306         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added nil check.
3307
3308 2004-12-19  Darin Adler  <darin@apple.com>
3309
3310         Reviewed by Kevin.
3311
3312         - a garbage collection fix
3313
3314         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added a more-extensive comment and fixed the BUILDING_ON_PANTHER
3315         #ifndef to use #if (in practice, either is OK).
3316         * kwq/KWQKURL.mm: (KURL::getNSURL): Use KWQCFAutorelease instead of autorelease.
3317
3318 2004-12-17  David Hyatt  <hyatt@apple.com>
3319
3320         Fix for 3923255, specified percentage heights of divs with overflow auto inside tables not honored.
3321         
3322         Reviewed by kocienda
3323
3324         * khtml/rendering/render_box.cpp:
3325         (RenderBox::calcPercentageHeight):
3326         * khtml/rendering/render_table.cpp:
3327         (RenderTableSection::layoutRows):
3328
3329 2004-12-17  David Harrison  <harrison@apple.com>
3330
3331         Reviewed by Ken Kocienda.
3332
3333         <rdar://problem/3924930> REGRESSION: triple click does not select to end of line
3334         
3335         * khtml/editing/visible_units.cpp:
3336         (khtml::endOfParagraph):
3337         When includeLineBreak is true, allow traversal to next node after enclosingBlockFlowElement.
3338
3339 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3340
3341         Reviewed by Vicki
3342
3343         * khtml/editing/htmlediting.cpp:
3344         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Missed deleting some now-obsolete expcetion
3345         codes when I added the createBreakElement() function.
3346
3347 2004-12-17  Richard Williamson   <rjw@apple.com>
3348
3349         Set the floor of max cacheable object size to 40K.  This restores
3350         the long standing floor.  Lower floor deleteriously impacts the PLT.
3351         Reviewed by Hyatt.
3352
3353         * khtml/khtml_part.cpp:
3354         (KHTMLPart::checkCompleted):
3355         * khtml/misc/loader.cpp:
3356         (Cache::setSize):
3357
3358 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3359
3360         Reviewed by Hyatt
3361
3362         Fix for this bug:
3363         
3364         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
3365
3366         * khtml/editing/htmlediting.cpp:
3367         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Stop merging nodes when a <br> is hit.
3368         Formerly checked only for block boundary.
3369
3370 2004-12-17  David Harrison  <harrison@apple.com>
3371
3372         Reviewed by Darin.
3373
3374                 Add KWQCFAutorelease for autoreleasing CF objects.
3375         * kwq/KWQFoundationExtras.h:
3376         (KWQCFAutorelease):
3377         New.
3378
3379 2004-12-17  David Harrison  <harrison@apple.com>
3380
3381         Reviewed by Darin.
3382
3383                 Fix GC compatibility in getNSString.
3384
3385         * kwq/KWQString.mm:
3386         (QString::getNSString):
3387                 Use NSString allocator instead of CFString, so that autorelease works under GC.
3388
3389 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3390
3391         Reviewed by Hyatt
3392
3393         Fix for this bug:
3394         
3395         <rdar://problem/3890973> REGRESSION (Mail): Deleting reorders remaining text
3396
3397         * khtml/editing/htmlediting.cpp:
3398         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Added check to ensure that moving content will not
3399         move it after the <body> element.
3400
3401 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3402
3403         Reviewed by me
3404         
3405         Added new layout tests covering cases from recent bug fixes.
3406
3407         * layout-tests/editing/inserting/insert-div-018-expected.txt: Added.
3408         * layout-tests/editing/inserting/insert-div-018.html: Added.
3409         * layout-tests/editing/inserting/insert-div-019-expected.txt: Added.
3410         * layout-tests/editing/inserting/insert-div-019.html: Added.
3411         * layout-tests/editing/inserting/insert-div-020-expected.txt: Added.
3412         * layout-tests/editing/inserting/insert-div-020.html: Added.
3413         * layout-tests/editing/inserting/insert-div-021-expected.txt: Added.
3414         * layout-tests/editing/inserting/insert-div-021.html: Added.
3415
3416 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3417
3418         Reviewed by me
3419
3420         Changes in layout resulting from giving <p> elements no margin rather than 0.1em margin.
3421
3422         * layout-tests/editing/inserting/insert-div-013-expected.txt
3423         * layout-tests/editing/inserting/insert-div-014-expected.txt
3424
3425 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3426
3427         Reviewed by John
3428
3429         Fix for this bug:
3430         
3431         <rdar://problem/3925317> Increase quote in email and with cursor below the quote the new line appears above the quote
3432
3433         * khtml/editing/htmlediting.cpp:
3434         (khtml::InsertParagraphSeparatorCommand::doApply):
3435         * khtml/editing/visible_position.cpp: Refine rules for whether to use the starting node or the starting
3436         block as the reference node for the insertion of the new block.
3437         (khtml::isLastVisiblePositionInBlock): Tweak rules again. Descendants of following blocks should answer true.
3438         I worked this all out on the whiteboard this time. This should be the last tweak.
3439
3440 2004-12-17  Kevin Decker  <kdecker@apple.com>
3441
3442         Reviewed by Ken.
3443
3444         Fixed <rdar://problem/3824438> Need a clean way for Dashboard to detect when an XML parsing error occurs
3445
3446         * khtml/xml/xml_tokenizer.cpp:
3447         (khtml::XMLTokenizer::insertErrorMessageBlock): In the xml error report, instead of a generic <div>, use <parsererror> to match Mozilla.
3448
3449 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3450
3451         Reviewed by Chris
3452
3453         Fix for this bug:
3454         
3455         <rdar://problem/3924888> REGRESSION (Mail): Hitting return key at end of line does not insert visible newline
3456
3457         * khtml/editing/htmlediting.cpp:
3458         (khtml::InsertParagraphSeparatorCommand::doApply): Tweaked code I added just before to fix 3924486, so that
3459         it checks the downstream node for the starting position.
3460
3461 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3462
3463         Reviewed by Chris
3464
3465         Added new createBreakElement() function that makes creating a <br> element a one-liner.
3466         Converted all the code that used to call the DocumentImpl, and dealt with the exceptionCode,
3467         over to this new helper.
3468
3469         * khtml/editing/htmlediting.cpp:
3470         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Now uses new helper function.
3471         (khtml::InsertLineBreakCommand::doApply): Ditto.
3472         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
3473         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
3474         (khtml::ReplaceSelectionCommand::doApply): Ditto.
3475         (khtml::createBreakElement): New helper.
3476         * khtml/editing/htmlediting.h: Ditto.
3477
3478 2004-12-16  David Hyatt  <hyatt@apple.com>
3479
3480         Fix a bug where vertical-align values that depended on their parent's value went crazy if the parent was
3481         vertical-align top or bottom.  The bug is 3771007, bankofamerica's ebills page.
3482         
3483         Reviewed by kocienda
3484
3485         * khtml/rendering/render_object.cpp:
3486         (RenderObject::getVerticalPosition):
3487
3488 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3489
3490         Reviewed by John
3491
3492         Fix for these bugs:
3493         
3494         <rdar://problem/3924486> REGRESSION (Mail): Hitting return key does not insert visible newline
3495         <rdar://problem/3924579> REGRESSION (Mail): After deleting, hitting return key does not insert visible newline
3496
3497         * khtml/editing/htmlediting.cpp:
3498         (khtml::InsertParagraphSeparatorCommand::doApply): For the first bug, detect when inserting a <p> will
3499         make a visible <br> collapse. For the second bug, move the code that inserts the new <p> after
3500         a check which may move the node used as the reference node for the insertion. Also change this code to
3501         insert the <p> after the last sibling of the starting position, to move it past the nodes we're going
3502         to want to shift into the new <p>.
3503
3504 2004-12-16  Darin Adler  <darin@apple.com>
3505
3506         Reviewed by Ken.
3507
3508         - use <p> elements rather than <br> when pasting plain text; also use margin of 0 rather than 0.1 em
3509           after talking this over with Dave and Ken
3510
3511         * khtml/editing/htmlediting.h: Added createDefaultParagraphElement and createBlockPlaceholderElement.
3512         * khtml/editing/htmlediting.cpp:
3513         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Use new createBlockPlaceholderElement
3514         helper so this can share code with the plain-text conversion code.
3515         (khtml::InsertParagraphSeparatorCommand::createParagraphElement): Use new createDefaultParagraphElement
3516         helper so this can share code with the plain-text conversion code.
3517         (khtml::createDefaultParagraphElement): Added.
3518         (khtml::createBlockPlaceholderElement): Added.
3519
3520         * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Use paragraphs rather than
3521         <br> elements for pasting plain text.
3522
3523         - regenerated these files with the newer gperf
3524
3525         * khtml/css/cssproperties.c: Regenerated.
3526         * khtml/css/cssvalues.c: Regenerated.
3527         * khtml/misc/htmlattrs.c: Regenerated.
3528         * khtml/misc/htmltags.c: Regenerated.
3529
3530 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3531
3532         Reviewed by Hyatt
3533
3534         Fix for this bug:
3535         
3536         <rdar://problem/3924291> REGRESSION (Mail): Crash deleting content following a <p> element
3537
3538         * khtml/xml/dom_nodeimpl.cpp:
3539         (NodeImpl::enclosingInlineElement): Fixed problem in this function where recursive search for
3540         parent that is not an inline would skip past previous siblings of nodes which were blocks. Now
3541         it stops looking in this situation. This problem eventually caused the delete code to try to 
3542         merge a node under a descendent.
3543
3544 2004-12-16  Adele Amchan  <adele@apple.com>
3545
3546         Change by Richard, reviewed by me.
3547
3548         Fix for: <rdar://problem/3923983> background image decoding prevents page with 0Kb image from finishing to load
3549
3550         * khtml/misc/loader.cpp: (CachedImage::data): Added call to notifyFinished so the 0Kb image case finishes loading.
3551
3552 2004-12-16  Adele Amchan  <adele@apple.com>
3553
3554         Reviewed by Chris.
3555
3556         Fix for: <rdar://problem/3534824> VIP: some navigation links on safeway.com don't work due to a JavaScript quirk
3557
3558         Added a call to ObjectImp::get before Window::get just returns Undefined.  
3559         This was preventing us from getting the toString function from a Window object.
3560
3561         * khtml/ecma/kjs_window.cpp: (Window::get):
3562
3563 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3564
3565         Reviewed by John
3566         
3567         Fix for this bug:
3568         
3569         <rdar://problem/3918351> REGRESSION (Mail, 173-175+): Return before first char of line leaves insertion point in wrong place
3570         
3571         * khtml/editing/htmlediting.cpp:
3572         (khtml::InsertParagraphSeparatorCommand::doApply): Basically, did a rewrite of this function
3573         to do a better job than it was doing before. Added several test cases to prove I am on a 
3574         better track.
3575         * khtml/editing/visible_position.cpp:
3576         (khtml::isFirstVisiblePositionInBlock): Tweaked the rules a bit to fix an issue very similar to the
3577         leaving-the-bar-node case problem I just fixed in a recent checkin (relevant markup: <p>foo</p>bar).
3578         This function was returning true for the first position in "bar". Wrong. Also tightened up other 
3579         rule: Should not report true when relationship between blocks cannot be determined.
3580         (khtml::isLastVisiblePositionInBlock): Tightened up rule as above: Should not report true 
3581         when relationship between blocks cannot be determined.
3582         * layout-tests/editing/inserting/insert-div-010-expected.txt: Added.
3583         * layout-tests/editing/inserting/insert-div-010.html: Added.
3584         * layout-tests/editing/inserting/insert-div-011-expected.txt: Added.
3585         * layout-tests/editing/inserting/insert-div-011.html: Added.
3586         * layout-tests/editing/inserting/insert-div-012-expected.txt: Added.
3587         * layout-tests/editing/inserting/insert-div-012.html: Added.
3588         * layout-tests/editing/inserting/insert-div-013-expected.txt: Added.
3589         * layout-tests/editing/inserting/insert-div-013.html: Added.
3590         * layout-tests/editing/inserting/insert-div-014-expected.txt: Added.
3591         * layout-tests/editing/inserting/insert-div-014.html: Added.
3592         * layout-tests/editing/inserting/insert-div-015-expected.txt: Added.
3593         * layout-tests/editing/inserting/insert-div-015.html: Added.
3594         * layout-tests/editing/inserting/insert-div-016-expected.txt: Added.
3595         * layout-tests/editing/inserting/insert-div-016.html: Added.
3596         * layout-tests/editing/inserting/insert-div-017-expected.txt: Added.
3597         * layout-tests/editing/inserting/insert-div-017.html: Added.
3598             
3599 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3600
3601         Reviewed by me
3602         
3603         Added a layout test based on my last checkin.
3604
3605         * layout-tests/editing/selection/move-by-word-001-expected.txt: Added.
3606         * layout-tests/editing/selection/move-by-word-001.html: Added.
3607
3608 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3609
3610         Reviewed by John
3611
3612         Fix for this bug:
3613         
3614         <rdar://problem/3917929> REGRESSION (Mail): Command-left-arrow leaves insertion point too high after specific steps
3615
3616         * khtml/editing/visible_text.cpp:
3617         (khtml::SimplifiedBackwardsTextIterator::advance): Add new check for leaving a text node and iterating
3618         backwards into a different block that is an descendent of the block containing the text node (as in leaving 
3619         the "bar" node in this example: <p>foo</p>bar).
3620         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode): Call new emitNewlineForBROrText helper.
3621         (khtml::SimplifiedBackwardsTextIterator::emitNewlineForBROrText): Factor out code from handleNonTextNode, since
3622         it is called from there, and now also from advance().
3623
3624 2004-12-15  Darin Adler  <darin@apple.com>
3625
3626         Reviewed by Ken.
3627         
3628         - fixed problem where plain-text would put a blank line between each <p> even when they have no margins
3629
3630         * khtml/editing/visible_text.cpp: (khtml::TextIterator::exitNode): Add more checks and only set the
3631         "add one more newline" flag if the margin is sufficient. A more complete fix would ignore the node
3632         type altogether and use the render tree instead.
3633
3634 2004-12-14  John Sullivan  <sullivan@apple.com>
3635
3636         Reviewed by Ken.
3637         
3638         - rest of WebCore fix for <rdar://problem/3790011> undoable operations all say "Undo" 
3639         in the menu, no specific action names
3640
3641         * khtml/editing/edit_actions.h: new header, contains EditAction enum
3642         (renamed from HTMLEditAction, formerly in htmlediting.h)
3643
3644         * ForwardingHeaders/editing/edit_actions.h: new forwarding header
3645         
3646         * khtml/editing/htmlediting.h:
3647         removed HTMLEditAction enum in favor of including edit_actions.h; added khtml::
3648         namespace to EditAction usages; added m_editingAction ivar to ApplyStyleCommand
3649
3650         * khtml/editing/htmlediting.cpp:
3651         (khtml::EditCommandPtr::editingAction):
3652         update for enum name change
3653         (khtml::EditCommand::editingAction):
3654         ditto
3655         (khtml::ApplyStyleCommand::ApplyStyleCommand):
3656         added editingAction parameter to this constructor
3657         (khtml::ApplyStyleCommand::editingAction):
3658         return new ivar
3659         (khtml::DeleteSelectionCommand::editingAction):
3660         update for enum name change
3661         (khtml::MoveSelectionCommand::editingAction):
3662         ditto
3663         (khtml::TypingCommand::editingAction):
3664         ditto
3665         (khtml::ReplaceSelectionCommand::editingAction):
3666         ditto
3667         
3668         * khtml/khtml_part.h:
3669         added EditAction parameter to applyStyle and computeAndSetTypingStyle
3670         * khtml/khtml_part.cpp:
3671         (KHTMLPart::computeAndSetTypingStyle):
3672         added EditAction parameter
3673         (KHTMLPart::applyStyle):
3674         ditto
3675
3676         * kwq/KWQKHTMLPart.mm:
3677         (KWQKHTMLPart::registerCommandForUndoOrRedo):
3678         do the cast from EditAction to WebUndoAction a different way to match other code
3679         
3680         * kwq/WebCoreBridge.h:
3681         * kwq/WebCoreBridge.mm:
3682         (-[WebCoreBridge setTypingStyle:withUndoAction:]):
3683         added WebUndoAction parameter, passed into ApplyStyleCommand constructor
3684         (-[WebCoreBridge applyStyle:withUndoAction:]):
3685         ditto
3686
3687         * WebCore.pbproj/project.pbxproj:
3688         updated for new files
3689
3690 2004-12-14  David Hyatt  <hyatt@apple.com>
3691
3692         Fix for 3562458, rowspan and colspan converted to ints so that large values will work for them.  Remove
3693         the ridiculous 1024 limit on the span values.
3694
3695         * khtml/html/html_tableimpl.cpp:
3696         (HTMLTableCellElementImpl::parseHTMLAttribute):
3697         * khtml/rendering/render_table.cpp:
3698         (RenderTableCell::collapsedBottomBorder):
3699         * khtml/rendering/render_table.h:
3700         (khtml::RenderTableCell::colSpan):
3701         (khtml::RenderTableCell::setColSpan):
3702         (khtml::RenderTableCell::rowSpan):
3703         (khtml::RenderTableCell::setRowSpan):
3704         (khtml::RenderTableCol::span):
3705         (khtml::RenderTableCol::setSpan):
3706
3707 2004-12-14  David Hyatt  <hyatt@apple.com>
3708
3709         Make sure <col> and <colgroup> can have spans updated dynamically as well.
3710         
3711         Reviewed by rjw
3712
3713         * khtml/html/html_tableimpl.cpp:
3714         (HTMLTableColElementImpl::parseHTMLAttribute):
3715         * khtml/rendering/render_table.cpp:
3716         (RenderTableCell::updateFromElement):
3717         (RenderTableCol::updateFromElement):
3718
3719 2004-12-14  David Hyatt  <hyatt@apple.com>
3720
3721         Fix for 3833123, setting a cell's colspan does not update rendering like it should.
3722         
3723         Reviewed by rjw
3724
3725         * khtml/html/html_tableimpl.cpp:
3726         (HTMLTableCellElementImpl::parseHTMLAttribute):
3727         * khtml/rendering/render_table.cpp:
3728         (RenderTableCell::RenderTableCell):
3729         (RenderTableCell::updateFromElement):
3730
3731 2004-12-14  Chris Blumenberg  <cblu@apple.com>
3732
3733         Fixed: <rdar://problem/3864536> crash copying text from other apps and pasting in a sticky in dashboard
3734
3735         Reviewed by hyatt.
3736
3737         * khtml/editing/markup.cpp:
3738         (khtml::createFragmentFromText): ref and deref the fragment since calling appendChild can completely deref it
3739
3740 2004-12-14  David Hyatt  <hyatt@apple.com>
3741
3742         Fix for 3785211. Make sure to do a layout with the old position before doing a layout after changing to the new position.
3743         This is actually a regression from my positioned object DHTML optimization.
3744         
3745         Reviewed by kocienda
3746
3747         * khtml/rendering/render_object.cpp:
3748         (RenderObject::setStyle):
3749
3750 2004-12-14  David Hyatt  <hyatt@apple.com>
3751
3752         Make sure the class attribute works when newlines are present in the attribute.
3753
3754         Reviewed by kocienda
3755
3756         * khtml/html/html_elementimpl.cpp:
3757         (HTMLNamedAttrMapImpl::parseClassAttribute):
3758
3759 2004-12-14  David Hyatt  <hyatt@apple.com>
3760
3761         Fix for 3724938, float element is duplicated and paints twice.  The logic for when to paint floats was
3762         actually fairly screwed up.  This patch simplifies the logic and makes addOverhangingFloats easier to
3763         read by splitting it into two separate functions.
3764         
3765         Reviewed by kocienda
3766
3767         * khtml/rendering/render_block.cpp:
3768         (khtml::RenderBlock::layoutBlockChildren):
3769         (khtml::RenderBlock::clearFloats):
3770         (khtml::RenderBlock::addOverhangingFloats):
3771         (khtml::RenderBlock::addIntrudingFloats):
3772         * khtml/rendering/render_block.h:
3773
3774 2004-12-14  John Sullivan  <sullivan@apple.com>
3775
3776         Reviewed by Ken.
3777         
3778         - added Undo action names for Cut, Paste, and Drag
3779
3780         * khtml/editing/htmlediting.h:
3781         * khtml/editing/htmlediting.cpp:
3782         (khtml::DeleteSelectionCommand::editingAction):
3783         overridden to return HTMLEditActionCut
3784         (khtml::MoveSelectionCommand::editingAction):
3785         overridden to return HTMLEditActionDrag
3786         (khtml::ReplaceSelectionCommand::editingAction):
3787         overridden to return HTMLEditActionPaste
3788
3789 2004-12-14  John Sullivan  <sullivan@apple.com>
3790
3791         Reviewed by Ken.
3792         
3793         - architecture for WebCore part of fix for <rdar://problem/3790011> undoable operations all say "Undo" in the menu, 
3794         no specific action names
3795           
3796         The remaining step is to make each EditCommand subclass override editingAction() to return an
3797         appropriate value. (Unfortunately the mapping between subclass and user-distinguishable action
3798         is not completely straightforward, so this next step isn't trivial.)
3799
3800         * khtml/editing/htmlediting.h:
3801         new enum for HTMLEditAction
3802
3803         * khtml/editing/htmlediting.cpp:
3804         (khtml::EditCommandPtr::editingAction):
3805         new method, calls through to EditCommand
3806         (khtml::EditCommand::editingAction):
3807         new method for subclasses to override, returns HTMLEditActionUnspecified at this level
3808         (khtml::TypingCommand::editingAction):
3809         proof of concept override, returns HTMLEditActionTyping
3810                 
3811         * kwq/KWQKHTMLPart.h:
3812         declare new private bottleneck method registerCommandForUndoOrRedo
3813         * kwq/KWQKHTMLPart.mm:
3814         (KWQKHTMLPart::registerCommandForUndoOrRedo):
3815         new bottleneck method to reduce code duplication; now calls over the bridge
3816         to get the localized string to use for the Undo action name
3817         (KWQKHTMLPart::registerCommandForUndo):
3818         now calls new bottleneck method
3819         (KWQKHTMLPart::registerCommandForRedo):
3820         now calls new bottleneck method
3821         
3822         * kwq/WebCoreBridge.h:
3823         new enum for WebUndoAction, maps directly to HTMLEditAction.
3824         Declaration of nameForUndoAction:
3825
3826 2004-12-14  Darin Adler  <darin@apple.com>
3827
3828         Reviewed by John.
3829
3830         - added a bunch of missing nil checks; our old version of inherits used to work for nil (by accident)
3831
3832         * khtml/rendering/render_frames.cpp:
3833         (RenderPart::~RenderPart): Check widget for nil.
3834         (RenderPart::setWidget): Ditto.
3835         (RenderFrame::slotViewCleared): Ditto.
3836         (RenderPartObject::slotViewCleared): Ditto.
3837
3838 2004-12-13  Darin Adler  <darin@apple.com>
3839
3840         Reviewed by Ken.
3841
3842         - moved markup-related functions into new sources files in the editing directory
3843         - removed all of the uses of dynamic_cast, preparing to turn off RTTI to make our code smaller and slightly faster
3844
3845         * ForwardingHeaders/editing/markup.h: Added.
3846         * khtml/editing/markup.h: Added.
3847         * khtml/editing/markup.cpp: Added.
3848
3849         * WebCore.pbproj/project.pbxproj: Added markup.h/cpp.
3850
3851         * khtml/dom/dom_node.cpp: (Node::toHTML): Call createMarkup since there's no toHTML in NodeImpl any more.
3852         * khtml/html/html_elementimpl.cpp:
3853         (HTMLElementImpl::innerHTML): Changed to call createMarkup.
3854         (HTMLElementImpl::outerHTML): Ditto.
3855
3856         * khtml/ecma/kjs_window.cpp:
3857         (Window::retrieveWindow): Comment out assert that uses dynamic_cast.
3858         (Window::retrieveActive): Ditto.
3859
3860         * khtml/editing/htmlediting.h: Added forward class declaration needed now that I removed one elsewhere.
3861         * khtml/xml/dom_docimpl.h: Ditto.
3862
3863         * khtml/khtml_part.cpp:
3864         (KHTMLPart::slotDebugDOMTree): Use createMarkup instead of toHTML.
3865         (KHTMLPart::processObjectRequest): Use inherits instead of dynamic_cast.
3866
3867         * khtml/rendering/render_image.cpp: (RenderImage::paint): Add an explicit QChar conversion so this code
3868         still works even with the additional replace overloads added to QString.
3869         * kwq/KWQTextCodec.mm: (QTextCodec::fromUnicode): Ditto.
3870
3871         * khtml/rendering/render_object.h: Removed the version of arenaDelete that does not take an object