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