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