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