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