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