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