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