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