Reviewed by Vicki.
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2005-03-10  Maciej Stachowiak  <mjs@apple.com>
2
3         Reviewed by Vicki.
4
5         <rdar://problem/4046018> REGRESSION (TOT): RSS pages don't display anything
6         
7         * kwq/WebCoreBridge.mm:
8         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]): Exempt
9         feed: and feeds: pages from the local file security check.
10
11 2005-03-10  Darin Adler  <darin@apple.com>
12
13         Change written by Steve Peters, reviewed by me.
14
15         - fixed <rdar://problem/4045924> improve compareBoundaryPoints to make style changes faster
16
17         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::compareBoundaryPoints):
18         Do early outs in a couple of the loops to make things faster.
19
20 2005-03-10  Jens Alfke  <jens@apple.com>
21
22         Reviewed by rjw.
23
24         Fixes <rdar://problem/4040848> "REGR: Sun security-check demo applet does not load". My earlier fix for 3603191 deferred loading the applet until the </applet> tag is reached, so all <param>s will be available. Unfortunately that meant that if the </applet> tag was missing, the applet would never load at all. So instead, the loading needs to happen when the ID_APPLET tag is popped from the parser stack for any reason.
25
26         I've restored the old NodeImpl::closeRenderer() method. Except it's now virtual, with a no-op base implementation, and is overridden by HTMLAppletElementImpl, replacing its setAllParamsAvailable method that I added a few weeks ago when fixing 3603191.
27
28         This ensures that the applet will get loaded even if there is no explicit </applet> tag.
29
30         The changes to htmlparser.cpp back out my earlier change and restore the lines that were deleted on 8/3/04 when the old closeRenderer was removed.
31
32         * khtml/html/html_objectimpl.cpp:
33         (HTMLAppletElementImpl::closeRenderer):
34         * khtml/html/html_objectimpl.h:
35         * khtml/html/htmlparser.cpp:
36         (KHTMLParser::insertNode):
37         (KHTMLParser::processCloseTag):
38         (KHTMLParser::popOneBlock):
39         * khtml/xml/dom_nodeimpl.h:
40         (DOM::NodeImpl::closeRenderer):
41
42 2005-03-10  Ken Kocienda  <kocienda@apple.com>
43
44         Reviewed by John
45
46         Fix for this bug:
47         
48         <rdar://problem/4024929> REGRESSION (Mail): Pasting text with multiple reply levels removes one level instead of all
49         
50         The code to figure out which node to use to merge into an existing line did not drill into the first inline element
51         as needed to make the feature work as user expect. Instead, it looked at the first node, and if it was a block, it
52         skipped that node. This worked for some cases (including the important "paste-as-quotation" case) but obviously 
53         doesn't work for content quoted more than once.
54         
55         Now, mergeStartNode() will look for the first node in pasted content that is not a block. It will now also look
56         for nodes specially marked by Mail as a node added to make "Paste As Quotation" work. It won't skip those. 
57         
58         NOTE: This change will break Mail's "Paste As Quotation" feature for TOT WebKit users, but this is only a temporary 
59         problem that will exist until we sync up with Mail's pending change to mark nodes as needed in its pasteAsQuotation:
60         method.
61         
62         * khtml/editing/html_interchange.h: Add ApplePasteAsQuotation constant used to check for "marked" blockquotes.
63         * khtml/editing/htmlediting.cpp:
64         (khtml::ReplacementFragment::mergeStartNode): Look for first node that is either not a block or is marked as
65         an ApplePasteAsQuotation node.
66         (khtml::isMailPasteAsQuotationNode): New helper that looks for nodes marked with ApplePasteAsQuotation.
67         * khtml/editing/htmlediting.h: Updated header for new function.
68         
69         This test result changed is an acceptable way.
70         
71         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
72         * layout-tests/editing/pasteboard/paste-text-013.html
73
74         NOTE: This change causes a regression in this layout test:
75
76         * layout-tests/editing/pasteboard/paste-text-013.html
77
78         This problem will need to be fixed separately, and this bug has been filed to track this problem:
79         <rdar://problem/4045513> Copying and pasting selection starting at end of paragraph can incorrectly remove line break
80
81 2005-03-09  Maciej Stachowiak  <mjs@apple.com>
82
83         Reviewed by Richard.
84
85         <rdar://problem/4040776> Dashboard (Weather widget) is a memory hog
86         
87         Change things around so the event listeners for XMLHttpRequest
88         mark their JS listener objects instead of holding a hard
89         reference, to avoid an unbreakable reference cycle.
90
91         * khtml/ecma/kjs_events.cpp:
92         (JSAbstractEventListener::JSAbstractEventListener):
93         (JSAbstractEventListener::~JSAbstractEventListener):
94         (JSAbstractEventListener::handleEvent):
95         (JSAbstractEventListener::eventListenerType):
96         (JSUnprotectedEventListener::JSUnprotectedEventListener):
97         (JSUnprotectedEventListener::~JSUnprotectedEventListener):
98         (JSUnprotectedEventListener::listenerObj):
99         (JSUnprotectedEventListener::windowObj):
100         (JSUnprotectedEventListener::mark):
101         (JSEventListener::JSEventListener):
102         (JSEventListener::~JSEventListener):
103         (JSEventListener::listenerObj):
104         (JSEventListener::windowObj):
105         (JSLazyEventListener::JSLazyEventListener):
106         * khtml/ecma/kjs_events.h:
107         * khtml/ecma/kjs_html.h:
108         * khtml/ecma/kjs_window.cpp:
109         (Window::getJSEventListener):
110         (Window::getJSUnprotectedEventListener):
111         * khtml/ecma/kjs_window.h:
112         * khtml/ecma/xmlhttprequest.cpp:
113         (KJS::XMLHttpRequest::putValue):
114         (KJS::XMLHttpRequest::mark):
115         * khtml/ecma/xmlhttprequest.h:
116         * khtml/khtml_part.h:
117
118 2005-03-06  Maciej Stachowiak  <mjs@apple.com>
119
120         Reviewed by Darin.
121
122         <rdar://problem/4005575> Arbitrary file disclosure vulnerability due to ability to load local html from remote content
123         
124         * khtml/ecma/kjs_html.cpp:
125         (KJS::HTMLDocument::putValue):
126         * khtml/ecma/kjs_window.cpp:
127         (Window::put):
128         (WindowFunc::tryCall):
129         (Location::put):
130         (LocationFunc::tryCall):
131         * khtml/khtml_part.cpp:
132         (KHTMLPart::begin):
133         (KHTMLPart::scheduleLocationChange):
134         (KHTMLPart::slotRedirect):
135         (KHTMLPart::processObjectRequest):
136         * khtml/khtml_part.h:
137         * khtml/khtmlpart_p.h:
138         * kwq/KWQKHTMLPart.mm:
139         (KWQKHTMLPart::openURLRequest):
140         (KWQKHTMLPart::urlSelected):
141         (KWQKHTMLPart::createPart):
142         * kwq/KWQKHTMLPartBrowserExtension.mm:
143         (KHTMLPartBrowserExtension::createNewWindow):
144         * kwq/WebCoreBridge.h:
145         * kwq/WebCoreBridge.mm:
146         (hasCaseInsensitivePrefix):
147         (-[WebCoreBridge didNotOpenURL:pageCache:]):
148         (-[WebCoreBridge canLoadURL:fromReferrer:hideReferrer:]):
149
150 2005-03-09  Richard Williamson   <rjw@apple.com>
151
152         Fixed <rdar://problem/4032938> Safari: text layout for MS P Gothic font is corrupted
153
154         Remove our hacked special case now we have our own cache of
155         which fonts are fixed  pitch.
156
157         Reviewed by Maciej.
158
159         * kwq/KWQFont.mm:
160         (QFont::isFixedPitch):
161
162 2005-03-09  David Harrison  <harrison@apple.com>
163
164         Reviewed by Maciej.
165
166         <rdar://problem/4037141> REGRESSION (Mail): Pasting deletes preceding blank lines with certain steps
167
168         * khtml/editing/htmlediting.cpp:
169         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
170         Add check for anonymous text after blocks.
171
172 2005-03-08  Ken Kocienda  <kocienda@apple.com>
173
174         Reviewed by John
175
176         Fix for these bugs:
177         
178         <rdar://problem/4039661> crash in ApplyStyleCommand::applyBlockStyle pasting contents of webpage into Mail or Blot
179         <rdar://problem/4039672> hang in moveParagraphContentsToNewBlockIfNecessary after pasting contents of webpage into Blot
180
181         * khtml/editing/htmlediting.cpp:
182         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Fix for 4039672. Iteration needs to do
183         a traverseNextSibling(), not a traverseNextNode(). The latter might iterate into a child that already got moved, and
184         the code can infinite loop as a result.
185         (khtml::ApplyStyleCommand::applyBlockStyle): Fix for 4039661. This function iterates over a set of nodes to apply
186         block styles. Before, the iteration would go from the start to the end of the selection, and apply block styles
187         as it went. However, the act of applying style could confuse the iteration. Now I iterate and store the relevant
188         nodes in QPtrList before doing any style manipulation, and then iterate that set of nodes.
189
190 2005-03-08  Darin Adler  <darin@apple.com>
191
192         Change written by Hyatt, reviewed by me.
193
194         - fixed <rdar://problem/3952698> Function buttons do not display properly with Telia Webmail
195
196         * khtml/rendering/render_replaced.cpp: (RenderReplaced::calcMinMaxWidth):
197         Only use a minWidth of 0 for images with a percentage value. Other replaced elements aren't scalable
198         so their minWidth should be their calculated width. This has been wrong all along, but it's a relatively
199         safe change because it only affects replaced elements' min-width.
200
201 2005-03-08  David Harrison  <harrison@apple.com>
202
203         Reviewed by Ken.
204
205         <rdar://problem/4039006> REGRESSION (Mail): Command-left-arrow goes to the start of the wrong line in particular message
206
207         * khtml/editing/visible_units.cpp:
208         (khtml::startOfLine):
209         Use firstLeafChild() instead of firstChild().
210
211 2005-03-08  Richard Williamson   <rjw@apple.com>
212
213         Fixed by Tom Madden.
214
215         Fixed <rdar://problem/4038586> 8A402: Osaka-Mono text overlaps when typing with input method
216
217         We weren't clearing the "all ascii" flag when setting text on
218         RenderText.
219
220         Reviewed by Richard Williamson.
221
222         * khtml/rendering/render_text.cpp:
223         (RenderText::setText):
224
225 2005-03-08  Darin Adler  <darin@apple.com>
226
227         Reviewed by Ken and Maciej.
228
229         - fixed <rdar://problem/3988809> REGRESSION (Mail): wide space characters are turned into plain old spaces when typed or pasted
230
231         Changed the few places where it matters to use a "collapsible whitespace" concept instead of
232         the general whitespace concept. This means treating only ' ' and '\n' specially instead of
233         including other space characters, which matches what the space-collapsing logic does in RenderText,
234         although it really needs to behave differently based on whitespace mode.
235
236         * khtml/editing/visible_text.h: (khtml::isCollapsibleWhitespace): Added. This returns true only for
237         ' ' and '\n' since they are the only characters collapsed once text is in the DOM. But really it
238         can't do the job ignoring white-space mode, so some day it must go.
239
240         * khtml/editing/html_interchange.cpp: (convertHTMLTextToInterchangeFormat): Changed to use
241         isCollapsibleWhitespace and removed unnecessary calls to latin1().
242
243         * khtml/editing/htmlediting.cpp:
244         (khtml::isNBSP): Removed unnecessary creation/destruction of QChar each time this is called.
245         (khtml::nextCharacterIsCollapsibleWhitespace): Renamed from isWS and changed to use isCollapsibleWhitespace.
246         (khtml::DeleteSelectionCommand::fixupWhitespace): Use isCollapsibleWhitespace instead of isWS,
247         since we only want to do our NBSP tricks for collapsible whitespace.
248         (khtml::InsertTextCommand::input): Changed use of isTab to instead say == "\t" since that does the
249         same thing and is arguably just as clear. Changed use of isWS to == " " since the input text can't
250         include any "\n" characters, and really a plain old space is the only collapsible thing that can
251         be passed in. Use isCollapsibleWhitespace instead of isWS since we want to do NBSP tricks only for
252         collapsible whitespace, not all whitespace.
253         (khtml::InsertTextCommand::insertSpace): Use isCollapsibleWhitespace instead of isWS since we want
254         to do NBSP tricks only for collapsible whitespace, not all whitespace.
255         (khtml::RebalanceWhitespaceCommand::doApply): Ditto.
256
257         * khtml/xml/dom_position.h: Changed treatNBSPAsWhiteSpace parameters to considerNonCollapsibleWhitespace
258         parameters. The most common callers are only interested in collapsible whitespace, and the smart copy
259         and paste callers want to include all whitespace, including non-breaking spaces and all the Unicode spaces.
260         * khtml/xml/dom_position.cpp:
261         (DOM::Position::leadingWhitespacePosition): Rename the parameter, and use either QChar::isSpace or
262         isCollapsibleWhitespace depending on the boolean passed in.
263         (DOM::Position::trailingWhitespacePosition): Ditto.
264
265 2005-03-07  John Sullivan  <sullivan@apple.com>
266
267         Reviewed by Darin.
268         
269         - <rdar://problem/4040868> REGRESSION (Mail, 403-403+): Drag and drop deletes text, 
270         many other bad editing problems
271
272         * khtml/rendering/render_text.cpp:
273         (RenderText::caretMaxOffset):
274         A "-" should have been a "+" in this method that was tweaked an hour ago. Editing
275         was completely horked.
276
277 2005-03-07  Richard Williamson   <rjw@apple.com>
278
279         Additional nil check from fix for 4040749.
280
281         * khtml/rendering/render_box.cpp:
282         (RenderBox::setStyle):
283
284 2005-03-07  Richard Williamson   <rjw@apple.com>
285
286         Additional nil check from fix for 4040749.
287
288         * khtml/rendering/render_layer.cpp:
289         (RenderLayer::updateLayerPosition):
290
291 2005-03-07  David Harrison  <harrison@apple.com>
292
293         Reviewed by Darin.
294
295         <rdar://problem/4033202> REGRESSION (Mail): Can't arrow up at a particular spot in a particular Mail message
296
297         Doublecheck that new position is really on a different line, because the VisiblePosition constructor does not.
298         Filed <rdar://problem/4040763> for that problem.
299
300         * khtml/editing/visible_units.cpp:
301         (khtml::previousLinePosition):
302
303 2005-03-07  Richard Williamson   <rjw@apple.com>
304
305         Fixed <rdar://problem/4040749> REGRESSION (125-178): opacity style not working, breaks fading images on okcupid.com
306
307         When layers are dynamically created/removed as a result of changing opacity they weren't being correctly
308         sized and positioned.  This happens whenever opacity goes from < 1 to 1.
309
310         Reviewed by Darin.
311
312         * khtml/rendering/render_box.cpp:
313         (RenderBox::setStyle):
314         * khtml/rendering/render_layer.cpp:
315         (RenderLayer::updateLayerPosition):
316
317 2005-03-07  Christy Warren  <kali@apple.com>
318
319         Reviewed by Darin
320
321         * khtml/rendering/render_text.cpp:
322         (RenderText::caretMinOffset): modified to handle BIDI case by checking all text boxes for min offset
323         (RenderText::caretMaxOffset): modified to handle BIDI case by checking all text boxes for max offset
324
325 2005-03-07  David Harrison  <harrison@apple.com>
326
327         Reviewed by Ken.
328
329         <rdar://problem/4029225> REGRESSION (Mail): Crash if hit return after dragging in attachment - DeleteSelectionCommand::initializePositionData
330
331         Work around the fact that the height() of a BR is 0 if there are no text elements on the line, even if there are replaced elements.
332         Filed <rdar://problem/4040358> RenderBR height() is not accurate.
333         
334         * khtml/editing/htmlediting.cpp:
335         (khtml::ReplaceSelectionCommand::doApply):
336         When height is 0, double check that the placeholder is the first position on the line.
337
338 === Safari-403 ===
339
340 2005-03-07  Ken Kocienda  <kocienda@apple.com>
341
342         Reviewed by Vicki
343     
344         Fix for this bug:
345         
346         <rdar://problem/4040136> Expose SPI for WebCore's functions to create document fragments from plain text and markup strings
347
348         * kwq/DOMHTML.mm: Add two new SPI functions.
349         (-[DOMHTMLDocument _createDocumentFragmentWithMarkupString:baseURLString:])
350         (-[DOMHTMLDocument _createDocumentFragmentWithText:])
351         * kwq/DOMPrivate.h: Declare the new SPI here, a privately-exported header, so Mail can make use of it.
352
353 2005-03-07  Ken Kocienda  <kocienda@apple.com>
354
355         Reviewed by John
356
357         Fix for this bug:
358         
359         <rdar://problem/4039676> REGRESSION (Mail): in reply, <cr> on pasted text (without trailing newline) is eaten when pasted above date
360
361         * khtml/editing/htmlediting.cpp:
362         (khtml::ReplaceSelectionCommand::doApply): Code to "eat" a <br> element, that was creating an otherwise empty line, was running
363         when it should not. If the content being pasted in does not end in a "logical" newline itself, then the <br> already
364         in the content needs to be preserved. A simple one-line change now sees to this.
365         
366         * layout-tests/editing/pasteboard/paste-text-010-expected.txt: This test now has an extra, but harmless,
367         <br> at the end of a paragraph. This makes sense given the code change.
368
369         New test:
370         * layout-tests/editing/pasteboard/paste-text-018-expected.txt: Added.
371         * layout-tests/editing/pasteboard/paste-text-018.html: Added.
372
373 2005-03-07  Ken Kocienda  <kocienda@apple.com>
374
375         Reviewed by John
376
377         Fix for this bug:
378         
379         <rdar://problem/4035648> REGRESSION (Mail): line feed in source HTML file causes bad copy/paste behavior
380
381         The createMarkup() function in markup.cpp iterates over the nodes in a range,
382         and does some bookkeeping to figure out when to add close tags to the markup.
383         Some code added at the start of the loop to prevent markup from being written
384         for unrendered nodes short-circuited the rest of the loop, and so prevented
385         the close-tag-writing code from running when it should.
386
387         This is why the "plain" text wound up inside of the bold tag in the example
388         above. The addition of the unrendered return character caused an incorrect
389         delay in the close tag for the bold element from being written out, with the
390         result being that it wound up including additional content.
391
392         The fix is to add checks for node renderers throughout the loop at the points
393         where markup is written out for each node. This allows the additional close
394         tag logic to run as needed.
395
396         All layout tests pass with this change.
397
398         * khtml/editing/markup.cpp:
399         (khtml::createMarkup)
400
401         New test:
402         
403         * layout-tests/editing/pasteboard/paste-4035648-fix-expected.txt: Added.
404         * layout-tests/editing/pasteboard/paste-4035648-fix.html: Added.
405
406 2005-03-06  Christy Warren  <kali@appple.com>
407
408         Reviewed by Ken
409
410         * khtml/rendering/render_text.cpp:
411         (lastRendererOnPrevLine): helper for RenderText::caretRect
412         (RenderText::caretRect): added code to properly handle bidi ordered text boxes
413
414 2005-03-06  Christy Warren  <kali@apple.com>
415
416         Reviewed by Darin.
417
418         * khtml/editing/visible_position.cpp: Eliminated code that cuts off searching through the text boxes based on an assumption that breaks under bidi
419         (khtml::VisiblePosition::isCandidate):
420         * kwq/KWQFontMetrics.mm:
421         (QFontMetrics::checkSelectionPoint): Made the initialization of the WebCoreStyle honor the reversed flag
422
423 2005-03-05  John Sullivan  <sullivan@apple.com>
424
425         Reviewed by Maciej.
426         
427         - fixed <rdar://problem/4038417> Mail crashed in StyleChange::checkForLegacyHTMLStyleChange 
428         when composing a reply
429
430         * khtml/editing/htmlediting.cpp:
431         (khtml::StyleChange::checkForLegacyHTMLStyleChange):
432         Added missing nil check.
433
434 2005-03-05  Darin Adler  <darin@apple.com>
435
436         Reviewed by Don.
437
438         - fixed <rdar://problem/4038478> Crash in renderer viewing RSS feed at feed://wvs.topleftpixel.com/index.rdf
439
440         * khtml/xml/dom_docimpl.cpp: (widgetForNode): Check for nil before going from node to renderer.
441
442 2005-03-05  Darin Adler  <darin@apple.com>
443
444         Reviewed by Richard.
445
446         - fixed <rdar://problem/4037700> Every character typed causes stat call for /usr/share/icu/icudt32b_char.brk
447
448         * khtml/rendering/render_text.cpp:
449         (getCharacterBreakIterator): Added. Helper that sets up an iterator for the passed-in text.
450         Shares a single global iterator (fast, albeit not thread-safe).
451         (RenderText::previousOffset): Changed to call getCharacterBreakIterator.
452         (RenderText::nextOffset): Ditto.
453
454 2005-03-05  Ken Kocienda  <kocienda@apple.com>
455
456         Reviewed by Darin
457
458         Fix for this bug:
459         
460         <rdar://problem/4038267> REGRESSION (Mail): Crash copying and pasting end of paragraph
461
462         Code to handle content that has a "logical" newline at the end of the pasted content, and the code
463         to adjust the selection at the end of the paste operation made an assumption that at least one
464         node had been inserted by the paste command. This is not necessarily true in the case where the sole content
465         in the pasted content is one of these "logical" newlines. Adjust some code around so that we don't deref
466         null, but still adjust the selection correctly for this case. In each of the two functions below, some
467         null checks have been added, and some code has been rearranged a little bit to continue on through
468         the end of completeHTMLReplacement, even if no nodes have been inserted. The patch looks bigger and more
469         complicated than the conceptual change.
470
471         * khtml/editing/htmlediting.cpp:
472         (khtml::ReplaceSelectionCommand::doApply)
473         (khtml::ReplaceSelectionCommand::completeHTMLReplacement)
474         
475         * layout-tests/editing/pasteboard/paste-4038267-fix-expected.txt: Added.
476         * layout-tests/editing/pasteboard/paste-4038267-fix.html: Added.
477
478 2005-03-05  Darin Adler  <darin@apple.com>
479
480         Reviewed by John.
481
482         - fixed <rdar://problem/4025918> images copied from Safari with relative src URLs aren't pasted into Mail messages (KURL resolves base URLs incorrectly)
483
484         * kwq/KWQKURL.mm: (KURL::KURL): Add a slash at the start of the path if a relative part is adding
485         a path onto a URL that has "pre-path" bits like host name, but no path yet. This doesn't come up
486         for http because in that case we add a trailing "/" as part of canonicalization.
487
488 2005-03-04  John Sullivan  <sullivan@apple.com>
489
490         Reviewed by Kevin.
491         
492         - fixed <rdar://problem/4033705> REGRESSION (Mail): Copy/Paste from Excel 
493         crashes Mail in KWQKHTMLPart::fontForSelection(bool*) const + 232
494
495         * kwq/KWQKHTMLPart.mm:
496         (KWQKHTMLPart::fontForSelection):
497         Check for nil startNode, not just nil renderer.
498
499 2005-03-04  David Harrison  <harrison@apple.com>
500
501         Reviewed by Ken, Richard.
502
503         <rdar://problem/3996383> REGRESSION (Mail): Deleting all of first line also deletes line ending
504
505         Problem was the placeholder check was based on 0 height block, but the block in this
506         case is the BODY, which has other content even though the paragraph is gone.
507         
508         * khtml/editing/htmlediting.cpp:
509         (khtml::CompositeEditCommand::insertBlockPlaceholder):
510         Now does insert instead of append!
511     
512         (khtml::CompositeEditCommand::appendBlockPlaceholder):
513         New.  Actually does append.
514         
515         (khtml::CompositeEditCommand::addBlockPlaceholderIfNeeded):
516         Renamed from insertBlockPlaceholderIfNeeded because it can insert or append.  Also accepts "force insert" flag.
517         
518         (khtml::CompositeEditCommand::removeBlockPlaceholder):
519         Renamed for succinctness from removeBlockPlaceholderIfNeeded.
520         
521         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent):
522         (khtml::DeleteSelectionCommand::moveNodesAfterNode):
523         Use renamed methods.
524         
525         (khtml::DeleteSelectionCommand::doApply):
526         Use addBlockPlaceholderIfNeeded "force insert" flag if deleting whole paragraphs did not leave an empty one.
527         
528         (khtml::InsertParagraphSeparatorCommand::doApply):
529         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
530         (khtml::InsertTextCommand::input):
531         Use renamed methods.
532         
533         * khtml/editing/htmlediting.h:
534         Renamed and new methods per above.
535         
536
537 2005-03-04  Chris Blumenberg  <cblu@apple.com>
538
539         Fixed: <rdar://problem/4032840> REGRESSION (Mail): crash in RemoveNodeCommand after pasting attachment at end of message
540
541         Reviewed by darin.
542
543         * khtml/editing/visible_units.cpp:
544         (khtml::endOfParagraph): don't consider text nodes that have no rendered characters
545
546 2005-03-04  Richard Williamson   <rjw@apple.com>
547
548         Fixed <rdar://problem/4034764> REGRESSION(125-188)Viewing text/plain page and going back/forward corrupts HTML pages (google.com)
549
550         The parse mode wasn't be restored to the document when going
551         back.
552
553         Reviewed by Hyatt.
554
555         * kwq/KWQKHTMLPart.mm:
556         (KWQKHTMLPart::openURLFromPageCache):
557         * kwq/KWQPageState.h:
558         * kwq/KWQPageState.mm:
559         (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:]):
560
561 2005-03-04  Ken Kocienda  <kocienda@apple.com>
562
563         Reviewed by me
564
565         * layout-tests/editing/style/create-block-for-style-012-expected.txt: Shame on me!
566         I landed my last fix without running layout tests. This one changes in a subtle, but
567         acceptable way.
568
569 2005-03-04  Ken Kocienda  <kocienda@apple.com>
570
571         Reviewed by Harrison
572
573         Fix for this bug:
574         
575         <rdar://problem/4032543> REGRESSION (Mail): Mail hangs when quoted text is pasted twice
576         
577         This code change fixes the bug in a non-obvious way. The root cause of the problem was
578         that a VisiblePosition created using an affinity originating in Mail code caused 
579         two VisiblePosition objects that should have been equal to differ only in their 
580         affinities, which in turn caused us to run a code path that should not have run.
581
582         * khtml/editing/visible_position.cpp:
583         (khtml::VisiblePosition::VisiblePosition): Added copy constructor.
584         (khtml::VisiblePosition::next): Factored out inline code that used to be here into new
585         setAffinityUsingLinePosition() function.
586         (khtml::isEqualIgnoringAffinity): New helper to handle cases when affinity in equality check does
587         not matter. However, we want to know about such cases where a VisiblePosition differs only by affinity, 
588         and the code will assert in development when this happens.
589         (khtml::isNotEqualIgnoringAffinity): Ditto, but not. :)
590         (khtml::setAffinityUsingLinePosition): New helper function mentioned above. This will "correct"
591         upstream affinity to downstream if the affinity does not make a difference for the position.
592         * khtml/editing/visible_position.h:
593         * khtml/editing/visible_range.h: Wacky bug. The operator== for this class took VisiblePosition classes!
594         * khtml/editing/visible_units.cpp:
595         (khtml::isStartOfParagraph): Now performs equality check without regard to affinity.
596         (khtml::isEndOfParagraph): Ditto.
597         (khtml::isStartOfBlock): Ditto.
598         (khtml::isEndOfBlock): Ditto.
599         * kwq/WebCoreBridge.mm:
600         (-[WebCoreBridge setSelectedDOMRange:affinity:]): Adjusts the affinity using setAffinityUsingLinePosition()
601         if necessary.
602
603 2005-03-04  Darin Adler  <darin@apple.com>
604
605         Reviewed by John.
606
607         - fixed <rdar://problem/4036817> REGRESSION: ctrl-y broken when a line + carriage return cut
608
609         * khtml/editing/htmlediting.h: Added insertTextRunWithoutNewlines.
610         * khtml/editing/htmlediting.cpp:
611         (khtml::InsertTextCommand::input): Added assertion to make sure strings with newlines don't get
612         down to this level.
613         (khtml::TypingCommand::insertText): Added. Takes the name of the old function, but is a new
614         level that breaks runs into lines and inserts each one separately.
615         (khtml::TypingCommand::insertTextRunWithoutNewlines): Renamed old insertText to this. 
616
617         * khtml/dom/dom_string.h: Made substring be a const member function.
618         * khtml/dom/dom_string.cpp: (DOM::DOMString::substring): Made this const.
619
620 2005-03-04  Darin Adler  <darin@apple.com>
621
622         Reviewed by John.
623
624         - fixed <rdar://problem/4020413> REGRESSION (Mail): can't use fonts with names that start with "#" in Mail (Korean fonts)
625
626         * khtml/css/css_valueimpl.cpp:
627         (DOM::isLegalIdentifier): Added. Commented out and not used.
628         (DOM::quoteStringIfNeeded): Quotes the string if needed. For now only if it starts with "#".
629         (DOM::CSSPrimitiveValueImpl::cssText): Call quoteStringIfNeeded when asked for cssText for an arbitrary string, since we
630         need text you can re-parse.
631         (DOM::FontFamilyValueImpl::cssText): Ditto.
632
633         * khtml/editing/markup.cpp:
634         (khtml::startMarkup): Added comments about lack of quoting for attributes.
635         (khtml::createMarkup): Ditto.
636
637 2005-03-04 Adele Amchan  <adele@apple.com>
638  
639        Reviewed by Maciej
640
641         Fix for <rdar://problem/4021711> REGRESSION(125-188) blank pages when browsing forum at cooperativeresearch.org - cached external script problem
642
643         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::scriptHandler): set flag needToRefCachedScript so we can make sure 
644         notifyFinished is called after pendingSrc is set up with the right data from the cached script
645
646 2005-03-04  Ken Kocienda  <kocienda@apple.com>
647
648         Reviewed by John
649
650         Fix for this bug:
651         
652         <rdar://problem/4029632> Tiger 8A398:- Mail crashes in DOM::NodeImpl::isBlockFlow() after pasting text with alignment style and BR element from Safari
653
654         * khtml/editing/htmlediting.cpp:
655         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): VisiblePosition constructor
656         was failing to yield a position for a node just pasted into the document since a layout was needed
657         for the calculation to come out right. Layout added. Crash gone.
658
659 === Safari-402 ===
660
661 2005-03-03  Chris Blumenberg  <cblu@apple.com>
662
663         Fixed: <rdar://problem/3992803> Cannot navigate through list items with the keyboard, you're stuck in the same <li> block unless you click out
664
665         Reviewed by harrison.
666
667         * khtml/rendering/render_line.cpp:
668         (khtml::RootInlineBox::closestLeafChildForXPos): avoid returning list markers when possible. Also improved heuristic for returning the best InlineBox given the passed X position.
669
670
671 2005-03-03  Ken Kocienda  <kocienda@apple.com>
672
673         Reviewed by John
674         
675         Fix for this bug:
676         
677         <rdar://problem/4035198> Pasting text with different styles does not get reproducible results
678
679         I had a good idea yesterday to improve the way we "fixup" styles after
680         pasting, but i chose a poor data structure to do it, a map of
681         nodes-to-styles. In the fixup step, I iterated over the map elements and
682         did the fixup. However, since the order in which the items would come
683         out of the map is indeterminate, we got unpredictable results.
684
685         So, the concept was good, but the implementation was flawed. I have
686         fixed this mapping to be a list instead, so the order that nodes are
687         evaluated in the fixup step is document order. This works nicely.
688
689         * khtml/editing/htmlediting.cpp:
690         (khtml::ReplacementFragment::~ReplacementFragment): No longer need to explicity deref nodes and
691         styles saved away for later fixup. This is now handled by the new NodeDesiredStyle class.
692         (khtml::ReplacementFragment::computeStylesUsingTestRendering): Now calls computeAndStoreNodeDesiredStyle,
693         function renamed from mapDesiredStyleForNode.
694         Now accepts a QValueList<NodeDesiredStyle> in place of the old map.
695         (khtml::NodeDesiredStyle::NodeDesiredStyle): New class that represents a node-to-style mapping.
696         (khtml::NodeDesiredStyle::~NodeDesiredStyle): Ditto.
697         (khtml::NodeDesiredStyle::operator=): Ditto.
698         (khtml::ReplaceSelectionCommand::doApply): Now calls computeAndStoreNodeDesiredStyle,
699         function renamed from mapDesiredStyleForNode.
700         (khtml::ReplaceSelectionCommand::fixupNodeStyles): Now operates on a QValueList<NodeDesiredStyle> in 
701         place of the old map.
702         (khtml::computeAndStoreNodeDesiredStyle): Renamed from mapDesiredStyleForNode.  Now operates on a 
703         QValueList<NodeDesiredStyle> in place of the old map.
704         * khtml/editing/htmlediting.h:
705         (khtml::NodeDesiredStyle): New class that represents a node-to-style mapping.
706         (khtml::ReplacementFragment::desiredStyles): Now returns a QValueList<NodeDesiredStyle> in place of the old map.
707
708         * layout-tests/editing/style/typing-style-003-expected.txt: Results changed in an acceptable way.
709
710 2005-03-02  Darin Adler  <darin@apple.com>
711
712         Reviewed by Maciej.
713
714         - fixed <rdar://problem/4029741> REGRESSION (188-189): <input type=text> are cleared when you hide/show them
715
716         * khtml/html/html_formimpl.h: Added detach functions for both input and text area elements, since
717         both have m_valueMatchesRenderer flags.
718         * khtml/html/html_formimpl.cpp:
719         (DOM::HTMLInputElementImpl::detach): Set m_valueMatchesRenderer to false, since the renderer is going away.
720         (DOM::HTMLTextAreaElementImpl::detach): Ditto.
721
722 2005-03-02  Ken Kocienda  <kocienda@apple.com>
723
724         Reviewed by Hyatt
725
726         Fix for this bug:
727         
728         <rdar://problem/4006151> in reply, caret moves to next line after toggling bold style then typing
729
730         * khtml/editing/htmlediting.cpp:
731         (khtml::ApplyStyleCommand::applyInlineStyle): Defer cleaning up empty style until the end of the
732         function. In some situations, the render tree can get confused when we do this removal up front.
733         I wish I understood the reasons more deeply, but this bit of code shuffling seems harmless, and 
734         fixes the bug.
735
736 2005-03-02  Darin Adler  <darin@apple.com>
737
738         Reviewed by Maciej.
739
740         - fixed <rdar://problem/4024966> crash happened twice in [KWQTextField setHasFocus:] + 0xe8
741
742         Added more nil checks to the widget implementations. Anywhere a widget pointer is used, do a nil check,
743         rather than relying on high level assumptions about which calls can and can't destroy the HTML element
744         (and hence the widget). The case in the bug seems to be a case where scrolling destroyed the element.
745         We can't be sure this fixes the bug, but we can be relatively sure we didn't introduce any new problems,
746         because this just avoids nil-dereferencing.
747
748         * kwq/KWQButton.mm:
749         (-[KWQButton becomeFirstResponder]):
750         (-[KWQButton nextKeyView]):
751         (-[KWQButton previousKeyView]):
752         * kwq/KWQListBox.mm:
753         (-[KWQTableView mouseDown:]):
754         (-[KWQTableView becomeFirstResponder]):
755         (-[KWQTableView numberOfRowsInTableView:]):
756         (-[KWQTableView tableViewSelectionDidChange:]):
757         (-[KWQTableView tableView:shouldSelectRow:]):
758         (-[KWQTableView selectionShouldChangeInTableView:]):
759         * kwq/KWQScrollBar.mm:
760         (-[KWQScrollBar scroll:]):
761         * kwq/KWQSlider.mm:
762         (-[KWQSlider mouseDown:]):
763         (-[KWQSlider slide:]):
764         (-[KWQSlider becomeFirstResponder]):
765         (-[KWQSlider nextKeyView]):
766         (-[KWQSlider previousKeyView]):
767         * kwq/KWQTextArea.mm:
768         (-[KWQTextAreaTextView becomeFirstResponder]):
769         (-[KWQTextAreaTextView resignFirstResponder]):
770         (-[KWQTextAreaTextView mouseDown:]):
771         * kwq/KWQTextField.mm:
772         (-[KWQTextFieldController action:]):
773         (-[KWQTextFieldController controlTextDidEndEditing:]):
774         (-[KWQTextFieldController controlTextDidChange:]):
775         (-[KWQTextFieldController textView:didHandleEvent:]):
776         (-[KWQTextFieldController setHasFocus:]):
777
778 2005-03-02  Richard Williamson   <rjw@apple.com>
779
780         Fixed <rdar://problem/4031483> Leak (RenderObject::createInlineBox) reproducible with Stock widget
781
782         We were leaking inline block line boxes.  Argh!
783
784         Reviewed by Hyatt.
785
786         * khtml/rendering/render_flow.cpp:
787         (RenderFlow::dirtyLineBoxes):
788         * khtml/rendering/render_line.cpp:
789         (khtml::InlineBox::deleteLine):
790
791 2005-03-02  Chris Blumenberg  <cblu@apple.com>
792
793         Fixed: <rdar://problem/3976872> REGRESSION (Mail): Pasted plain text doesn't get the proper style if pasted into newlines
794
795         Reviewed by kocienda.
796
797         * khtml/editing/htmlediting.cpp:
798         (khtml::EditCommand::styleAtPosition): new, factored out from calculateStyleBeforeInsertion
799         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): call styleAtPosition
800         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): clear new m_insertionStyle ivar
801         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand): deref new m_insertionStyle  ivar
802         (khtml::ReplaceSelectionCommand::doApply): store the style so it later be applied when matching style
803         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): apply style from m_insertionStyle when matching style
804         * khtml/editing/htmlediting.h:
805
806 2005-03-02  Maciej Stachowiak  <mjs@apple.com>
807
808         Reviewed by Darin.
809
810         <rdar://problem/4031718> REGRESSION (401-401+): Safari reproducible crash setting up scope in JSLazyEventListener::parseCode authenticating to bugweb
811         
812         * khtml/ecma/kjs_events.cpp:
813         (JSLazyEventListener::parseCode): If originalNode is NULL, don't
814         mess with the scope chain.
815         
816         * khtml/html/html_baseimpl.cpp:
817         (HTMLBodyElementImpl::parseHTMLAttribute): For handlers that are
818         delcared on body but set on the document, pass NULL to avoid
819         swizzling the scope chain. It turns out that this is what browsers
820         do, and it finesses the crash.
821
822 2005-03-02  David Harrison  <harrison@apple.com>
823
824         Reviewed by Ken.
825
826         <rdar://problem/3948453> Can't type accented chars as first character in Stickies widget
827
828         * khtml/editing/htmlediting.cpp:
829         (khtml::ReplaceSelectionCommand::doApply):
830
831 2005-03-02  Ken Kocienda  <kocienda@apple.com>
832         Reviewed by John
833
834         Fix for this bug:
835         
836         <rdar://problem/4020574> REGRESSION (Mail): copy/paste first part of reply-quoted text alters downstream style
837         
838         The problem was that the operation to move nodes following the newly-pasted nodes did not preserve the
839         style of these moved nodes. I have generalized some of the functions that compute and preserve styles
840         for nodes and then apply these styles after a DOM operation.
841
842         * khtml/editing/htmlediting.cpp:
843         (khtml::ReplacementFragment::~ReplacementFragment): Call new derefNodesAndStylesInMap() helper function
844         in place of old code that had this deref'ing inline.
845         (khtml::ReplacementFragment::computeStylesUsingTestRendering): Now calls new mapDesiredStyleForNode() helper
846         function place of old code that had this style computation inline.
847         (khtml::ReplacementFragment::removeStyleNodes): Updated comment for new helper name.
848         (khtml::ReplaceSelectionCommand::doApply): Now calls new helpers in place of helpers whose names were changed,
849         or in place of pre-refactored inline code.
850         (khtml::ReplaceSelectionCommand::fixupNodeStyles): Renamed from applyStyleToInsertedNodes(). Now generalized
851         to take the map of nodes to use for the fixup. This makes it possible to call this code with different maps,
852         and that is needed to fix the bug.
853         (khtml::mapDesiredStyleForNode): New helper function to compute the inheritable styles for a given node
854         and map this style to the given node in the given map. This function now also includes the code that was
855         in the removeBlockquoteColorsIfNeeded(). This latter helper has now been removed.
856         (khtml::derefNodesAndStylesInMap): Simple helper to deref map members.
857         * khtml/editing/htmlediting.h:
858         (khtml::ReplacementFragment::desiredStyles): New helper to return map of nodes-to-desiredStyles.
859
860 2005-03-01  Ken Kocienda  <kocienda@apple.com>
861
862         Reviewed by Hyatt
863
864         Fix for this bug:
865
866         <rdar://problem/4011358> REGRESSION(Mail): after dragging text to mail message and deleting, typing or dragging new text doesn't work
867
868         * khtml/editing/visible_position.cpp:
869         (khtml::VisiblePosition::isCandidate): Insertion point disappearing was due to a failed
870         check here after deleting all the content in the body element. The special "empty block"
871         needs to add check for DOM children. A block may have straggling anonymous render children in
872         some cases, and so the check needs to be (!DOM-kids || !render-kids).
873
874         Also, I botched the last checkin trying to split these two patches in my tree. Wrong layout tests 
875         got checked in, I checked in a conflict marker in the Changelog, etc. I fixed everything with this checkin.
876
877 2005-03-01  Ken Kocienda  <kocienda@apple.com>
878  
879         Reviewed by Maciej
880
881         Improved fix for this bug:
882         
883         <rdar://problem/3996605> Insert paragraph command puts new block in wrong place, creating difficult-to-handle HTML
884
885         Maciej and I discussed this situation at length, and we came up with a better fix than I did earlier.
886
887         * khtml/editing/htmlediting.cpp:
888         (khtml::InsertParagraphSeparatorCommand::doApply): Simplify one special case so that it only handles the 
889         "last in block" situation. Remove special case for "downstream node is in different block" and handle
890         this case with a little bit of special code in the general insertion case.
891
892         Results studied to make sure there were no problems.
893
894         * layout-tests/editing/deleting/delete-3959464-fix-expected.txt
895         * layout-tests/editing/inserting/insert-div-001-expected.txt
896         * layout-tests/editing/inserting/insert-div-002-expected.txt
897         * layout-tests/editing/inserting/insert-div-004-expected.txt
898         * layout-tests/editing/inserting/insert-div-005-expected.txt
899         * layout-tests/editing/inserting/insert-div-009-expected.txt
900         * layout-tests/editing/inserting/insert-div-014-expected.txt
901         * layout-tests/editing/inserting/insert-div-018-expected.txt
902         * layout-tests/editing/inserting/insert-div-024-expected.txt
903         * layout-tests/editing/pasteboard/paste-text-011-expected.txt
904         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
905         * layout-tests/editing/pasteboard/paste-text-015-expected.txt
906         * layout-tests/editing/style/block-style-004-expected.txt
907         * layout-tests/editing/style/block-style-005-expected.txt
908         * layout-tests/editing/style/block-style-006-expected.txt
909
910         New test:
911         
912         * layout-tests/editing/inserting/insert-div-027.html
913         * layout-tests/editing/inserting/insert-div-027-expected.txt
914
915 2005-03-01  David Hyatt  <hyatt@apple.com>
916
917         Fix for 4030890, regression with <sup> on Google.  Fix some bogus != comparison checks in verticalPositionHint.
918         
919         Reviewed by John
920
921         (RenderObject::getVerticalPosition):
922         
923 2005-03-01  Chris Blumenberg  <cblu@apple.com>
924
925         Fixed: <rdar://problem/4030669> smart delete does not delete spaces from pasted content
926
927         Reviewed by rjw.
928
929         * khtml/editing/htmlediting.cpp:
930         (khtml::DeleteSelectionCommand::initializePositionData): pass true for treatNBSPAsWhiteSpace to leadingWhitespacePosition and trailingWhitespacePosition when testing whether or not we have to delete those characters as well.
931         * khtml/editing/jsediting.cpp: pass true for smartDelete when the selection granularity is WORD. This allows us to write smart delete layout tests.
932         * layout-tests/editing/deleting/smart-delete-001-expected.txt: Added.
933         * layout-tests/editing/deleting/smart-delete-001.html: Added.
934         * layout-tests/editing/deleting/smart-delete-002-expected.txt: Added.
935         * layout-tests/editing/deleting/smart-delete-002.html: Added.
936
937 2005-03-01  Richard Williamson   <rjw@apple.com>
938
939         Fixed <rdar://problem/4029772> Weather widgets use a lot of memory (more that other widgets)
940
941         The string objects created by KWQHeaderStringFromDictionary() leaked.
942
943         Reviewed by John Louch.
944
945         * kwq/KWQLoader.mm:
946         (KWQHeaderStringFromDictionary):
947
948 2005-03-01  Jens Alfke  <jens@apple.com>
949
950         Reviewed by Darin.
951
952         <rdar://problem/4004531> Simple Sun Signed Applet throws exceptions; doesn't run
953         Two fixes for the way we extract the parameter-y goodness from <object> tags.
954
955         * khtml/rendering/render_frames.cpp:
956         (RenderPartObject::updateWidget):
957
958 2005-03-01  Richard Williamson   <rjw@apple.com>
959
960         Fixed <rdar://problem/3990258> REGRESSION (125.12-181): top of picture that spans two pages is cut off on print from Safari
961
962         The problem was due to incorrect "object truncation" in  RenderFlow::paintLines.  
963         We attempt to push objects down if they don't fit on a page at
964         paint time.  If the attempt to push object down failed we just
965         didn't paint at all.
966
967         Reviewed by Hyatt.
968
969         * khtml/rendering/render_flow.cpp:
970         (RenderFlow::paintLines):
971
972 <<<<<<< ChangeLog
973 2005-03-01  Chris Blumenberg  <cblu@apple.com>
974
975         Fixed: <rdar://problem/4030669> smart delete does not delete spaces from pasted content
976
977         Reviewed by rjw.
978
979         * khtml/editing/htmlediting.cpp:
980         (khtml::DeleteSelectionCommand::initializePositionData): pass true for treatNBSPAsWhiteSpace to leadingWhitespacePosition and trailingWhitespacePosition when testing whether or not we have to delete those characters as well.
981         * khtml/editing/jsediting.cpp: pass true for smartDelete when the selection granularity is WORD. This allows us to write smart delete layout tests.
982         * layout-tests/editing/deleting/smart-delete-001-expected.txt: Added.
983         * layout-tests/editing/deleting/smart-delete-001.html: Added.
984         * layout-tests/editing/deleting/smart-delete-002-expected.txt: Added.
985         * layout-tests/editing/deleting/smart-delete-002.html: Added.
986
987 2005-03-01  Ken Kocienda  <kocienda@apple.com>
988
989         Reviewed by Vicki
990
991         Fix for this bug:
992         
993         <rdar://problem/4030068> Trailing <return> gets eaten when pasted at the end of a document
994
995         * khtml/editing/htmlediting.cpp:
996         (khtml::ReplaceSelectionCommand::doApply): Add code to handle formerly-unhandled end-of-document case.
997
998 2005-03-01  Maciej Stachowiak  <mjs@apple.com>
999
1000         Reviewed by Vicki.
1001
1002         <rdar://problem/4003774> REGRESSION(125-181): JavaScript problems @ Yankee/Dixie quiz
1003         
1004         Reworked how scopes are set up for event handlers to match other
1005         browser. This includes the following changes:
1006
1007         - Special scope entries are set up at the time the event handler
1008         is created, not at the time it fires.
1009
1010         - Special scope is only set up for event handlers set in the html
1011         source through an html attribute, not for handlers set using
1012         addEventHandler or setting JS properties like onclick through
1013         JavaScript.
1014
1015         - Special scope is based on the DOM node on which the handler is
1016         an attribute, not the event target.
1017
1018         This fixes the regression while allowing the fix to
1019         <rdar://problem/3798453> (DIG: getting variable with same name as
1020         DOM element attribute gets attribute value instead) to keep
1021         working correctly.
1022         
1023         * khtml/ecma/kjs_events.cpp:
1024         (JSEventListener::handleEvent):
1025         (JSLazyEventListener::JSLazyEventListener):
1026         (JSLazyEventListener::parseCode):
1027         * khtml/ecma/kjs_events.h:
1028         * khtml/ecma/kjs_proxy.cpp:
1029         (KJSProxyImpl::createHTMLEventHandler):
1030         * khtml/ecma/kjs_proxy.h:
1031         * khtml/ecma/kjs_window.cpp:
1032         (Window::getJSLazyEventListener):
1033         * khtml/ecma/kjs_window.h:
1034         * khtml/html/html_baseimpl.cpp:
1035         (HTMLBodyElementImpl::parseHTMLAttribute):
1036         (HTMLFrameElementImpl::parseHTMLAttribute):
1037         (HTMLFrameSetElementImpl::parseHTMLAttribute):
1038         * khtml/html/html_elementimpl.cpp:
1039         (HTMLElementImpl::parseHTMLAttribute):
1040         * khtml/html/html_formimpl.cpp:
1041         (DOM::HTMLFormElementImpl::parseHTMLAttribute):
1042         (DOM::HTMLButtonElementImpl::parseHTMLAttribute):
1043         (DOM::HTMLInputElementImpl::parseHTMLAttribute):
1044         (DOM::HTMLLabelElementImpl::parseHTMLAttribute):
1045         (DOM::HTMLSelectElementImpl::parseHTMLAttribute):
1046         (DOM::HTMLTextAreaElementImpl::parseHTMLAttribute):
1047         * khtml/html/html_imageimpl.cpp:
1048         (HTMLImageElementImpl::parseHTMLAttribute):
1049         * khtml/html/html_objectimpl.cpp:
1050         (HTMLObjectElementImpl::parseHTMLAttribute):
1051         * khtml/khtml_part.cpp:
1052         (KHTMLPart::createHTMLEventListener):
1053         * khtml/khtml_part.h:
1054         * khtml/xml/dom_docimpl.cpp:
1055         (DocumentImpl::createHTMLEventListener):
1056         * khtml/xml/dom_docimpl.h:
1057
1058 === Safari-401 ===
1059
1060 2005-03-01  Chris Blumenberg  <cblu@apple.com>
1061
1062         Backed out my patch since the tree was closed.
1063
1064         * khtml/editing/htmlediting.cpp:
1065         (khtml::DeleteSelectionCommand::initializePositionData):
1066         * khtml/editing/jsediting.cpp:
1067
1068 2005-03-01  Chris Blumenberg  <cblu@apple.com>
1069
1070         Fixed: <rdar://problem/4030669> smart delete does not delete spaces from pasted content
1071
1072         Reviewed by rjw.
1073
1074         * khtml/editing/htmlediting.cpp:
1075         (khtml::DeleteSelectionCommand::initializePositionData): pass true for treatNBSPAsWhiteSpace to leadingWhitespacePosition and trailingWhitespacePosition when testing whether or not we have to delete those characters as well.
1076         * khtml/editing/jsediting.cpp: pass true for smartDelete when the selection granularity is WORD. This allows us to write smart delete layout tests.
1077         * layout-tests/editing/deleting/smart-delete-001-expected.txt: Added.
1078         * layout-tests/editing/deleting/smart-delete-001.html: Added.
1079         * layout-tests/editing/deleting/smart-delete-002-expected.txt: Added.
1080         * layout-tests/editing/deleting/smart-delete-002.html: Added.
1081
1082 2005-03-01  Ken Kocienda  <kocienda@apple.com>
1083
1084         Reviewed by Vicki
1085
1086         Fix for this bug:
1087         
1088         <rdar://problem/4030068> Trailing <return> gets eaten when pasted at the end of a document
1089
1090         * khtml/editing/htmlediting.cpp:
1091         (khtml::ReplaceSelectionCommand::doApply): Add code to handle formerly-unhandled end-of-document case.
1092
1093 2005-03-01  David Harrison  <harrison@apple.com>
1094
1095         Reviewed by Chris.
1096
1097         <rdar://problem/3915560> Mail would like an SPI to enable "smart" text paste/drop
1098
1099         * kwq/WebCoreBridge.h:
1100         * kwq/WebCoreBridge.mm:
1101         (-[WebCoreBridge smartDeleteRangeForProposedRange:]):
1102         (-[WebCoreBridge smartInsertForString:replacingRange:beforeString:afterString:]):
1103         New.
1104
1105 2005-03-01  Chris Blumenberg  <cblu@apple.com>
1106
1107         Fixed: <rdar://problem/4030404> selection granularity should be set when extending selection via JS
1108
1109         Reviewed by kocienda.
1110
1111         * khtml/ecma/kjs_window.cpp:
1112         (SelectionFunc::tryCall): set the granularity on the part. This will allow us to write smart paste layout tests.
1113         * layout-tests/editing/pasteboard/smart-paste-001-expected.txt: Added.
1114         * layout-tests/editing/pasteboard/smart-paste-001.html: Added.
1115         * layout-tests/editing/pasteboard/smart-paste-002-expected.txt: Added.
1116         * layout-tests/editing/pasteboard/smart-paste-002.html: Added.
1117         * layout-tests/editing/pasteboard/smart-paste-003-expected.txt: Added.
1118         * layout-tests/editing/pasteboard/smart-paste-003.html: Added.
1119         * layout-tests/editing/pasteboard/smart-paste-004-expected.txt: Added.
1120         * layout-tests/editing/pasteboard/smart-paste-004.html: Added.
1121         * layout-tests/editing/pasteboard/smart-paste-005-expected.txt: Added.
1122         * layout-tests/editing/pasteboard/smart-paste-005.html: Added.
1123         * layout-tests/editing/pasteboard/smart-paste-006-expected.txt: Added.
1124         * layout-tests/editing/pasteboard/smart-paste-006.html: Added.
1125         * layout-tests/editing/pasteboard/smart-paste-007-expected.txt: Added.
1126         * layout-tests/editing/pasteboard/smart-paste-007.html: Added.
1127
1128 2005-03-01  Chris Blumenberg  <cblu@apple.com>
1129
1130         Fixed: <rdar://problem/4029934> smart paste with plain text can add too many spaces
1131
1132         Reviewed by kocienda.
1133
1134         * khtml/editing/htmlediting.cpp:
1135         (khtml::ReplaceSelectionCommand::doApply): pass true for treatNBSPAsWhitespace to leadingWhitespacePosition and trailingWhitespacePosition
1136         * khtml/xml/dom_position.cpp:
1137         (DOM::isWS): take treatNBSPAsWhitespace param
1138         (DOM::Position::leadingWhitespacePosition): ditto
1139         (DOM::Position::trailingWhitespacePosition): ditto
1140         * khtml/xml/dom_position.h:
1141
1142 2005-03-01  Ken Kocienda  <kocienda@apple.com>
1143
1144         Reviewed by John
1145
1146         Fix for this bug:
1147         
1148         <rdar://problem/3996605> Insert paragraph command puts new block in wrong place, creating difficult-to-handle HTML
1149
1150         * khtml/editing/htmlediting.cpp:
1151         (khtml::InsertParagraphSeparatorCommand::doApply): Look for the upstream-most block to insert after
1152         when at the visible end of a block. This helps to avoid some undesirable sequences of markup which
1153         Dave says will be vary hard to render. Changing the command in this way avoids the "limitations"
1154         of the render tree by not asking it to render markup we do not want to make anyway.
1155         
1156         All these tests change, but either in insignificant ways, or for the better.
1157         
1158         * layout-tests/editing/deleting/delete-3959464-fix-expected.txt:
1159         * layout-tests/editing/inserting/insert-div-001-expected.txt:
1160         * layout-tests/editing/inserting/insert-div-002-expected.txt:
1161         * layout-tests/editing/inserting/insert-div-004-expected.txt:
1162         * layout-tests/editing/inserting/insert-div-005-expected.txt:
1163         * layout-tests/editing/inserting/insert-div-009-expected.txt:
1164         * layout-tests/editing/inserting/insert-div-024-expected.txt:
1165         * layout-tests/editing/pasteboard/paste-text-011-expected.txt:
1166         * layout-tests/editing/pasteboard/paste-text-013-expected.txt:
1167         * layout-tests/editing/pasteboard/paste-text-015-expected.txt:
1168         * layout-tests/editing/style/block-style-004-expected.txt:
1169         * layout-tests/editing/style/block-style-005-expected.txt:
1170         * layout-tests/editing/style/block-style-006-expected.txt:
1171         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt:
1172         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt:
1173         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt:
1174         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt:
1175
1176         New test to check specific problem mentioned in the bug.
1177
1178         * layout-tests/editing/inserting/insert-div-026-expected.txt: Added.
1179         * layout-tests/editing/inserting/insert-div-026.html: Added.
1180
1181 2005-02-28  Maciej Stachowiak  <mjs@apple.com>
1182
1183         Reviewed by Darin.
1184
1185         <rdar://problem/4002864> REGRESSION(125-146) getElementById in onload fails in a test case involving external resources
1186         
1187         Moved management of elementById hashtable from attach/detach to
1188         insertedIntoDocument/removedFromDocument, to avoid being thrown
1189         off by temporary detaches due to style recalcs.
1190         
1191         * khtml/xml/dom_elementimpl.cpp:
1192         (ElementImpl::insertedIntoDocument):
1193         (ElementImpl::removedFromDocument):
1194         (ElementImpl::attach):
1195         (ElementImpl::updateId):
1196         * khtml/xml/dom_elementimpl.h:
1197
1198         Make sure that insertedIntoDocument is called before firing any
1199         DOM events.
1200         
1201         * khtml/xml/dom_nodeimpl.cpp:
1202         (NodeBaseImpl::dispatchChildInsertedEvents): 
1203
1204 2005-02-28  David Hyatt  <hyatt@apple.com>
1205
1206         Fix for 4028999, safari crashes when resetting if mallocsribble is on.  Clip rects were being cleared using dead
1207         render objects.  Change the ordering.
1208         
1209         Reviewed by rjw
1210
1211         * khtml/rendering/render_box.cpp:
1212         (RenderBox::detach):
1213         * khtml/rendering/render_layer.cpp:
1214         (RenderLayer::~RenderLayer):
1215
1216 2005-02-28  Chris Blumenberg  <cblu@apple.com>
1217
1218         Fixed: <rdar://problem/4024786> REGRESSION (Mail): "Smart paste" plain-text word into Blot leaves insertion point misplaced
1219
1220         Reviewed by kocienda.
1221
1222         * khtml/editing/htmlediting.cpp:
1223         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Call updateLayout so caretMinOffset and caretMaxOffset return correct values.
1224
1225 2005-02-28  John Sullivan  <sullivan@apple.com>
1226
1227         Reviewed by Ken.
1228         
1229         - WebCore part of fix for <rdar://problem/4023490> REGRESSION (125-185): Tabbing through links 
1230         on frameset page gets stuck at end (tivofaq.com)
1231
1232         * kwq/WebCoreBridge.h:
1233         add nextValidKeyViewOutsideWebFrameViews (code is in WebKit)
1234
1235 2005-02-28  Ken Kocienda  <kocienda@apple.com>
1236
1237         Reviewed by John
1238
1239         Fix for this bug:
1240         
1241         <rdar://problem/3972665> 8A360: HTML message partially truncated on left hand side, text-indent from Script Editor
1242
1243         * khtml/css/css_computedstyle.cpp: inheritableProperties array now defined in css_valueimpl.cpp.
1244         * khtml/css/css_valueimpl.cpp: Define inheritableProperties array here.
1245         (DOM::CSSMutableStyleDeclarationImpl::copyBlockProperties): Use new name for blockProperties, and use the new
1246         constant for the number of items in the array.
1247         (DOM::CSSMutableStyleDeclarationImpl::removeBlockProperties): Ditto.
1248         (DOM::CSSMutableStyleDeclarationImpl::removeInheritableProperties): New function.
1249         * khtml/css/css_valueimpl.h: Declare inheritableProperties array and numInheritableProperties extern so they
1250         can be defined in css_valueimpl.cpp and used in css_computedstyle.cpp.
1251         * khtml/editing/htmlediting.cpp:
1252         (khtml::ReplacementFragment::removeStyleNodes): This code was misguided, and removed too much style from HTML
1253         elements. Now, it removes from HTML elements only the styles that we replace later with a call to applyStyle().
1254         Also, add ID_B to list of inline "style" nodes we are willing to remove. Leaving it off was an oversight.
1255
1256         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: ID_B fix made this result change, without any
1257         visible change in the test.
1258         
1259         New test:
1260         
1261         * layout-tests/editing/style/smoosh-styles-003.html
1262         * layout-tests/editing/style/smoosh-styles-003-expected.txt
1263
1264 2005-02-28  Richard Williamson   <rjw@apple.com>
1265
1266         Fixed <rdar://problem/4026985> CrashTracer: ...14 crashes at com.apple.WebCore: -[KWQPageState invalidate] + 32
1267
1268         Added more nil checking and ASSERTS.
1269         Without a reproducible case this is hard to definitively resolve.
1270
1271         Reviewed by John Sullivan.
1272
1273         * kwq/KWQPageState.mm:
1274         (-[KWQPageState invalidate]):
1275
1276 2005-02-28  Richard Williamson   <rjw@apple.com>
1277
1278         Fixed <rdar://problem/4027702> 3.5% performance regression btwn Safari-188 and Safari-400
1279
1280         I inadvertently checked in some debugging code that disabled
1281         style sharing.  Backed out that change.
1282
1283         * khtml/css/cssstyleselector.cpp:
1284         (khtml::CSSStyleSelector::styleForElement):
1285
1286 2005-02-28  Chris Blumenberg  <cblu@apple.com>
1287
1288         Fixed: <rdar://problem/4026639> www.bmw.ca configurator does not work with Safari
1289
1290         Reviewed by john.
1291
1292         * khtml/ecma/kjs_html.cpp:
1293         (KJS::HTMLElement::tryGet): when frameset.<name of frame child> is called, return the window object of the frame child
1294
1295 2005-02-28  Ken Kocienda  <kocienda@apple.com>
1296
1297         Reviewed by Chris
1298
1299         Fix for this bug:
1300         
1301         <rdar://problem/4026906> Paste of HTML table content can break table structure
1302
1303         * khtml/editing/htmlediting.cpp:
1304         (khtml::ReplacementFragment::pruneEmptyNodes): Call new isProbablyTableStructureNode() function to prevent
1305         removal of empty table structure nodes.
1306         (khtml::ReplacementFragment::removeUnrenderedNodesUsingTestRendering): Ditto.
1307         (khtml::isProbablyTableStructureNode): New helper function.
1308         * khtml/editing/htmlediting.h: Declare new helper.
1309
1310 2005-02-28  Chris Blumenberg  <cblu@apple.com>
1311
1312         Fixed: <rdar://problem/4023566> Stickies: Crash in ReplacementFragment::insertFragmentForTestRendering on paste
1313
1314         Reviewed by kocienda.
1315
1316         * khtml/editing/htmlediting.cpp:
1317         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): ref and deref the element while it is "floating"
1318         (khtml::ReplacementFragment::insertFragmentForTestRendering): ditto
1319         (khtml::floatRefdElement): new, keeps an element alive while its ref count is 0
1320         (khtml::createDefaultParagraphElement): removed commented out code
1321         (khtml::createBlockPlaceholderElement): ref the element and return it as "floating"
1322         (khtml::createFontElement): ditto
1323         (khtml::createStyleSpanElement): ditto
1324         * khtml/editing/htmlediting.h:
1325
1326 2005-02-27  Maciej Stachowiak  <mjs@apple.com>
1327
1328         Reviewed by Vicki.
1329
1330         <rdar://problem/3993557> REGRESSION (125-180-ish): getElementsByTagName no longer works with namespace designations
1331         
1332         * khtml/xml/dom_nodeimpl.cpp:
1333         (NodeBaseImpl::getElementsByTagNameNS): When no namespace is specified, find elements
1334         of the specified name in any namespace to match Mozilla and earlier Safari behavior.
1335
1336 2005-02-25  Darin Adler  <darin@apple.com>
1337
1338         Reviewed by Adele.
1339
1340         - fixed <rdar://problem/4025618> Crash while searching at hollywoodvideo.com
1341
1342         * khtml/html/html_formimpl.h: Added valueWithDefault.
1343         * khtml/html/html_formimpl.cpp:
1344         (DOM::HTMLInputElementImpl::appendFormData): Call valueWithDefault instead of going at the render object
1345         to try to get the default value; there may be no render object if this is display:none.
1346         (DOM::HTMLInputElementImpl::valueWithDefault): Added. Knows about the defaults for "submit" and "reset"
1347         buttons; otherwise just returns the value as-is.
1348
1349         * khtml/rendering/render_form.h: Removed the defaultLabel member functions.
1350         * khtml/rendering/render_form.cpp:
1351         (RenderSubmitButton::rawText): Call valueWithDefault instead of using defaultLabel function here on
1352         the render side. The DOM needs to know how to deal with the default anyway for form submission.
1353         (RenderSubmitButton::defaultLabel): Removed.
1354         (RenderResetButton::defaultLabel): Removed.
1355         (RenderPushButton::defaultLabel): Removed.
1356
1357 2005-02-25  Darin Adler  <darin@apple.com>
1358
1359         Reviewed by John.
1360
1361         - fixed <rdar://problem/4025088> window onblur and onfocus don't fire when text field has focus
1362
1363         * kwq/KWQKHTMLPart.h: Added setWindowHasFocus function and m_windowHasFocus data member.
1364         * kwq/KWQKHTMLPart.mm:
1365         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Took out the code that sends the focus and blur events.
1366         (KWQKHTMLPart::setWindowHasFocus): Put that code here instead.
1367
1368         * kwq/WebCoreBridge.h: Added setWindowHasFocus: method to the bridge.
1369         * kwq/WebCoreBridge.mm: (-[WebCoreBridge setWindowHasFocus:]): Added. Calls method on the part.
1370
1371 2005-02-25  Darin Adler  <darin@apple.com>
1372
1373         Reviewed by John.
1374
1375         - re-fixed <rdar://problem/3665430> horizontal scroll bar of text area does not show, even when text is wide in "no wrap" mode
1376
1377         * kwq/KWQTextArea.mm: (-[KWQTextArea _updateTextViewWidth]): Don't change the text view width
1378         to match the text area's width in the "wrap" case.
1379
1380 2005-02-25  Ken Kocienda  <kocienda@apple.com>
1381
1382         Reviewed by Hyatt
1383
1384         Fix for this bug:
1385         
1386         <rdar://problem/4021518> 8A394 Mail crashes during paste: khtml::RootInlineBox::closestLeafChildForXPos
1387
1388         * khtml/editing/visible_units.cpp:
1389         (khtml::previousLinePosition): Adding an updateLayout call at the start of the function fixes the crash, since
1390         we caught line boxes in a not-completely-updated state.
1391         (khtml::nextLinePosition): Ditto.
1392
1393 2005-02-25  David Hyatt  <hyatt@apple.com>
1394
1395         Fix for 4010774, make sure to avoid an O(N^2) algorithm in nextRenderer() that is triggered when large
1396         DOM subtrees are inserted into documents via one insert/append call.
1397         
1398         Reviewed by kocienda
1399
1400         * khtml/xml/dom_nodeimpl.cpp:
1401         (NodeImpl::nextRenderer):
1402
1403 2005-02-25  Richard Williamson   <rjw@apple.com>
1404
1405         Fixed <rdar://problem/3382926> Bidi neutrals at RTL/LTR boundaries not handled correctly.
1406
1407         Second pass at fixing 3382926 w/o causing layout regressions.  Same concept:
1408         if directionality of text's element is RTL and first character has neutral directionality
1409         then set the initial directionality to RTL.
1410
1411         Reviewed by Hyatt.
1412
1413         * khtml/rendering/bidi.cpp:
1414         (khtml::RenderBlock::bidiReorderLine):
1415         (khtml::RenderBlock::determineStartPosition):
1416
1417 === Safari-400 ===
1418
1419 2005-02-25  Ken Kocienda  <kocienda@apple.com>
1420
1421         Reviewed by me
1422
1423         Roll out Chris' change to fix this bug:
1424         
1425         <rdar://problem/4023566> Stickies: Crash in ReplacementFragment::insertFragmentForTestRendering on paste
1426         
1427         That code change is responsible for all these new crashers:
1428         
1429         <rdar://problem/4025177> crash copying safari.apple.com into Blot document
1430         <rdar://problem/4025184> crash in DOM::NodeImpl::parentNode copying "New!" from google.com to Blot
1431         <rdar://problem/4025214> crash in DOM::NodeImpl::getRect loading paste-match-style-001.html
1432
1433         Since we wish to close the tree for a build right now, I am rolling out rather than investigating.
1434
1435         * khtml/editing/htmlediting.cpp:
1436         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded)
1437         (khtml::ReplacementFragment::insertFragmentForTestRendering)
1438         (khtml::createDefaultParagraphElement)
1439         (khtml::createBlockPlaceholderElement)
1440         (khtml::createFontElement)
1441         (khtml::createStyleSpanElement)
1442         * khtml/editing/htmlediting.h
1443
1444 2005-02-25  Ken Kocienda  <kocienda@apple.com>
1445
1446         Reviewed by John
1447
1448         Fix for this bug:
1449         
1450         <rdar://problem/4020108> Pasting text into message makes Mail crash reproducibly
1451
1452         Note that, even with this fix, development build will crash until this bug is fixed:
1453         <rdar://problem/4024996> Applying block styles can cause assertion failure in inline style removal
1454         
1455         This will not crash deployment builds, so I am going to land.
1456
1457         * khtml/editing/htmlediting.cpp:
1458         (khtml::ApplyStyleCommand::applyBlockStyle): Applying block styles can make the loop to reach beyondEnd
1459         fail since the structure of the document can change. Cache the next node first before operating on it,
1460         as we do elsewhere.
1461
1462 2005-02-25  Vicki Murley <vicki@apple.com>
1463
1464         - recommit this change, since rolling it out did NOT fix the performance regression!
1465
1466     2005-02-23  Darin Adler  <darin@apple.com>
1467
1468         Reviewed by John.
1469
1470         - fixed <rdar://problem/4011405> REGRESSION (180-181): Unconfirmed text disappears when text focus moves
1471
1472         The key was to change things around so that we don't push text from the DOM to the widget
1473         unless the DOM has actually been changed. This prevents the code path that wipes out inline input
1474         during the blur process.
1475
1476         * khtml/html/html_formimpl.cpp:
1477         (DOM::HTMLInputElementImpl::HTMLInputElementImpl): Start m_valueMatchesRenderer as false.
1478         (DOM::HTMLInputElementImpl::parseHTMLAttribute): Set m_valueMatchesRenderer to false when a
1479         new value is set here.
1480         (DOM::HTMLInputElementImpl::setValue): Set m_valueMatchesRenderer to false when a new value
1481         is set here.
1482         (DOM::HTMLInputElementImpl::setValueFromRenderer): Added. Sets m_value, sets m_valueMatchesRenderer
1483         to true, and also sends out the input event. It's better to have this here than in the renderer code.
1484         (DOM::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl): Start m_valueIsValid as false (replaces
1485         m_dirtyvalue) and m_valueMatchesRenderer as false.
1486         (DOM::HTMLTextAreaElementImpl::updateValue): Added. Factored this out from the value function. Uses
1487         the new booleans and keeps them up to date, specifically setting m_valueMatchesRenderer based on
1488         where the value came from.
1489         (DOM::HTMLTextAreaElementImpl::value): Updated to call updateValue to do most of the work.
1490         (DOM::HTMLTextAreaElementImpl::setValue): Set both m_valueIsValid and m_valueMatchesRenderer.
1491         (DOM::HTMLTextAreaElementImpl::setDefaultValue): Take parameter by reference.
1492
1493         * khtml/html/html_formimpl.h: Added setValueFromRenderer, valueMatchesRenderer, setValueMatchesRenderer,
1494         and m_valueMatchesRenderer to input element. For textarea element, made some parameters pass DOMString
1495         by reference, and added invalidateValue, updateValue, valueMatchesRenderer, and setValueMatchesRenderer.
1496
1497         * khtml/rendering/render_form.cpp:
1498         (RenderLineEdit::updateFromElement): Don't re-get the value from the DOM if valueMatchesRenderer
1499         is true.
1500         (RenderLineEdit::slotTextChanged): Call setValueFromRenderer instead of manipulating the DOM
1501         directly.
1502         (RenderTextArea::detach): Call updateValue instead of calling value for its side effect.
1503         (RenderTextArea::handleFocusOut): Ditto.
1504         (RenderTextArea::updateFromElement): Call updateValue and then not re-get the value from the
1505         DOM if valueMatchesRenderer is true.
1506         (RenderTextArea::slotTextChanged): Call invalidateValue instead of directly setting m_dirtyvalue to true.
1507
1508 2005-02-25  Chris Blumenberg  <cblu@apple.com>
1509
1510         Fixed: <rdar://problem/4023566> Stickies: Crash in ReplacementFragment::insertFragmentForTestRendering on paste
1511
1512         Reviewed by darin.
1513
1514         * khtml/editing/htmlediting.cpp:
1515         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded):
1516         (khtml::ReplacementFragment::insertFragmentForTestRendering):
1517         (khtml::floatRefdElement):
1518         (khtml::createDefaultParagraphElement):
1519         (khtml::createBlockPlaceholderElement):
1520         (khtml::createFontElement):
1521         (khtml::createStyleSpanElement):
1522         * khtml/editing/htmlediting.h:
1523
1524 2005-02-25  Darin Adler  <darin@apple.com>
1525
1526         * kwq/character-sets.txt: Checked in updated file. This new file has no effect, because none of the
1527         changes affect character sets that we support, but it's good to have the latest file in here, and
1528         completely safe because I checked that the generated files have not changed.
1529
1530 2005-02-25  Vicki Murley <vicki@apple.com>
1531
1532         Reviewed by Darin.
1533  
1534         - back out this change, since it causes a 3.5% performance regression
1535
1536     2005-02-23  Darin Adler  <darin@apple.com>
1537
1538         Reviewed by John.
1539
1540         - fixed <rdar://problem/4011405> REGRESSION (180-181): Unconfirmed text disappears when text focus moves
1541
1542         The key was to change things around so that we don't push text from the DOM to the widget
1543         unless the DOM has actually been changed. This prevents the code path that wipes out inline input
1544         during the blur process.
1545
1546         * khtml/html/html_formimpl.cpp:
1547         (DOM::HTMLInputElementImpl::HTMLInputElementImpl): Start m_valueMatchesRenderer as false.
1548         (DOM::HTMLInputElementImpl::parseHTMLAttribute): Set m_valueMatchesRenderer to false when a
1549         new value is set here.
1550         (DOM::HTMLInputElementImpl::setValue): Set m_valueMatchesRenderer to false when a new value
1551         is set here.
1552         (DOM::HTMLInputElementImpl::setValueFromRenderer): Added. Sets m_value, sets m_valueMatchesRenderer
1553         to true, and also sends out the input event. It's better to have this here than in the renderer code.
1554         (DOM::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl): Start m_valueIsValid as false (replaces
1555         m_dirtyvalue) and m_valueMatchesRenderer as false.
1556         (DOM::HTMLTextAreaElementImpl::updateValue): Added. Factored this out from the value function. Uses
1557         the new booleans and keeps them up to date, specifically setting m_valueMatchesRenderer based on
1558         where the value came from.
1559         (DOM::HTMLTextAreaElementImpl::value): Updated to call updateValue to do most of the work.
1560         (DOM::HTMLTextAreaElementImpl::setValue): Set both m_valueIsValid and m_valueMatchesRenderer.
1561         (DOM::HTMLTextAreaElementImpl::setDefaultValue): Take parameter by reference.
1562
1563         * khtml/html/html_formimpl.h: Added setValueFromRenderer, valueMatchesRenderer, setValueMatchesRenderer,
1564         and m_valueMatchesRenderer to input element. For textarea element, made some parameters pass DOMString
1565         by reference, and added invalidateValue, updateValue, valueMatchesRenderer, and setValueMatchesRenderer.
1566
1567         * khtml/rendering/render_form.cpp:
1568         (RenderLineEdit::updateFromElement): Don't re-get the value from the DOM if valueMatchesRenderer
1569         is true.
1570         (RenderLineEdit::slotTextChanged): Call setValueFromRenderer instead of manipulating the DOM
1571         directly.
1572         (RenderTextArea::detach): Call updateValue instead of calling value for its side effect.
1573         (RenderTextArea::handleFocusOut): Ditto.
1574         (RenderTextArea::updateFromElement): Call updateValue and then not re-get the value from the
1575         DOM if valueMatchesRenderer is true.
1576         (RenderTextArea::slotTextChanged): Call invalidateValue instead of directly setting m_dirtyvalue to true.
1577
1578 2005-02-25  Darin Adler  <darin@apple.com>
1579
1580         Reviewed by Chris.
1581
1582         - fixed <rdar://problem/4024786> REGRESSION (Mail): "Smart paste" plain-text word into Blot leaves insertion point misplaced
1583
1584         * khtml/editing/htmlediting.cpp: (khtml::ReplaceSelectionCommand::doApply):
1585         Use the insertNodeAfterAndUpdateNodesInserted and insertNodeBeforeAndUpdateNodesInserted
1586         functions to add the leading and trailing spaces for smart paste.
1587
1588 2005-02-25  David Hyatt  <hyatt@apple.com>
1589
1590         Back out fix for 3382926, since it breaks LTR text inside RTL contexts.
1591         
1592         Reviewed by john
1593
1594         * khtml/rendering/bidi.cpp:
1595         (khtml::BidiIterator::direction):
1596
1597 2005-02-25  David Hyatt  <hyatt@apple.com>
1598
1599         Fix for 3975039, scrolling is slow in huge RSS views.  Optimize the calculation of clip rects for overflow:hidden
1600         layers.  Also optimize layer movement when scrolling overflow sections.
1601         
1602         Reviewed by darin
1603
1604         * khtml/rendering/render_layer.cpp:
1605         (throw):
1606         (ClipRects::operator delete):
1607         (ClipRects::detach):
1608         (RenderLayer::RenderLayer):
1609         (RenderLayer::~RenderLayer):
1610         (RenderLayer::updateLayerPosition):
1611         (RenderLayer::removeOnlyThisLayer):
1612         (RenderLayer::insertOnlyThisLayer):
1613         (RenderLayer::scrollToOffset):
1614         (RenderLayer::hitTest):
1615         (RenderLayer::calculateClipRects):
1616         (RenderLayer::calculateRects):
1617         (RenderLayer::containsPoint):
1618         (RenderLayer::clearClipRects):
1619         (RenderLayer::clearClipRect):
1620         * khtml/rendering/render_layer.h:
1621         (khtml::ClipRects::m_refCnt):
1622         (khtml::ClipRects::overflowClipRect):
1623         (khtml::ClipRects::fixedClipRect):
1624         (khtml::ClipRects::posClipRect):
1625         (khtml::ClipRects::ref):
1626         (khtml::ClipRects::deref):
1627         (khtml::RenderLayer::clipRects):
1628         * khtml/rendering/render_object.cpp:
1629         (RenderObject::setStyle):
1630
1631 2005-02-24  Maciej Stachowiak  <mjs@apple.com>
1632
1633         Reviewed by Darin and Dave a while ago.
1634
1635         <rdar://problem/3996685> REGRESSION: Crash in KWQVectorImpl::at loading http://maps.google.com/mapfiles/homepanel.xsl
1636         
1637         * kwq/WebCoreBridge.mm:
1638         (formElementFromDOMElement): Check for isHTMLElement() as well as
1639         id() == ID_FORM. This seems like an impossible situation, but
1640         papering over it seems more expedient for the time being.
1641
1642 2005-02-24  Richard Williamson   <rjw@apple.com>
1643
1644         Fixed <rdar://problem/3382926> Bidi neutrals at RTL/LTR boundaries not handled correctly.
1645
1646         Use mirror characters correctly when rendering with RTL directionality.
1647
1648         Reviewed by Hyatt.
1649
1650         * khtml/rendering/bidi.cpp:
1651         (khtml::BidiIterator::direction):
1652
1653 2005-02-24  Richard Williamson   <rjw@apple.com>
1654
1655         Fixed <rdar://problem/3985889> REGRESSION (125-180): setting <img> src to GIF that already animated does not animate; just shows final frame
1656         
1657         Reviewed by Hyatt.
1658
1659         * WebCore.pbproj/project.pbxproj:
1660         * khtml/html/html_imageimpl.cpp:
1661         (HTMLImageLoader::updateFromElement):
1662         * khtml/rendering/render_image.cpp:
1663         (RenderImage::resetAnimation):
1664         * khtml/rendering/render_image.h:
1665         * khtml/rendering/render_list.cpp:
1666         (RenderListMarker::setStyle):
1667         (RenderListMarker::paint):
1668         * khtml/rendering/render_list.h:
1669         * kwq/KWQPixmap.h:
1670         * kwq/KWQPixmap.mm:
1671         (QPixmap::QPixmap):
1672         (QPixmap::resetAnimation):
1673         * kwq/WebCoreImageRenderer.h:
1674
1675 2005-02-24  Chris Blumenberg  <cblu@apple.com>
1676
1677         Fixed: <rdar://problem/4020110> Safari crashes in setAllData while taking a www.zoomerang.com survey
1678
1679         Reviewed by rjw.
1680
1681         * kwq/KWQResourceLoader.mm:
1682         (-[KWQResourceLoader finishJobAndHandle:]): clear the job after we've deleted to avoid reentrancy
1683
1684 2005-02-24  Darin Adler  <darin@apple.com>
1685
1686         Reviewed by Vicki.
1687
1688         - fixed <rdar://problem/4023360> REGRESSION (186-187): image file upload is broken at pep.apple.com
1689
1690         * khtml/html/html_formimpl.cpp: (DOM::HTMLInputElementImpl::appendFormData): Return true after
1691         setting up the form data for an uploaded file. The old code would fall through to the ISINDEX
1692         case and send double form data (the filename instead of the file contents the second time).
1693
1694 2005-02-24  David Harrison  <harrison@apple.com>
1695
1696         Reviewed by Ken.
1697         
1698         <rdar://problem/3990849> AX: textMarkerRange for an AXUIElement within an AXWebArea
1699
1700         * kwq/KWQAccObject.mm:
1701         (-[KWQAccObject textMarkerRange]):
1702         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
1703         (-[KWQAccObject doAXTextMarkerRangeForUIElement:]):
1704         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
1705         Added AXTextMarkerRangeForUIElement, or you can send textMarkerRange to the UIElement itself.
1706
1707 2005-02-24  David Harrison  <harrison@apple.com>
1708
1709         Reviewed by Vicki.
1710
1711         <rdar://problem/4004279> 3 AXSelectedTextChanged notifications are firing each time I type a character
1712
1713         * khtml/xml/dom_docimpl.cpp:
1714         (DocumentImpl::updateSelection):
1715         Send notification only if the selection is not null.  This safely ignores transitory selections set during editing.
1716
1717 2005-02-24  Darin Adler  <darin@apple.com>
1718
1719         Reviewed by John.
1720
1721         - fixed <rdar://problem/3987619> in some cases, text doesn't resize with Format->Style->Bigger/Smaller
1722
1723         * khtml/editing/htmlediting.cpp:
1724         (khtml::ApplyStyleCommand::applyRelativeFontStyleChange): Only call nodeFullySelected for non-text nodes.
1725         Text nodes are already split so they're either in the range and full selected or out of the range.
1726         And nodeFullySelected doesn't work for text nodes.
1727         (khtml::ApplyStyleCommand::nodeFullySelected): Add an assertion, since this function only works for elements,
1728         not text nodes.
1729         (khtml::ApplyStyleCommand::nodeFullyUnselected): Ditto.
1730
1731         - make big improvement in <rdar://problem/3953636> Mail hung for ~10sec changing font of 84328 characters: khtml::ApplyStyleCommand::nodeFullySelected
1732
1733         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::compareBoundaryPoints): Improve algorithm based on suggestion
1734         from Nate Begeman.
1735
1736         - fixed <rdar://problem/4020305> REGRESSION (185-186): loading image in new window using document.write fails
1737
1738         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::open): If there is no parent document, don't blow away the base URL.
1739
1740         - fixed <rdar://problem/4021701> REGRESSION (188-188+): form not submitted after pressing <return> at http://hrweb.apple.com
1741         
1742         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::dispatchMouseEvent): Send activate event in the case where the event
1743         sent is a KHTML_CLICK_EVENT, not CLICK_EVENT.
1744
1745 2005-02-23  Kevin Decker  <kdecker@apple.com>
1746
1747         Reviewed by mjs  
1748         
1749         Fixed <rdar://problem/4020747> REGRESSION: stray </applet> tags crash Safari
1750
1751         * khtml/html/htmlparser.cpp:
1752         (KHTMLParser::processCloseTag):  Made a typesafe check that prevents crashes
1753         whenever there is a closing applet tag without an actual <applet> in the first place. 
1754         Now verifies the current token is ID_APPLET before casting it to an HTMLAppletElementImpl.
1755          
1756
1757 2005-02-23  Ken Kocienda  <kocienda@apple.com>
1758
1759         Reviewed by John
1760
1761         Fix for this bug:
1762         
1763         <rdar://problem/3977962> font loses bold style after pasting next to existing text and pressing return
1764
1765         * khtml/editing/htmlediting.cpp:
1766         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): Problem here was
1767         that we were doing work in cases where we should not, and content whose style would have
1768         been correct if we had done nothing was getting clobbered. It turns out that extra work
1769         to apply style to the new paragraph added in this command only needs to be done if we're 
1770         at the boundaries of a paragraph. Otherwise, content that is moved as part of the work 
1771         of the command will lend their styles to the new paragraph without any extra work needed.
1772         So, make this position check and return unless at a paragraph boundary.
1773
1774         New test:
1775
1776         * layout-tests/editing/style/block-styles-007-expected.txt
1777         * layout-tests/editing/style/block-styles-007.html
1778
1779 2005-02-23  Ken Kocienda  <kocienda@apple.com>
1780
1781         Reviewed by Hyatt
1782
1783         Fix for this bug:
1784         
1785         <rdar://problem/4017641> REGRESSION (Mail): you can only bold/unbold a selection starting from end of line once
1786
1787         Problem is with the way we figure out whether to add or remove a style based on
1788         the current selection. In this case, the code is looking at the end of the
1789         previous line, which is not bold, and deduces incorrectly that the operation is
1790         a "make bold". Then the style code runs to make bold, but there is nothing on
1791         the end of the previous line to embolden, so we get into a cycle where the same
1792         thing happens each time cmd-b is hit.
1793
1794         * khtml/khtml_part.cpp:
1795         (KHTMLPart::selectionComputedStyle):  Call editingStartPosition() to get the right position for the font determination.
1796         * khtml/xml/dom2_rangeimpl.cpp:
1797         (DOM::RangeImpl::editingStartPosition): New helper function that "does the right thing" based on whether the
1798         selection is a caret or a range, moving upstream for the former, and downstream for the latter.
1799         * khtml/xml/dom2_rangeimpl.h:
1800         * kwq/KWQKHTMLPart.mm:
1801         (KWQKHTMLPart::fontForSelection): Call editingStartPosition() to get the right position for the font determination.
1802
1803         New tests:
1804
1805         * layout-tests/editing/style/style-boundary-001-expected.txt
1806         * layout-tests/editing/style/style-boundary-001.html
1807         * layout-tests/editing/style/style-boundary-002-expected.txt
1808         * layout-tests/editing/style/style-boundary-002.html
1809         * layout-tests/editing/style/style-boundary-003-expected.txt
1810         * layout-tests/editing/style/style-boundary-003.html
1811         * layout-tests/editing/style/style-boundary-004-expected.txt
1812         * layout-tests/editing/style/style-boundary-004.html
1813
1814 2005-02-23  Richard Williamson   <rjw@apple.com>
1815
1816         Fixed <rdar://problem/3985579> 8A367: Dashboard: Stock widget not visible when click remove to remove single char ticker symbol
1817
1818         Explicitly remove scroll bar views when removing them from 
1819         the overflow.
1820
1821         Don't paint synchronously when the scroll position changes,
1822         this caused funky clip problems.
1823
1824         Reviewed by Hyatt.
1825
1826         * khtml/rendering/render_layer.cpp:
1827         (RenderLayer::scrollToOffset):
1828         (RenderLayer::setHasHorizontalScrollbar):
1829         (RenderLayer::setHasVerticalScrollbar):
1830         (RenderLayer::updateScrollInfoAfterLayout):
1831
1832 2005-02-23  Ken Kocienda  <kocienda@apple.com>
1833
1834         Reviewed by Hyatt
1835
1836         Fix for this bug:
1837         
1838         <rdar://problem/3959996> REGRESSION (Mail): cursor moves to beginning of document when click is past end
1839
1840         * khtml/rendering/render_block.cpp:
1841         (khtml::RenderBlock::positionForCoordinates): Skip blocks that are invisible or have no height when 
1842         looking for a child to pass off to. And save away the last visible block with a height to pass off
1843         to if there is no child at the right y-coordinate.
1844
1845 2005-02-23  David Harrison  <harrison@apple.com>
1846
1847         Reviewed by Darin.
1848
1849         <rdar://problem/4010059> BoundsForTextMarkerRange does not update with scrolled web area
1850
1851         * kwq/KWQAccObject.mm:
1852         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
1853         Adjust for scrolling.
1854
1855 2005-02-22  Maciej Stachowiak  <mjs@apple.com>
1856
1857         Reviewed by Ken.
1858
1859         <rdar://problem/3949790> hitting return after pasted styled line results in extra content getting the style
1860         
1861         * khtml/editing/htmlediting.cpp:
1862         (khtml::InsertParagraphSeparatorCommand::doApply): In the case
1863         where the start block is the root, insert the newly created DIV at
1864         the end of the root block instead of after the last sibling in the
1865         start node, since the start node could be inside other
1866         style-affecting nodes and we don't want to reparent its cousins
1867         into that.
1868
1869 2005-02-23  David Harrison  <harrison@apple.com>
1870
1871         Reviewed by Vicki.
1872
1873         <rdar://problem/4014691> switch to correctly spelled NSAccessibilityForegroundColorTextAttribute constant
1874         
1875         Also removed two older, now unneeded, wrappers.
1876
1877         * kwq/KWQAccObject.mm:
1878         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
1879         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
1880         Removed these older, now unneeded, wrappers.
1881         
1882         (NSAccessibilityForegroundColorTextAttributeWrapper):
1883         New wrapper for NSAccessibilityForegroundColorTextAttribute.
1884         
1885         (AXAttributeStringSetStyle):
1886         Use NSAccessibilityForegroundColorTextAttributeWrapper.
1887         
1888         (-[KWQAccObject doAXTextMarkerRangeForUnorderedTextMarkers:]):
1889         Remove uses of visiblePositionForStartOfTextMarkerRange and visiblePositionForEndOfTextMarkerRange.
1890
1891 2005-02-23  David Harrison  <harrison@apple.com>
1892
1893         Reviewed by Vicki.
1894
1895         <rdar://problem/3524784> AX hit test doesn't return info when done in empty space of content area
1896
1897         * kwq/KWQAccObject.mm:
1898         (-[KWQAccObject accessibilityHitTest:]):
1899         Return unignored object.
1900
1901 2005-02-23  Darin Adler  <darin@apple.com>
1902
1903         Reviewed by Ken.
1904
1905         - fixed <rdar://problem/4006509> REGRESSION (171-172): Setting CSS -khtml-user-modify property triggers crash
1906
1907         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::applyProperty):
1908         Removed the code that changes the style of the element. This was never needed, and caused the
1909         style to be modified while we were iterating it.
1910
1911 2005-02-23  Ken Kocienda  <kocienda@apple.com>
1912
1913         Reviewed by John
1914
1915         Fix for this bug:
1916         
1917         <rdar://problem/3980209> Mail crashed when I pressed Cmd-Shift-[ (nil-deref in ApplyStyleCommand::addBlockStyleIfNeeded)
1918
1919         * khtml/editing/htmlediting.cpp:
1920         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): Reordered the new block
1921         insertion so that it come before the move. The logic stays exactly the same, however, with the old
1922         ordering, the new block could want to become a child of itself come insertion time. I considered
1923         making a more complicated code change to fix this problem, but the simple reordering works just
1924         as well, and seems less risky.
1925         
1926         These all changed in an insignificant way. It seems that with the new code, some empty text nodes
1927         got reordered in the document. This has no effect on anything visible to the user.
1928         
1929         * layout-tests/editing/style/create-block-for-style-003-expected.txt
1930         * layout-tests/editing/style/create-block-for-style-004-expected.txt
1931         * layout-tests/editing/style/create-block-for-style-009-expected.txt
1932         * layout-tests/editing/style/create-block-for-style-011-expected.txt
1933         * layout-tests/editing/style/create-block-for-style-013-expected.txt
1934
1935 2005-02-23  Darin Adler  <darin@apple.com>
1936
1937         Reviewed by John.
1938
1939         - fixed <rdar://problem/4013986> REGRESSION (173-174): onclick event not sent when mouse click on checkbox is double-click
1940
1941         We need to send an onclick event *and* an ondblclick event when we process a double click.
1942
1943         * khtml/khtmlview.cpp: (KHTMLView::dispatchMouseEvent): In the case where we're sending a CLICK_EVENT,
1944         follow it by a KHTML_CLICK_EVENT, a KHTML_DBLCLICK_EVENT when handling a double click, and a DOMACTIVATE_EVENT.
1945         We no longer do the DOMACTIVATE_EVENT in dispatchGenericEvent.
1946         * khtml/rendering/render_form.cpp: (RenderFormElement::slotClicked): send only CLICK_EVENT here, and
1947         lets dispatchMouseEvent deal with the other subsequent events.
1948         * khtml/xml/dom_nodeimpl.cpp:
1949         (NodeImpl::dispatchGenericEvent): Remove the code that sends a DOMACTIVATE_EVENT, since there's no longer
1950         a good way to figure out if this is the last event that should be sent before it is.
1951         (NodeImpl::dispatchMouseEvent): Set the meta key modifier here (as it already is set elsewhere), and
1952         follow up a CLICK_EVENT with KHTML_CLICK_EVENT, a KHTML_DBLCLICK_EVENT, and DOMACTIVATE_EVENT as above.
1953
1954 2005-02-23  Darin Adler  <darin@apple.com>
1955
1956         Reviewed by John.
1957
1958         - fixed <rdar://problem/4011405> REGRESSION (180-181): Unconfirmed text disappears when text focus moves
1959
1960         The key was to change things around so that we don't push text from the DOM to the widget
1961         unless the DOM has actually been changed. This prevents the code path that wipes out inline input
1962         during the blur process.
1963
1964         * khtml/html/html_formimpl.cpp:
1965         (DOM::HTMLInputElementImpl::HTMLInputElementImpl): Start m_valueMatchesRenderer as false.
1966         (DOM::HTMLInputElementImpl::parseHTMLAttribute): Set m_valueMatchesRenderer to false when a
1967         new value is set here.
1968         (DOM::HTMLInputElementImpl::setValue): Set m_valueMatchesRenderer to false when a new value
1969         is set here.
1970         (DOM::HTMLInputElementImpl::setValueFromRenderer): Added. Sets m_value, sets m_valueMatchesRenderer
1971         to true, and also sends out the input event. It's better to have this here than in the renderer code.
1972         (DOM::HTMLTextAreaElementImpl::HTMLTextAreaElementImpl): Start m_valueIsValid as false (replaces
1973         m_dirtyvalue) and m_valueMatchesRenderer as false.
1974         (DOM::HTMLTextAreaElementImpl::updateValue): Added. Factored this out from the value function. Uses
1975         the new booleans and keeps them up to date, specifically setting m_valueMatchesRenderer based on
1976         where the value came from.
1977         (DOM::HTMLTextAreaElementImpl::value): Updated to call updateValue to do most of the work.
1978         (DOM::HTMLTextAreaElementImpl::setValue): Set both m_valueIsValid and m_valueMatchesRenderer.
1979         (DOM::HTMLTextAreaElementImpl::setDefaultValue): Take parameter by reference.
1980
1981         * khtml/html/html_formimpl.h: Added setValueFromRenderer, valueMatchesRenderer, setValueMatchesRenderer,
1982         and m_valueMatchesRenderer to input element. For textarea element, made some parameters pass DOMString
1983         by reference, and added invalidateValue, updateValue, valueMatchesRenderer, and setValueMatchesRenderer.
1984
1985         * khtml/rendering/render_form.cpp:
1986         (RenderLineEdit::updateFromElement): Don't re-get the value from the DOM if valueMatchesRenderer
1987         is true.
1988         (RenderLineEdit::slotTextChanged): Call setValueFromRenderer instead of manipulating the DOM
1989         directly.
1990         (RenderTextArea::detach): Call updateValue instead of calling value for its side effect.
1991         (RenderTextArea::handleFocusOut): Ditto.
1992         (RenderTextArea::updateFromElement): Call updateValue and then not re-get the value from the
1993         DOM if valueMatchesRenderer is true.
1994         (RenderTextArea::slotTextChanged): Call invalidateValue instead of directly setting m_dirtyvalue to true.
1995
1996 2005-02-22  Richard Williamson   <rjw@apple.com>
1997
1998         Fixed <rdar://problem/3937203> when a div adds a scrollbar (overflow:auto) we do not get regions
1999
2000         Just set dashboard dirty bit when overflow scrolling changes.
2001
2002         Don't do comparison of regions in before scroll regions are
2003         added, instead do it in WebKit after automatic scroll regions
2004         are added.
2005
2006         Reviewed by Maciej.
2007
2008         * khtml/css/cssparser.cpp:
2009         (CSSParser::parseDashboardRegions):  Cleaned up comments
2010         * khtml/css/cssstyleselector.cpp:
2011         (khtml::CSSStyleSelector::styleForElement): Cleaned up comments
2012
2013         * khtml/khtmlview.cpp:
2014         (KHTMLView::updateDashboardRegions):
2015         * khtml/rendering/render_layer.cpp:
2016         (RenderLayer::updateScrollInfoAfterLayout):
2017         * kwq/WebDashboardRegion.m:
2018         (-[WebDashboardRegion isEqual:]):
2019
2020 2005-02-22  Chris Blumenberg  <cblu@apple.com>
2021
2022         Fixed: <rdar://problem/3976872> Pasted plain text doesn't get the proper style if pasted into newlines
2023
2024         Reviewed by mjs.
2025
2026         * khtml/editing/htmlediting.cpp:
2027         (khtml::ReplaceSelectionCommand::doApply): don't clear the typing style when matching style
2028         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): apply the typing style when matching style
2029         * khtml/editing/jsediting.cpp:
2030         * khtml/khtml_part.cpp:
2031         (KHTMLPart::pasteAndMatchStyle): new
2032         * khtml/khtml_part.h:
2033         * kwq/KWQKHTMLPart.h:
2034         * kwq/KWQKHTMLPart.mm:
2035         (KWQKHTMLPart::issuePasteAndMatchStyleCommand): new
2036         * kwq/WebCoreBridge.h:
2037         * layout-tests/editing/editing.js:
2038
2039 2005-02-22  Darin Adler  <darin@apple.com>
2040
2041         Reviewed by Adele.
2042
2043         - fixed <rdar://problem/4006596> REGRESSION (183-184): crash in DOM::DocumentImpl::setFocusNode(DOM::NodeImpl*)
2044
2045         * khtml/xml/dom_docimpl.cpp:
2046         (widgetForNode): Added helper.
2047         (DocumentImpl::setFocusNode): Re-get the widget for the node after calling updateLayout.
2048         The updateLayout can destroy the old widget, so we can't keep a stale widget pointer around.
2049
2050 2005-02-22  Ken Kocienda  <kocienda@apple.com>
2051
2052         Reviewed by Hyatt
2053
2054         Fix for this bug:
2055         
2056         <rdar://problem/4003463> Mail.app HTML uses inline styling markup not understood by Entourage and Eudora
2057
2058         * khtml/editing/htmlediting.cpp:
2059         (khtml::isEmptyFontTag): Helper for removing <font> tags.
2060         (khtml::StyleChange::styleModeForParseMode): Helper to map a document parse mode to a use/don't use
2061         legacy-html-styles value.
2062         (khtml::StyleChange::checkForLegacyHTMLStyleChange): Add support for colors, font faces, and font sizes.
2063         (khtml::ApplyStyleCommand::isHTMLStyleNode):
2064         (khtml::ApplyStyleCommand::removeHTMLFontStyle):
2065         (khtml::ApplyStyleCommand::applyTextDecorationStyle): Now call styleModeForParseMode to determine
2066         whether to use legacy html styles or not.
2067         (khtml::ApplyStyleCommand::removeInlineStyle): Now properly removes <font> styles.
2068         (khtml::ApplyStyleCommand::addBlockStyleIfNeeded): Ditto.
2069         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): Ditto.
2070         (khtml::createFontElement): Helper for applying <font> elements.
2071         * khtml/editing/htmlediting.h: All the following support the new bits of data we need to store.
2072         (khtml::StyleChange::applyFontColor)
2073         (khtml::StyleChange::applyFontFace)
2074         (khtml::StyleChange::applyFontSize)
2075         (khtml::StyleChange::fontColor)
2076         (khtml::StyleChange::fontFace)
2077         (khtml::StyleChange::fontSize)
2078
2079         Test results updated now that we will write out <font> tags for quirks mode documents.        
2080         
2081         * layout-tests/editing/execCommand/modifyForeColorByCharacter-expected.txt
2082         * layout-tests/editing/style/block-style-004-expected.txt
2083         * layout-tests/editing/editing/pasteboard/paste-text-011-expected.txt
2084         * layout-tests/editing/style/block-style-005-expected.txt
2085         * layout-tests/editing/style/block-style-006-expected.txt
2086         * layout-tests/editing/style/smoosh-styles-001-expected.txt
2087         * layout-tests/editing/style/smoosh-styles-002-expected.txt
2088
2089 2005-02-22  Maciej Stachowiak  <mjs@apple.com>
2090
2091         Reviewed by Kevin.
2092
2093         <rdar://problem/4017066> crash in KJS::ValueImp::dispatchType() every time I load www.nytimes.com/pages/automobiles
2094
2095         When creating option elements, use lowercase "option" instead of
2096         uppercase "OPTION" to create option elements, because only
2097         lowercase works for XHTML.
2098         
2099         * khtml/ecma/kjs_html.cpp:
2100         (KJS::HTMLSelectCollection::tryPut):
2101         (OptionConstructorImp::construct):
2102
2103 2005-02-22  Chris Blumenberg  <cblu@apple.com>
2104
2105         WebCore fix for: <rdar://problem/3918056> Mail not line breaking my <pre> formatted emails on replies
2106         
2107         Mail must 4018993 to fully address the problem.
2108
2109         Reviewed by kocienda.
2110
2111         * khtml/editing/markup.cpp:
2112         (khtml::startMarkup): don't compute style for text in PRE tags
2113         (khtml::createMarkup): include PRE if it is an ancestor of the nodes in the range
2114
2115 2005-02-21  Richard Williamson   <rjw@apple.com>
2116
2117         Fixed <rdar://problem/4008338> REGRESSION (125-178): opacity style not working, breaks fading images on okcupid.com
2118
2119         There was a long standing bug in cssText().  Double value were always cast int!  So,
2120         opacity values values were incorrectly converted to text, i.e. 0.75 became 0.
2121         
2122         The problem was newly triggered because we parse the css for opacity *TWICE*.  This is a result of 
2123         incorrectly "invalidating" the style attribute (from fix for 3790449).  The second parse was from
2124         the cssText() of the style.
2125
2126         Reviewed by Hyatt.
2127
2128         * khtml/css/css_valueimpl.cpp:
2129         (DOM::CSSPrimitiveValueImpl::cssText):
2130
2131 2005-02-21  David Hyatt  <hyatt@apple.com>
2132
2133         Fix for 4017204, apply the same fix to the base class nodeAtPoint that was already applied to RenderBlock.
2134         Skip elements with layers and inline flows.  Demoted <form>s can end up causing trouble otherwise.
2135         
2136         Reviewed by Richard Williamson
2137
2138         * khtml/rendering/render_box.cpp:
2139         (RenderBox::nodeAtPoint):
2140
2141 2005-02-21  David Hyatt  <hyatt@apple.com>
2142
2143         Fix for 4017033, CSS is being parsed twice.  Make sure to always validate the style attribute when it is
2144         initially parsed.  Add code to clean up decls when the style attribute is completely removed.  Add a new
2145         synchronizing boolean that avoids reparsing the style declaration when the attribute is simply
2146         being synced up to the declaration.
2147
2148         Reviewed by John
2149
2150         * khtml/css/css_valueimpl.cpp:
2151         (DOM::CSSMutableStyleDeclarationImpl::setChanged):
2152         * khtml/html/html_elementimpl.cpp:
2153         (HTMLElementImpl::invalidateStyleAttribute):
2154         (HTMLElementImpl::updateStyleAttributeIfNeeded):
2155         (HTMLElementImpl::HTMLElementImpl):
2156         (HTMLElementImpl::~HTMLElementImpl):
2157         (HTMLElementImpl::destroyInlineStyleDecl):
2158         (HTMLElementImpl::mapToEntry):
2159         (HTMLElementImpl::parseHTMLAttribute):
2160         * khtml/html/html_elementimpl.h:
2161         * khtml/xml/dom_elementimpl.cpp:
2162         (ElementImpl::ElementImpl):
2163         (ElementImpl::setAttribute):
2164         * khtml/xml/dom_elementimpl.h:
2165         (DOM::ElementImpl::updateStyleAttributeIfNeeded):
2166
2167 === Safari-188 ===
2168
2169 2005-02-21  Darin Adler  <darin@apple.com>
2170
2171         - fixed Panther deployment build
2172
2173         * kwq/KWQTextEdit.mm: (QTextEdit::setScrollBarModes): Put more stuff inside #if.
2174
2175 2005-02-21  David Harrison  <harrison@apple.com>
2176
2177         Reviewed by Darin.
2178
2179         <rdar://problem/3943090> REGRESSION (Mail): Spelling underline incompletely erased following certain steps
2180
2181         * khtml/rendering/render_text.cpp:
2182         (InlineTextBox::paintMarker):
2183         Make sure underline is placed within the text bounds.
2184         
2185         * kwq/KWQPainter.h:
2186         * kwq/KWQPainter.mm:
2187         (QPainter::misspellingLineThickness):
2188         * kwq/WebCoreTextRenderer.h:
2189         Add misspellingLineThickness for use by InlineTextBox::paintMarker.
2190
2191 2005-02-21  Darin Adler  <darin@apple.com>
2192
2193         Reviewed by John.
2194
2195         - fixed <rdar://problem/4012978> -[DOMRange markupString] crashes when range contains only a text node with a single space
2196
2197         * khtml/editing/markup.cpp: (khtml::createMarkup): Added updateLayout calls, and added a missing
2198         nil check.
2199
2200 2005-02-21  Darin Adler  <darin@apple.com>
2201
2202         Reviewed by John.
2203
2204         - fixed <rdar://problem/4005435> Safari hung while pasting text into a <textarea> (Panther-only)
2205
2206         * kwq/KWQTextEdit.mm: (QTextEdit::setScrollBarModes): Don't setAutohidesScrollers:YES on Panther.
2207
2208 2005-02-21  Ken Kocienda  <kocienda@apple.com>
2209
2210         Reviewed by John
2211
2212         Fix for this bug:
2213         
2214         <rdar://problem/4015499> REGRESSION (186-187): pasted quoted text starting with a blank line increases quote level of pasted text when pasted
2215
2216         * khtml/editing/markup.cpp:
2217         (khtml::markup): Changed over to ASSERT instead of assert.
2218         (khtml::createMarkup): The issue was that the code to add parents all the way back to the common ancestor
2219         block did not check for blocks whose markup had already been added, and could result in adding markup for
2220         nodes twice (hence the additional and erroneous quote level). Now there is a new check that will
2221         only add markup for those nodes before the start of the selection range. This fixes the bug.
2222         (khtml::createFragmentFromMarkup): Changed over to ASSERT instead of assert.
2223         (khtml::createFragmentFromText): Ditto.
2224
2225 2005-02-21  Ken Kocienda  <kocienda@apple.com>
2226
2227         Reviewed by John
2228
2229         Fix for this bug:
2230         
2231         <rdar://problem/4015494> REGRESSION (186-187) <cr> removed if quoted word is copy/pasted on line immediately above quoted text
2232
2233         * khtml/editing/htmlediting.cpp:
2234         (khtml::ReplaceSelectionCommand::doApply): Relatively new check designed to remove a <br> element when
2235         that element was on a line by itself did not do an adequate check for this condition, causing the
2236         failure described in the bug. Fixed.
2237
2238 2005-02-19  Ken Kocienda  <kocienda@apple.com>
2239
2240         Reviewed by Maciej
2241
2242         * khtml/editing/htmlediting.cpp:
2243         (khtml::matchNearestBlockquoteColorString): New function which abstracts away the CSS property we use
2244         for this pseudo-color.
2245         (khtml::ReplacementFragment::removeBlockquoteColorsIfNeeded): Set the new nearestBlockquoteColorString
2246         psuedo-color here, rather than removing colors as was done before.
2247         (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes): Check for the pseudo-color in the desired
2248         style, and determine the real color based on the nearest blockquote (or none) to the node.
2249         (khtml::nearestMailBlockquote): Name change from closestMailBlockquote to match new property better.
2250
2251         All the rest of this change is the mechanical coding you need to do to add a new CSS property, in this
2252         case, -khtml-match-nearest-mail-blockquote-color.
2253
2254         * khtml/css/css_computedstyle.cpp:
2255         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue)
2256         * khtml/css/cssparser.cpp:
2257         (CSSParser::parseValue):
2258         * khtml/css/cssproperties.c:
2259         (hash_prop):
2260         (findProp):
2261         * khtml/css/cssproperties.h:
2262         * khtml/css/cssproperties.in:
2263         * khtml/css/cssstyleselector.cpp:
2264         (khtml::CSSStyleSelector::applyProperty)
2265         * khtml/css/cssvalues.c:
2266         (findValue)
2267         * khtml/css/cssvalues.h:
2268         * khtml/css/cssvalues.in:
2269         * khtml/rendering/render_style.h:
2270         (khtml::RenderStyle::matchNearestMailBlockquoteColor)
2271         (khtml::RenderStyle::setMatchNearestMailBlockquoteColor)
2272         (khtml::RenderStyle::initialMatchNearestMailBlockquoteColor)
2273
2274 2005-02-19  Ken Kocienda  <kocienda@apple.com>
2275
2276         Reviewed by Chris
2277
2278         Fix for these bugs:
2279         
2280         <rdar://problem/4014228> REGRESSION (186-187) extra, uneditable lines inserted above and below a line of pasted quoted text
2281         <rdar://problem/4014393> REGRESSION (186-187) pasted quoted text gets extra <cr>s when pasted at top of document
2282
2283         * khtml/editing/htmlediting.cpp:
2284         (khtml::ReplacementFragment::ReplacementFragment): Part of a general refactoring of how
2285         the fragment is inserted into the document, rendered, and then tested for certain
2286         important pieces of information that are required for pasting.
2287         (khtml::ReplacementFragment::insertFragmentForTestRendering): New helper. Handles inserting
2288         the fragment nodes into the document.
2289         (khtml::ReplacementFragment::restoreTestRenderingNodesToFragment): Removes nodes from the
2290         document, and restores them to the fragment.
2291         (khtml::ReplacementFragment::computeStylesUsingTestRendering): Factored out code that
2292         did this before into its own function.
2293         (khtml::ReplacementFragment::removeUnrenderedNodesUsingTestRendering): Ditto.
2294         (khtml::ReplacementFragment::countRenderedBlocks): This is a real improvement, as it
2295         eliminates a major use of the isProbablyBlock() function. Now, the blocks that are
2296         counted are real, rendered blocks.
2297         (khtml::ReplacementFragment::removeStyleNodes): Made this function retain margin-zeroing
2298         CSS properties on paragraphs. This does two things: 1) It helps us to maintain good behavior
2299         in the short term while there are still versions of Mail out there that use <p> elements
2300         instead of <div> elements for new paragraphs; and 2) It will help to maintain the compatibility
2301         with other mail clients that use <p> elements for their paragraphs but render them themselves
2302         with no margins as the result of quirks.
2303         (khtml::ReplaceSelectionCommand::doApply): Do some work to fix up and improve the handling
2304         of blank lines, be they <p> elements or <br> elements, that can be removed after pasting. This, 
2305         coupled with the refactoring, fixes 4014393.
2306         * khtml/editing/htmlediting.h: Updated for new functions.
2307         * layout-tests/editing/pasteboard/paste-text-010-expected.txt: Updated results, actually improved with this change.
2308         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: Ditto.
2309
2310 2005-02-19  Kevin Decker  <kdecker@apple.com>
2311
2312         Reviewed by Chris.
2313
2314         Fixed <rdar://problem/4010765> Flash player can be used to arbitrarily open popup windows without user permission
2315         
2316         Our window.open() policy is to refuse the <script>window.open(...)</script> case and allow the inline the <a href="javascript:window.open('foo')> case.  Clever advertisers at some point realized that by executing their Javascript through the Flash plugin, Safari would always treat their code as the inline case, and thus, they were able to work around our popup blocker.
2317
2318         * kwq/WebCoreBridge.h:
2319         * kwq/WebCoreBridge.mm:
2320         (-[WebCoreBridge stringByEvaluatingJavaScriptFromString:]): Changed this to invoke the new stringByEvaluatingJavaScriptFromString:forceUserGesture method below.
2321         (-[WebCoreBridge stringByEvaluatingJavaScriptFromString:forceUserGesture:]): Let the WebKit make the determination if this was a user originated gesture or not; we must no longer assume this is always the case.
2322
2323 2005-02-18  Chris Blumenberg  <cblu@apple.com>
2324         
2325         Fixed: <rdar://problem/3951196> REGRESSION (Mail): too many levels of reply quotes after certain steps
2326
2327         Reviewed by kocienda.
2328
2329         * khtml/editing/htmlediting.cpp:
2330         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
2331         - If we find a new start node, update topBlockquote so we don't use too many block quotes for the contents following the new line.
2332         - Build up the list of ancestors after we've determined the actual topBlockquote.
2333         - Don't insert an extra new line if there is a new start node.
2334
2335 2005-02-19  Chris Blumenberg  <cblu@apple.com>
2336
2337         Fixed: <rdar://problem/3978461> smart paste is broken
2338
2339         Reviewed by kevin.
2340
2341         * khtml/editing/htmlediting.cpp:
2342         (khtml::ReplaceSelectionCommand::doApply): properly check for leading and trailing whitespace. These checks were incorrectly reversed. Also check if we're pasting at the beginning or end of a line. We should not insert spaces in either case.
2343
2344 2005-02-18  Adele Amchan  <adele@apple.com>
2345
2346         Reviewed by Darin.
2347
2348         Fix for <rdar://problem/3975568> REGRESSION(125-180)Australian Open pages have drawing problem
2349
2350         This patch fixes two problems caused by our added support for custom tags.  First, the layout problem at the sites mentioned in the bug
2351         was caused by custom tags within tables.  In checkChild, we needed to treat these tags as spans so they get placed correctly in the DOM tree.
2352         Also, we were indexing the tagPriority and endTag arrays with id values from the custom tags that were greater than the size of the array.  So now 
2353         we have functions to check for the custom tags, and again, treat them as spans.  To avoid confusion, we changed the names of the arrays to
2354         endTagArray and tagPriorityArray.
2355
2356         * khtml/html/dtd.h: changed all uses of the endTag array to endTagArray for our new wrapper functions
2357         (DOM::tagPriority): added function to check array bounds and to treat custom tags as spans
2358         (DOM::endTagRequirement): added function to check array bounds and to treat custom tags as spans
2359         * khtml/html/dtd.cpp: changed name of endTag and tagPriority arrays to endTagArray and tagPriorityArray
2360         (DOM::checkChild): treat custom tags as spans during this check
2361         * khtml/html/html_elementimpl.cpp: changed all uses of the endTag array to the endTagRequirement function
2362         (HTMLElementImpl::createContextualFragment):
2363         (HTMLElementImpl::setInnerText):
2364         (HTMLElementImpl::setOuterText):
2365         (HTMLElementImpl::toString):
2366         * khtml/html/htmlparser.cpp: changed all uses of the endTag array to the endTagRequirement function and all uses of the tagPriority array to the tagPriority function.
2367         (KHTMLParser::parseToken):
2368         (KHTMLParser::insertNode):
2369         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): changed all uses of the endTag array to the endTagRequirement function
2370        * khtml/editing/markup.cpp: changed all uses of the endTag array to the endTagRequirement function
2371         (khtml::endMarkup): 
2372         (khtml::markup):
2373
2374 2005-02-18  Jens Alfke  <jens@apple.com>
2375
2376         Reviewed by Hyatt.
2377
2378         Fixed build: Whoops, setNeedsLayout's parameter is NOT optional.
2379
2380         * khtml/html/html_objectimpl.cpp:
2381         (HTMLAppletElementImpl::setAllParamsAvailable):
2382
2383 2005-02-18  Jens Alfke  <jens@apple.com>
2384
2385         Reviewed by cblu, hyatt.
2386
2387         Fixes <rdar://problem/3603191> "REGRESSION: Applets not receiving all of the Applet Parameters in Java 1.4.1/1.4.2"
2388         Defer instantiation of Java applet plugin until after all of the <applet> tag's nested <param> tags have been parsed, otherwise the list of parameters passed to the applet is incomplete. The regression was introduced (says Dave) when the parser's close-tag notifications were removed in the name of performance.
2389
2390         * khtml/html/html_objectimpl.cpp:
2391         (HTMLAppletElementImpl::HTMLAppletElementImpl):
2392         (HTMLAppletElementImpl::getAppletInstance):
2393         (HTMLAppletElementImpl::setAllParamsAvailable):
2394         (HTMLAppletElementImpl::allParamsAvailable):
2395         * khtml/html/html_objectimpl.h:
2396         * khtml/html/htmlparser.cpp:
2397         (KHTMLParser::processCloseTag):
2398         * khtml/rendering/render_applet.cpp:
2399         (RenderApplet::createWidgetIfNecessary):
2400
2401 2005-02-18  Richard Williamson   <rjw@apple.com>
2402
2403         Fixed <rdar://problem/4006161> Tiger8A380: Widgets leak dashboard regions
2404         
2405         We were leaking the DashboardRegionImpls.
2406
2407         Reviewed by Kevin.
2408
2409         * khtml/css/css_valueimpl.cpp:
2410         (DOM::CSSPrimitiveValueImpl::cleanup):
2411
2412 2005-02-18  Chris Blumenberg  <cblu@apple.com>
2413
2414         Fixed: <rdar://problem/3945271> REGRESSION (Mail): pasted plain text should pick up typing style instead of being unstyled
2415
2416         Reviewed by kocienda.
2417
2418         * khtml/editing/htmlediting.cpp:
2419         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): don't set class on element returned by createStyleSpanElement since that's already done
2420         (khtml::ReplacementFragment::ReplacementFragment): take matchStyle param, don't call computeStylesAndRemoveUnrendered() if !matchStyle
2421         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): take matchStyle param
2422         (khtml::ReplaceSelectionCommand::doApply): if m_matchStyle, use selection.start() as the insertion position and don't call applyStyleToInsertedNodes()
2423         * khtml/editing/htmlediting.h:
2424         * kwq/WebCoreBridge.h:
2425         * kwq/WebCoreBridge.mm:
2426         (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:smartReplace:matchStyle:]): take matchStyle param and pass it
2427         (-[WebCoreBridge replaceSelectionWithNode:selectReplacement:smartReplace:]): pass NO for matchStyle
2428         (-[WebCoreBridge replaceSelectionWithMarkupString:baseURLString:selectReplacement:smartReplace:]): pass NO for matchStyle
2429         (-[WebCoreBridge replaceSelectionWithText:selectReplacement:smartReplace:]): pass YES for matchStyle
2430
2431 2005-02-18  Ken Kocienda  <kocienda@apple.com>
2432
2433         Reviewed by Chris
2434
2435         Fix for these bugs:
2436         
2437         <rdar://problem/4013025> Copy/Paste of quoted word results in removal of any following <cr>
2438         <rdar://problem/4013100> Copy/Paste quoted text and then decrease quote level does not change text color
2439
2440         For the most part, these bugs were caused by errors and lack of foresight on my part when
2441         I added the better paste code. Chalk these fixes up to the result of bake time.
2442
2443         * khtml/editing/htmlediting.cpp:
2444         (khtml::ReplacementFragment::ReplacementFragment): Need to move count of number of blocks in
2445         fragment after the call to remove unrendered nodes. Meant to do this before, but forgot to.
2446         (khtml::ReplacementFragment::removeStyleNodes): Need to remove inline styles from elements!
2447         Terrible omission now fixed.
2448         (khtml::ReplacementFragment::removeBlockquoteColorsIfNeeded): Remove blockquote colors for now.
2449         Code has a more extensive comment in it now to explain the difficulty, and the need for more
2450         study and changes.
2451         (khtml::ReplaceSelectionCommand::doApply): Need to call applyStyleToInsertedNodes() in the 
2452         m_fragment.hasInterchangeNewline() case. This was just missed before.
2453         * layout-tests/editing/pasteboard/paste-text-011-expected.txt: Updated results, subtly different, but OK.
2454         * layout-tests/editing/pasteboard/paste-text-017-expected.txt: Updated for <p> to <div> change in test content.
2455         * layout-tests/editing/pasteboard/paste-text-017.html: Needed to change <p> to <div> to 
2456         make this test go with the new design of using <div> tags for default paragraphs.
2457
2458 2005-02-18  David Hyatt  <hyatt@apple.com>
2459
2460         Fix for 3974263 (and possibly others).  Don't let fixed tables use maxint as their maxwidth when some
2461         cells have percentage values.
2462         
2463         Reviewed by kocienda
2464
2465         * khtml/misc/arena.cpp:
2466         (ArenaAllocate):
2467         * khtml/rendering/table_layout.cpp:
2468         (FixedTableLayout::calcWidthArray):
2469         (FixedTableLayout::calcMinMaxWidth):
2470         (AutoTableLayout::layout):
2471
2472 2005-02-17  Darin Adler  <darin@apple.com>
2473
2474         Reviewed by Kevin.
2475
2476         - fixed <rdar://problem/3998627> WebKit crashes when deleting text in a modified div
2477
2478         * khtml/khtml_part.cpp: (KHTMLPart::selectionComputedStyle): Add a ref and deref to keep
2479         the element alive until it's added to the DOM tree.
2480         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::styleForSelectionStart): Ditto.
2481
2482 2005-02-17  Richard Williamson   <rjw@apple.com>
2483
2484         Fixed <rdar://problem/3999467> when Osaka-Mono is specified as fixed width font, Osaka used instead
2485
2486         Fixed w/o introducing a performance regression.  Add early
2487         check for Osaka-Mono to avoid expensive call into WebKit.
2488
2489         Reviewed by Vicki.
2490
2491         * kwq/KWQFont.mm:
2492         (QFont::isFixedPitch):
2493
2494 2005-02-17  Darin Adler  <darin@apple.com>
2495
2496         Reviewed by Kevin.
2497
2498         - fixed <rdar://problem/4011210> REGRESSION (180-181): Maxlength property for INPUT object not working
2499
2500         * kwq/KWQTextField.mm:
2501         (-[KWQTextField textView:shouldChangeTextInRange:replacementString:]): If controller returns
2502         YES, go on to call super, since super does the text formatter handling, which we need.
2503         (-[KWQSecureTextField textView:shouldChangeTextInRange:replacementString:]): Ditto.
2504         (-[KWQSearchField textView:shouldChangeTextInRange:replacementString:]): Ditto.
2505
2506 === Safari-187 ===
2507
2508 2005-02-17  Ken Kocienda  <kocienda@apple.com>
2509
2510         Reviewed by Hyatt
2511
2512         Fix for this bug:
2513         
2514         <rdar://problem/4012058> Copy from quoted text and paste results in blue text
2515
2516         The relatively-new paste code tries hard to retain style of the content from the
2517         source location. However, in the case of quoted material in mail messages, we do 
2518         not want to carry the quoting color along. This fixes the problem by factoring
2519         out such colors.
2520
2521         * khtml/editing/htmlediting.cpp:
2522         (khtml::ReplacementFragment::computeStylesAndRemoveUnrendered): Now calls removeBlockquoteColorsIfNeeded()
2523         to fix bug.
2524         (khtml::ReplacementFragment::removeBlockquoteColorsIfNeeded): New function. Factors out colors that are
2525         the result of text being quoted. 
2526         (khtml::isNodeRendered): Function moved in file. No other change.
2527         (khtml::isProbablyBlock): Function moved in file. No other change.
2528         (khtml::closestMailBlockquote): New function. Helps fix bug.
2529         (khtml::isMailBlockquote): Function moved to be free-floating instead of being a 
2530         member of CompositeEditCommand. No other change.
2531         * khtml/editing/htmlediting.h: Moved around some functions. Added removeBlockquoteColorsIfNeeded().
2532         * khtml/editing/markup.cpp: Remove redundant static implementation of isMailBlockquote.
2533
2534 2005-02-17  Richard Williamson   <rjw@apple.com>
2535
2536         Fixed <rdar://problem/4008163> dynamic support for -apple-dashboard-region is flakey
2537
2538         Style operator== wasn't including regions.
2539
2540         Reviewed by Darin.
2541
2542         * khtml/rendering/render_style.cpp:
2543         (StyleCSS3NonInheritedData::operator==):
2544
2545 2005-02-17  Adele Amchan  <adele@apple.com>
2546
2547         Reviewed by Chris.
2548
2549         fix for <rdar://problem/4010028> 8A383: Safari v185 crash loading united.com multi city fare finder page.
2550
2551         * khtml/dom/dom_string.cpp: (DOM::DOMString::operator += ): prevent nil dereference when DOMString being added is nil
2552
2553 2005-02-17  Jens Alfke  <jens@apple.com>
2554
2555         Reviewed by Hyatt.
2556
2557         Fix for rdar://3963151 "Mail only pasted ~950 of 1407 text lines into my message!"
2558         Force tokenizer to run synchronously while parsing document fragments, so it doesn't stop halfway through and cause truncated content.
2559
2560         * khtml/html/html_elementimpl.cpp:
2561         (HTMLElementImpl::createContextualFragment):
2562         * khtml/html/htmltokenizer.cpp:
2563         (khtml::HTMLTokenizer::reset):
2564         (khtml::HTMLTokenizer::begin):
2565         (khtml::HTMLTokenizer::setForceSynchronous):
2566         (khtml::HTMLTokenizer::continueProcessing):
2567         * khtml/html/htmltokenizer.h:
2568
2569 2005-02-17  Ken Kocienda  <kocienda@apple.com>
2570
2571         Reviewed by Hyatt
2572
2573         Fix for this bug:
2574         
2575         <rdar://problem/3982183> Mail's HTML paragraphs appear with unintended margins in Entourage and Eudora
2576
2577         * khtml/editing/htmlediting.cpp:
2578         (khtml::createDefaultParagraphElement): Change element we make from <p> to <div>.
2579         This fixes the problem, as these other mailers show <div> elements without margins.
2580         
2581         Some test files needed to change to preserve the ability to "eyeball" the results.
2582         Many others changed just because their <p> elements changed to <div> elements.
2583         
2584         * layout-tests/editing/deleting/delete-3928305-fix-expected.txt
2585         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt
2586         * layout-tests/editing/inserting/insert-div-013-expected.txt
2587         * layout-tests/editing/inserting/insert-div-013.html
2588         * layout-tests/editing/inserting/insert-div-014-expected.txt
2589         * layout-tests/editing/inserting/insert-div-014.html
2590         * layout-tests/editing/inserting/insert-div-018-expected.txt
2591         * layout-tests/editing/inserting/insert-div-018.html
2592         * layout-tests/editing/inserting/insert-div-019-expected.txt
2593         * layout-tests/editing/inserting/insert-div-019.html
2594         * layout-tests/editing/inserting/insert-div-020-expected.txt
2595         * layout-tests/editing/inserting/insert-div-020.html
2596         * layout-tests/editing/inserting/insert-div-021-expected.txt
2597         * layout-tests/editing/inserting/insert-div-021.html
2598         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt
2599         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt
2600         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt
2601         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt
2602
2603 2005-02-17  Ken Kocienda  <kocienda@apple.com>
2604
2605         Reviewed by Hyatt
2606
2607         Fix for this bug:
2608         
2609         <rdar://problem/3996737> REGRESSION (Mail): Copy/paste in Mail inserts returns
2610
2611         The root cause of the problem is that a couple of pieces of code in AppKit and Mail 
2612         insert newlines into markup as it is generated, and the paste code in WebCore was 
2613         not smart about nodes that do not render (as is the case with these added newlines). 
2614         So, the solution is to remove these unrendered nodes in the paste code in a pre-pass. 
2615         Fortunately, my recent addition of such a pass to the paste code to handle styles 
2616         gave me a convenient place to put this new logic.
2617
2618         * khtml/editing/htmlediting.cpp:
2619         (khtml::ReplacementFragment::ReplacementFragment): Use new name for function below.
2620         (khtml::ReplacementFragment::computeStylesAndRemoveUnrendered): Name change from computeStylesForNodes().
2621         Now does the additional work of removing unrendered nodes, as mentioned above.
2622         (khtml::isNodeRendered): New helper function.
2623         * khtml/editing/htmlediting.h: Updated as necessary.
2624
2625 2005-02-17  Ken Kocienda  <kocienda@apple.com>
2626
2627         Reviewed by Hyatt
2628
2629         Fix for this bug:
2630         
2631         <rdar://problem/3998892> REGRESSION (Mail): bolding a selection from end of line changes unselected text on starting line.
2632         
2633         The styling code did not move to the next node when the starting position was 
2634         at the last offset of a node. Instead, it styled it. Clearly wrong. Solution 
2635         is to borrow a check from the delete algorithm. Though I call caretMaxOffset(),
2636         which I consider deprecated, it is still the simplest and most strightforward
2637         way to ask the right question for this kind of problem.
2638
2639         * khtml/editing/htmlediting.cpp:
2640         (khtml::ApplyStyleCommand::applyInlineStyle): Fixed, as described above.
2641         * layout-tests/editing/style/style-3998892-fix-expected.txt: Added.
2642         * layout-tests/editing/style/style-3998892-fix.html: Added.
2643
2644 2005-02-16  Chris Blumenberg  <cblu@apple.com>
2645         
2646         Fixed: <rdar://problem/3954842> Forward/reply to an HTML email can result in nothing (in cases with <link> tags for CSS)
2647
2648         Reviewed by john.
2649
2650         * khtml/xml/dom_nodeimpl.cpp:
2651         (NodeBaseImpl::addChild): don't call insertedIntoDocument on the added child if "this" itself is not in the document.
2652
2653 2005-02-16  John Sullivan  <sullivan@apple.com>
2654
2655         Written by Darin, reviewed by Maciej and me
2656         
2657         - change required to make previous checkin work with English language RSS pages
2658
2659         * kwq/KWQKURL.h:
2660         new private method isHierarchical
2661         * kwq/KWQKURL.mm:
2662         (KURL::KURL):
2663         add hierarchical base URL check when determining whether the URL is absolute
2664         (KURL::isHierarchical):
2665         new method, returns true if this is a valid URL with a slash just past the scheme's trailing colon
2666
2667 2005-02-16  John Sullivan  <sullivan@apple.com>
2668
2669         Written by Darin, reviewed by me.
2670         
2671         - WebCore part of fix for <rdar://problem/4007384> 
2672         FILTER: Bookmark of RSS with Japanese search word & multiple RSS pages loses filter
2673
2674         * kwq/DOM.mm:
2675         (-[DOMElement _getURLAttribute:]):
2676         new SPI method, uses parseURL and completeURL to get valid URL from attribute value
2677
2678         * kwq/DOMPrivate.h:
2679         declare new SPI method
2680
2681 2005-02-15  Maciej Stachowiak  <mjs@apple.com>
2682
2683         Reviewed by Darin.
2684
2685         <rdar://problem/3942428> reproducible crash loading cbs.sportsline.com
2686         
2687         This change reverts the fix for <rdar://problem/3805311>, and
2688         re-fixes it in a different (better) way. Instead of preventing
2689         programmatic open from setting the parsing flag, instead make sure
2690         that programmatic close resets it.
2691
2692         * khtml/khtml_part.cpp:
2693         (KHTMLPart::openURL):
2694         (KHTMLPart::didExplicitOpen):
2695         (KHTMLPart::closeURL):
2696         (KHTMLPart::begin):
2697         (KHTMLPart::end):
2698         (KHTMLPart::endIfNotLoading):
2699         (KHTMLPart::slotFinishedParsing):
2700         (KHTMLPart::checkEmitLoadEvent):
2701         * khtml/khtml_part.h:
2702         * khtml/khtmlpart_p.h:
2703         (KHTMLPartPrivate::KHTMLPartPrivate):
2704         * khtml/xml/dom_docimpl.cpp:
2705         (DocumentImpl::open):
2706         (DocumentImpl::implicitOpen):
2707         (DocumentImpl::close):
2708         (DocumentImpl::implicitClose):
2709         * khtml/xml/dom_docimpl.h:
2710
2711 2005-02-15  David Harrison  <harrison@apple.com>
2712
2713         Reviewed by Maciej.
2714
2715         <rdar://problem/3933665> smart delete seems to delete too much after expanding selection with arrow keys
2716
2717         Fixed by updating the selection granularity.  Only byWord granularity enables smart delete, but in this
2718         case the granularity changed from byWord to byCharacter.
2719
2720         * khtml/khtml_part.cpp:
2721         (KHTMLPart::setSelectionGranularity):
2722         * khtml/khtml_part.h:
2723         * kwq/WebCoreBridge.mm:
2724         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
2725         (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:]):
2726         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]):
2727
2728 2005-02-15  David Harrison  <harrison@apple.com>
2729
2730         Reviewed by Darin.
2731
2732         (continued) <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
2733
2734         This was supposed have been committed yesterday with the other part of the fix, but was not.
2735         
2736         * khtml/editing/visible_units.cpp:
2737         (khtml::endOfWord):
2738
2739 2005-02-15  Ken Kocienda  <kocienda@apple.com>
2740
2741         Reviewed by John
2742         
2743         Fix for this bug:
2744         
2745         <rdar://problem/3951178> REGRESSION (Mail): blank line lost after pasting as quotation
2746         
2747         Problem was that the blank line after the selection was getting deleted incorrectly since the
2748         paste code thought this was an unneeded placeholder rather than a placeholder outside of the
2749         selection.
2750
2751         * khtml/editing/htmlediting.cpp:
2752         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Now calls findBlockPlaceholder.
2753         (khtml::CompositeEditCommand::findBlockPlaceholder): Moved finding code formerly in 
2754         removeBlockPlaceholderIfNeeded to this new helper.
2755         (khtml::ReplaceSelectionCommand::doApply): Do not delete placeholder up front. Call 
2756         findBlockPlaceholder, and delete it later if needed in the already-existing cleanup step.
2757         * khtml/editing/htmlediting.h: Add new function.
2758
2759         New layout test.
2760
2761         * layout-tests/editing/pasteboard/paste-text-017-expected.txt: Added.
2762         * layout-tests/editing/pasteboard/paste-text-017.html: Added.
2763
2764         Result changed for the better.
2765
2766         * layout-tests/editing/pasteboard/paste-text-011-expected.txt
2767
2768 2005-02-14  David Harrison  <harrison@apple.com>
2769
2770         Reviewed by Darin.
2771
2772         <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
2773
2774         Reviewed by Darin.
2775
2776         <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
2777
2778         * khtml/editing/visible_text.cpp:
2779         (khtml::SimplifiedBackwardsTextIterator::advance):
2780         Add BR in for <rdar://problem/3917929> fix only if leaving a visible text node.
2781         
2782         * khtml/editing/visible_units.cpp:
2783         (khtml::endOfWord):
2784         Do not move left over a paragraph boundary.
2785
2786 2005-02-14  Darin Adler  <darin@apple.com>
2787
2788         Reviewed by John.
2789
2790         - fixed <rdar://problem/3686434> Safari uses too much RAM on file upload, leading to malloc errors and crashes (HP printers)
2791
2792         * khtml/html/html_formimpl.cpp:
2793         (DOM::FormDataList::begin): Updated to use a list of FormDataListItem instead of QCString.
2794         (DOM::FormDataList::end): Ditto.
2795         (DOM::HTMLFormElementImpl::formData): Same here, and also use appendFile rather than appendData
2796         when we encounter a path name rather than data.
2797         (DOM::HTMLInputElementImpl::appendFormData): Use appendFile here rather than reading the file
2798         in; the reading now happens inside WebKit.
2799         (DOM::FormDataList::appendString): Updated for FormDataListItem.
2800         (DOM::FormDataList::appendFile): Added.
2801
2802         * ForwardingHeaders/kfileitem.h: Emptied out the file; no longer includes KWQKFileItem.h.
2803         * ForwardingHeaders/netaccess.h: Emptied out the file; no longer includes KWQKIONetAccess.h.
2804         * kwq/KWQKFileItem.h: Removed.
2805         * kwq/KWQKFileItem.mm: Removed.
2806         * kwq/KWQKIONetAccess.h: Removed.
2807         * kwq/KWQKIONetAccess.mm: Removed.
2808         * WebCore.pbproj/project.pbxproj: Removed the 4 files above.
2809
2810         - small unrelated fix (not reviewed by John)
2811
2812         * khtml/ecma/kjs_window.cpp: (Window::isSafeScript): Put some logging code outside if statements so it works all the time.
2813
2814 2005-02-14  David Harrison  <harrison@apple.com>
2815
2816         Reviewed by Darin.
2817
2818         <rdar://problem/4004305> REGRESSION (Mail): Command-right-arrow on wrapped text goes to end of previous line
2819
2820         Fixed nextLinePosition to calculate affinity rather than take it as a parameter.  Propagated the parameter change out to related methods.
2821
2822         * khtml/editing/htmlediting.cpp:
2823         (khtml::DeleteSelectionCommand::initializePositionData):
2824         (khtml::InsertLineBreakCommand::doApply):
2825         (khtml::InsertParagraphSeparatorCommand::doApply):
2826         (khtml::InsertTextCommand::input):
2827         (khtml::ReplaceSelectionCommand::doApply):
2828         (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes):
2829         * khtml/editing/selection.cpp:
2830         (khtml::Selection::modifyExtendingRightForward):
2831         (khtml::Selection::modifyMovingRightForward):
2832         (khtml::Selection::modifyExtendingLeftBackward):
2833         (khtml::Selection::modifyMovingLeftBackward):
2834         (khtml::Selection::modify):
2835         (khtml::Selection::validate):
2836         * khtml/editing/visible_position.cpp:
2837         (khtml::visiblePositionsOnDifferentLines):
2838         * khtml/editing/visible_units.cpp:
2839         (khtml::rootBoxForLine):
2840         (khtml::startOfLine):
2841         (khtml::endOfLine):
2842         (khtml::inSameLine):
2843         (khtml::isStartOfLine):
2844         (khtml::isEndOfLine):
2845         (khtml::previousLinePosition):
2846         (khtml::nextLinePosition):
2847         (khtml::previousSentencePosition):
2848         (khtml::nextSentencePosition):
2849         (khtml::previousParagraphPosition):
2850         (khtml::nextParagraphPosition):
2851         * khtml/editing/visible_units.h:
2852         * khtml/khtml_events.cpp:
2853         (khtml::MouseEvent::offset):
2854         * khtml/khtml_part.cpp:
2855         (KHTMLPart::isPointInsideSelection):
2856         (KHTMLPart::selectClosestWordFromMouseEvent):
2857         (KHTMLPart::handleMousePressEventTripleClick):
2858         (KHTMLPart::handleMousePressEventSingleClick):
2859         (KHTMLPart::handleMouseMoveEventSelection):
2860         (KHTMLPart::khtmlMouseReleaseEvent):
2861         * khtml/rendering/render_block.cpp:
2862         (khtml::RenderBlock::positionForCoordinates):
2863         * khtml/rendering/render_block.h:
2864         * khtml/rendering/render_br.cpp:
2865         (RenderBR::positionForCoordinates):
2866         * khtml/rendering/render_br.h:
2867         * khtml/rendering/render_container.cpp:
2868         (RenderContainer::positionForCoordinates):
2869         * khtml/rendering/render_container.h:
2870         * khtml/rendering/render_inline.cpp:
2871         (RenderInline::positionForCoordinates):
2872         * khtml/rendering/render_inline.h:
2873         * khtml/rendering/render_object.cpp:
2874         (RenderObject::caretRect):
2875         (RenderObject::positionForCoordinates):
2876         * khtml/rendering/render_object.h:
2877         * khtml/rendering/render_replaced.cpp:
2878         (RenderReplaced::positionForCoordinates):
2879         * khtml/rendering/render_replaced.h:
2880         * khtml/rendering/render_text.cpp:
2881         (RenderText::positionForCoordinates):
2882         * khtml/rendering/render_text.h:
2883         * khtml/xml/dom_position.cpp:
2884         (DOM::Position::previousCharacterPosition):
2885         (DOM::Position::nextCharacterPosition):
2886         (DOM::Position::leadingWhitespacePosition):
2887         (DOM::Position::trailingWhitespacePosition):
2888         * khtml/xml/dom_position.h:
2889         * kwq/KWQAccObject.mm:
2890         (-[KWQAccObject value]):
2891         (-[KWQAccObject accessibilityAttributeValue:]):
2892         (-[KWQAccObject doAXLineForTextMarker:]):
2893         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2894         (-[KWQAccObject doAXTextMarkerForPosition:]):
2895         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
2896         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2897         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2898         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
2899         * kwq/KWQKHTMLPart.mm:
2900         * kwq/WebCoreBridge.mm:
2901         (-[WebCoreBridge _visiblePositionForPoint:]):
2902
2903 05-02-07  Maciej Stachowiak  <mjs@apple.com>
2904
2905         Reviewed by Ken and John.
2906
2907         Re-fixed a specific case of the following:
2908
2909         <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
2910
2911         Oddly, Cmd-B, Cmd-U, type some text, return, Cmd-U, Cmd-B, type
2912         some text, worked fine. But hitting the second Cmd-B before the
2913         second Cmd-U still failed to remove underlining. The reason for
2914         this is that our code to compute the style of the current position
2915         did not work when you had a typing style and were positioned right
2916         at a <br> element. For various reasons, this did not show up for
2917         bold and italic, since those are handled through the font manager.
2918
2919         The following change fixes this - for elements that can't have
2920         children, we add the dummy span after the element of interest,
2921         rather than as a child of it.
2922         
2923         * khtml/khtml_part.cpp:
2924         (KHTMLPart::selectionComputedStyle): 
2925
2926 2005-02-11  David Harrison  <harrison@apple.com>
2927
2928         Reviewed by Darin.
2929
2930         <rdar://problem/3978980> Double Clicking on a line in Mail selected the entire body
2931
2932         * khtml/editing/visible_units.cpp:
2933         (khtml::startOfWord):
2934         (khtml::endOfWord):
2935         Pay attention to being at the end of a paragraph.
2936         
2937         (khtml::previousLinePosition):
2938         (khtml::nextLinePosition):
2939         (khtml::endOfParagraph):
2940         Use DOWNSTREAM per recent affinity changes.
2941
2942 2005-02-11  Richard Williamson   <rjw@apple.com>
2943
2944         Fixed <rdar://problem/3985118> DOM objects not being marshaled on JS->native calls
2945
2946         Re-factored how 'native' wrappers for JS objects are created.  The interpreter now
2947         creates these wrappers.  The WebCore subclass of the interpreter now overrides
2948         createLanguageInstanceForValue() and creates a DOM ObjC wrapper for DOM objects.
2949
2950         * WebCore.pbproj/project.pbxproj:
2951         * khtml/ecma/kjs_binding.cpp:
2952         (ScriptInterpreter::createLanguageInstanceForValue):
2953         * khtml/ecma/kjs_binding.h:
2954         * kwq/DOMUtility.mm: Added.
2955         (KJS::ScriptInterpreter::createObjcInstanceForValue):
2956         * kwq/KWQKHTMLPart.mm:
2957         (KWQKHTMLPart::getAppletInstanceForView):
2958         (getInstanceForView):
2959         (KWQKHTMLPart::getEmbedInstanceForView):
2960         (KWQKHTMLPart::getObjectInstanceForView):
2961
2962 2005-02-11  Chris Blumenberg  <cblu@apple.com>
2963
2964         Fixed: <rdar://problem/3937352> Quote level not maintained when copied and pasted within a Mail message
2965
2966         Reviewed by harrison.
2967
2968         * khtml/editing/markup.cpp:
2969         (khtml::isMailBlockquote): new 
2970         (khtml::createMarkup): retain the Mail quote level by including all ancestor mail block quotes
2971         * khtml/rendering/render_block.cpp:
2972         (khtml::RenderBlock::positionForCoordinates): default to downstream for the affinity since the affinity is only upstream when the cursor is clicked to the right of a wrapped line
2973         * khtml/rendering/render_text.cpp:
2974         (RenderText::positionForCoordinates): ditto
2975
2976 2005-02-11  Adele Amchan  <adele@apple.com>
2977
2978         Reviewed by Darin.
2979
2980         fix for <rdar://problem/4004004> no need to add body element for xml documents
2981
2982         In the fix for <rdar://problem/3758785> we decided to add a body element when closing a document 
2983         to ensure that the onload handler would fire.  This is unnecessary for xml documents, 
2984         so now we also check to see if we're dealing with an html document before adding the body element.
2985
2986         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close): 
2987
2988 2005-02-11  Adele Amchan  <adele@apple.com>
2989
2990         Reviewed by Darin.
2991
2992         * layout-tests/apple-only/base/www.excite.com/index-expected.txt: updates tests because of custom tag change.
2993         * layout-tests/apple-only/base/www.msnbc.com/index-expected.txt:
2994         * layout-tests/apple-only/base/www.time.com/index-expected.txt:
2995         * layout-tests/apple-only/base/www.travelocity.com/index-expected.txt:
2996         * layout-tests/apple-only/base/www.zdnet.com/index-expected.txt:
2997         * layout-tests/fast/overflow/003-expected.txt:
2998
2999         * layout-tests/fast/js/window-object-cross-frame-calls-expected.txt: updated test because of added Body (see rdar://problem/3758785)
3000
3001 === Safari-186 ===
3002
3003 2005-02-11  Darin Adler  <darin@apple.com>
3004
3005         Reviewed by John.
3006
3007         - fixed <rdar://problem/3915449> paths are relative to the old src URL after document.open, which is supposed to clear the document, including the URL
3008
3009         * khtml/xml/dom_docimpl.h: Added a new openInternal function for use by KHTMLPart.
3010         * khtml/xml/dom_docimpl.cpp:
3011         (DocumentImpl::open): Changed to do everything we did before, but also clear the URL and set the
3012         base URL based on the enclosing document. This is the basic JavaScript/DOM operation of opening a
3013         document, which is supposed to clear the document, including the URL. In the long run we might want
3014         to do even more document "resetting and clearing" in here, but this URL clearing is what's needed
3015         now to fix the most important problem.
3016         (DocumentImpl::openInternal): Moved the old open code in here, except for the "parsing" check, which
3017         is unnecessary and inappropriate in the one place we call this.
3018
3019         * khtml/khtml_part.cpp: (KHTMLPart::begin): Call openInternal instead of open.
3020
3021 2005-02-10  Ken Kocienda  <kocienda@apple.com>
3022
3023         Reviewed by Hyatt
3024
3025         Fix for this bug:
3026         
3027         <rdar://problem/3992092> 8A374: Mail crash while pasting - RemoveNodeCommand
3028
3029         * khtml/editing/htmlediting.cpp:
3030         (khtml::ReplaceSelectionCommand::doApply): Code tried to remove a node that was no longer in 
3031         the document. We try to do a good job of detecting all these cases, and generally do. This
3032         one was missed. Fixed.
3033
3034 2005-02-10  Darin Adler  <darin@apple.com>
3035
3036         Reviewed by Harrison.
3037
3038         - added support needed to fix <rdar://problem/3991225> Format->Style->Underline menu item does not get checked when selected text is underlined
3039
3040         * kwq/WebCoreBridge.h: Added selectionHasStyle: method.
3041         * kwq/WebCoreBridge.mm: (-[WebCoreBridge selectionHasStyle:]): Added. Calls selectionHasStyle on the part.
3042
3043 2005-02-10  Darin Adler  <darin@apple.com>
3044
3045         Reviewed by Harrison.
3046
3047         - fixed <rdar://problem/3990484> cursor changes to I-beam when moving over text in widgets, even when selection off via CSS
3048
3049         * khtml/khtmlview.cpp: (KHTMLView::viewportMouseMoveEvent): Changed code to check canSelect when deciding
3050         whether to show an I-beam cursor.
3051
3052         * khtml/rendering/render_object.h: Added canSelect.
3053         * khtml/rendering/render_object.cpp:
3054         (selectStartNode): Added. Helper function with the guts of shouldSelect.
3055         (RenderObject::canSelect): Added. Like shouldSelect, but does not call the "start selecting" event handler.
3056         (RenderObject::shouldSelect): Refactored to use selectStartNode.
3057
3058         * khtml/css/cssvalues.c: Regnerated with newer gperf.
3059
3060 2005-02-10  David Hyatt  <hyatt@apple.com>
3061
3062         Fix for 3867759, .mac regression where scrollers don't show up.  Make sure you can set the .width and
3063         .height properties on the Image object.
3064         
3065         Reviewed by John Sullivan
3066
3067         * khtml/ecma/kjs_html.cpp:
3068         (ImageConstructorImp::construct):
3069         (Image::getValueProperty):
3070         (Image::putValue):
3071         (Image::Image):
3072         * khtml/ecma/kjs_html.h:
3073
3074 2005-02-10  Ken Kocienda  <kocienda@apple.com>
3075
3076         Reviewed by Chris
3077
3078         Fix for this bug:
3079         
3080         <rdar://problem/3965158> Drag-n-drop within a rich text message sometimes changes the color of the dragged text
3081         
3082         This change fixes the bug....and much more. Now, for the first time, the paste code can do "smart merging"
3083         or "smooshing" of styles during its operation. Since this new code is actively, rather than passively
3084         working with styles, it fixes the bug, and lays the groundwork for similar work we need to do to
3085         preserve quote levels in Mail.
3086
3087         * khtml/css/css_valueimpl.cpp:
3088         (DOM::CSSMutableStyleDeclarationImpl::clear): New method.
3089         (DOM::CSSMutableStyleDeclarationImpl::removeBlockProperties): Ditto.
3090         (DOM::CSSMutableStyleDeclarationImpl::removePropertiesInSet): Ditto.
3091         (DOM::operator==): Add operator for CSSProperty.
3092         * khtml/css/css_valueimpl.h: Declare new functions.
3093         * khtml/editing/htmlediting.cpp:
3094         (khtml::isEmptyStyleSpan): Improved the test in this function, rolling together the old implementation
3095         with some code that did this work inline elsewhere. Sum of the parts is better than either test was by itself.
3096         (khtml::isStyleSpan): Check for ID_SPAN.
3097         (khtml::ApplyStyleCommand::removeCSSStyle): Call isEmptyStyleSpan. This was the place with an inline implementation before.
3098         (khtml::ReplacementFragment::ReplacementFragment): Now takes a DocumentImpl argument. No longer does a "default style"
3099         check, but rather calls functions which do a similar check to that, and much more.
3100         (khtml::ReplacementFragment::~ReplacementFragment): Deref document, and computed styles.
3101         (khtml::ReplacementFragment::styleForNode): New helper. Looks up and returns computed style for a node.
3102         (khtml::ReplacementFragment::removeNodePreservingChildren): New helper.
3103         (khtml::ReplacementFragment::computeStylesForNodes): New function which computes the "desired" style for
3104         every node in the fragment. This information is used later after paste is done as a reference for testing
3105         what styles need to be added, and which can be removed as redundant, from all the nodes inserted by the
3106         replacement code.
3107         (khtml::ReplacementFragment::removeStyleNodes): Clears out all style nodes from the fragment. They are
3108         no longer needed after the call to computeStylesForNodes(),
3109         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): Add a document to the call to initialize the
3110         command's ReplacementFragment.
3111         (khtml::ReplaceSelectionCommand::doApply): Call applyStyleToInsertedNodes() after inserting nodes to make
3112         styles come out right.
3113         (khtml::ReplaceSelectionCommand::applyStyleToInsertedNodes): This is the "style smooshing" function. It 
3114         computes the styles that need to be added to each node inserted, comparing the style it gets from just
3115         being inserted into its correct destination with the computed "desired style" done in the 
3116         ReplacementFragment constructor. It then adds in all the necessary styles, and will also remove redundant styles.
3117         * khtml/editing/htmlediting.h: Update declarations and member variables as needed.
3118         * khtml/editing/markup.cpp:
3119         (khtml::startMarkup): Add additional style annotations to the markup we generate, so that paste code can preserve it.
3120         (khtml::markup): Ditto.
3121         (khtml::createMarkup): Ditto.
3122         
3123         These test results are subtly better with this change. They no longer have an unneeded empty span.
3124         Visually the same as before.
3125         
3126         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt
3127         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt
3128         * layout-tests/editing/style/remove-underline-expected.txt
3129         * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt
3130
3131         New tests:
3132
3133         * layout-tests/editing/style/smoosh-styles-001-expected.txt
3134         * layout-tests/editing/style/smoosh-styles-002-expected.txt
3135         * layout-tests/editing/style/smoosh-styles-001.html
3136         * layout-tests/editing/style/smoosh-styles-002.html
3137
3138 2005-02-10  Darin Adler  <darin@apple.com>
3139
3140         Reviewed by Adele.
3141
3142         - fixed <rdar://problem/3974988> WebHTMLView drops scroll wheel events when deltas are 0
3143
3144         * kwq/WebCoreScrollView.m: (-[WebCoreScrollView autoforwardsScrollWheelEvents]): Added, for Tiger only.
3145         For Tiger, removed the override of scrollWheel:, which doesn't work quite right because of how the
3146         delta attributes return all 0 for newfangled scrolling events from the new trackpads.
3147
3148 2005-02-10  David Harrison  <harrison@apple.com>
3149
3150         Reviewed by Darin.
3151
3152         <rdar://problem/3991532> REGRESSION (Mail): Triple-click on trailing blank line should select previous line but doesn't
3153
3154         * khtml/css/cssvalues.c:
3155         (hash_val):
3156         (findValue):
3157         * khtml/editing/selection.cpp:
3158         (khtml::Selection::validate):
3159         Do moral equiavalent of LeftWordIfOnBoundary for PARAGRAPH.
3160
3161 2005-02-10  David Harrison  <harrison@apple.com>
3162
3163         Reviewed by Darin.
3164
3165         <rdar://problem/3991848> Double-click on first character selects wrong item
3166
3167         * khtml/editing/selection.cpp:
3168         (khtml::Selection::validate):
3169         Honor the fact that clicking on a character positions the cursor on the left side of the character.
3170
3171 2005-02-10  David Hyatt  <hyatt@apple.com>
3172
3173         Fix for 3980778, repro crash in RootInlineBox::paint.  Make sure that when merging blocks we dirty them for layout
3174         up front. That way as we do the merge, we dont attempt to examine the lines in dirtyLinesForChangedChild.
3175         
3176         Reviewed by mjs
3177
3178         * khtml/rendering/render_block.cpp:
3179         (khtml::RenderBlock::removeChild):
3180
3181 2005-02-10  David Hyatt  <hyatt@apple.com>
3182
3183         Fix for 3987010, fix a bug that caused the self-collapsing-block-cleared-float bit to never get set correctly.
3184         
3185         Reviewed by mjs
3186
3187         * khtml/rendering/render_block.h:
3188         (khtml::RenderBlock::MarginInfo::setSelfCollapsingBlockClearedFloat):
3189
3190 2005-02-10  David Hyatt  <hyatt@apple.com>
3191
3192         Fix  for 3992440, text not wrapping correctly on half moon bay web site.  Refine an incorrect optimization I
3193         added to be less restrictive.
3194         
3195         Reviewed by mjs
3196
3197         * khtml/rendering/render_block.cpp:
3198         (khtml::RenderBlock::layoutBlockChildren):
3199
3200 2005-02-08  Maciej Stachowiak  <mjs@apple.com>
3201
3202         Reviewed by Darin.
3203
3204         <rdar://problem/3977973> pages on ebay leak referenced JavaScript objects -- over time browsing becomes super-slow
3205
3206         I fixed this by removing all event listeners for a document, it's
3207         children, and any disconnected nodes that used to be in the
3208         document at document detach time. Mozilla temporarily disables
3209         event listeners on such nodes, but re-enables them if you
3210         re-parant a node into a new document. However, in WebCore, you
3211         can't re-parent a node into another document, so there is no
3212         observable change in behavior.
3213
3214         We have to do this to break the possible reference cycles between
3215         event listeners and the dom nodes they are attached to (e.g. via
3216         scope chain, as in this case).
3217
3218         * khtml/xml/dom_docimpl.cpp:
3219         (DocumentImpl::detach):
3220         (DocumentImpl::removeAllEventListenersFromAllNodesx):
3221         (DocumentImpl::registerDisconnectedNodeWithEventListeners):
3222         (DocumentImpl::unregisterDisconnectedNodeWithEventListeners):
3223         (DocumentImpl::removeAllDisconnectedNodeEventListeners):
3224         * khtml/xml/dom_docimpl.h:
3225         * khtml/xml/dom_nodeimpl.cpp:
3226         (NodeImpl::~NodeImpl):
3227         (NodeImpl::addEventListener):
3228         (NodeImpl::removeEventListener):
3229         (NodeImpl::removeAllEventListeners):
3230         (NodeImpl::removeHTMLEventListener):
3231         (NodeImpl::insertedIntoDocument):
3232         (NodeImpl::removedFromDocument):
3233         * khtml/xml/dom_nodeimpl.h:
3234
3235 2005-02-09  Chris Blumenberg  <cblu@apple.com>
3236
3237         Fixed: <rdar://problem/3999213> Sometimes 2 Windows Media Player plugin instances are loaded
3238
3239         Reviewed by hyatt.
3240
3241         * khtml/html/html_objectimpl.cpp:
3242         (HTMLObjectElementImpl::attach): Set needWidgetUpdate to false before calling updateWidget because updateWidget may cause this method or another method (which also calls updateWidget) to be called.
3243         (HTMLObjectElementImpl::recalcStyle): ditto
3244
3245 2005-02-09  David Harrison  <harrison@apple.com>
3246
3247         Reviewed by Darin.
3248         
3249         <rdar://problem/3937447> Mail-689: Arrow key navigation in new message body stops working when a line ends with a bold word
3250         
3251         Added affinity to VisiblePosition.  Changed Selection code to use affinity more.
3252         
3253         (Partial) <rdar://problem/3982096> editing/pasteboard/paste-text-007 is failing
3254         
3255         Changed ReplaceSelectionCommand to also pay attention to the top children of the incoming fragment, not just the very last node inserted, when deciding whether to insert a paragraph for the Apple interchange newline.
3256
3257         * khtml/ecma/kjs_window.cpp:
3258         (SelectionFunc::tryCall):
3259         * khtml/editing/htmlediting.cpp:
3260         (khtml::EditCommandPtr::setStartingSelection):
3261         (khtml::EditCommandPtr::setEndingSelection):
3262         (khtml::EditCommand::setStartingSelection):
3263         (khtml::EditCommand::setEndingSelection):
3264         (khtml::CompositeEditCommand::deleteInsignificantTextDownstream):
3265         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary):
3266         (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
3267         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
3268         (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
3269         (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
3270         (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
3271         (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
3272         (khtml::ApplyStyleCommand::joinChildTextNodes):
3273         (khtml::DeleteSelectionCommand::initializePositionData):
3274         (khtml::DeleteSelectionCommand::handleGeneralDelete):
3275         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete):
3276         (khtml::DeleteSelectionCommand::doApply):
3277         (khtml::InsertLineBreakCommand::doApply):
3278         (khtml::InsertParagraphSeparatorCommand::doApply):
3279         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
3280         (khtml::InsertTextCommand::input):
3281         (khtml::MoveSelectionCommand::doApply):
3282         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand):
3283         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand):
3284         (khtml::ReplaceSelectionCommand::doApply):
3285         (khtml::ReplaceSelectionCommand::completeHTMLReplacement):
3286         (khtml::ReplaceSelectionCommand::updateNodesInserted):
3287         (khtml::TypingCommand::deleteKeyPressed):
3288         (khtml::TypingCommand::forwardDeleteKeyPressed):
3289         (khtml::TypingCommand::markMisspellingsAfterTyping):
3290         * khtml/editing/htmlediting.h:
3291         * khtml/editing/selection.cpp:
3292         (khtml::Selection::Selection):
3293         (khtml::Selection::init):
3294         (khtml::Selection::moveTo):
3295         (khtml::Selection::modifyExtendingRightForward):
3296         (khtml::Selection::modifyMovingRightForward):
3297         (khtml::Selection::modifyExtendingLeftBackward):
3298         (khtml::Selection::modifyMovingLeftBackward):
3299         (khtml::Selection::modify):
3300         (khtml::Selection::xPosForVerticalArrowNavigation):
3301         (khtml::Selection::clear):
3302         (khtml::Selection::setBase):
3303         (khtml::Selection::setExtent):
3304         (khtml::Selection::setBaseAndExtent):
3305         (khtml::Selection::layout):
3306         (khtml::Selection::validate):
3307         * khtml/editing/selection.h:
3308         (khtml::Selection::startAffinity):
3309         (khtml::Selection::endAffinity):
3310         (khtml::Selection::baseAffinity):
3311         (khtml::Selection::extentAffinity):
3312         (khtml::operator==):
3313         * khtml/editing/text_affinity.h:
3314         (khtml::):
3315         * khtml/editing/visible_position.cpp:
3316         (khtml::VisiblePosition::VisiblePosition):
3317         (khtml::VisiblePosition::init):
3318         (khtml::VisiblePosition::initUpstre