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