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