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