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