WebCore:
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2004-08-12  Trey Matteson  <trey@apple.com>
2
3         3761329 - query result links all dead in ingrammicro.com (sometimes)
4         3761328 - links in some docs dead when doc is loaded from WebArchive
5
6         Make sure to get part to completed state when end is called,
7         even if we have no doc.  See WebKit changelog for more info.
8
9         Reviewed by Richard and Darin.
10
11         * khtml/khtml_part.cpp:
12         (KHTMLPart::end):
13
14 2004-08-13  Trey Matteson  <trey@apple.com>
15
16         3761098 - red dotted underline for misspelled words shows up in drag image
17
18         Reviewed by Ken
19
20         * khtml/rendering/render_text.cpp:
21         (RenderText::paint):  Don't draw misspelling when creating selection image.
22
23 2004-08-12  Richard Williamson   <rjw@apple.com>
24
25         Bring npruntime.h and friends closer to compliance with
26         latest spec.
27
28         Reviewed by Maciej.
29
30         * kwq/KWQKHTMLPart.mm:
31         (KWQKHTMLPart::windowScriptNPObject):
32
33 2004-08-12  Maciej Stachowiak  <mjs@apple.com>
34
35         Reviewed by Richard.
36
37         <rdar://problem/3245706> URLs with backslashes instead of slashes work on WinIE; should work on Safari (SAP)
38         <rdar://problem/3506429> <BASE> tag containing backslash is breaking images with absolute URLs
39         
40         * kwq/KWQKURL.mm:
41         (substituteBackslashes): Helper method
42         (KURL::KURL): If the URL contains any backslashes, substitute all
43         that appear before the query or fragment.
44
45 2004-08-12  Ken Kocienda  <kocienda@apple.com>
46
47         Reviewed by Chris
48
49         Fix for this bug:
50         
51         <rdar://problem/3761014> command-down-arrow takes you to start of document instead of end of document
52
53         * khtml/xml/dom_selection.cpp:
54         (DOM::Selection::modifyExtendingRightForward): Code used to assume, incorrectly, that index 1 of the
55         document element was beyond the last node in the document. But this is not true, since the document
56         element is the HTML element (generally). Instead, move to the index equal to the number of children
57         of the document element. This puts us past everything.
58         (DOM::Selection::modifyMovingRightForward): Ditto.
59
60 2004-08-12  Ken Kocienda  <kocienda@apple.com>
61
62         Reviewed by Trey
63
64         Fix for this bug:
65         
66         <rdar://problem/3695446> shift-down-arrow on last line of editable text should select to end of document
67         
68         Detect when current position is on first or last line and move to the
69         start or end of that line, respectively.
70
71         * khtml/xml/dom_position.cpp:
72         (DOM::Position::previousLinePosition)
73         (DOM::Position::nextLinePosition)
74
75 === Safari-156 ===
76
77 2004-08-12  Ken Kocienda  <kocienda@apple.com>
78
79         Reviewed by Darin
80
81         Some consolidation in style application code.
82
83         * khtml/editing/htmlediting_impl.cpp:
84         (khtml::StyleChange::StyleChange): Made this a full-on class and added a couple of 
85         members and a constructors to make a StyleChange from a CSSStyleDeclarationImpl, as
86         well as from a CSSStyleDeclarationImpl and a Position.
87         (khtml::StyleChange::init): Common init function for StyleChange constructors.
88         (khtml::StyleChange::currentlyHasStyle): Moved this here from ApplyStyleCommandImpl.
89         (khtml::CompositeEditCommandImpl::applyTypingStyle): Tweak to adjust to new StyleChange
90         interface.
91         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Ditto.
92         * khtml/editing/htmlediting_impl.h:
93         (khtml::StyleChange::StyleChange):
94         (khtml::StyleChange::cssStyle): New accessor.
95         (khtml::StyleChange::applyBold): Ditto.
96         (khtml::StyleChange::applyItalic): Ditto.
97         * khtml/xml/dom_position.cpp:
98         (DOM::Position::computedStyle): New helper.
99         * khtml/xml/dom_position.h: Ditto.
100
101 2004-08-12  Ken Kocienda  <kocienda@apple.com>
102
103         Reviewed by Darin
104
105         Fix for this bug:
106         <rdar://problem/3751098> HTML email has one set of SPAN tags per character in the message
107         
108         Progress on this bug:
109         <rdar://problem/3755562> Typing styles do not use same tag application conventions as font and color panel
110
111         * khtml/editing/htmlediting_impl.cpp:
112         (khtml::CompositeEditCommandImpl::applyTypingStyle): Name changed from createTypingStyleElement.
113         Also, interface changed to take the node to which the typing style is to be applied. 
114         This makes it easier to apply what may be up to three levels of nested tags to get the 
115         desired style (<B>, <I>, and <SPAN STYLE="">).
116         Also, Borrow some of the style change smarts from ApplyStyleCommandImpl to use bold and
117         italic tags for applying styles when that is apprpriate. This creates on opportunity to
118         factor the code to do this so that this function and the ApplyStyleCommandImpl class can
119         share the implementation. I will follow up with a change to do that after landing this
120         change. Some future code factoring could be done here to bring together some similar code
121         into one place.
122         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Add comment about code factoring work.
123         (khtml::ApplyStyleCommandImpl::computeStyleChange): StyleChange struct no longer a member of the
124         ApplyStyleCommandImpl class. CompositeEditCommandImpl needs it now in its applyTypingStyle()
125         function.
126         (khtml::InputNewlineCommandImpl::doApply): Pass along node to style to applyTypingStyle.
127         (khtml::InputTextCommandImpl::prepareForTextInsertion): Ditto.
128         * khtml/editing/htmlediting_impl.h:
129         (khtml::StyleChange::StyleChange): Pull this struct out of ApplyStyleCommandImpl so 
130         CompositeEditCommandImpl can use it.
131         * khtml/khtml_part.cpp:
132         (KHTMLPart::notifySelectionChanged): Always clear typing style when the selection
133         changes, not only when closing typing. This fixes 3751098.
134         
135         These three tests actually had results that treated the buggy behavior as correct!
136         
137         * layout-tests/editing/style/style-3681552-fix-001-expected.txt
138         * layout-tests/editing/style/style-3681552-fix-002-expected.txt
139         * layout-tests/editing/style/typing-style-002-expected.txt
140
141 2004-08-12  Darin Adler  <darin@apple.com>
142
143         Reviewed by Ken.
144
145         - fixed <rdar://problem/3740485> Repro crash involving replacing content that includes form field
146
147         * kwq/KWQLineEdit.mm: (QLineEdit::selectAll): Since this function calls selectText: which has a side
148         effect of making the text field be first responder, call to bridge first to make it first responder.
149         The bridge version lets WebHTMLView know we are changing the responder, avoiding some unpleasantness
150         because it sets the "changing focus programmatically" flag. Without that flag set, we were getting
151         an additional setFocusNode(0) call, which is unnecessary and incorrect.
152
153 2004-08-12  Darin Adler  <darin@apple.com>
154
155         Reviewed by Ken.
156
157         - fixed <rdar://problem/3758756> copying text selected with down arrow results in all text to end of document
158
159         * khtml/xml/dom2_rangeimpl.h: Make startNode and pastEndNode public.
160         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::pastEndNode): Fix bug where this would return
161         one node too far in the case where the end container was not a text node.
162
163         * khtml/xml/dom_nodeimpl.cpp:
164         (NodeImpl::recursive_toHTMLWithOptions): Rewrite loop, using startNode and pastEndNode,
165         to fix bug where it would run past the end node, including too many nodes in the generated
166         HTML. Nice side benefit: easier to read the code.
167
168 2004-08-11  Chris Blumenberg  <cblu@apple.com>
169
170         Fixed: <rdar://problem/3758216> PARENTAL: buttons on parental controls page only work once
171
172         Reviewed by john.
173
174         * kwq/KWQKHTMLPart.mm:
175         (KWQKHTMLPart::submitForm): prevent a form from being submitted more than once only if it uses a scheme of http or https
176
177 2004-08-11  Darin Adler  <darin@apple.com>
178
179         Reviewed by Ken.
180
181         - fixed <rdar://problem/3715878> 8A162: connect.apple.com password field showed in cleartext
182
183         * kwq/KWQTextField.mm: (-[KWQSecureTextField textDidEndEditing:]):
184         Enhanced workaround for shifting focus from one secure text field to another so that it works
185         even for the case of shifting focus from a secure text field back to itself.
186
187 2004-08-11  Ken Kocienda  <kocienda@apple.com>
188
189         Reviewed by me
190
191         Missed adding this file before.
192
193         * kwq/KWQTextUtilities.mm: Added.
194         (KWQFindNextWordFromIndex):
195
196 2004-08-11  Ken Kocienda  <kocienda@apple.com>
197
198         Reviewed by Trey
199
200         Efficiency improvements on string manipulations in these two new function
201         implementations. Use the versions of QString append/prepend that take
202         (QChar *c, uint length) instead of creating new strings each time.
203
204         * khtml/xml/dom_position.cpp:
205         (DOM::Position::previousWordPosition): Changed, as described above.
206         (DOM::Position::nextWordPosition): Ditto.
207
208 2004-08-11  Ken Kocienda  <kocienda@apple.com>
209
210         Reviewed by Darin
211
212         Fix for this bug:
213         <rdar://problem/3675812> Moving a word at a time does not use the correct conception of "word"
214         
215         I have implemented versions of previousWordPosition and nextWordPosition that are now
216         different than previousWordBoundary and nextWordBoundary. The behavior of the new
217         functions attempts to match what Cocoa does as closely as it can. Let the bug filing begin! 
218
219         * WebCore.pbproj/project.pbxproj: Added KWQTextUtilities.mm
220         * khtml/misc/helper.cpp:
221         (khtml::nextWordFromIndex): Glue to call through to KWQFindNextWordFromIndex.
222         * khtml/misc/helper.h: Declare the function above.
223         * khtml/misc/khtml_text_operations.cpp: Added SimplifiedBackwardsTextIterator class.
224         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator): New
225         (khtml::SimplifiedBackwardsTextIterator::advance): Ditto.
226         (khtml::SimplifiedBackwardsTextIterator::handleTextNode): Ditto.
227         (khtml::SimplifiedBackwardsTextIterator::handleReplacedElement): Ditto.
228         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode): Ditto.
229         (khtml::SimplifiedBackwardsTextIterator::exitNode): Ditto.
230         (khtml::SimplifiedBackwardsTextIterator::emitCharacter): Ditto.
231         (khtml::SimplifiedBackwardsTextIterator::range): Ditto.
232         * khtml/misc/khtml_text_operations.h:
233         (khtml::SimplifiedBackwardsTextIterator::atEnd): Ditto.
234         (khtml::SimplifiedBackwardsTextIterator::length): Ditto.
235         (khtml::SimplifiedBackwardsTextIterator::characters): Ditto.
236         * khtml/xml/dom_position.cpp:
237         (DOM::Position::previousWordBoundary): Updated to gather appropriate text and call through to
238         AppKit to perform the same calculations NSText uses.
239         (DOM::Position::nextWordBoundary): Ditto.
240         (DOM::Position::previousWordPosition): Unrelated change to fix case where the function could get "stuck".
241         (DOM::Position::nextWordPosition): Ditto
242         (DOM::Position::equivalentDeepPosition): Changed to look backwards if the position's offset is equal
243         to the number of child nodes it has. This handles more cases correctly, like when the position is
244         gives as one beyond the end of a document element's last child.
245         * kwq/KWQTextUtilities.h: Declared KWQFindNextWordFromIndex.
246         * kwq/KWQTextUtilities.mm: Added.
247         (KWQFindNextWordFromIndex): New function.
248
249 2004-08-11  Ken Kocienda  <kocienda@apple.com>
250
251         Reviewed by John
252
253         Fix for this bug:
254         
255         <rdar://problem/3732702> crash in CSSComputedStyleDeclarationImpl running devtools.com editing sample code
256
257         * khtml/khtml_part.cpp:
258         (KHTMLPart::selectionComputedStyle): Added a null check.
259
260 2004-08-10  Darin Adler  <darin@apple.com>
261
262         Reviewed by Trey.
263
264         - fixed <rdar://problem/3710123> Loading iframe that replaces content in the parent document crashes Safari
265
266         I fixed three problems:
267
268             1) script interpreter destroyed while it was interpreting scripts, caused random havoc
269             2) code trying to get to view after view was detached from part, caused nil-deref
270             3) signals sent to parent after child was no longer in the parent's frames list, caused nil-deref
271
272         Now the test page works fine. Hope the real sites do too.
273
274         * khtml/khtml_part.h: Add connectChild and disconnectChild helper functions (private).
275         * khtml/khtml_part.cpp:
276         (KHTMLPart::clear): Call disconnectChild on each frame as we detach it (see below).
277         (KHTMLPart::end): Ref the part at the start, and deref the part at the end, of this function.
278         Otherwise, we can end up destroying the part, and hence the interpreter, inside a script that
279         the interpreter itself is running.
280         (KHTMLPart::slotFinishedParsing): Add another check for a nil m_view, after the call to
281         checkCompleted.
282         (KHTMLPart::checkCompleted): Remove bogus if statement with empty body.
283         (KHTMLPart::processObjectRequest): Call disconnectChild to disconnect the child <-> parent signals of the
284         old child that the new one is replacing, and connectChild to connect the signals (nicer factoring).
285         (KHTMLPart::slotChildCompleted): Fixed up a confusing boolean if/expression to be simpler. Not related to
286         the bug fix, but an earlier version of the fix had changes in this function.
287         (KHTMLPart::connectChild): Added. Connects the appropriate signals for a child frame.
288         (KHTMLPart::disconnectChild): Added. Disconnects the same signals that connectChild connects.
289
290         * kwq/KWQKHTMLPart.mm: (KHTMLPart::frameDetached): Added a call to disconnectChild before removing the
291         child from the frames list.
292
293 2004-08-09  Maciej Stachowiak  <mjs@apple.com>
294
295         Reviewed by Trey.
296
297         WebCore part of:
298
299         - made basic marked text highlighting work to complete basic level of <rdar://problem/3704359> input method support not yet implemented for HTML editing
300
301         * kwq/WebCoreBridge.mm:
302         (-[WebCoreBridge setMarkedDOMRange:]): Added this new call to support storing
303         a marked range in WebCore. The provided DOMRange must start and end in the same
304         node, which must be a text node.
305         (-[WebCoreBridge markedDOMRange]): New call to get the marked range. 
306         (-[WebCoreBridge clearMarkedDOMRange]): New call to clear the marked range.
307         * kwq/WebCoreBridge.h: Prototype new methods.
308         * kwq/KWQKHTMLPart.mm:
309         (KWQKHTMLPart::markedRange): Implementation of WebCore call above.
310         (KWQKHTMLPart::setMarkedRange): Implementation of WebCore call above -
311         store the marked range, and repaint new and old nodes if needed.
312         (KWQKHTMLPart::clear): Clear marked range.
313         * kwq/KWQKHTMLPart.h: Prototype new methods.
314         * khtml/rendering/render_text.cpp:
315         (InlineTextBox::paintMarkedTextBackground): New method to paint the background
316         for marked text, modeled on paintSelection.
317         (RenderText::paint): Optionally handle painting marked text
318         background as well as selection background in the marked text
319         pass.
320         * khtml/rendering/render_text.h: Prototype new method.
321
322 2004-08-10  Darin Adler  <darin@apple.com>
323
324         Reviewed by Dave.
325
326         - switch PCRE to do UTF-16 directly instead of converting to/from UTF-8 for speed
327
328         * kwq/KWQRegExp.mm:
329         (QRegExp::KWQRegExpPrivate::compile): Null-terminate the pattern and pass it.
330         (QRegExp::match): Use the 16-bit string directly, no need to convert to UTF-8.
331
332 2004-08-10  Darin Adler  <darin@apple.com>
333
334         Reviewed by Ken.
335
336         - minor cleanup
337
338         * khtml/editing/jsediting.cpp: Capitalize command names to match Windows.
339         The dictionary lookup is case insensitive.
340
341         * kwq/KWQFoundationExtras.h: Remove inaccurate comment.
342
343 2004-08-10  Trey Matteson  <trey@apple.com>
344
345         3757094 - crash spell checking after a paste
346
347         Reviewed by Ken
348
349         * khtml/rendering/render_text.cpp:
350         (InlineTextBox::paintSelection):  Add nil check.
351
352 2004-08-09  Trey Matteson  <trey@apple.com>
353
354         3756195 - spell checking leaves misspelling marker behind after bad word is deleted
355         ... and other follow-on spell check fixes
356
357         Reviewed by Ken
358
359         * khtml/rendering/render_text.cpp:
360         (InlineTextBox::paintMarker):  Close inspection shows we were drawing the 
361         misspelling marker one pixel lower than AK, and one pixel outside the selection
362         rect we draw, in the case of Times-16.  So move it up one.  Still not an exact
363         match for AK, but less bad.
364         * khtml/xml/dom_docimpl.cpp:
365         (DocumentImpl::removeMarker):  Track whether we make any changes, so we only
366         repaint if something actually changed.
367         (DocumentImpl::removeAllMarkers):  New utility.
368         (DocumentImpl::removeAllMarkers):  Use clear() instead of (errant)
369         hand-rolled loop to empty array.
370         (DocumentImpl::shiftMarkers):  Track whether we make any changes, so we only
371         repaint if something actually changed.
372         * khtml/xml/dom_docimpl.h:
373         * khtml/xml/dom_textimpl.cpp:
374         (CharacterDataImpl::deleteData):  Along with shifting existing markers around,
375         remove any markers in the deleted range.  Fixes 3756195.
376         (CharacterDataImpl::replaceData):  Ditto for the replaced range.
377         * kwq/KWQKHTMLPart.mm:
378         (KWQKHTMLPart::updateSpellChecking): comment
379
380 2004-08-08  Trey Matteson  <trey@apple.com>
381
382         3745023 - Safari crashes trying to access anchor while downloading
383
384         I bet this is behind a few other crashers as well.  In this bug the start of the
385         download leaves a KWQPageState hanging around, and when that is freed it damages
386         the part and view.  If you're still using that page, you're dead.
387
388         The fix is to properly invalidate the PageState when we receive an error before
389         reaching WebFrameCommitted state.  Normally this happens when a page is reheated
390         from the PageState, but in this case we never manage to leave the page to begin
391         with, although we've already created the PageState.
392
393         Other errors besides the synthetic one download generates would have caused similar
394         crashing.  Another example would be clicking on a second link before the load
395         caused by clicking on the first link reached committed state.
396
397         Reviewed by Richard
398
399         * kwq/WebCoreBridge.h:
400         * kwq/WebCoreBridge.mm:
401         (-[WebCoreBridge didNotOpenURL:pageCache:]):  Invalidate the pageCache state
402         when a load doesn't get off the ground.
403
404 2004-08-06  Ken Kocienda  <kocienda@apple.com>
405
406         Reviewed by Maciej
407
408         Finish off spellchecking support to HTML editing. Includes work to
409         enable continuous spellchecking.
410
411         * khtml/editing/htmlediting_impl.cpp:
412         (khtml::EditCommandImpl::markMisspellingsInSelection): Basically, a one-liner convenience to
413         make the call over to the KWQKHTMLPart.
414         (khtml::ReplaceSelectionCommandImpl::doApply): Did some rearranging of code so that the
415         inserted content can be spell-checked. The function is basically the same, except for
416         the addition of calls to markMisspellingsInSelection.
417         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): New function. Takes a look at the
418         selection that results after typing and determines whether it needs to spellcheck. 
419         Since the word containing the current selection is never marked, this does a check to
420         see if typing made a new word that is not in the current selection. Basically, you
421         get this by being at the end of a word and typing a space.
422         (khtml::TypingCommandImpl::typingAddedToOpenCommand): Call markMisspellingsAfterTyping.
423         * khtml/editing/htmlediting_impl.h: Add new function declarations.
424          * khtml/khtml_part.cpp:
425         (KHTMLPart::setSelection): Since spell checks are updated when the selection changes, 
426         and every selection change passes through here, this is a good place to put the call 
427         to the spellchecker.
428         * khtml/rendering/render_text.cpp:
429         (InlineTextBox::paintMarker): Remove temporary misspelling line drawing code. Replace with
430         call that does AppKit-style drawing. Fix up some comments.
431         * khtml/xml/dom_docimpl.cpp:
432         (DocumentImpl::addMarker): Repaint the node that had the marker added. This makes it show 
433         up on setting it.
434         (DocumentImpl::removeMarker): Ditto.
435         (DocumentImpl::removeAllMarkers): New function. Convenience for clearing all markers.
436         Used when not in continuous spellchecking mode.
437         (DocumentImpl::shiftMarkers): Moves markers in response to changes in a node's contents.
438         This shifts the marker offsets by a given amount. This keeps the markers in the right
439         place when a user types in a node with markers already set on it.
440         * khtml/xml/dom_docimpl.h: Added new functions. Removed unnecessary enum qualifier from some
441         declarations.
442         * khtml/xml/dom_position.cpp:
443         (DOM::Position::previousWordBoundary): This function was susceptible to endless loops...and
444         needlessly so. Basically, if the current position is at a word boundary, run the code again
445         to find the previous word boundary.
446         (DOM::Position::nextWordBoundary): Same as above, but for next word boundary.
447         * khtml/xml/dom_textimpl.cpp:
448         (CharacterDataImpl::setData): Call shiftMarkers to update markers when this node changes.
449         (CharacterDataImpl::insertData): Ditto.
450         (CharacterDataImpl::deleteData): Ditto.
451         (CharacterDataImpl::replaceData): Ditto.
452         * kwq/KWQKHTMLPart.h:
453         * kwq/KWQKHTMLPart.mm:
454         (KWQKHTMLPart::advanceToNextMisspelling):
455         (KWQKHTMLPart::markMisspellingsInSelection):
456         (KWQKHTMLPart::updateSpellChecking):
457         (KWQKHTMLPart::respondToChangedSelection):
458         * kwq/KWQPainter.h:
459         * kwq/KWQPainter.mm:
460         (QPainter::drawLineForMisspelling): New function. Call over to WebKit to do the drawing.
461         * kwq/WebCoreBridge.h:
462         * kwq/WebCoreBridge.mm:
463         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Pass markMisspellings flag to
464         setSelection call. 
465         * kwq/WebCoreTextRenderer.h:
466
467 === Safari-155 ===
468
469 2004-08-05  David Hyatt  <hyatt@apple.com>
470
471         Fix for 3752542, stack overflow that crashes Safari at www.dr.dk.  This bug is a regression caused by a fix that
472         attempted to repair <caption> behavior to make it behave like Panther.  This fix was incorrect, and in addition
473         even our <caption> behavior on Panther was incorrect.
474
475         The patch that fixes this bug also makes <caption> handling work when <caption>s are contained inside a <td>, a <tr>,
476         a <th>, or various table section tags (<tbody>, <tfoot>, <thead>).  The <caption> is pulled out and inserted just before
477         the relevant ancestor table section.  This behavior matches other browsers.
478         
479         Reviewed by mjs
480
481         * khtml/html/htmlparser.cpp:
482         (KHTMLParser::insertNode):
483
484 2004-08-04  David Hyatt  <hyatt@apple.com>
485
486         The top-level XSL sheet is now loaded and shows up in the activity window.  It is not yet parsed.
487         
488         Reviewed by kocienda
489
490         * WebCore.pbproj/project.pbxproj:
491         * khtml/css/css_base.h:
492         (DOM::StyleBaseImpl::isXSLStyleSheet):
493         * khtml/css/css_stylesheetimpl.cpp:
494         (CSSStyleSheetImpl::CSSStyleSheetImpl):
495         * khtml/css/css_stylesheetimpl.h:
496         (DOM::StyleSheetImpl::isLoading):
497         * khtml/misc/loader.cpp:
498         * khtml/xml/dom_xmlimpl.cpp:
499         (DOM::ProcessingInstructionImpl::ProcessingInstructionImpl):
500         (DOM::ProcessingInstructionImpl::checkStyleSheet):
501         (DOM::ProcessingInstructionImpl::sheet):
502         (DOM::ProcessingInstructionImpl::isLoading):
503         (DOM::ProcessingInstructionImpl::setStyleSheet):
504         * khtml/xml/dom_xmlimpl.h:
505
506 2004-08-04  David Hyatt  <hyatt@apple.com>
507
508         Add XSL Stylesheets to the WebCore cache.
509         
510         Reviewed by kocienda
511
512         * khtml/misc/loader.cpp:
513         (CachedXSLStyleSheet::CachedXSLStyleSheet):
514         (CachedXSLStyleSheet::ref):
515         (CachedXSLStyleSheet::deref):
516         (CachedXSLStyleSheet::data):
517         (CachedXSLStyleSheet::checkNotify):
518         (CachedXSLStyleSheet::error):
519         (DocLoader::requestXSLStyleSheet):
520         (Cache::requestXSLStyleSheet):
521         (Cache::getStatistics):
522         * khtml/misc/loader.h:
523         (khtml::CachedObject::):
524         (khtml::CachedXSLStyleSheet::sheet):
525         (khtml::CachedXSLStyleSheet::schedule):
526
527 2004-08-03  Ken Kocienda  <kocienda@apple.com>
528
529         Reviewed by Hyatt
530
531         Changes to improve our handling of object tags during editing, including
532         fixing this bug:
533         
534         <rdar://problem/3744533> Problem editing <OBJECT> elements displayed by WebPlugIns 
535
536         Part of the fix for this bug involves removing the close() function from render objects.
537         It was decided that this code was no longer needed, as the work it did could be moved
538         to other, more modern, places.
539
540         Fixed this bug:
541         
542         <rdar://problem/3748537> crash due to nil node passed into parentNode in computeTypingStyle deleting text
543
544         Finally, I filed and fixed this bug I discovered while fixing the one above:
545         
546         <rdar://problem/3749338> Select-all + delete leaves editing view without blinking caret
547
548         * khtml/editing/htmlediting_impl.cpp:
549         (khtml::DeleteSelectionCommandImpl::computeTypingStyle): Fix for 3748537. Put in some more null
550         checks. Bail, returning 0 for typing style if any null checks yield a null.
551         (khtml::DeleteSelectionCommandImpl::doApply): Fix for 3749338. A removeNodeAndPrune call may wind
552         up deleting the node where we calculated that we wanted to put the selection after deleting.
553         If this happens, move this ending selection to a sensible alternative.
554         (khtml::RemoveNodeAndPruneCommandImpl::doApply): Call previousNodeConsideringAtomicNodes instead 
555         of traversePreviousNode when doing the prune.
556         * khtml/html/html_objectimpl.cpp:
557         (HTMLObjectElementImpl::attach): Part of the fix for 3744533.
558         (HTMLObjectElementImpl::recalcStyle): Change old strcmp check for type of renderer to be a call
559         to canRenderImageType.
560         (HTMLObjectElementImpl::childrenChanged): New function. Helps to keep object tags up to date 
561         as their children change. This also will help to make object tags respond properly to having their
562         params changed by DOM calls.
563         * khtml/html/html_objectimpl.h: Cosmetic change.
564         * khtml/html/htmlparser.cpp:
565         (KHTMLParser::insertNode): Remove call to obsolete closeRenderer() function.
566         (KHTMLParser::popOneBlock): Ditto.
567         * khtml/rendering/render_block.cpp:
568         (khtml::RenderBlock::makeChildrenNonInline): Remove call to obsolete close() function.
569         * khtml/rendering/render_container.cpp:
570         (RenderContainer::updatePseudoChild): Ditto.
571         * khtml/rendering/render_form.cpp: Remove obsolete close() function.
572         * khtml/rendering/render_form.h: Ditto.
573         * khtml/rendering/render_frames.cpp: Ditto.
574         * khtml/rendering/render_frames.h: Ditto.
575         * khtml/rendering/render_inline.cpp:
576         (RenderInline::splitFlow): Remove calls to obsolete close() function.
577         * khtml/rendering/render_object.h: Remove obsolete close() function.
578         * khtml/rendering/render_table.cpp:
579         (RenderTableCell::layout): Ditto.
580         * khtml/rendering/render_table.h: Ditto.
581         * khtml/xml/dom_docimpl.cpp:
582         (DocumentImpl::closeInternal): Remove call to obsolete close() function.
583         * khtml/xml/dom_nodeimpl.cpp: Remove obsolete m_rendererNeedsClose initialization.
584         (NodeImpl::NodeImpl): Remove obsolete closeRenderer() function.
585         (NodeImpl::attach): Remove call to obsolete close() function.
586         (NodeImpl::isAtomicNode): New function. Helps to fix 3744533. Determines if a node should
587         be treated as an atomic node for the purposes of editing.
588         (NodeImpl::previousNodeConsideringAtomicNodes): New helper to traverse tree taking atomic nodes
589         into account.
590         (NodeImpl::nextNodeConsideringAtomicNodes): Ditto.
591         (NodeImpl::previousLeafNode): Now calls nextNodeConsideringAtomicNodes to iterate. This helps to 
592         prevent deleting PARAM tag portions of object tags erroneously.
593         (NodeImpl::nextLeafNode): Ditto.
594         * khtml/xml/dom_nodeimpl.h: Removed m_rendererNeedsClose bit. Added declarations for new functions.
595         * khtml/xml/dom_position.cpp:
596         (DOM::Position::equivalentDeepPosition): Now takes atomic nodes into account as it drills down into the
597         tree.
598         * khtml/xml/xml_tokenizer.cpp:
599         (khtml::XMLTokenizer::endElement): Remove call to obsolete closeRenderer() function.
600
601 2004-08-03  David Hyatt  <hyatt@apple.com>
602
603         Add the deprecated text/xsl MIME type (introduced by Internet Explorer 5) as an acceptable MIME type for XML
604         documents.
605         
606         Reviewed by john
607
608         * khtml/ecma/xmlhttprequest.cpp:
609         (KJS::XMLHttpRequest::getValueProperty):
610         * khtml/khtml_part.cpp:
611         (KHTMLPart::begin):
612         * khtml/misc/loader.cpp:
613         (CachedXBLDocument::CachedXBLDocument):
614
615 2004-08-03  Maciej Stachowiak  <mjs@apple.com>
616
617         Reviewed by Ken.
618
619         - remove assertions that asserted text is non-empty, just avoid
620         doing anything for the empty case; this is needed because input
621         methods like to insert empty text in various cases.
622
623         * khtml/editing/htmlediting_impl.cpp:
624         (khtml::InsertTextCommandImpl::InsertTextCommandImpl):
625         (khtml::InsertTextCommandImpl::doApply):
626         (khtml::InsertTextCommandImpl::doUnapply):
627
628 2004-08-03  Darin Adler  <darin@apple.com>
629
630         Reviewed by Ken.
631
632         - fixed <rdar://problem/3740937> ER: A way to turn a DOMRange into text (equivalent of -innerText)
633
634         * khtml/xml/dom2_rangeimpl.h: Added text function. Like innerText, but on a range.
635         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::text): Added.
636
637         * kwq/DOM.mm: (-[DOMRange _text]): Added. Calls DOM::RangeImpl::text.
638         * kwq/DOMPrivate.h: Added.
639
640         * WebCore.pbproj/project.pbxproj: Added DOMPrivate.h, an internal header (private in WebKit, internal here).
641
642 2004-08-02  John Sullivan  <sullivan@apple.com>
643
644         Reviewed by Darin.
645         
646         WebCore part of fix for <rdar://problem/3631868> NSToolbar adoption: 
647         Tab key should cycle around toolbar and page content
648
649         * kwq/WebCoreBridge.mm:
650         (-[WebCoreBridge nextKeyViewInsideWebFrameViews]):
651         Made this method start looking from the current focus node. This won't
652         affect any existing callers because there were no existing callers.
653         (-[WebCoreBridge previousKeyViewInsideWebFrameViews]):
654         ditto
655
656 2004-08-02  David Hyatt  <hyatt@apple.com>
657
658         Create a #define for XSLT support that at the moment will only be enabled on Tiger.
659         
660         Reviewed by kocienda
661
662         * WebCorePrefix.h:
663
664 2004-08-02  Ken Kocienda  <kocienda@apple.com>
665
666         Reviewed by Hyatt
667
668         Fix for this bug:
669         
670         <rdar://problem/3747945> Deleting replaced element can cause crash
671
672         * khtml/xml/dom_selection.cpp:
673         (DOM::Selection::layoutCaret): The crux of the problem is that
674         the caret drawing code tries to draw the caret at the image
675         offset after it has been removed from the document. So, make
676         sure the start node for the selection is in the document before
677         trying to lay out the caret using that node.
678
679 2004-07-31  Ken Kocienda  <kocienda@apple.com>
680
681         Reviewed by John
682
683         <rdar://problem/3745498> HTMLCompose: Can't edit new empty message (and typing eventually crashes)
684         <rdar://problem/3746408> HTMLCompose: cannot type in message body of new messages (and tabbing causes a crash.)
685         
686         * kwq/KWQKHTMLPart.mm:
687         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Add in some smarts to look around for
688         a good place to put the caret if focus is turning "on", the part is contentEditable,
689         and it does not currently have a selection. This has the effect of flashing the caret 
690         in a contentEditable view automatically without requiring the programmer to set a 
691         selection explicitly. This also fixes the bug listed above. Both are cases where the
692         bad behavior happened since the editing code tried to process input without an active 
693         selection. I always took the extra step of setting the selection explicitly when
694         opening new windows in programs like Blot, but it seems silly to require developers to
695         do this in general. With this patch, they no longer need to.
696
697 2004-07-30  Ken Kocienda  <kocienda@apple.com>
698
699         Reviewed by John
700
701         Fix for this bug:
702         
703         <rdar://problem/3745498> HTMLCompose: Can't edit new empty message (and typing eventually crashes)
704
705         * khtml/xml/dom_selection.cpp:
706         (DOM::Selection::layoutCaret): Don't bail when the start position of the selection is not in rendered
707         content. The validate() bottleneck function will do all it can to make sure that the start is
708         moved to rendered content if at all possible before this function runs. If no rendered position can
709         be found, like in the case of an empty body element, we still want to flash the caret there.
710         (DOM::Selection::validate): Look for rendered positions for the base and extent, but save off the
711         base before making this move, and set the selection to the enclosing block flow element of this
712         original base if no rendered positions can be found. This has the effect of flashing the caret 
713         someplace in an editable block, even if it does not contain any rendered content.
714
715 2004-07-30  Ken Kocienda  <kocienda@apple.com>
716
717         Reviewed by John
718
719         Fix a large number of editing layout test regressions.
720
721         * khtml/misc/khtml_text_operations.cpp:
722         (khtml::TextIterator::TextIterator): Use a new way to compute the end offset of a node for
723         purposes of text iteration. The end offset is either child count of a node with children,
724         or the maxOffset() of a node that does not.
725         * khtml/xml/dom_nodeimpl.cpp: Remove maxOffset() implementation from NodeBaseImpl. This 
726         conflicted with the usage of this function that is needed for editing.
727         * khtml/xml/dom_nodeimpl.h: Ditto.
728
729 2004-07-30  Trey Matteson  <trey@apple.com>
730
731         Next steps for spell checking:  We have data structures for the marked pieces of
732         text and the smarts to draw them (although at this point, they just get a green
733         underline instead of using the real AppKit pattern.)
734
735         Note we don't call this code outside of development, since at this point I suspect
736         it could be made to crash by mixing spelling and editing. 
737
738         Reviewed by Ken.
739
740         * khtml/rendering/render_text.cpp:
741         (InlineTextBox::paintMarker):  Paint one marker's intersection with a text run
742         (RenderText::paint):  Find intersections of all markers and runs, call paintMarker
743         * khtml/rendering/render_text.h:
744         * khtml/xml/dom_docimpl.cpp:
745         (DocumentImpl::addMarker):  Adds a marker to a DOM Range.
746         (DocumentImpl::removeMarker):  Removes a marker from a DOM Range.
747         (DocumentImpl::addMarker):  Adds a marker to a single DOM Node, merging previous
748         markers as needed.
749         (DocumentImpl::removeMarker):  Removes a marker from a single DOM Node, breaking
750         up previous markers as needed.
751         (DocumentImpl::markersForNode):  Return markers for a Node.
752         * khtml/xml/dom_docimpl.h:
753         (DOM::DocumentMarker::):  New marker struct
754         (DOM::DocumentMarker::operator == ):
755         (DOM::DocumentMarker::operator != ):
756         * kwq/KWQKHTMLPart.mm:
757         (KWQKHTMLPart::advanceToNextMisspelling):  Mark misspelled ranges when we find them.
758         Debug only for now.
759
760 2004-07-29  Maciej Stachowiak  <mjs@apple.com>
761
762         Reviewed by Darin.
763
764         <rdar://problem/3745808> Seed: WebKit: Table's caption broken
765         
766         * khtml/html/htmlparser.cpp:
767         (KHTMLParser::insertNode): When a caption appears in an illegal
768         place in a table, pop blocks until we hit a place where it's
769         allowed.
770
771 === Safari-154 ===
772
773 2004-07-29  Darin Adler  <darin@apple.com>
774
775         Reviewed by Ken.
776
777         - added constants for motion across entire document for use in operations like
778           move to beginning of document
779
780         * khtml/xml/dom_selection.h: Added DOCUMENT to ETextGranularity.
781         * khtml/xml/dom_selection.cpp:
782         (DOM::Selection::modifyExtendingRightForward): Added case for DOCUMENT.
783         (DOM::Selection::modifyMovingRightForward): Added case for DOCUMENT.
784         (DOM::Selection::modifyExtendingLeftBackward): Added case for DOCUMENT.
785         (DOM::Selection::modifyMovingLeftBackward): Added case for DOCUMENT.
786         (DOM::Selection::validate): Changed if statements into switch statement,
787         added case for DOCUMENT.
788
789         * kwq/WebCoreBridge.h: Added WebCoreBridge to WebSelectionGranularity.
790
791 2004-07-28  Trey Matteson  <trey@apple.com>
792
793         Small refinement of last checkin.  The text iterators now return reasonable values
794         for range() when atEnd, which gets rid of special cases and pitfalls in the client.
795
796         Reviewed by Ken.
797
798         * khtml/misc/khtml_text_operations.cpp:
799         (khtml::TextIterator::TextIterator):  Set endOffset to a valid value instead of
800         using LONG_MAX.
801         (khtml::TextIterator::range):  Implement when atEnd.
802         (khtml::CharacterIterator::range):  Don't massage result when atEnd.
803         (khtml::WordAwareIterator::WordAwareIterator):  Now that this is fixed, we no
804         longer need this special case.
805         (khtml::WordAwareIterator::advance):  Always set range, even when atEnd, now that
806         TextIterator::range() always works.
807         * khtml/xml/dom_nodeimpl.cpp:
808         (NodeImpl::childNodeCount):  Made const
809         (NodeBaseImpl::maxOffset):  Add missing implementation
810         * khtml/xml/dom_nodeimpl.h:
811         * kwq/KWQKHTMLPart.mm:
812         (KWQKHTMLPart::advanceToNextMisspelling):  Get rid of special cases, always call
813         range on our iterator even when it is atEnd.
814
815 2004-07-28  Maciej Stachowiak  <mjs@apple.com>
816
817         Reviewed by Trey.
818
819         <rdar://problem/3678534> controls on page at http://help.sap.com don't work properly
820
821         To fix this I implemented the various JavaScript BarInfo properties in JavaScript.
822         
823         * khtml/ecma/kjs_window.cpp:
824         (Window::Window):
825         (Window::locationbar):
826         (Window::menubar):
827         (Window::personalbar):
828         (Window::statusbar):
829         (Window::toolbar):
830         (Window::scrollbars):
831         (Window::mark):
832         (Window::get):
833         (SelectionFunc::tryCall):
834         (BarInfo::BarInfo):
835         (BarInfo::~BarInfo):
836         (BarInfo::get):
837         (BarInfo::put):
838         * khtml/ecma/kjs_window.h:
839         (KJS::Window::):
840         (KJS::BarInfo::):
841         (KJS::BarInfo::part):
842         (KJS::BarInfo::classInfo):
843         * khtml/ecma/kjs_window.lut.h:
844         (KJS::):
845         * kwq/KWQKHTMLPart.h:
846         * kwq/KWQKHTMLPart.mm:
847         (KWQKHTMLPart::locationbarVisible):
848         (KWQKHTMLPart::menubarVisible):
849         (KWQKHTMLPart::personalbarVisible):
850         (KWQKHTMLPart::scrollbarsVisible):
851         (KWQKHTMLPart::statusbarVisible):
852         (KWQKHTMLPart::toolbarVisible):
853
854 2004-07-28  Ken Kocienda  <kocienda@apple.com>
855
856         Reviewed by me
857         
858         Added more layout tests.
859
860         * layout-tests/editing/style/style-3681552-fix-001-expected.txt: Added.
861         * layout-tests/editing/style/style-3681552-fix-001.html: Added.
862         * layout-tests/editing/style/style-3681552-fix-002-expected.txt: Added.
863         * layout-tests/editing/style/style-3681552-fix-002.html: Added.
864         * layout-tests/editing/style/style-3690704-fix-expected.txt: Added.
865         * layout-tests/editing/style/style-3690704-fix.html: Added.
866         * layout-tests/editing/style/typing-style-001-expected.txt: Added.
867         * layout-tests/editing/style/typing-style-001.html: Added.
868         * layout-tests/editing/style/typing-style-002-expected.txt: Added.
869         * layout-tests/editing/style/typing-style-002.html: Added.
870
871 2004-07-28  Ken Kocienda  <kocienda@apple.com>
872
873         Reviewed by me
874         
875         Added some layout tests.
876
877         * layout-tests/editing/selection/select-all-001-expected.txt: Added.
878         * layout-tests/editing/selection/select-all-001.html: Added.
879         * layout-tests/editing/selection/select-all-002-expected.txt: Added.
880         * layout-tests/editing/selection/select-all-002.html: Added.
881         * layout-tests/editing/selection/select-all-003-expected.txt: Added.
882         * layout-tests/editing/selection/select-all-003.html: Added.
883
884 2004-07-28  Trey Matteson  <trey@apple.com>
885
886         Spellchecking, Part I.  Basic spellcheck is working.  Spelling panel is hooked up.
887
888         At this point, no special marking of misspellings, no grammar check, no context
889         menu integration, no "check continually" mode.
890
891         Much of the TextIterator and CharacterIterator interface got published outside
892         of khtml_text_operations.cpp, with a little API rationalizing.
893
894         Reviewed by Ken.
895
896         * khtml/misc/khtml_text_operations.cpp:
897         (khtml::TextIterator::range):  Name changes.
898         (khtml::CharacterIterator::CharacterIterator):  Ditto.
899         (khtml::CharacterIterator::range):  Ditto.
900         (khtml::CharacterIterator::advance):  Ditto.
901         (khtml::CharacterIterator::string):  New method to consume chars into a string.
902         (khtml::WordAwareIterator::WordAwareIterator):  New class that iterates over
903         the text respecting word boundaries.
904         (khtml::WordAwareIterator::advance):
905         (khtml::WordAwareIterator::length):
906         (khtml::WordAwareIterator::characters):
907         (khtml::plainText):  Name changes.
908         (khtml::findPlainText):  Ditto.
909
910         API moved from cpp to header file.
911         * khtml/misc/khtml_text_operations.h:
912         (khtml::TextIterator::atEnd):
913         (khtml::TextIterator::length):
914         (khtml::TextIterator::characters):
915         (khtml::CharacterIterator::atBreak):
916         (khtml::CharacterIterator::atEnd):
917         (khtml::CharacterIterator::length):
918         (khtml::CharacterIterator::characters):
919         (khtml::CharacterIterator::characterOffset):
920         (khtml::WordAwareIterator::atEnd):
921         (khtml::WordAwareIterator::range):
922
923         * khtml/xml/dom_position.cpp:
924         (DOM::Position::previousWordBoundary):  New name for the old routine.  This routines semantics
925         match the current behavior of this code.
926         (DOM::Position::nextWordBoundary):  Ditto.
927         (DOM::Position::previousWordPosition):  Call old code with the new name.  When we fix
928         word advancement, this routine will have its own impl.
929         (DOM::Position::nextWordPosition):  Ditto.
930         * khtml/xml/dom_position.h:
931         * khtml/xml/dom_selection.h:
932         (DOM::Selection::rangeStart):  New convenience methods
933         (DOM::Selection::rangeEnd):
934         * kwq/KWQKHTMLPart.h:
935         * kwq/KWQKHTMLPart.mm:
936         (KWQKHTMLPart::findString):  Ensure we use range-compatible positions.
937         (KWQKHTMLPart::advanceToNextMisspelling):  Brand new.
938         * kwq/WebCoreBridge.h:
939         * kwq/WebCoreBridge.mm:
940         (-[WebCoreBridge advanceToNextMisspelling]):  Typical bridge glue.
941
942 2004-07-28  Ken Kocienda  <kocienda@apple.com>
943
944         Reviewed by Maciej
945         
946         Fixed this bug:
947         
948         <rdar://problem/3690704> marking partly bold text italic across blocks wrongly extends the bold section
949
950         * khtml/editing/htmlediting_impl.cpp:
951         (khtml::ApplyStyleCommandImpl::doApply): Fixed loop that gathers up groups of nodes to
952         pass off to the function that applies styles. While this is meant to be conservative in
953         order to leave the DOM well-formed in all cases, it contained an error where the set
954         of nodes to be styled together erroneously could include a node that was meant for 
955         the next set. Fixed.
956         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Unrelated change to remove DOM:: scope
957         resolution qualifier. Unneeded here.
958
959 2004-07-28  Darin Adler  <darin@apple.com>
960
961         Reviewed by Trey.
962
963         - fixed <rdar://problem/3658471> REGRESSION: Node.appendChild( ) fails when parent already contains that child
964
965         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::isAncestor): Restore the original meaning of this function.
966         It returns true if the parameter is an ancestor of this, but had been changed to return true if this
967         is an ancestor of the parameter. However, we do retain one change we made at the same time, which is
968         that it does not consider a node an ancestor of itself.
969
970         * khtml/editing/htmlediting_impl.cpp: (khtml::ApplyStyleCommandImpl::nodeFullySelected):
971         * khtml/xml/dom2_traversalimpl.cpp: (DOM::NodeIteratorImpl::notifyBeforeNodeRemoval):
972         Reverse parameters for callers who wanted the new meaning of isAncestor, with care to not use it in
973         any cases where the pointer might be 0.
974
975         * khtml/xml/dom_nodeimpl.h: Added const to the parameter to make things more symmetric and allow the
976         new uses to all compile.
977
978 2004-07-28  Ken Kocienda  <kocienda@apple.com>
979
980         Reviewed by Darin
981
982         Fix for this bug:
983         
984         <rdar://problem/3681552> html editing needs to preserve typing font when replacing selection
985
986         * khtml/css/css_valueimpl.cpp:
987         (CSSStyleDeclarationImpl::merge): New helper that merges styles together. Helpful for
988         dealing with typing styles.
989         * khtml/css/css_valueimpl.h:
990         * khtml/editing/htmlediting_impl.cpp:
991         (khtml::DeleteSelectionCommandImpl::computeTypingStyle): New helper that updates the
992         typing style based on the current selection. This is a convenient bottleneck for all
993         the code that needs to worry about typing style.
994         (khtml::DeleteSelectionCommandImpl::doApply): Update typing style before doing the delete.
995         (khtml::InputNewlineCommandImpl::doApply): No need to redeclare exceptionCode local.
996         Improve comments. 
997         (khtml::InputTextCommandImpl::prepareForTextInsertion): Remove unneeded complication when 
998         figuring out where to insert style node. Not even sure what I was trying to do here, but
999         it does not seem to be needed any more.
1000         (khtml::InputTextCommandImpl::execute): Remove unneeded comment.
1001         * khtml/editing/htmlediting_impl.h: Declare new computeTypingStyle helper.
1002         * khtml/khtml_part.cpp:
1003         (KHTMLPart::setCaretVisible): Call selectionLayoutChanged instead of notifySelectionChanged
1004         in this function. The selection did not change simply by calling this function, but it
1005         does need a layout.
1006         (KHTMLPart::notifySelectionChanged): Treat clearing the typing style much like closing typing,
1007         instead of clearing it unconditionally.
1008         (KHTMLPart::applyStyle): In the case where the current selection is a caret, merge the
1009         style being applied with any current typing style that already exists.
1010
1011 2004-07-28  Darin Adler  <darin@apple.com>
1012
1013         Reviewed by Ken.
1014
1015         - fixed <rdar://problem/3711080> REGRESSION (125-146): form fields have shrunk by 1 pixel, and now clip descenders
1016
1017         * kwq/KWQLineEdit.mm: (QLineEdit::sizeForCharacterWidth):
1018         Compute the size without ever calling cellSize. After talking with Andrew Platzer,
1019         we decided that hard-coding the size of the borders of a text field was the best
1020         way for WebCore to handle this.
1021
1022 2004-07-28  Darin Adler  <darin@apple.com>
1023
1024         Reviewed by Ken.
1025
1026         - fixed <rdar://problem/3743204> REGRESSION: crash at startribune.com in InlineBox::root()
1027
1028         * khtml/rendering/render_flow.cpp: (RenderFlow::dirtyLinesFromChangedChild):
1029         Added a check for nil.
1030
1031 2004-07-27  Darin Adler  <darin@apple.com>
1032
1033         Reviewed by Trey.
1034
1035         - fixed <rdar://problem/3743138> opaque colors come out of getComputedStyle as "rgba", transparent ones as "rgb"
1036
1037         * khtml/css/css_valueimpl.cpp: (CSSPrimitiveValueImpl::cssText): Use "rgb" rather than
1038         "rgba" when alpha is 0xFF, not when alpha is 0.
1039
1040 2004-07-27  Ken Kocienda  <kocienda@apple.com>
1041
1042         Reviewed by Hyatt
1043         
1044         Fixed the problem where BR elements on lines by themselves don't paint when selected.
1045
1046         * khtml/khtml_part.cpp:
1047         (KHTMLPart::selectAll): Related fix. Include BR's when figuring out what "all" is.
1048         * khtml/rendering/render_br.cpp:
1049         (RenderBR::paint): New function implementation. Teach BR's how to paint selections.
1050         * khtml/rendering/render_br.h:
1051         * khtml/rendering/render_text.cpp: 
1052         (InlineTextBox::paintSelection): Fix some geometry calculations to be more readable (i.e. don't
1053         reuse function argument as a local). Also, improve the logic for determining whether to 
1054         extend the selection to block boundaries.
1055         (RenderText::paint): Remove extendSelection argument from paintSelection. The logic to figure out
1056         extensions is now fully contained in paintSelection.
1057         * khtml/rendering/render_text.h:
1058
1059 2004-07-27  David Hyatt  <hyatt@apple.com>
1060
1061         Fix for 3665211 (again).  Make sure not to leave child line boxes pointing to deleted ancestor line boxes.
1062         
1063         Reviewed by kocienda
1064
1065         * khtml/rendering/render_block.cpp:
1066         (khtml::RenderBlock::removeChild):
1067
1068 2004-07-26  Chris Blumenberg  <cblu@apple.com>
1069
1070         Fixed: WebView scrolls to the top after making an editing change via drag & drop
1071
1072         Fixed by Ken, reviewed by me.
1073
1074         * kwq/WebCoreBridge.mm:
1075         (-[WebCoreBridge ensureCaretVisible]): do nothing if the selection is not a caret
1076
1077 === Safari-153 ===
1078
1079 2004-07-26  Maciej Stachowiak  <mjs@apple.com>
1080
1081         Reviewed by John.
1082
1083         <rdar://problem/3740855> REGRESSION: Flash incorrectly positioned at macromedia.com
1084         
1085         * khtml/html/htmltokenizer.cpp:
1086         (khtml::HTMLTokenizer::scriptExecution): Do the prepending-src
1087         trick as for inline script execution.
1088
1089         Added new layout tests covering this and other recent tokenizer
1090         bugs.
1091         
1092         * layout-tests/fast/tokenizer/001-expected.txt: Added.
1093         * layout-tests/fast/tokenizer/001.html: Added.
1094         * layout-tests/fast/tokenizer/002-expected.txt: Added.
1095         * layout-tests/fast/tokenizer/002.html: Added.
1096         * layout-tests/fast/tokenizer/003-expected.txt: Added.
1097         * layout-tests/fast/tokenizer/003.html: Added.
1098         * layout-tests/fast/tokenizer/resources/003-script.js: Added.
1099
1100 2004-07-23  Ken Kocienda  <kocienda@apple.com>
1101
1102         Reviewed by Trey
1103
1104         Fix for this bug:
1105         
1106         <rdar://problem/3738920> Caret blinks in inactive window
1107
1108         As part of the fix, I cleaned up the way we handle special drawing that needs
1109         to be done in the HTML view that is first responder in the key window (e.g the
1110         drawing of text selection highlight and caret blinking).
1111
1112         * khtml/khtml_part.cpp: Removed setCaretVisible function. Updating caret visibility
1113         is now done in setDisplaysWithFocusAttributes, described below.
1114         * khtml/khtml_part.h: Ditto.
1115         * khtml/khtmlpart_p.h:
1116         (KHTMLPartPrivate::KHTMLPartPrivate): m_caretVisible now defaults to false. This prevents
1117         the caret from blinking when an app is started from the command line and remains in the
1118         background.
1119         * khtml/khtmlview.cpp:
1120         (KHTMLView::focusInEvent): Remove caret code from here. Not needed.
1121         (KHTMLView::focusOutEvent): Ditto.
1122         * kwq/KWQKHTMLPart.h:
1123         (KWQKHTMLPart::displaysWithFocusAttributes): New accessor to return cached value to other code
1124         in WebCore.
1125         * kwq/KWQKHTMLPart.mm:
1126         (KWQKHTMLPart::KWQKHTMLPart):
1127         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Renamed from setShowsFirstResponder and modified
1128         to do the display updating in a clearer way....and now has comments!
1129         * kwq/WebCoreBridge.h: Remove several obsolete functions that use to try to do the work of the new
1130         setDisplaysWithFocusAttributes function (and did so less well).
1131         * kwq/WebCoreBridge.mm:
1132         (-[WebCoreBridge drawRect:]): Now calls displaysWithFocusAttributes to figure out how to draw the
1133         text selection background.
1134         (-[WebCoreBridge setDisplaysWithFocusAttributes:]): Calls through to setDisplaysWithFocusAttributes in 
1135         KWQKHTMLPart.
1136         (-[WebCoreBridge selectionColor]): Flipped the value of this ternary expression to accommodate the
1137         change from usesInactiveTextBackgroundColor to setDisplaysWithFocusAttributes.
1138         (-[WebCoreBridge setCaretVisible:]): Removed.
1139
1140 2004-07-23  John Sullivan  <sullivan@apple.com>
1141
1142         Reviewed by Maciej.
1143
1144         - fixed <rdar://problem/3691569> REGRESSION (142): cmd-shift-clicking on a link 
1145         now also extends selection (even if there wasn't one before)
1146
1147         * khtml/khtml_part.cpp:
1148         (KHTMLPart::handleMousePressEventSingleClick):
1149         Uh, duh. Got a ! wrong last time somehow, so it did even more the wrong thing
1150         than ever. I did test this before, so my best guess is an accidental undo or
1151         something before committing.
1152
1153 2004-07-23  David Hyatt  <hyatt@apple.com>
1154
1155         Fix for 3735084 and 3737209, when you can find no line boxes in your previous sibling, the line box to dirty
1156         should be the *first* line box and not the last.
1157         
1158         Reviewed by kocienda
1159
1160         * khtml/rendering/render_flow.cpp:
1161         (RenderFlow::dirtyLinesFromChangedChild):
1162
1163 2004-07-23  Ken Kocienda  <kocienda@apple.com>
1164
1165         Reviewed by John
1166
1167         * khtml/xml/dom_selection.cpp:
1168         (DOM::Selection::validate): Not exactly a fix of anything per se, but more of a refinement
1169         of how selection validation works. The idea is to let the selection validation process
1170         end up with an empty selection given real DOM position inputs if the validation code
1171         cannot find a rendered position. Since selection is all about display, this makes sense.
1172         Currently, the code will allow the selection to be placed in a location that is not
1173         rendered, and this does nobody any good, as it can lead to bugs like accepting key input
1174         in a div that is set to display:none.
1175
1176 2004-07-23  Ken Kocienda  <kocienda@apple.com>
1177
1178         Reviewed by me
1179
1180         Updated layout tests with new expected results.
1181
1182         * layout-tests/editing/execCommand/boldSelection-expected.txt
1183         * layout-tests/editing/selection/extend-by-character-001-expected.txt
1184         * layout-tests/editing/selection/extend-by-character-003-expected.txt
1185         * layout-tests/editing/selection/unrendered-005-expected.txt
1186
1187 2004-07-22  Maciej Stachowiak  <mjs@apple.com>
1188
1189         Reviewed by Kevin.
1190
1191         <rdar://problem/3725467> REGRESSION(140-142) nothing displayed at http://Ye-Olde-Movies.tripod.com
1192         <rdar://problem/3599494> REGRESSION (100-125): Frame does not refresh until user clicks on browser.
1193         
1194         * khtml/rendering/render_frames.cpp:
1195         (RenderFrameSet::layout): When returning early because there are
1196         no children, make sure to mark self as no longer needing
1197         layout. Otherwise, when children are added, we'll fail to
1198         propagate childrenNeedLayout to our own parent! This is almost
1199         certainly a long-standing bug that was just masked by our old
1200         layout tomfoolery.
1201
1202 2004-07-22  Kevin Decker  <kdecker@apple.com>
1203
1204         Reviewed by Darin
1205
1206         Fixed <rdar://problem/3682340> (error console does not include source urls or line numbers of event exceptions).
1207
1208         * khtml/ecma/kjs_events.cpp:
1209         (JSLazyEventListener::JSLazyEventListener):
1210         (JSLazyEventListener::parseCode):
1211         * khtml/ecma/kjs_events.h:
1212         * khtml/ecma/kjs_proxy.cpp:
1213         (KJSProxyImpl::createHTMLEventHandler):
1214         * khtml/ecma/kjs_window.cpp:
1215         (Window::getJSLazyEventListener):
1216         * khtml/ecma/kjs_window.h:
1217
1218 2004-07-22  Ken Kocienda  <kocienda@apple.com>
1219
1220         Reviewed by Hyatt
1221
1222         Fix for this bug:
1223
1224         <rdar://problem/3724344> Bolding and unbolding creates extraneous tags
1225
1226         * khtml/editing/htmlediting_impl.cpp:
1227         (khtml::ApplyStyleCommandImpl::doApply): Move the start of the selection upstream
1228         before calling removeStyle. This makes sure we remove all styles that could apply to the 
1229         selection, and not just ones in from the start position of the selection passed to us. 
1230         This fixes the bug.
1231         * khtml/xml/dom_selection.cpp:
1232         (DOM::Selection::validate): Related fix to "constrain" the selection to be the 
1233         smallest equivalent range of nodes, in effect making a "canonical" version of the
1234         selection. While this is not strictly necessary to fix the bug, it is a step I have been 
1235         wanting to take this step for a long time, and some recent improvements made it 
1236         possible for me to do now in just two lines of code.
1237
1238 2004-07-22  Ken Kocienda  <kocienda@apple.com>
1239
1240         Reviewed by Hyatt
1241
1242         Fix for this bug:
1243         
1244         <rdar://problem/3711264> difficult (impossible?) to get cursor in an editable webview containing only tags
1245
1246         * khtml/rendering/render_container.cpp:
1247         (RenderContainer::positionForCoordinates): Don't assume you can pass off
1248         the check to a first child if there is one, since the child can be an element
1249         we do not want to place the caret in, like a table row with no cells (the case
1250         in the bug above). So now, we iterate of the renderer's children looking for
1251         the closest one, but only consider those renderers which either have children
1252         themselves, or are render block flows or are render inlines. 
1253
1254 2004-07-22  Darin Adler  <darin@apple.com>
1255
1256         - remove a bunch of now-unused code
1257
1258         * ForwardingHeaders/qxml.h: Removed.
1259         * kwq/KWQXmlAttributes.h: Removed.
1260         * kwq/KWQXmlAttributes.mm: Removed.
1261         * kwq/KWQXmlDefaultHandler.h: Removed.
1262         * kwq/KWQXmlDefaultHandler.mm: Removed.
1263         * kwq/KWQXmlSimpleReader.h: Removed.
1264         * kwq/KWQXmlSimpleReader.mm: Removed.
1265
1266 2004-07-22  Darin Adler  <darin@apple.com>
1267
1268         Reviewed by Dave.
1269
1270         - got rid of QXml classes and changed XML parsing to use libxml directly
1271
1272         This is the first step toward more direct use of libxml and libxslt.
1273         Dave is planning to build on this to implement XSLT and to improve our handling
1274         of XML documents (faster and more feature complete, including DTDs).
1275
1276         * khtml/html/html_elementimpl.cpp:
1277         (HTMLElementImpl::createContextualFragment):
1278         * khtml/html/htmltokenizer.cpp:
1279         (khtml::HTMLTokenizer::HTMLTokenizer):
1280         * khtml/html/htmltokenizer.h:
1281         * khtml/xml/dom_docimpl.cpp:
1282         (DocumentImpl::createTokenizer):
1283         (DocumentImpl::open):
1284         * khtml/xml/dom_docimpl.h:
1285         (DOM::DocumentImpl::tokenizer):
1286         * khtml/xml/dom_xmlimpl.cpp:
1287         (DOM::ProcessingInstructionImpl::checkStyleSheet):
1288         * khtml/xml/dom_xmlimpl.h:
1289         * khtml/xml/xml_tokenizer.h:
1290         * khtml/xml/xml_tokenizer.cpp: Redid this all to use libxml directly.
1291
1292         * WebCore.pbproj/project.pbxproj: Removed a bunch of files.
1293
1294 2004-07-21  Trey Matteson  <trey@apple.com>
1295
1296         DHTML dragging should use UTI for MIME-pboard type conversion
1297
1298         Reviewed by Ken
1299
1300         * kwq/KWQClipboard.mm:
1301         (cocoaTypeFromMIMEType):  Use UTI, except for cases we need to hardwire.  Only cut off
1302         MIME args following a semi-colon for text/plain.
1303         (MIMETypeFromCocoaType): Use UTI, except for cases we need to hardwire.  
1304         (KWQClipboard::types):  Filter out ancient NSAsciiPboardType so DHTML never sees this cruft.
1305
1306 2004-07-21  Ken Kocienda  <kocienda@apple.com>
1307
1308         Reviewed by Trey
1309
1310         Remove handling of HTML editing key events from WebCore.
1311         This now happens in WebKit if an event passes all the
1312         way through WebCore without being handled by the DOM.
1313
1314         In each case below, function were removed, as their
1315         only purpose was to handle editing key events.
1316
1317         * khtml/xml/dom_elementimpl.cpp
1318         * khtml/xml/dom_elementimpl.h
1319         * kwq/KWQKHTMLPart.h
1320         * kwq/KWQKHTMLPart.mm
1321         * kwq/WebCoreBridge.h
1322
1323 2004-07-21  Ken Kocienda  <kocienda@apple.com>
1324
1325         Reviewed by John
1326
1327         * khtml/xml/dom_selection.cpp:
1328         (DOM::Selection::modifyExtendingRightForward): Add LINE_BOUNDARY case to the switch statement in this
1329         function. Use the startAndEndLineNodesIncludingNode helper which already existed to get the right
1330         position.
1331         (DOM::Selection::modifyMovingRightForward): Ditto
1332         (DOM::Selection::modifyExtendingLeftBackward): Ditto
1333         (DOM::Selection::modifyMovingLeftBackward): Ditto
1334         * khtml/xml/dom_selection.h: 
1335         (DOM::Selection::): Add LINE_BOUNDARY constant to ETextGranularity enum. This
1336         specifies a new kind of movement that we need to implement the "move-to beggining/end of line"
1337         behavior which AppKit binds to cmd+left/right arrow keys.
1338         * kwq/WebCoreBridge.h: Add WebSelectToLineBoundary constant. This matches
1339
1340 2004-07-20  David Hyatt  <hyatt@apple.com>
1341
1342         Fix for 3714434, user stylesheet is always parsed in strict mode, when it should honor the document's setting.
1343         
1344         Reviewed by john
1345
1346         * khtml/css/cssstyleselector.cpp:
1347         (khtml::CSSStyleSelector::CSSStyleSelector):
1348
1349 2004-07-20  Ken Kocienda  <kocienda@apple.com>
1350
1351         Reviewed by Richard
1352
1353         * khtml/xml/dom_elementimpl.cpp:
1354         (ElementImpl::defaultEventHandler): No longer check whether
1355         the command key is modifying the key event. This check is
1356         now done elsewhere in the code. See the WebKit checkin that
1357         added the _web_keyBindingManagerHasBinding method to 
1358         WebNSEventExtras.
1359
1360 2004-07-20  Chris Blumenberg  <cblu@apple.com>
1361
1362         Fixed:
1363         <rdar://problem/3580589> REGRESSION (1.1-1.2): can't open a new window for an image that has not loaded
1364         <rdar://problem/3612691> Missing image icons (blue ?) lack context menu
1365
1366         Reviewed by john.
1367
1368         * kwq/WebCoreBridge.mm:
1369         (-[WebCoreBridge elementAtPoint:]): if there is no image, put the image URL on the element anyway
1370
1371 2004-07-20  David Hyatt  <hyatt@apple.com>
1372
1373         Fix for alt text not working on images.
1374         
1375         Reviewed by john
1376
1377         * khtml/rendering/render_image.cpp:
1378         (RenderImage::RenderImage):
1379         (RenderImage::setPixmap):
1380         (RenderImage::paint):
1381         (RenderImage::calcReplacedWidth):
1382         (RenderImage::calcReplacedHeight):
1383
1384 2004-07-20  Maciej Stachowiak  <mjs@apple.com>
1385
1386         Reviewed by Dave.
1387
1388         <rdar://problem/3720111> REGRESSION(125-152): map fails to load depending on banner ad; weather.com (works in IE and Firefox)
1389         
1390         * khtml/html/htmltokenizer.cpp:
1391         (khtml::HTMLTokenizer::begin): Initialize currentPrependingSrc.
1392         (khtml::HTMLTokenizer::scriptHandler): Store a pointer to the currently
1393         active prependingSrc variable on the stack, the better to handle weird cases
1394         of scripts writing out additional script tags and so forth.
1395         (khtml::HTMLTokenizer::write): Deal with the above.
1396         * khtml/html/htmltokenizer.h: Declare new member field.
1397
1398 2004-07-20  David Hyatt  <hyatt@apple.com>
1399
1400         Fix for layer positioning error that occurs when absolute positioned blocks are inside static positioned overflow:auto
1401         elements.
1402         
1403         Reviewed by john
1404
1405         * khtml/rendering/render_layer.cpp:
1406         (RenderLayer::updateLayerPosition):
1407
1408 2004-07-20  Trey Matteson  <trey@apple.com>
1409
1410         3705624 REGRESSION: can't rearrange photos on homepage.mac.com album
1411
1412         A subtle problem stemming from some interaction between focus handing and
1413         event propagation.  We previously made it so when a focus shift fails we
1414         don't propagate the event to KHTML.  The fix is to get rid of the inverse
1415         effect, so now even if a focus shift succeeds, we don't propagate to KHTML if
1416         the page already canceled default behavior.
1417
1418         In this specific case, the page is cancelling default behavior since it
1419         does its own dragging, and the bug was our new system dragging was
1420         kicking in.
1421
1422         Reviewed by Ken.
1423
1424         * khtml/khtmlview.cpp:
1425         (KHTMLView::dispatchMouseEvent):  What he said.
1426
1427 2004-07-20  Ken Kocienda  <kocienda@apple.com>
1428
1429         Reviewed by Darin
1430
1431         Fix for this bug:
1432         
1433         <rdar://problem/3695240> pasting plain text with newlines in it turns them into spaces
1434
1435         * kwq/WebCoreBridge.mm:
1436         (-[WebCoreBridge documentFragmentWithText:]): Refine this function to be smart about converting
1437         line endings into BR elements.
1438
1439 2004-07-20  Ken Kocienda  <kocienda@apple.com>
1440
1441         Reviewed by Hyatt
1442
1443         Fix for this bug:
1444         
1445         <rdar://problem/3707505> HTMLCompose: blinking cursor in both an address text field and the message body
1446
1447         * khtml/khtml_part.cpp:
1448         (KHTMLPart::setCaretVisible): This method renamed from setSelectionVisible. Since it really only operates
1449         on the caret, this seems like a better name.
1450         * khtml/khtml_part.h:
1451         * khtml/khtmlview.cpp:
1452         (KHTMLView::focusInEvent): Call setCaretVisible(true)
1453         (KHTMLView::focusOutEvent): Call setCaretVisible(false)
1454         * kwq/KWQKHTMLPart.mm:
1455         (KWQKHTMLPart::setShowsFirstResponder): Name change: setSelectionVisible becomes setCaretVisible.
1456         * kwq/WebCoreBridge.h: Expose setCaretVisible as a bridge method.
1457         * kwq/WebCoreBridge.mm:
1458         (-[WebCoreBridge setCaretVisible:]): Ditto.
1459
1460 2004-07-19  Maciej Stachowiak  <mjs@apple.com>
1461
1462         Reviewed by Trey.
1463
1464         <rdar://problem/3721428> REGRESSION (125.8-146): external javascript statements produce extra garbage character (sina.com)
1465         
1466         * khtml/misc/stringit.h:
1467         (khtml::TokenizerSubstring::TokenizerSubstring): For the apple branch, use the new
1468         stableUnicode() method to get the unicode pointer.
1469         * kwq/KWQString.h:
1470         * kwq/KWQString.mm:
1471         (QString::detachIfInternal): Reorganize this to be a bit less wacky about refcounts.
1472         It does not leave around a zombie internal data handle but rather destroys it right away,
1473         and leaves the object pointing to the new handle (which it can then deref). This makes
1474         the code more clear.
1475         (QString::~QString): Simplify.
1476         (QString::stableUnicode): New method that detaches a copy of the KWQStringData if it
1477         is internal to a string besides this one. This guarantees that if you get the unicode()
1478         pointer, it won't go bad so long as this string is still alive.
1479
1480 2004-07-19  David Hyatt  <hyatt@apple.com>
1481
1482         Fix for 3715117, crash from a bug in removeChildren.  Clean up node removal and fix an n-squared removal
1483         bug.  Also clean up checks in removeChild and in the dispatch of removedFromDocument mutation events to
1484         make node removal more efficient.
1485         
1486         Reviewed by kocienda
1487
1488         * khtml/xml/dom_nodeimpl.cpp:
1489
1490 2004-07-19  John Sullivan  <sullivan@apple.com>
1491
1492         Reviewed by Trey.
1493         
1494         - fixed <rdar://problem/3141150> can't undo in form textarea fields
1495
1496         * kwq/KWQTextArea.mm:
1497         (-[KWQTextArea _createTextView]):
1498         call setAllowsUndo:YES. My, wasn't this easy?
1499
1500 2004-07-19  David Hyatt  <hyatt@apple.com>
1501
1502         Merge @import fix for CSS1 test suite from Stephan Kulow.
1503         
1504         Reviewed by hyatt
1505
1506         * khtml/css/parser.cpp:
1507         * khtml/css/parser.y:
1508         * layout-tests/css1/basic/containment-expected.txt:
1509
1510 2004-07-19  David Hyatt  <hyatt@apple.com>
1511
1512         Fix for 3718697, crash clicking on JS tab at alaskaair.com.
1513         
1514         Reviewed by kocienda
1515
1516         * khtml/rendering/render_flow.cpp:
1517         (RenderFlow::detach):
1518         (RenderFlow::dirtyLinesFromChangedChild):
1519         * khtml/rendering/render_flow.h:
1520         * khtml/rendering/render_object.cpp:
1521         (RenderObject::dirtyLinesFromChangedChild):
1522         * khtml/rendering/render_object.h:
1523
1524 2004-07-16  David Hyatt  <hyatt@apple.com>
1525
1526         Fix for 3726471, need to ensure that it's safe to do updateRendering from within layout, since isContentEditable
1527         relies on it.  The fix is to just recalcStyle up front before beginning the layout, so that all of our renderobjects
1528         will be up-to-date.
1529         
1530         Reviewed by john
1531
1532         * khtml/khtmlview.cpp:
1533         (KHTMLView::layout):
1534
1535 2004-07-16  Ken Kocienda  <kocienda@apple.com>
1536
1537         Reviewed by Hyatt
1538
1539         Fix for this bug:
1540         
1541         <rdar://problem/3722153> Random crash while typing (DOM::NodeImpl::parentNode (this=0x0))
1542
1543         * khtml/editing/htmlediting_impl.cpp:
1544         (khtml::DeleteSelectionCommandImpl::doApply): This check merely makes the code
1545         more robust. I do not understand how Grant ended up with null start or end 
1546         blocks in the case of his bug report, but by adding two null checks, the code is 
1547         now hardened a bit in case it happens again.
1548
1549 2004-07-16  Ken Kocienda  <kocienda@apple.com>
1550
1551         Reviewed by Hyatt
1552
1553         Fix for these bugs:
1554
1555         <rdar://problem/3730785> Crash when arrow navigation goes to empty table cell
1556         <rdar://problem/3730790> Caret does not blink when placed in empty table cell
1557
1558         * khtml/rendering/render_block.cpp:
1559         (khtml::RenderBlock::paintObject): Caret node's renderer might be this block, so
1560         don't block the painting of the caret in this case. This was the case in 3730790.
1561         We had the right geometry for the caret but blocked its painting. 
1562         * khtml/xml/dom_position.cpp:
1563         (DOM::Position::previousLinePosition): Rework the logic here. This function asserted
1564         that the new position we would navigate to had a line box, but empty table cells, for
1565         instance will not. So, deal with this situation as well. The end result is a 
1566         function that worked like it did before in cases where the previous line position has
1567         a line box, but now also will allow navigation to work when it does not.
1568         (DOM::Position::nextLinePosition): Ditto.
1569
1570 2004-07-16  Ken Kocienda  <kocienda@apple.com>
1571
1572         Reviewed by Hyatt
1573
1574         Fix for this bug:
1575         
1576         <rdar://problem/3687216> editable inline causes crash when focused
1577
1578         * khtml/xml/dom_docimpl.cpp:
1579         (DocumentImpl::relinquishesEditingFocus): Add null check for rootEditableElement.
1580         (DocumentImpl::acceptsEditingFocus): Ditto.
1581
1582 2004-07-16  David Hyatt  <hyatt@apple.com>
1583
1584         Fix for 3709337, crash when using display: compact.  Need to make sure that the isCompact() check in bidi.cpp is
1585         also checking for RenderBlocks, since otherwise you match text nodes (and that's just wrong).
1586         
1587         Reviewed by kocienda
1588
1589         * khtml/rendering/bidi.cpp:
1590         (khtml::RenderBlock::layoutInlineChildren):
1591
1592 === Safari-152 ===
1593
1594 2004-07-15  David Hyatt  <hyatt@apple.com>
1595
1596         Fix for 3625611, images offset on first visit to page.  The method for determining the last clean line was
1597         flawed and would incorrectly miss dirty lines that occurred after the first clean line.
1598         
1599         Reviewed by john
1600
1601         * khtml/rendering/bidi.cpp:
1602         (khtml::RenderBlock::determineEndPosition):
1603
1604 2004-07-15  Ken Kocienda  <kocienda@apple.com>
1605
1606         Reviewed by John
1607
1608         Fix for this bug:
1609         <rdar://problem/3587601> reproducible assertion failure in Blot deleting text, then image at Yahoo.com
1610         
1611         * khtml/editing/htmlediting_impl.cpp:
1612         (khtml::DeleteCollapsibleWhitespaceCommandImpl::deleteWhitespace): Relax assertion
1613         that nodes are text nodes during the walk of eligible nodes that could possibly be
1614         deleted. Change the assertion to an conditional check for text nodes. We may have 
1615         unrendered nodes in the mix here (as is the case in the bug where the assertion
1616         failed on an AREA element), and the conditional check is sufficient to
1617         skip them while leaving the delete logic we want unperturbed. 
1618
1619 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1620
1621         Reviewed by John
1622
1623         * khtml/rendering/render_block.cpp:
1624         (khtml::RenderBlock::paintObject): Add null check on DOM node before
1625         asking if it is contentEditable.
1626
1627 2004-07-14  David Hyatt  <hyatt@apple.com>
1628
1629         Fix for 3595073, setting innerHTML on a <table> should work.
1630         
1631         Reviewed by rjw
1632
1633         * khtml/html/html_elementimpl.cpp:
1634         (HTMLElementImpl::createContextualFragment):
1635
1636 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1637
1638         Reviewed by Hyatt
1639         
1640         Updated these layout tests as a result of the last patch.
1641         These results are better.
1642
1643         * layout-tests/editing/execCommand/selectAll-expected.txt
1644         * layout-tests/editing/selection/extend-by-character-006-expected.txt
1645         * layout-tests/editing/selection/unrendered-001-expected.txt
1646         * layout-tests/editing/selection/unrendered-003-expected.txt
1647
1648 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1649
1650         Reviewed by Hyatt
1651
1652         * khtml/rendering/render_block.cpp: 
1653         (khtml::RenderBlock::paintObject): Change back to start() from caretPosition().
1654         Since the policy is now to move the selection to rendered content, if possible,
1655         when the selection is set, there is no longer any reason to have the additional
1656         caretPosition() function to store where the caret should be drawn.
1657         * khtml/xml/dom_docimpl.cpp:
1658         (DocumentImpl::updateSelection): No longer any need to call closestRenderedPosition here.
1659         This is done in Selection::validate.
1660         * khtml/xml/dom_position.cpp:
1661         (DOM::Position::closestRenderedPosition): Improved algorithm. Now much simpler.
1662         * khtml/xml/dom_selection.cpp:
1663         (DOM::Selection::Selection): caretPosition() and m_caretPosition now obsolete.
1664         (DOM::Selection::init): Ditto.
1665         (DOM::Selection::modifyExtendingRightForward): No longer any need to call 
1666         closestRenderedPosition here. This is done in Selection::validate.
1667         (DOM::Selection::modifyMovingRightForward): Ditto.
1668         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
1669         (DOM::Selection::modifyMovingLeftBackward): Ditto.
1670         (DOM::Selection::layoutCaret): Ditto.
1671         (DOM::Selection::validate): Add code to move the selection to rendered content if possible.
1672         * khtml/xml/dom_selection.h: caretPosition() and m_caretPosition now obsolete.
1673
1674 2004-07-14  David Hyatt  <hyatt@apple.com>
1675
1676         Fix for 3716082, assert when you dynamically remove float or position styles.
1677         
1678         Reviewed by kevin
1679
1680         * khtml/rendering/render_object.cpp:
1681         (RenderObject::setStyle):
1682
1683 2004-07-14  David Hyatt  <hyatt@apple.com>
1684
1685         Fix for various table regressions (malumovies.com and cityofheroes.gameamp.com) involving bungling of
1686         percentage heights.
1687         
1688         Reviewed by kocienda
1689
1690         * khtml/rendering/render_box.cpp:
1691         (RenderBox::calcPercentageHeight):
1692         (RenderBox::availableHeightUsing):
1693         * khtml/rendering/render_table.cpp:
1694         (RenderTable::layout):
1695         (RenderTableSection::calcRowHeight):
1696         (RenderTableSection::layoutRows):
1697         (RenderTableCell::updateFromElement):
1698         * khtml/rendering/render_table.h:
1699
1700 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1701
1702         Reviewed by John
1703
1704         * khtml/xml/dom_position.cpp:
1705         (DOM::Position::equivalentDeepPosition): New helper function to improve selection handling.
1706         Soon, I plan to land some changes that use this new function.
1707         * khtml/xml/dom_position.h:
1708
1709 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1710
1711         Reviewed by Vicki
1712
1713         * WebCore-combined.exp: Added QString.at symbol to tests exports to facilitate debugging
1714         data formatting change that is to come.
1715         * WebCore-tests.exp:
1716         
1717 2004-07-13  John Sullivan  <sullivan@apple.com>
1718
1719         Reviewed by Ken.
1720         
1721         - fixed <rdar://problem/3705500> REGRESSION (125.8-146): Cmd-E on an 
1722         HTML page puts a trailing space on Find pasteboard
1723
1724         * khtml/misc/khtml_text_operations.cpp:
1725         (khtml::TextIterator::handleTextBox):
1726         In the case where a subrun doesn't extend to the end of the text box,
1727         the well-commented code was supposed to return from this routine, but
1728         the wrong variable was being compared. This would send us through another
1729         pass of the loop, which would end up worrying about collapsed space at the
1730         end of the current box, even though we only cared about the beginning of the
1731         current box.
1732
1733 2004-07-12  Richard Williamson   <rjw@apple.com>
1734
1735         Fixed 3717982.  Implemented navigator.language!
1736
1737         Reviewed by John.
1738
1739         * khtml/ecma/kjs_navigator.cpp:
1740         (Navigator::getValueProperty):
1741
1742 2004-07-12  Ken Kocienda  <kocienda@apple.com>
1743
1744         Reviewed by Hyatt
1745
1746         * khtml/xml/dom_position.cpp:
1747         (DOM::Position::inRenderedContent): I broke selection drawing with my last patch. This 
1748         function is now used in selection drawing, and it was making an unneeded check to see
1749         that content was editable to answer whether or not is was rendered. Bad. Fixed.
1750
1751 2004-07-12  David Hyatt  <hyatt@apple.com>
1752
1753         Fix for 3621138, crash on hrweb.apple.com.  Make sure that in the case where objects get pulled up from merging
1754         blocks that we just delete all line boxes.
1755         
1756         Reviewed by kocienda
1757
1758         * khtml/rendering/render_block.cpp:
1759         (khtml::RenderBlock::removeChild):
1760
1761 2004-07-10  Maciej Stachowiak  <mjs@apple.com>
1762
1763         Reviewed by John.
1764
1765         <rdar://problem/3706080>: (REGRESSION (125.8-147u): Nested <ul> do not display bullets)
1766         <rdar://problem/3676376>: (Second level bullets not printed when printing Xcode release notes)
1767         
1768         * kwq/KWQPainter.h:
1769         * kwq/KWQPainter.mm:
1770         (CGColorFromNSColor):
1771         (QPainter::drawEllipse):
1772         (QPainter::setShadow):
1773
1774 2004-07-12  Ken Kocienda  <kocienda@apple.com>
1775
1776         Reviewed by me
1777         
1778         Added new editing-related layout tests
1779
1780         * layout-tests/editing/deleting/delete-after-span-ws-001-expected.txt: Added.
1781         * layout-tests/editing/deleting/delete-after-span-ws-001.html: Added.
1782         * layout-tests/editing/deleting/delete-after-span-ws-002-expected.txt: Added.
1783         * layout-tests/editing/deleting/delete-after-span-ws-002.html: Added.
1784         * layout-tests/editing/deleting/delete-after-span-ws-003-expected.txt: Added.
1785         * layout-tests/editing/deleting/delete-after-span-ws-003.html: Added.
1786         * layout-tests/editing/selection/unrendered-001-expected.txt: Added.
1787         * layout-tests/editing/selection/unrendered-001.html: Added.
1788         * layout-tests/editing/selection/unrendered-002-expected.txt: Added.
1789         * layout-tests/editing/selection/unrendered-002.html: Added.
1790         * layout-tests/editing/selection/unrendered-003-expected.txt: Added.
1791         * layout-tests/editing/selection/unrendered-003.html: Added.
1792         * layout-tests/editing/selection/unrendered-004-expected.txt: Added.
1793         * layout-tests/editing/selection/unrendered-004.html: Added.
1794         * layout-tests/editing/selection/unrendered-005-expected.txt: Added.
1795         * layout-tests/editing/selection/unrendered-005.html: Added.
1796         * layout-tests/traversal/node-iterator-008-expected.txt: Added.
1797         * layout-tests/traversal/node-iterator-008.html: Added.
1798         * layout-tests/traversal/tree-walker-005-expected.txt: Added.
1799         * layout-tests/traversal/tree-walker-005.html: Added.
1800
1801 2004-07-12  Ken Kocienda  <kocienda@apple.com>
1802
1803         Reviewed by Hyatt
1804
1805         Fixes for these bugs:
1806         
1807         <rdar://problem/3723359> Extending then "unextending" selection with arrow keys should draw caret but doesn't
1808         <rdar://problem/3724626> White-space deletion code deletes wrong character when space follows span
1809         
1810         * khtml/editing/htmlediting_impl.cpp:
1811         (khtml::DeleteSelectionCommandImpl::doApply): Modify special-case white-space deletion code so it runs
1812         only in the special case. It was throwing its net too widely, catching the case described in 3724626.
1813         By tightening up the special-case white-space deletion, and allowing the more general-purpose code to run,
1814         the bug is fixed.
1815         * khtml/xml/dom_docimpl.cpp:
1816         (DocumentImpl::updateSelection): Use recently-added closestRenderedPosition helper in Position class
1817         to figure out the start and end positions for selection drawing.
1818         * khtml/xml/dom_position.cpp:
1819         (DOM::Position::equivalentUpstreamPosition): Added code to handle white-space that causes line breaks.
1820         (DOM::Position::equivalentDownstreamPosition): Ditto.
1821         (DOM::Position::closestRenderedPosition): Trap empty selections at function entry, return *this.
1822         (DOM::Position::isFirstRenderedPositionOnLine): Can't be first rendered position on line if not rendered.
1823         Add check for this.
1824         (DOM::Position::isLastRenderedPositionOnLine): Ditto, but s/first/last/
1825         * khtml/xml/dom_selection.cpp:
1826         (DOM::Selection::validate): A selection is in caret state if the start and end are equal *or* equivalent.
1827         The equivalence case is new, and fixes 3723359.
1828
1829 2004-07-09  Kevin Decker  <kdecker@apple.com>
1830
1831         Reviewed by Hyatt.
1832         
1833         fixes the width:auto problem in
1834         <rdar://problem/3698344> REGRESSION (143?-144): macrumors.com tabs are compressed and illegible
1835         
1836         * khtml/css/cssstyleselector.cpp:
1837         (khtml::CSSStyleSelector::applyProperty):
1838
1839 2004-07-09  Ken Kocienda  <kocienda@apple.com>
1840
1841         Reviewed by me
1842         
1843         Updated some layout test results.
1844
1845         * layout-tests/editing/deleting/delete-image-004-expected.txt:
1846         * layout-tests/editing/selection/extend-by-character-006-expected.txt:
1847
1848 2004-07-09  Chris Blumenberg  <cblu@apple.com>
1849
1850         Allowed my change for 3715785 to compile on Jaguar.
1851
1852         Reviewed by kocienda.
1853
1854         * kwq/WebCoreBridge.h:
1855         * kwq/WebCoreBridge.mm:
1856         (-[WebCoreBridge domain]): new, allows access to the domain without using the DOM API which doesn't exist on Jaguar
1857
1858 2004-07-09  Ken Kocienda  <kocienda@apple.com>
1859
1860         Reviewed by Hyatt
1861         
1862         Some improvements to fix:
1863         
1864         <rdar://problem/3723111> Caret not drawn when selection set to unrendered content
1865
1866         * khtml/editing/htmlediting_impl.cpp:
1867         (khtml::TypingCommandImpl::issueCommandForDeleteKey): Adjust selection to delete if
1868         selected position is not rendered.
1869         * khtml/rendering/render_block.cpp:
1870         (khtml::RenderBlock::paintObject): Use new caretPosition() function on Selection to
1871         figure out whether to paint.
1872         * khtml/xml/dom_position.cpp:
1873         (DOM::Position::previousCharacterPosition): Now correctly deals with a start
1874         position that is not rendered.
1875         (DOM::Position::nextCharacterPosition): Ditto.
1876         (DOM::Position::closestRenderedPosition): New helper.
1877         * khtml/xml/dom_position.h:
1878         (DOM::): Moved in EAffinity from Selection header. Now used in closestRenderedPosition function.
1879         * khtml/xml/dom_selection.cpp:
1880         (DOM::Selection::Selection): Added new m_caretPosition member. This is the position of the caret
1881         after a caret layout. This may be different from start or end if start and end are not rendered. 
1882         (DOM::Selection::init):
1883         (DOM::Selection::modifyExtendingRightForward): New helper to clean up modify() and make it more readble.
1884         (DOM::Selection::modifyMovingRightForward): Ditto.
1885         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
1886         (DOM::Selection::modifyMovingLeftBackward): Ditto.
1887         (DOM::Selection::modify): Use new helpers to make this more readble.
1888         (DOM::Selection::layoutCaret): Uses new closestRenderedPosition helper to place the caret if in unrendered
1889         content.
1890         (DOM::Selection::paintCaret): Remove moveToRenderedContent. obsolete.
1891         * khtml/xml/dom_selection.h:
1892         (DOM::Selection::caretPosition): New accessor.
1893         * kwq/WebCoreBridge.mm:
1894         (-[WebCoreBridge setSelectedDOMRange:affinity:]): EAffinity no longer a member enum of Selection class.
1895
1896 2004-07-08  David Hyatt  <hyatt@apple.com>
1897
1898         Fix for the table layout test that failed because of a change in how innerText worked.  We need to do
1899         updateLayout now when using innerText, since the method has been changed to use line boxes in the render tree
1900         that might otherwise be out of date.
1901         
1902         Reviewed by kocienda
1903
1904         * khtml/html/html_elementimpl.cpp:
1905         (HTMLElementImpl::innerText):
1906
1907 2004-07-08  John Sullivan  <sullivan@apple.com>
1908
1909         Reviewed by Ken.
1910         
1911         - fixed <rdar://problem/3691569> REGRESSION (142): cmd-shift-clicking on a link 
1912         now also extends selection (even if there wasn't one before)
1913
1914         * khtml/khtml_part.cpp:
1915         (KHTMLPart::handleMousePressEventSingleClick):
1916         if there's a URL associated with the event, don't extend the selection
1917
1918 2004-07-08  Ken Kocienda  <kocienda@apple.com>
1919
1920         Reviewed by Vicki
1921
1922         Added some helper functions which provide strings to display in the 
1923         Xcode debugger's variable inspector window. These functions are called
1924         from the LabyrinthDataFormatter debugger plugin I just checked in to 
1925         the Labyrinth/Tools directory.
1926         
1927         Note that these functions are compiled in on Development builds only.
1928
1929         * WebCore-combined.exp:
1930         * WebCore-tests.exp: Export all the formatForDebugger symbols so the
1931         debugger program can link with them.
1932         * khtml/xml/dom2_rangeimpl.cpp:
1933         (DOM::RangeImpl::formatForDebugger):
1934         * khtml/xml/dom2_rangeimpl.h:
1935         * khtml/xml/dom_elementimpl.cpp:
1936         (ElementImpl::formatForDebugger):
1937         * khtml/xml/dom_elementimpl.h:
1938         * khtml/xml/dom_nodeimpl.cpp:
1939         * khtml/xml/dom_nodeimpl.h:
1940         * khtml/xml/dom_position.cpp:
1941         (DOM::Position::formatForDebugger):
1942         * khtml/xml/dom_position.h:
1943         * khtml/xml/dom_selection.cpp:
1944         (DOM::Selection::formatForDebugger):
1945         * khtml/xml/dom_selection.h:
1946         * khtml/xml/dom_textimpl.cpp:
1947         (TextImpl::formatForDebugger):
1948         * khtml/xml/dom_textimpl.h:
1949
1950 2004-07-08  John Sullivan  <sullivan@apple.com>
1951
1952         Reviewed by Vicki.
1953         
1954         - fixed <rdar://problem/3721544> crash increasing font size; 
1955         entrezeroetun.com (works in IE and Firefox)
1956
1957         * khtml/rendering/render_block.cpp:
1958         (khtml::RenderBlock::updateFirstLetter):
1959         Check for nil originalString() before dereffing
1960
1961 2004-07-08  David Hyatt  <hyatt@apple.com>
1962
1963         Fix for 3721453, CSS3 initial property caused crashes because the macros were not written correctly.
1964         
1965         Reviewed by john
1966
1967         * khtml/css/cssstyleselector.cpp:
1968
1969 === Safari-151 ===
1970
1971 2004-07-07  David Hyatt  <hyatt@apple.com>
1972
1973         Fix for 3712133, crash from first-line pseudo-style use.
1974         
1975         Reviewed by kocienda
1976
1977         * khtml/css/cssstyleselector.cpp:
1978         (khtml::CSSStyleSelector::styleForElement):
1979         * khtml/css/cssstyleselector.h:
1980         * khtml/rendering/render_object.cpp:
1981         (RenderObject::getPseudoStyle):
1982
1983 2004-07-07  Ken Kocienda  <kocienda@apple.com>
1984
1985         Reviewed by Hyatt
1986
1987         Fix for this bug:
1988         
1989         <rdar://problem/3716479> calling setInnerHTML during a webViewDidChange delegate call causes a crash
1990         
1991         The fix involves some rearrangement of code in TypingCommand and TypingCommandImpl.
1992         Formerly, new TypingCommands would apply themselves (which was a no-op) and then
1993         do their action in some code a way different than other commands. This type of command
1994         application is different than for all other commands since TypingCommands can be coalesced.
1995         The crash occurred as a result of the "no-op" TypingCommand having the unconsidered
1996         consequence of causing editing delegate notifications to be sent before the command 
1997         has actually run. This change takes a small step towards making TypingCommandImpl function like
1998         other commands, where the command work is done in doApply. This makes the notification
1999         happen in the right order.
2000
2001         * khtml/editing/htmlediting.cpp:
2002         (khtml::TypingCommand::TypingCommand):
2003         (khtml::TypingCommand::insertText):
2004         (khtml::TypingCommand::insertNewline):
2005         (khtml::TypingCommand::deleteKeyPressed):
2006         * khtml/editing/htmlediting.h:
2007         (khtml::TypingCommand::):
2008         * khtml/editing/htmlediting_impl.cpp:
2009         (khtml::TypingCommandImpl::TypingCommandImpl):
2010         (khtml::TypingCommandImpl::doApply):
2011         * khtml/editing/htmlediting_impl.h:
2012
2013 2004-07-06  Ken Kocienda  <kocienda@apple.com>
2014
2015         Reviewed by me
2016
2017         * khtml/html/html_tableimpl.cpp:
2018         (HTMLTableElementImpl::addChild): Added a better comment in the
2019         code I just checked in a few minutes ago.
2020
2021 2004-07-06  Ken Kocienda  <kocienda@apple.com>
2022
2023         Reviewed by Hyatt
2024         
2025         Fix for this bug:
2026         
2027         <rdar://problem/3672377> assertion failure in AppendNodeCommandImpl::doApply 
2028         due to non-0 exception code trying to insert a DIV markup string
2029         
2030         The solution was to revert to the code that was rolled out, and removing
2031         the child checks from NodeImpl::checkAddChild. However, this time, I added
2032         code very similar to this check into the code that runs while HTML is 
2033         being parsed to build up tables. This code relies on child-add failure
2034         to ensure the proper construction of well-formed tables (as gross as that
2035         sounds), so the check needs to be retained there. No other code seems to
2036         be so affected. Layout tests are unchanged by this patch.
2037
2038         * khtml/html/html_tableimpl.cpp:
2039         (HTMLTableElementImpl::addChild):
2040         * khtml/xml/dom_nodeimpl.cpp:
2041         (NodeImpl::checkAddChild):
2042
2043 2004-07-06  Ken Kocienda  <kocienda@apple.com>
2044
2045         Reviewed by John
2046         
2047         Simple change. I switched the arguments of the appendNode helper function
2048         and the AppendNodeCommand and AppendNodeCommandImpl classes. The node to 
2049         insert now comes before the parent node in the argument list. I did this
2050         to make this function match the convention of others in the HTML editing code.
2051         This was the only one that was "different" in the way that it ordered arguments.
2052         As a result, I was always looking to see that I was passing things in the right
2053         order.
2054         
2055         * khtml/editing/htmlediting.cpp:
2056         (khtml::AppendNodeCommand::AppendNodeCommand):
2057         (khtml::AppendNodeCommand::appendChild):
2058         (khtml::AppendNodeCommand::parentNode):
2059         * khtml/editing/htmlediting.h:
2060         * khtml/editing/htmlediting_impl.cpp:
2061         (khtml::CompositeEditCommandImpl::insertNodeAfter):
2062         (khtml::CompositeEditCommandImpl::insertNodeAt):
2063         (khtml::CompositeEditCommandImpl::appendNode):
2064         (khtml::AppendNodeCommandImpl::AppendNodeCommandImpl):
2065         (khtml::AppendNodeCommandImpl::~AppendNodeCommandImpl):
2066         (khtml::AppendNodeCommandImpl::doApply):
2067         (khtml::AppendNodeCommandImpl::doUnapply):
2068         (khtml::ApplyStyleCommandImpl::surroundNodeRangeWithElement):
2069         (khtml::DeleteSelectionCommandImpl::doApply):
2070         (khtml::InputNewlineCommandImpl::insertNodeAfterPosition):
2071         (khtml::InputNewlineCommandImpl::insertNodeBeforePosition):
2072         (khtml::InputTextCommandImpl::prepareForTextInsertion):
2073         * khtml/editing/htmlediting_impl.h:
2074         (khtml::AppendNodeCommandImpl::parentNode):
2075
2076 2004-07-06  Ken Kocienda  <kocienda@apple.com>
2077
2078         Reviewed by Trey
2079
2080         Fixed several problems with traversal classes. For one, NodeIterators treat
2081         FILTER_REJECT and FILTER_SKIP the same, since it treats the DOM tree as a
2082         flat collection of nodes free of hierarchy. The code before this change did
2083         not do this correctly. It sure pays to go back and read the specs. :)
2084         
2085         Also, the code to traverse from node to node when filters were applied was
2086         not working correctly. My first attemmpt to implement this was just plain
2087         buggy, as I discovered when I tried to write tests for my WWDC talk. I have
2088         settled on an implementation which is much simpler and worked for all the
2089         tests I threw at it. 
2090
2091         * khtml/xml/dom2_traversalimpl.cpp:
2092         (DOM::NodeIteratorImpl::findNextNode):
2093         (DOM::NodeIteratorImpl::nextNode):
2094         (DOM::NodeIteratorImpl::findPreviousNode):
2095         (DOM::NodeIteratorImpl::previousNode):
2096         (DOM::TreeWalkerImpl::parentNode):
2097         (DOM::TreeWalkerImpl::firstChild):
2098         (DOM::TreeWalkerImpl::lastChild):
2099         (DOM::TreeWalkerImpl::previousSibling):
2100         (DOM::TreeWalkerImpl::nextSibling):
2101         (DOM::TreeWalkerImpl::previousNode):
2102         (DOM::TreeWalkerImpl::nextNode):
2103         (DOM::TreeWalkerImpl::ancestorRejected):
2104         * khtml/xml/dom2_traversalimpl.h:
2105
2106 2004-07-06  Vicki Murley  <vicki@apple.com>
2107
2108         Reviewed by kocienda.
2109
2110         - added backColorCommand, foreColorCommand, fontNameCommand, 
2111         and fontSizeCommand
2112   
2113         * layout-tests/editing/editing.js:
2114
2115 2004-07-06  Trey Matteson  <trey@apple.com>
2116
2117         3716053 - www.theage.com.au has extra back/forward items due to ads
2118
2119         This turned out to be easily fixed by generalizing the fix to 3438441.  We prevent
2120         addition to the b/f list not just during an onload event, but during any non-user
2121         gesture, which includes top level script executing.
2122
2123         Reviewed by Richard.
2124
2125         * kwq/KWQKHTMLPart.mm:
2126         (KWQKHTMLPart::openURL):  Only real change - prevent adding to b/f list if not
2127         a user gesture.
2128         (KWQKHTMLPart::openURLRequest):  Rename "onLoadEvent" to "userGesture", swap sense
2129         (KWQKHTMLPart::submitForm):  Ditto
2130         (KWQKHTMLPart::urlSelected): Ditto
2131         * kwq/KWQKHTMLPartBrowserExtension.mm:
2132         (KHTMLPartBrowserExtension::createNewWindow):  Ditto
2133         * kwq/WebCoreBridge.h:
2134
2135 2004-07-02  Darin Adler  <darin@apple.com>
2136
2137         Reviewed by Dave.
2138
2139         - fixed half of <rdar://problem/3709244> utf-8 meta tag not parsed when page title contains angle brackets or if </meta> tag used
2140
2141         * khtml/misc/decoder.cpp: (Decoder::decode): Allow </meta> tags without deciding we
2142         are done with the header.
2143
2144 2004-06-30  Trey Matteson  <trey@apple.com>
2145
2146         Dragging within a web view should be allowed to start when the window isn't key.
2147
2148         A few months ago, Chris made this work, but it relied on the fact that all dragging
2149         was done in WebKit.  When WebCore got involved in dragging, it was broken.  Now we
2150         have a new scheme that gets it working again that properly involves WebCore.
2151
2152         The general idea is that when AK asks us whether to accept the first mouse and do
2153         "delayed window ordering", we must consult WC to see if we might start a drag.  In
2154         addition, instead of these drags in non-active windows being started as a special
2155         case in WK, they go through the normal WK-WC drag machinery.
2156
2157         Reviewed by John.
2158
2159         * khtml/khtml_part.cpp:
2160         (KHTMLPart::shouldDragAutoNode):  New x,y args.
2161         * khtml/khtml_part.h:
2162         * khtml/rendering/render_object.cpp:
2163         (RenderObject::draggableNode):  Pass through new x,y args.
2164         * khtml/rendering/render_object.h:
2165         * kwq/KWQKHTMLPart.h:
2166         (KWQKHTMLPart::setActivationEventNumber):  New setter.
2167         * kwq/KWQKHTMLPart.mm:
2168         (KWQKHTMLPart::KWQKHTMLPart):  Init new ivar.
2169         (KWQKHTMLPart::eventMayStartDrag):  New routine that checks if we might start
2170         a drag in response to a mouseDown.
2171         (KWQKHTMLPart::khtmlMouseMoveEvent):  Pass x,y to the routine that finds a draggable
2172         node.  This eventually gets back up to WK's _mayStartDragAtEventLocation:.
2173         Delay requirement when dragging the selection now implemented here.
2174         (KWQKHTMLPart::khtmlMouseReleaseEvent):  Must avoid changing the selection if we
2175         wind up here as part of the first click in a window (because we started handling
2176         the click to possible start a drag, but that never came through).
2177         (KWQKHTMLPart::mouseDown): Save away event timestamp.
2178         (KWQKHTMLPart::shouldDragAutoNode):  Pass location up to WK instead of the
2179         most recent event we stashed.
2180         * kwq/WebCoreBridge.h:
2181         * kwq/WebCoreBridge.mm:
2182         (-[WebCoreBridge setActivationEventNumber:]):  Trivial glue.
2183         (-[WebCoreBridge eventMayStartDrag:]):  Ditto.
2184
2185 2004-06-29  Trey Matteson  <trey@apple.com>
2186
2187         Need to tighten up JS error checking for requesting drag props
2188         in the wrong cases.
2189
2190         Reviewed by John.
2191
2192         * khtml/ecma/kjs_events.cpp:
2193         (Clipboard::getValueProperty):  Assert if someone somehow set
2194         dropEffect or effectAllowed and it's a copy/paste clipboard
2195         instead of a dragging clipboard.
2196         (Clipboard::putValue):  Don't let anyone set dropEffect or
2197         effectAllowed on a copy/paste clipboard.
2198         (ClipboardProtoFunc::tryCall):  Disallow setting dragImage on
2199         a copy/paste clipboard.
2200
2201 2004-06-29  Trey Matteson  <trey@apple.com>
2202
2203         DHTML dragging - source should have access to the operation chosen
2204         by the destination.
2205
2206         Reviewed by John
2207
2208         * kwq/KWQKHTMLPart.h:
2209         * kwq/KWQKHTMLPart.mm:
2210         (KWQKHTMLPart::dragSourceEndedAt):  Set the destination's operation
2211         on the clipboard.
2212         * kwq/WebCoreBridge.mm:
2213         (-[WebCoreBridge dragExitedWithDraggingInfo:]):  For completeness
2214         we set the source op for the ondragexit event.
2215         (-[WebCoreBridge concludeDragForDraggingInfo:]):  Ditto for the
2216         drop event.
2217         (-[WebCoreBridge dragSourceEndedAt:operation:]):  Pass through of operation.
2218
2219 2004-06-24  Trey Matteson  <trey@apple.com>
2220
2221         3710422 - REGRESSION: Safari crashes trying to send onbeforecut event at about://blank
2222
2223         Simple fix - don't try to send the event to the body element if we have no body element.
2224
2225         Reviewed by John
2226
2227         * kwq/KWQKHTMLPart.mm:
2228         (KWQKHTMLPart::dispatchCPPEvent):
2229
2230 2004-06-24  Trey Matteson  <trey@apple.com>
2231
2232         3704950 drag image in DB ConfigBar has horizontal graphics turd WebCore JavaScript
2233
2234         When we generate a drag image (or a selection image too, for that matter) we
2235         translate the CTM using a CG call.  Later, WebImageRenderer adjusts the pattern
2236         phase based on the CTM of the focused view, which doesn't include our translate.
2237         So we must inform WebKit about the additional phase adjustment.
2238
2239         Reviewed by Richard
2240
2241         * kwq/KWQKHTMLPart.mm:  Tell WebKit about the phase adjustment.
2242         (KWQKHTMLPart::imageFromRect):
2243         * kwq/WebCoreGraphicsBridge.h:
2244         * kwq/WebCoreGraphicsBridge.m:
2245         (-[WebCoreGraphicsBridge setAdditionalPatternPhase:]):  New routine to receive
2246         the phase adjustment.
2247
2248 2004-06-24  Trey Matteson  <trey@apple.com>
2249
2250         3679986 - screenX and screenY are flipped and relative to the bottom left of the WebView, rather than the screen
2251         3699510 - synthesized click events have bogus screen coords
2252
2253         Reviewed by Darin.
2254
2255         * khtml/khtmlview.cpp:
2256         (KHTMLView::dispatchDragEvent):  Generate screen coords for drag events using new func.
2257         (KHTMLView::dispatchMouseEvent):   Ditto.
2258         * khtml/khtmlview.h:
2259         * khtml/xml/dom_nodeimpl.cpp:
2260         (NodeImpl::dispatchMouseEvent):  Comment tricky semantics.
2261         Calc screen coords in apple-specific way.
2262         * kwq/KWQKHTMLView.mm:
2263         (KHTMLView::viewportToGlobal):  Passthrough to window widget.
2264         * kwq/KWQScrollView.mm:
2265         * kwq/KWQWindowWidget.h:
2266         * kwq/KWQWindowWidget.mm:
2267         (KWQWindowWidget::mapToGlobal):  Call former code factored to new method below.
2268         (KWQWindowWidget::viewportToGlobal):  New method to convert "viewport" (which for us
2269         really means NSWindow coords) to screen coords.
2270
2271 2004-06-24  Trey Matteson  <trey@apple.com>
2272
2273         3693420 - onbeforecut and onbeforepaste need real implementaion
2274
2275         Reviewed by Chris.
2276
2277         * kwq/KWQKHTMLPart.h:
2278         * kwq/KWQKHTMLPart.mm:
2279         (KWQKHTMLPart::mayCut):  Dispatch event to DHTML.
2280         (KWQKHTMLPart::mayCopy):  Ditto
2281         (KWQKHTMLPart::mayPaste):  Ditto
2282         (KWQKHTMLPart::tryCut):  No more need to send fake onbefore event
2283         (KWQKHTMLPart::tryCopy):  Ditto
2284         (KWQKHTMLPart::tryPaste): Ditto
2285         * kwq/WebCoreBridge.h:
2286         * kwq/WebCoreBridge.mm:
2287         (-[WebCoreBridge mayDHTMLCut]):  Standard glue
2288         (-[WebCoreBridge mayDHTMLCopy]):  Ditto
2289         (-[WebCoreBridge mayDHTMLPaste]):  Ditto
2290
2291 2004-06-24  Darin Adler  <darin@apple.com>
2292
2293         Reviewed by John.
2294
2295         - fixed <rdar://problem/3709385> Find on page doesn't find a string at the very end of the file
2296
2297         * khtml/misc/khtml_text_operations.cpp: (khtml::findPlainText): Rearrange loop to avoid an early
2298         exit once we have all the characters we need, but are at the end of the range we are searching.
2299
2300         - fixed <rdar://problem/3102271>: (text areas have scroll bars even when they don't need them)
2301         - fixed <rdar://problem/3665430>: (horizontal scroll bar of text area does not show, even when text is wide in "no wrap" mode)
2302
2303         * kwq/KWQTextArea.mm:
2304         (-[KWQTextArea _configureTextViewForWordWrapMode]): Added. Helper method that sets up the
2305         view for a new word wrap mode.
2306         (-[KWQTextArea _createTextView]): Moved much of the code inside _configureTextViewForWordWrapMode.
2307         (-[KWQTextArea _frameSizeChanged]): Added. Method shared by setFrame: and initWithFrame: to
2308         avoid duplicate code that was there before. The old code also had redundant code to update
2309         the text container size, but NSText handles that automatically.
2310         (-[KWQTextArea initWithFrame:]): Set wrap to YES by default, which is the key to fixing bug 3665430.
2311         Call setAutohidesScrollers:YES, which fixes bug 3102271. Also call the new _frameSizeChanged method.
2312         (-[KWQTextArea setWordWrap:]): Call _configureTextViewForWordWrapMode instead of trying
2313         to do the work here. The old version did both too little and too much.
2314         (-[KWQTextArea setFrame:]): Call _frameSizeChanged instead of trying to do the work here.
2315         The old version did both too little and too much.
2316
2317 2004-06-24  John Sullivan  <sullivan@apple.com>
2318
2319         Darin made this change on my machine; I reviewed it.
2320         
2321         - fixed <rdar://problem/3698333> Find on page doesn't find a particular string 
2322         with a newline in the source
2323
2324         * khtml/misc/khtml_text_operations.cpp:
2325         (khtml::TextIterator::handleTextBox):
2326         Clear m_lastTextNodeEndedWithCollapsedSpace after taking it into account.
2327
2328 2004-06-23  Richard Williamson   <rjw@apple.com>
2329
2330         Implemented changes for latest npruntime.h.
2331
2332         Reviewed by Chris.
2333
2334         * kwq/KWQKHTMLPart.h:
2335         * kwq/KWQKHTMLPart.mm:
2336         (KWQKHTMLPart::KWQKHTMLPart):
2337         (KWQKHTMLPart::windowScriptNPObject):
2338         (KWQKHTMLPart::getEmbedInstanceForView):
2339         * kwq/WebCoreBridge.h:
2340         * kwq/WebCoreBridge.mm:
2341         (-[WebCoreBridge windowScriptObject]):
2342         (-[WebCoreBridge windowScriptNPObject]):
2343
2344 2004-06-22  Richard Williamson   <rjw@apple.com>
2345
2346         Fixed <rdar://problem/3707162>: accessing embeds[] plug-in interface may crash
2347
2348         embedInstance was uninitialized.
2349
2350         Reviewed by Chris.
2351
2352         * khtml/html/html_objectimpl.cpp:
2353         (HTMLEmbedElementImpl::HTMLEmbedElementImpl):
2354
2355 2004-06-18  John Sullivan  <sullivan@apple.com>
2356
2357         Reviewed by Darin
2358         
2359         - fixed <rdar://problem/3534851> Pop up windows not showing up within SAP's 
2360         BW Module (changing location.href on new window created by window.open)
2361
2362         * khtml/khtml_part.cpp:
2363         (KHTMLPart::scheduleRedirection):
2364         allow new redirect to win if delay <= current delay, not just <
2365
2366 === WebCore-146.1 ===
2367
2368 2004-06-18  Trey Matteson  <trey@apple.com>
2369
2370         3702053 - DHTML dragging destination can't control the cursor (by setting the drop operation)
2371
2372         Fallout from security work, but an easy fix.
2373
2374         Reviewed by Darin
2375
2376         * kwq/KWQClipboard.mm:
2377         (KWQClipboard::setDropEffect):  Allow dest side to set dropEffect.
2378
2379 2004-06-18  Darin Adler  <darin@apple.com>
2380
2381         Reviewed by John.
2382
2383         - re-fixed <rdar://problem/3701893> show expert preferences notes in xcode causes crash (in EllipsisBox code)
2384
2385         * khtml/rendering/render_block.cpp: (khtml::RenderBlock::paintEllipsisBoxes):
2386         Check !isInlineFlow rather than checking hasMarkupTruncation. Otherwise, we break
2387         plain old non-markup truncation.
2388
2389 2004-06-18  Darin Adler  <darin@apple.com>
2390
2391         Reviewed by John.
2392
2393         - fixed <rdar://problem/3701893> show expert preferences notes in xcode causes crash (in EllipsisBox code)
2394
2395         * khtml/rendering/render_block.cpp: (khtml::RenderBlock::paintEllipsisBoxes):
2396         Only walk the ellipsis list if hasMarkupTruncation is true.
2397
2398 === Safari-146 ===
2399
2400 2004-06-17  Richard Williamson   <rjw@apple.com>
2401
2402         Fixed <rdar://problem/3698867> setting the canvas or parent to display:none and updating the causes a nil-deref
2403
2404         Ensured that we have a renderer before rendering.
2405
2406         Reviewed by John.
2407
2408         * khtml/ecma/kjs_html.cpp:
2409         (KJS::Context2DFunction::tryCall):
2410
2411 2004-06-17  David Hyatt  <hyatt@apple.com>
2412
2413         Fix for 3674601, "Read More..." links should trail articles in Emerson.
2414         
2415         Reviewed by darin
2416
2417         * khtml/rendering/bidi.cpp:
2418         (khtml::RenderBlock::layoutInlineChildren):
2419         (khtml::RenderBlock::deleteEllipsisLineBoxes):
2420         (khtml::RenderBlock::checkLinesForTextOverflow):
2421         * khtml/rendering/render_block.cpp:
2422         (khtml:::RenderFlow):
2423         (khtml::RenderBlock::paintEllipsisBoxes):
2424         (khtml::RenderBlock::nodeAtPoint):
2425         (khtml::shouldCheckLines):
2426         (khtml::getLineAtIndex):
2427         (khtml::getHeightForLineCount):
2428         (khtml::RenderBlock::lineAtIndex):
2429         (khtml::RenderBlock::lineCount):
2430         (khtml::RenderBlock::heightForLineCount):
2431         (khtml::RenderBlock::clearTruncation):
2432         * khtml/rendering/render_block.h:
2433         (khtml::RenderBlock::setHasMarkupTruncation):
2434         (khtml::RenderBlock::hasMarkupTruncation):
2435         * khtml/rendering/render_flexbox.cpp:
2436         (khtml::RenderFlexibleBox::layoutVerticalBox):
2437         * khtml/rendering/render_line.cpp:
2438         (khtml::EllipsisBox::m_str):
2439         (khtml::InlineBox::adjustPosition):
2440         (khtml::InlineFlowBox::adjustPosition):
2441         (khtml::InlineFlowBox::clearTruncation):
2442         (khtml::EllipsisBox::paint):
2443         (khtml::EllipsisBox::nodeAtPoint):
2444         (khtml::RootInlineBox::clearTruncation):
2445         (khtml::RootInlineBox::placeEllipsis):
2446         (khtml::RootInlineBox::paintEllipsisBox):
2447         (khtml::RootInlineBox::hitTestEllipsisBox):
2448         (khtml::RootInlineBox::adjustPosition):
2449         (khtml::RootInlineBox::childRemoved):
2450         * khtml/rendering/render_line.h:
2451         (khtml::InlineBox::clearTruncation):
2452         * khtml/rendering/render_text.cpp:
2453         * khtml/rendering/render_text.h:
2454         (khtml::InlineTextBox::clearTruncation):
2455
2456 2004-06-17  Trey Matteson  <trey@apple.com>
2457
2458         3698514 - coordinates in ondragstart and ondrag events are wrong
2459
2460         This part fixes the ondragstart coords.  We salt away the window-based mouseDown
2461         location, since we need that when we dispatch the ondragstart event.  Previously
2462         we were errantly using a mouseDown point that had already been converted to view
2463         coords, and then the dispatch converted it again.
2464
2465         Reviewed by Maciej.
2466
2467         * kwq/KWQKHTMLPart.h:
2468         * kwq/KWQKHTMLPart.mm:
2469         (KWQKHTMLPart::khtmlMouseMoveEvent):  Use window based mouse event coords to dispatch event.
2470         (KWQKHTMLPart::mouseDown):  Save window based mouse event coords .
2471
2472 2004-06-16  David Hyatt  <hyatt@apple.com>
2473
2474         Fix for 3596620, implement a subset of CSS3 text truncation for Emerson.
2475         
2476         Reviewed by mjs
2477
2478         * khtml/rendering/bidi.cpp:
2479         (khtml::RenderBlock::checkLinesForTextOverflow):
2480         * khtml/rendering/font.cpp:
2481         (Font::checkSelectionPoint):
2482         * khtml/rendering/font.h:
2483         * khtml/rendering/render_block.cpp:
2484         (khtml::RenderBlock::paintObject):
2485         (khtml::RenderBlock::paintFloats):
2486         (khtml::RenderBlock::paintEllipsisBoxes):
2487         * khtml/rendering/render_block.h:
2488         * khtml/rendering/render_line.cpp:
2489         (InlineBox::canAccommodateEllipsis):
2490         (InlineBox::placeEllipsisBox):
2491         (InlineFlowBox::paintDecorations):
2492         (InlineFlowBox::placeEllipsisBox):
2493         (EllipsisBox::paint):
2494         (RootInlineBox::placeEllipsis):
2495         (RootInlineBox::placeEllipsisBox):
2496         * khtml/rendering/render_line.h:
2497         (khtml::EllipsisBox::m_str):
2498         (khtml::RootInlineBox::ellipsisBox):
2499         * khtml/rendering/render_text.cpp:
2500         (InlineTextBox::placeEllipsisBox):
2501         (InlineTextBox::paintDecoration):
2502         (InlineTextBox::offsetForPosition):
2503         (RenderText::positionForCoordinates):
2504         (RenderText::paint):
2505         * khtml/rendering/render_text.h:
2506         * kwq/KWQFontMetrics.h:
2507         * kwq/KWQFontMetrics.mm:
2508         (QFontMetrics::checkSelectionPoint):
2509         * kwq/WebCoreTextRenderer.h:
2510
2511 === WebCore-145.1 ===
2512
2513 2004-06-16  Maciej Stachowiak  <mjs@apple.com>
2514
2515         Reviewed by John.
2516
2517         <rdar://problem/3697602> REGRESSION (144.2-TOT) Selection highlight does not draw
2518
2519         * khtml/rendering/render_canvas.cpp:
2520         (RenderCanvas::setSelection):
2521
2522 === Safari-145 ===
2523
2524 2004-06-16  Richard Williamson   <rjw@apple.com>
2525
2526         Fixed 3695730:  Added support for embeds[], much like
2527         applets[], to allow access to a plugin's exported interface.
2528
2529         Reviewed by Chris.
2530
2531         * khtml/dom/html_document.cpp:
2532         (HTMLDocument::embeds):
2533         * khtml/dom/html_document.h:
2534         * khtml/ecma/kjs_dom.cpp:
2535         (KJS::getRuntimeObject):
2536         * khtml/ecma/kjs_html.cpp:
2537         (KJS::HTMLDocument::tryGet):
2538         (KJS::HTMLElement::tryGet):
2539         (KJS::HTMLCollection::tryGet):
2540         (KJS::HTMLCollection::getNamedItems):
2541         * khtml/ecma/kjs_html.h:
2542         (KJS::HTMLDocument::):
2543         * khtml/ecma/kjs_html.lut.h:
2544         (KJS::):
2545         * khtml/html/html_miscimpl.cpp:
2546         (HTMLCollectionImpl::calcLength):
2547         (HTMLCollectionImpl::getItem):
2548         (HTMLCollectionImpl::getNamedItem):
2549         * khtml/html/html_miscimpl.h:
2550         (DOM::HTMLCollectionImpl::):
2551         * khtml/html/html_objectimpl.cpp:
2552         (HTMLEmbedElementImpl::getEmbedInstance):
2553         * khtml/html/html_objectimpl.h:
2554         * kwq/KWQKHTMLPart.h:
2555         * kwq/KWQKHTMLPart.mm:
2556         (KWQKHTMLPart::getEmbedInstanceForView):
2557
2558 2004-06-15  Maciej Stachowiak  <mjs@apple.com>
2559
2560         Reviewed by Dave.
2561
2562         <rdar://problem/3695907>: (can't enable selection inside parent where it is disabled via CSS)
2563
2564         * khtml/css/cssparser.cpp:
2565         (CSSParser::parseValue): 
2566         * khtml/css/cssstyleselector.cpp:
2567         (khtml::CSSStyleSelector::applyProperty):
2568         * khtml/rendering/render_object.cpp:
2569         (RenderObject::shouldSelect):
2570         * khtml/rendering/render_style.h:
2571         (khtml::):
2572         (khtml::RenderStyle::userSelect):
2573         (khtml::RenderStyle::setUserSelect):
2574         (khtml::RenderStyle::initialUserSelect):
2575
2576 2004-06-15  David Hyatt  <hyatt@apple.com>
2577
2578         Initial impl of the EllipsisBox.  This code just gets the box created and gets it placed vertically.  The next
2579         stage will be to position the box horizontally as well.
2580         
2581         Reviewed by trey
2582
2583         * khtml/rendering/bidi.cpp:
2584         (khtml::RenderBlock::checkLinesForTextOverflow):
2585         * khtml/rendering/render_line.cpp:
2586         (RootInlineBox::placeEllipsis):
2587         * khtml/rendering/render_line.h:
2588         (khtml::EllipsisBox::m_str):
2589
2590 2004-06-15  David Hyatt  <hyatt@apple.com>
2591
2592         Implement canAccommodateEllipsis.  The basic idea is that everything on a line will allow an ellipsis to be
2593         drawn on top of it unless it's a replaced element.  Then, if the replaced element overlaps, the ellipsis won't
2594         be allowed.
2595         
2596         Reviewed by john
2597
2598         * khtml/rendering/bidi.cpp:
2599         (khtml::RenderBlock::checkLinesForTextOverflow):
2600         * khtml/rendering/render_line.cpp:
2601         (InlineBox::closestLeafChildForXPos):
2602         (InlineBox::canAccommodateEllipsis):
2603         (InlineFlowBox::canAccommodateEllipsis):
2604         (RootInlineBox::canAccommodateEllipsis):
2605         * khtml/rendering/render_line.h:
2606
2607 2004-06-15  Vicki Murley <vicki@apple.com>
2608
2609         - added a few layout tests, rdar://3694510
2610
2611         * layout-tests/editing/deleting/delete-image-004-expected.txt: Added.
2612         * layout-tests/editing/deleting/delete-image-004.html: Added.
2613         * layout-tests/editing/selection/extend-by-character-006-expected.txt: Added.
2614         * layout-tests/editing/selection/extend-by-character-006.html: Added.
2615
2616 2004-06-15  Trey Matteson  <trey@apple.com>
2617
2618         Dragging tweak:  We pass the mouse down coords instead of the
2619         latest mouse drag coords to the ondragstart event.  This makes it
2620         easy for the client to figure the correct drag image offset,
2621         whereas the mouse drag location is next to useless for that.
2622
2623         Reviewed by Louch
2624
2625         * kwq/KWQKHTMLPart.mm:
2626         (KWQKHTMLPart::khtmlMouseMoveEvent):
2627
2628 2004-06-15  Maciej Stachowiak  <mjs@apple.com>
2629
2630         Reviewed by Darin.
2631
2632         <rdar://problem/3685236>: (Safari does not support onselectstart event handler)
2633
2634         * khtml/ecma/kjs_dom.cpp:
2635         (DOMNode::getValueProperty):
2636         (DOMNode::putValue):
2637         * khtml/ecma/kjs_dom.h:
2638         (KJS::DOMNode::):
2639         * khtml/ecma/kjs_dom.lut.h:
2640         (KJS::):
2641         * khtml/html/html_elementimpl.cpp:
2642         (HTMLElementImpl::parseHTMLAttribute):
2643         * khtml/misc/htmlattrs.c:
2644         (hash_attr):
2645         (findAttr):
2646         * khtml/misc/htmlattrs.h:
2647         * khtml/misc/htmlattrs.in:
2648         * khtml/rendering/render_object.cpp:
2649         (RenderObject::shouldSelect):
2650         * khtml/xml/dom2_eventsimpl.cpp:
2651         (EventImpl::typeToId):
2652         (EventImpl::idToType):
2653         * khtml/xml/dom2_eventsimpl.h:
2654         (DOM::EventImpl::):
2655
2656 2004-06-15  Maciej Stachowiak  <mjs@apple.com>
2657
2658         Reviewed by Darin.
2659
2660         Fix crash with last checkin.
2661
2662         * khtml/ecma/kjs_binding.cpp:
2663         (ScriptInterpreter::domObjectsPerDocument): check the same
2664         property we want to initialize.
2665
2666 2004-06-15  Maciej Stachowiak  <mjs@apple.com>
2667
2668         Reviewed by Darin.
2669
2670         <rdar://problem/3685309>: (properties not shared for JS wrappers of same DOM object, accessed from different frames)
2671
2672         * khtml/ecma/kjs_binding.cpp:
2673         (ScriptInterpreter::domObjects):
2674         (ScriptInterpreter::domObjectsPerDocument):
2675         (ScriptInterpreter::ScriptInterpreter):
2676         (ScriptInterpreter::forgetDOMObject):
2677         (ScriptInterpreter::getDOMObjectForDocument):
2678         (ScriptInterpreter::putDOMObjectForDocument):
2679         (ScriptInterpreter::deleteDOMObjectsForDocument):
2680         (ScriptInterpreter::mark):
2681         (ScriptInterpreter::forgetDOMObjectsForDocument):
2682         (ScriptInterpreter::updateDOMObjectDocument):
2683         * khtml/ecma/kjs_binding.h:
2684         (KJS::ScriptInterpreter::getDOMObject):
2685         (KJS::ScriptInterpreter::putDOMObject):
2686         (KJS::ScriptInterpreter::deleteDOMObject):
2687
2688 2004-06-15  Darin Adler  <darin@apple.com>
2689
2690         - rolled out Ken's fix for <rdar://problem/3672377> assertion failure in AppendNodeCommandImpl::doApply due to non-0 exception code trying to insert a DIV markup string
2691           (it was making most layout tests fail)
2692
2693         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::checkAddChild): Rolled check back in.
2694
2695 2004-06-15  David Hyatt  <hyatt@apple.com>
2696
2697         Add a truncation variable to text run boxes that will eventually be used to know how to cut out some of the glyphs when
2698         rendering.
2699         
2700         Reviewed by darin
2701
2702         * khtml/rendering/render_text.cpp:
2703         (RenderText::clearTextOverflowTruncation):
2704         * khtml/rendering/render_text.h:
2705         (khtml::InlineTextBox:::InlineRunBox):
2706         (khtml::InlineTextBox::clearTruncation):
2707
2708 2004-06-14  Darin Adler  <darin@apple.com>
2709
2710         Reviewed by Maciej.
2711
2712         - fixed some things for GC that Patrick missed, or that happened after the branch
2713
2714         * kwq/DOM-CSS.mm:
2715         (-[DOMStyleSheet finalize]): Added.
2716         (-[DOMStyleSheetList finalize]): Added.
2717         (-[DOMCSSStyleSheet finalize]): Added.
2718         (-[DOMMediaList finalize]): Added.
2719         (-[DOMCSSRuleList finalize]): Added.
2720         (-[DOMCSSRule finalize]): Added.
2721         (-[DOMCSSStyleDeclaration finalize]): Added.
2722         (-[DOMCSSValue finalize]): Added.
2723         (-[DOMRGBColor finalize]): Added.
2724         (-[DOMRect finalize]): Added.
2725         (-[DOMCounter finalize]): Added.
2726         * kwq/DOM.mm:
2727         (-[DOMObject finalize]): Added.
2728         (-[DOMNode finalize]): Added.
2729         (-[DOMNamedNodeMap finalize]): Added.
2730         (-[DOMNodeList finalize]): Added.
2731         (-[DOMImplementation finalize]): Added.
2732         (-[DOMRange finalize]): Added.
2733         (-[DOMNodeFilter finalize]): Added.
2734         (-[DOMNodeIterator finalize]): Added.
2735         (-[DOMTreeWalker dealloc]): Removed unneeded nil check.
2736         (-[DOMTreeWalker finalize]): Added.
2737         * kwq/DOMHTML.mm:
2738         (-[DOMHTMLCollection finalize]): Added.
2739         (-[DOMHTMLOptionsCollection finalize]): Added.
2740         * kwq/KWQClipboard.mm:
2741         (KWQClipboard::KWQClipboard): Use KWQRetain instead of retain.
2742         (KWQClipboard::~KWQClipboard): Use KWQRelease instead of release.
2743         * kwq/KWQEditCommand.mm:
2744         (-[KWQEditCommand finalize]): Added.
2745         * kwq/KWQFont.mm:
2746         (QFont::~QFont): Use KWQRelease instead of release.
2747         * kwq/KWQKHTMLPart.mm:
2748         (KWQKHTMLPart::keyEvent): Use KWQRetain instead of retain, and KWQRelease instead of release.
2749         (KWQKHTMLPart::mouseDown): Use KWQRetain instead of retain, and KWQRelease instead of release.
2750         (KWQKHTMLPart::mouseDragged): Use KWQRetain instead of retain, and KWQRelease instead of release.
2751         (KWQKHTMLPart::mouseUp): Use KWQRetain instead of retain, and KWQRelease instead of release.
2752         (KWQKHTMLPart::mouseMoved): Use KWQRetain instead of retain, and KWQRelease instead of release.
2753         (KWQKHTMLPart::sendContextMenuEvent): Use KWQRetain instead of retain, and KWQRelease instead of release.
2754         * kwq/KWQPageState.mm:
2755         (-[KWQPageState finalize]): Added. Filed <rdar://problem/3694163> about the fact that this is not right.
2756         * kwq/KWQTimer.mm:
2757         (-[KWQSingleShotTimerTarget finalize]): Added.
2758         * kwq/WebCoreBridge.mm:
2759         (-[WebCoreBridge finalize]): Added. Filed <rdar://problem/3694165> about the fact that this is not right.
2760
2761 2004-06-15  David Hyatt  <hyatt@apple.com>
2762
2763         Initial work on text truncation.  Working top-down, I think I've made all the changes I will need to bidi.cpp
2764         and to the block code itself.  The rest of the code can be concentrated in the render_line and render_text files.
2765         
2766         Reviewed by darin
2767
2768         * khtml/rendering/bidi.cpp:
2769         (khtml::RenderBlock::layoutInlineChildren):
2770         (khtml::RenderBlock::findNextLineBreak):
2771         (khtml::RenderBlock::deleteEllipsisLineBoxes):
2772         (khtml::RenderBlock::checkLinesForTextOverflow):
2773         * khtml/rendering/render_block.h:
2774         * khtml/rendering/render_line.cpp:
2775         (RootInlineBox::detach):
2776         (RootInlineBox::detachEllipsisBox):
2777         (RootInlineBox::canAccommodateEllipsis):
2778         (RootInlineBox::placeEllipsis):
2779         * khtml/rendering/render_line.h:
2780         (khtml::RootInlineBox::RootInlineBox):
2781         * khtml/rendering/render_text.cpp:
2782         (RenderText::clearTextOverflowTruncation):
2783         * khtml/rendering/render_text.h:
2784
2785 2004-06-14  Trey Matteson  <trey@apple.com>
2786
2787         3692690 - REGRESSION: canceling drag from WebView cause link to load
2788         Just need to take extra care to cancel any click handling in
2789         all cases once we're committed to doing the drag.
2790
2791         Reviewed by Darin.
2792
2793         * kwq/KWQKHTMLPart.mm:
2794         (KWQKHTMLPart::khtmlMouseMoveEvent):  Call invalidateClick once
2795         we're past the hysteresis point, and definitely going to try
2796         to start a drag and drop.
2797
2798 2004-06-14  Darin Adler  <darin@apple.com>
2799
2800         - fixed crash on boot
2801
2802         * kwq/KWQFoundationExtras.h: (KWQRetainNSRelease):
2803         Fixed return value of this method; was uninitialized.
2804
2805 2004-06-14  Trey Matteson  <trey@apple.com>
2806
2807         Dashboard wants access to pastboard data during the drag gesture.
2808
2809         We address this need be allowing docs that are local files to access the
2810         pasteboard data during a drag, while other pages can only get at the types
2811         list until the drop happens.  This is deemed safe because local files already
2812         have such broad super powers.
2813
2814         Reviewed by Maciej.
2815
2816         * kwq/KWQKURL.h:
2817         * kwq/KWQKURL.mm:
2818         (KURL::isLocalFile):  Implement this QT method to look for the file scheme.
2819         * kwq/WebCoreBridge.mm:
2820         (-[WebCoreBridge dragOperationForDraggingInfo:]):  Use more relaxed clipboard
2821         security for local file pages.
2822         (-[WebCoreBridge dragExitedWithDraggingInfo:]):  Ditto.
2823
2824 2004-06-14  Darin Adler  <darin@apple.com>
2825
2826         Reviewed by me, code changes by Patrick Beard.
2827
2828         - fixed <rdar://problem/3671507>: (WebKit should adopt GC changes and compile with GC enabled)
2829
2830         * WebCore.pbproj/project.pbxproj: Added KWQFoundationExtras.h.
2831         * kwq/KWQFoundationExtras.h: Added.
2832         (KWQRetain): Cover for CFRetain that is tolerant of nil.
2833         (KWQRelease): Cover for CFRelease that is tolerant of nil.
2834         (KWQRetainNSRelease): Combination of a CFRetain and an -[NSObject release] that is tolerant of nil.
2835         Also includes a declaration of finalize so we can call [super finalize] without warnings on Panther.
2836
2837         * kwq/DOM.mm:
2838         (ObjCNodeFilterCondition::ObjCNodeFilterCondition): Use CFRetain instead of retain.
2839         (ObjCNodeFilterCondition::~ObjCNodeFilterCondition): Use CFRelease instead of release.
2840         * kwq/KWQComboBox.mm:
2841         (QComboBox::~QComboBox): Use KWQRelease instead of release.
2842         (QComboBox::setFont): Use KWQRelease instead of release.
2843         (QComboBox::labelFont): Use KWQRetain instead of retain.
2844         * kwq/KWQCursor.mm:
2845         (QCursor::QCursor): Use KWQRetain instead of retain.
2846         (QCursor::~QCursor): Use KWQRelease instead of release.
2847         (QCursor::operator=): More of the same.
2848         * kwq/KWQFileButton.mm:
2849         (KWQFileButton::KWQFileButton): Use KWQRetainNSRelease to retain a newly-allocated object.
2850         (KWQFileButton::~KWQFileButton): Use CFRelease instead of release.
2851         * kwq/KWQFont.mm:
2852         (QFont::QFont): Use KWQRetain instead of retain.
2853         (QFont::operator=): More of the same.
2854         (QFont::setFamily): Use KWQRelease instead of release.
2855         (QFont::setFirstFamily): Use KWQRelease instead of release.
2856         (QFont::setPixelSize): Use KWQRelease instead of release.
2857         (QFont::setWeight): Use KWQRelease instead of release.
2858         (QFont::setItalic): Use KWQRelease instead of release.
2859         (QFont::getNSFont): Use KWQRetain instead of retain.
2860         * kwq/KWQFontMetrics.mm:
2861         (QFontMetricsPrivate::~QFontMetricsPrivate): Use KWQRelease instead of release.
2862         (QFontMetricsPrivate::getRenderer): Use KWQRetain instead of retain.
2863         (QFontMetricsPrivate::setFont): Use KWQRelease instead of release.
2864         * kwq/KWQKHTMLPart.mm:
2865         (KWQKHTMLPart::~KWQKHTMLPart): Use KWQRelease instead of release.
2866         (KWQKHTMLPart::clearRecordedFormValues): Use KWQRelease instead of release.
2867         (KWQKHTMLPart::recordFormValue): Use KWQRetainNSRelease and use KWQRetain instead of retain.
2868         (KWQKHTMLPart::windowScriptObject): Use KWQRetainNSRelease.
2869         * kwq/KWQKJobClasses.mm:
2870         (KIO::TransferJobPrivate::TransferJobPrivate): Use KWQRetainNSRelease.
2871         (KIO::TransferJobPrivate::~TransferJobPrivate): Use KWQRelease instead of release.
2872         (KIO::TransferJob::setLoader): More of the same.
2873         * kwq/KWQLoader.mm:
2874         (KWQRetainResponse): Use KWQRetain instead of retain.
2875         (KWQReleaseResponse): Use KWQRelease instead of release.
2876         * kwq/KWQPainter.mm:
2877         (QPainterPrivate::~QPainterPrivate): Use KWQRelease instead of release.
2878         (QPainter::_updateRenderer): More of the same.
2879         (QPainter::initFocusRing): Use KWQRetainNSRelease.
2880         (QPainter::clearFocusRing): Use KWQRelease instead of release.
2881         * kwq/KWQPixmap.mm:
2882         (QPixmap::QPixmap): Use KWQRetain instead of retain.
2883         (QPixmap::~QPixmap): Use KWQRelease instead of release.
2884         (QPixmap::receivedData): Use KWQRetain instead of retain.
2885         (QPixmap::resize): Use KWQRetainNSRelease and use KWQRelease instead of release.
2886         (QPixmap::operator=): More of the same.
2887         * kwq/KWQRegion.mm:
2888         (QRegion::QRegion): Use KWQRetain instead of retain.
2889         (QRegion::~QRegion): Use KWQRelease instead of release.
2890         (QRegion::operator=): More of the same.
2891         * kwq/KWQTimer.mm:
2892         (QTimer::start): Use KWQRetain instead of retain.
2893         (QTimer::stop): Use KWQRelease instead of release.
2894         (QTimer::fire): Use KWQRelease instead of release.
2895         * kwq/KWQWidget.mm:
2896         (QWidget::QWidget): Use KWQRetain instead of retain.
2897         (QWidget::~QWidget): Use KWQRelease instead of release.
2898         (QWidget::setView): More of the same.
2899         * kwq/WebCoreSettings.mm: (-[WebCoreSettings finalize]):
2900         Delete the storage here, as well as in dealloc.
2901
2902 2004-06-14  Maciej Stachowiak  <mjs@apple.com>
2903
2904         Reviewed by Trey.
2905
2906         <rdar://problem/3693818>: (Safari should use CG calls for circle drawing for better performance)
2907
2908         * kwq/KWQPainter.mm:
2909         (QPainter::drawEllipse): Use CG calls instead of NS calls for faster circle drawing.
2910         (QPainter::drawArc): Ditto.
2911
2912 2004-06-14  Ken Kocienda  <kocienda@apple.com>
2913
2914         Reviewed by Vicki
2915
2916         Fix for this bug:
2917         
2918         <rdar://problem/3690115> Crash deleting text out of iChat's profile (an editable Webview)
2919
2920         * khtml/html/html_elementimpl.cpp:
2921         (HTMLElementImpl::isFocusable): Added null-check of parent node before deref'ing it.
2922
2923 2004-06-14  Trey Matteson  <trey@apple.com>
2924
2925         Two tweaks to recently added "drag" pseudo-class, as suggested by
2926         Dave.  The class is renamed to "-khtml-drag", and we update layout
2927         when using it, instead of only updating styles.
2928
2929         Reviewed by hyatt.
2930
2931         * khtml/css/css_base.cpp:
2932         (CSSSelector::extractPseudoType):
2933         * kwq/KWQKHTMLPart.mm:
2934         (KWQKHTMLPart::snapshotDragImage):
2935
2936 2004-06-13  Trey Matteson  <trey@apple.com>
2937
2938         Support for DHTML cut/copy/paste.  We now support oncut, oncopy, onpaste.  The events
2939         are sent to the first node in the selection, or else the body.  Current holes are
2940         that we do not send events for operations in text fields or text areas (because it
2941         is hard to get the right hooks into the AppKit).
2942
2943         We also send onbeforecut, onbeforecopy, onbeforepaste before the other events, which
2944         isn't really WinIE compatible, but is close.  WinIE uses these to enable cut/paste
2945         menu items in its UI.  DB doesn't need this for now.
2946
2947         Reviewed by Chris
2948
2949         * khtml/ecma/kjs_dom.cpp:
2950         (DOMNode::getValueProperty):  Boilerplate for new events
2951         (DOMNode::putValue):    Boilerplate for new events
2952         * khtml/ecma/kjs_dom.h:
2953         (KJS::DOMNode::):    Boilerplate for new events
2954         * khtml/ecma/kjs_dom.lut.h:
2955         * khtml/ecma/kjs_events.cpp:
2956         (DOMEvent::DOMEvent): "dataTransfer" and "clipboardData" properties are conditionally
2957         defined on DOMEvent, depending on if the event is a dragging or clipboard event.
2958         (DOMMouseEvent::mark):  Pass mark along to any clipboard object we have.
2959         (DOMEvent::getValueProperty):  Return "dataTransfer" or "clipboardData".
2960         (DOMMouseEvent::getValueProperty):  Returning "dataTransfer" now handled by
2961         the superclass.
2962         * khtml/ecma/kjs_events.h:
2963         (KJS::DOMEvent::):
2964         (KJS::DOMMouseEvent::DOMMouseEvent):
2965         (KJS::DOMMouseEvent::):
2966         (KJS::DOMMouseEvent::toMouseEvent):
2967         * khtml/ecma/kjs_events.lut.h:
2968         * khtml/html/html_elementimpl.cpp:
2969         (HTMLElementImpl::parseHTMLAttribute):  Boilerplate for new events
2970         * khtml/misc/htmlattrs.c:
2971         * khtml/misc/htmlattrs.h:
2972         * khtml/misc/htmlattrs.in:  Boilerplate for new events
2973         * khtml/xml/dom2_eventsimpl.cpp:
2974         (EventImpl::typeToId):  Boilerplate for new events
2975         (EventImpl::idToType):  Boilerplate for new events
2976         (EventImpl::isDragEvent):  New utility
2977         (EventImpl::isClipboardEvent):  New utility
2978         (MouseEventImpl::isDragEvent):  New utility
2979         (ClipboardEventImpl::ClipboardEventImpl):  ref optional clipboard
2980         (ClipboardEventImpl::~ClipboardEventImpl):  deref optional clipboard
2981         (ClipboardEventImpl::isClipboardEvent):  New utility
2982         * khtml/xml/dom2_eventsimpl.h:
2983         (DOM::EventImpl::):  Boilerplate for new events
2984         (DOM::ClipboardEventImpl::clipboard):
2985         * kwq/KWQClipboard.h:  Monkey business so this file is includable in C++.
2986         * kwq/KWQClipboard.mm:
2987         * kwq/KWQKHTMLPart.h:
2988         * kwq/KWQKHTMLPart.mm:
2989         (KWQKHTMLPart::dispatchCPPEvent):  Send one of the new events.
2990         (KWQKHTMLPart::tryCut):  Declare pasteboard types, send cut events.
2991         (KWQKHTMLPart::tryCopy):  Declare pasteboard types, send copy events.
2992         (KWQKHTMLPart::tryPaste):  Send paste events.
2993         * kwq/WebCoreBridge.h:
2994         * kwq/WebCoreBridge.mm:
2995         (-[WebCoreBridge tryDHTMLCut]):  Pass through to part
2996         (-[WebCoreBridge tryDHTMLCopy]):  Ditto
2997         (-[WebCoreBridge tryDHTMLPaste]):  Ditto
2998
2999 2004-06-14  Trey Matteson  <trey@apple.com>
3000
3001         A new CSS pseudo-class ".drag" is added.  Analogous to the "hover" class,
3002         this class determines styles used while an element is generating a drag
3003         image.
3004
3005         Reviewed by hyatt.
3006
3007         * khtml/css/css_base.cpp:
3008         (CSSSelector::extractPseudoType):  Boilerplate for adding new class.
3009         * khtml/css/css_base.h:  Boilerplate for adding new class.
3010         * khtml/css/cssstyleselector.cpp:
3011         (khtml::CSSStyleSelector::checkOneSelector):  Match new class against
3012         elements being dragged.
3013         * khtml/css/cssstyleselector.h:
3014         (khtml::StyleSelector::):  Boilerplate for adding new class.
3015         * khtml/rendering/render_object.cpp:
3016         (RenderObject::RenderObject):  Init new member.
3017         (RenderObject::isDragging):  Return whether this object is being dragged.
3018         (RenderObject::updateDragState):  Paint us an all children with a new dragged state.
3019         * khtml/rendering/render_object.h:
3020         * khtml/rendering/render_style.h: Boilerplate for adding new class.
3021         (khtml::RenderStyle::NonInheritedFlags::operator==):
3022         (khtml::RenderStyle::setBitDefaults):
3023         (khtml::RenderStyle::affectedByDragRules):
3024         (khtml::RenderStyle::setAffectedByDragRules):
3025         * kwq/KWQClipboard.mm:
3026         (KWQClipboard::dragNSImage):  Method rename.
3027         * kwq/KWQKHTMLPart.h:
3028         * kwq/KWQKHTMLPart.mm:
3029         (KWQKHTMLPart::snapshotDragImage):  Mark the element as being dragged before
3030         we snapshot it, so new style class will apply.
3031
3032 2004-06-14  Ken Kocienda  <kocienda@apple.com>
3033
3034         Reviewed by me
3035         
3036         Added a few more editing-related layout tests.
3037
3038         * layout-tests/editing/inserting/insert-3654864-fix-expected.txt: Added.
3039         * layout-tests/editing/inserting/insert-3654864-fix.html: Added.
3040         * layout-tests/editing/inserting/insert-3659587-fix-expected.txt: Added.
3041         * layout-tests/editing/inserting/insert-3659587-fix.html: Added.
3042         * layout-tests/editing/inserting/insert-after-delete-001-expected.txt: Added.
3043         * layout-tests/editing/inserting/insert-after-delete-001.html: Added.
3044         * layout-tests/editing/inserting/insert-br-case1-expected.txt: Added.
3045         * layout-tests/editing/inserting/insert-br-case1.html: Added.
3046         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Added.
3047         * layout-tests/editing/inserting/insert-br-case2.html: Added.
3048         * layout-tests/editing/inserting/insert-br-case3-expected.txt: Added.
3049         * layout-tests/editing/inserting/insert-br-case3.html: Added.
3050
3051 2004-06-14  Ken Kocienda  <kocienda@apple.com>
3052
3053         Reviewed by me
3054
3055         Regarding the bug below, removing some tests since we have removed the execCommand("paste") 
3056         feature, at least for now.
3057
3058         <rdar://problem/3684792>: (JavaScript execCommand("paste") presents security issues)
3059
3060         * layout-tests/editing/pasteboard/copy-paste-text-001-expected.txt: Removed.
3061         * layout-tests/editing/pasteboard/copy-paste-text-001.html: Removed.
3062         * layout-tests/editing/pasteboard/cut-paste-text-002-expected.txt: Removed.
3063         * layout-tests/editing/pasteboard/cut-paste-text-002.html: Removed.
3064
3065 2004-06-14  Ken Kocienda  <kocienda@apple.com>
3066
3067         Reviewed by Darin
3068
3069         Fix for this bug:
3070         
3071         <rdar://problem/3672377> assertion failure in AppendNodeCommandImpl::doApply due to non-0 exception code trying to insert a DIV markup string
3072         
3073         * khtml/xml/dom_nodeimpl.cpp:
3074         (NodeImpl::checkAddChild): This function was being too strict in disallowing certain nodes
3075         to be added as other child nodes, applying rules we typically use for parsing. However,
3076         those parsing rules are primarily for dealing with "bad" HTML, and should not be
3077         applied to programmatic DOM operations. The fix involves removing calls to childAllowed().
3078
3079 2004-06-12  Trey Matteson  <trey@apple.com>
3080
3081         The drag image may be updated during a DHTML drag.  This includes updating
3082         from a Timer instead of a drag event handler.  In addition, an arbitrary
3083         element can be set as the one to snapshot for the drag image.
3084
3085         Reviewed by John
3086
3087         * khtml/ecma/kjs_events.cpp:
3088         (ClipboardProtoFunc::tryCall):  setDragImage accepts a node.  Previously,
3089         it had to be an Image object.
3090         * khtml/rendering/render_object.cpp:
3091         (RenderObject::paintingRootRect):  Also returns top element's rect.
3092         * khtml/rendering/render_object.h:
3093         * khtml/xml/dom2_eventsimpl.h:
3094         * kwq/KWQClipboard.h:  New security mode where image is still writable, but
3095         pasteboard is not.
3096         (KWQClipboard::):
3097         (KWQClipboard::setDragHasStarted):
3098         * kwq/KWQClipboard.mm:
3099         (KWQClipboard::KWQClipboard):    Part may be passed.  Needed in the source
3100         case to generate an image from an element.
3101         (KWQClipboard::setAccessPolicy):  New, replaces former becomeNumb method
3102         which wasn't flexible enough.
3103         (KWQClipboard::accessPolicy):  New getter.
3104         (KWQClipboard::dragImage):  No change, diff confusion.
3105         (KWQClipboard::setDragImage):  Call new helper, below.
3106         (KWQClipboard::dragImageElement):  New, return any element set.
3107         (KWQClipboard::setDragImageElement):  New, call new helper.
3108         (KWQClipboard::setDragImage):  New helper, set the image via either a
3109         pixmap or an element to snapshot, pushes the result to WebKit if we've
3110         already started the drag.
3111         (KWQClipboard::dragNSImage):  Generate an NSImage and mouse offset, no
3112         matter how the drag image was set (Image or element).
3113         * kwq/KWQKHTMLPart.h:  A single clipboard is kept over the life of a
3114         source drag instead of making one for each event.
3115         * kwq/KWQKHTMLPart.mm:
3116         (KWQKHTMLPart::KWQKHTMLPart):  Init clipboard.
3117         (KWQKHTMLPart::~KWQKHTMLPart):  Free clipboard.
3118         (KWQKHTMLPart::freeClipboard):  New helper.
3119         (KWQKHTMLPart::dispatchDragSrcEvent):  Most code moved to caller.
3120         (KWQKHTMLPart::khtmlMouseMoveEvent):  Make clipboard for this drag session.
3121         Init clipboard to make an image from the dragSource element.  Mark the
3122         drag as having started.
3123         (KWQKHTMLPart::dragSourceMovedTo):  Clipboard will update WK with any new
3124         drag image, so we don't need to.
3125         (KWQKHTMLPart::dragSourceEndedAt):  Ditto.
3126         (KWQKHTMLPart::elementImage):  Also return element rect.
3127         * kwq/WebCoreBridge.h:  Glue moved to WebCoreGraphicsBridge.
3128         * kwq/WebCoreBridge.mm:
3129         (-[WebCoreBridge dragOperationForDraggingInfo:]):  Use new method.
3130         (-[WebCoreBridge dragExitedWithDraggingInfo:]):  Ditto
3131         (-[WebCoreBridge concludeDragForDraggingInfo:]):  Ditto
3132         * kwq/WebCoreGraphicsBridge.h:
3133         * kwq/WebCoreGraphicsBridge.m:
3134         (-[WebCoreGraphicsBridge setDraggingImage:at:]):  Glue moved from WebBridge
3135
3136 2004-06-11  Chris Blumenberg  <cblu@apple.com>
3137
3138         Support for WebKit drag & drop API.
3139
3140         Reviewed by trey.
3141
3142         * kwq/WebCoreBridge.h:
3143         * kwq/WebCoreBridge.mm:
3144         (-[WebCoreBridge _positionForPoint:]): new
3145         (-[WebCoreBridge moveDragCaretToPoint:]): call _positionForPoint
3146         (-[WebCoreBridge editableDOMRangeForPoint:]): new
3147
3148 2004-06-11  Darin Adler  <darin@apple.com>
3149
3150         Reviewed by Dave.
3151
3152         - fixed <rdar://problem/3645846>: (REGRESSION: Stuck "Loading" when logging into Google's Gmail on newer versions of Safari)
3153
3154         * khtml/html/html_baseimpl.cpp: (HTMLFrameElementImpl::parseHTMLAttribute):
3155         Call through to base class for ATTR_ID so the "has ID" bit gets set.
3156         * khtml/html/html_imageimpl.cpp:
3157         (HTMLImageElementImpl::parseHTMLAttribute): Move ATTR_COMPOSITE code up and out of the way so
3158         it doesn't screw up ATTR_ID parsing.
3159         (HTMLMapElementImpl::parseHTMLAttribute): Call through to base class for ATTR_ID
3160         so the "has ID" bit gets set.
3161         * khtml/html/html_objectimpl.cpp:
3162         (HTMLAppletElementImpl::parseHTMLAttribute): Remove ATTR_ID case; not needed.
3163         (HTMLParamElementImpl::parseHTMLAttribute): Call through to base class for ATTR_ID
3164         so the "has ID" bit gets set.
3165
3166 2004-06-11  Ken Kocienda  <kocienda@apple.com>
3167
3168         Reviewed by Hyatt
3169
3170         Fix for this bug:
3171         
3172         <rdar://problem/3659587>: "when typing in Blot, bold style does not carry over to next line after pressing 'return'"
3173
3174         Did some work to improve the insert newline command. The refinement is to insert the newline
3175         at the upstream position of the caret, ensuring that the newline takes on the 
3176         appropriate style, and does not let the caret "escape" from an element that is
3177         conferring style.
3178
3179         * khtml/editing/htmlediting_impl.cpp:
3180         (khtml::InputNewlineCommandImpl::insertNodeAfterPosition): New helper. Adds smarts about adding
3181         newlines when the selection is a caret in a block.
3182         (khtml::InputNewlineCommandImpl::insertNodeBeforePosition): Ditto.
3183         (khtml::InputNewlineCommandImpl::doApply): Simplified cases. One case in the code could not
3184         happen.
3185         * khtml/editing/htmlediting_impl.h:
3186
3187         Fix for this bug:
3188     
3189         <rdar://problem/3654864>: "Pasting content at start of line places it at end of previous line"
3190
3191         (khtml::InputTextCommandImpl::prepareForTextInsertion): Simple code mistake. Content was indeed
3192         being added to the line before. Fixed to add new content after the line break.
3193
3194 2004-07-10  Trey Matteson  <trey@apple.com>
3195
3196         Prep work for latest delegate API for dragging.  In addition, I also straightened out all
3197         the cases of DHTML setting a drag image or setting pasteboard data, and how that would
3198         override WebKit's default behavior (which follows how WinIE does things).
3199
3200         Reviewed by Chris.
3201
3202         * khtml/rendering/render_object.cpp:
3203         (RenderObject::draggableNode):  Obey new params for whether a DHTML or UserAgent (i.e.,
3204         WebKit) drag source is allowed.
3205         * khtml/rendering/render_object.h:
3206         * kwq/KWQKHTMLPart.h:
3207         * kwq/KWQKHTMLPart.mm:
3208         (KWQKHTMLPart::dispatchDragSrcEvent):  Setting pasteboard data was moved out of here, now
3209         caller's responsibility.
3210         (KWQKHTMLPart::khtmlMouseMoveEvent):  Ask bridge for allowable drag actions (DHTML vs UA).
3211         Only send drag events if DHTML is allowed.  Only generate a drag image if the source is
3212         a DHTML element.  Note whether event handler set any pasteboard data, and pass that fact
3213         to WebKit.
3214         (KWQKHTMLPart::dragSourceMovedTo): Only send drag events if DHTML is allowed.  
3215         (KWQKHTMLPart::dragSourceEndedAt): Only send drag events if DHTML is allowed.  
3216         * kwq/WebCoreBridge.h:
3217
3218 2004-06-11  Ken Kocienda  <kocienda@apple.com>
3219
3220         Reviewed by Trey
3221
3222         Lay some groundwork for better testing of inserting newlines. Layout
3223         tests that use this new code will be coming soon.
3224
3225         * khtml/editing/jsediting.cpp: Add commands for bold and inserting newlines.
3226         * layout-tests/editing/editing.js: Added new insertNewline command.
3227         which calls through to TypingCommand::insertNewline. There was no way to get
3228         to this command from JS before this addition.
3229
3230 2004-06-11  Ken Kocienda  <kocienda@apple.com>
3231
3232         Reviewed by Darin
3233
3234         Javascript execCommand system wants to use case-insensitive QDict.
3235         The interface for QDict offers this feature, but it was never implemented.
3236         Now it is.
3237
3238         * kwq/KWQDictImpl.h: Declare bool to store case-sensitive bit.
3239         * kwq/KWQDictImpl.mm:
3240         (KWQDictImpl::KWQDictImpl): No longer drops caseSensitive on the floor; stores
3241         it in instance variable.
3242         (KWQDictImpl::insert): Make lowercase version of key for operation, if necessary.
3243         (KWQDictImpl::remove): Ditto.
3244         (KWQDictImpl::find): Ditto.
3245         (KWQDictIteratorImpl::currentStringKey): Whitespace cleanup.
3246
3247 === Safari-144 ===
3248
3249 2004-06-10  Ken Kocienda  <kocienda@apple.com>
3250
3251         Reviewed by Darin
3252
3253         Fix for this bug:
3254         
3255         <rdar://problem/3654850>: "Style changes do not work across blocks"
3256         
3257         Now, applying styles works across blocks. I did quite a bit
3258         of internal redsign on the member functions of this class to
3259         make this work. As a bonus, from an architectural standpoint,
3260         all style changes are now done "in place". There is no more
3261         copying of content in order to perform style changes.
3262
3263         * khtml/editing/htmlediting_impl.cpp:
3264         (khtml::ApplyStyleCommandImpl::doApply):
3265         (khtml::ApplyStyleCommandImpl::removeHTMLStyleNode):
3266         (khtml::ApplyStyleCommandImpl::removeCSSStyle):
3267         (khtml::ApplyStyleCommandImpl::removeStyle):
3268         (khtml::ApplyStyleCommandImpl::nodeFullySelected):
3269         (khtml::ApplyStyleCommandImpl::splitTextAtStartIfNeeded):
3270         (khtml::ApplyStyleCommandImpl::splitTextAtEndIfNeeded):
3271         (khtml::ApplyStyleCommandImpl::surroundNodeRangeWithElement):
3272         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded):
3273         (khtml::ApplyStyleCommandImpl::positionInsertionPoint):
3274         * khtml/editing/htmlediting_impl.h:
3275
3276 2004-06-10  Darin Adler  <darin@apple.com>
3277
3278         Reviewed by Ken.
3279
3280         - filled out execCommand a lot more
3281         - fixed <rdar://problem/3685231>: (execCommand italic is not implemented)
3282         - fixed <rdar://problem/3685232>: (execCommand bold is not implemented)
3283         - fixed <rdar://problem/3675899>: (Make queryCommandIndeterm work as specified in the Javascript execCommand Compatibility Plan)
3284         - fixed <rdar://problem/3675901>: (Make queryCommandState work as specified in the Javascript execCommand Compatibility Plan)
3285         - fixed <rdar://problem/3675904>: (Make queryCommandValue work as specified in the Javascript execCommand Compatibility Plan)
3286
3287         * khtml/editing/jsediting.cpp:
3288         (DOM::JSEditor::queryCommandIndeterm): Changed to use KHTMLPart::TriState instead of CommandState.
3289         (DOM::JSEditor::queryCommandState): Ditto.
3290         (execStyleChange): Changed to use KHTMLPart::applyStyle.
3291         (stateStyle): Used KHTMLPart::selectionHasStyle for this.
3292         (selectionStartHasStyle): Use KHTMLPart::selectionStartHasStyle for this.
3293         (valueStyle): Used KHTMLPart::selectionStartStylePropertyValue for this.
3294         (execBold): Implemented toggling, using selectionStartHasStyle.
3295         (execItalic): Implemented toggling, using selectionStartHasStyle.
3296         (execPrint): Implemented.
3297         (enabledRedo): Implemented, using canRedo.
3298         (enabledUndo): Implemented, using canUndo.
3299         (stateNone): Renamed from stateNo.
3300         (valueBackColor): Implemented, using valueStyle.
3301         (valueFontName): Implemented, using valueStyle.
3302         (valueFontSize): Implemented, using valueStyle.
3303         (valueForeColor): Implemented, using valueStyle.
3304         (valueFontSize): Implemented, using valueStyle.
3305
3306         * khtml/khtml_part.h: Added editing operations.
3307         * khtml/khtml_part.cpp:
3308         (KHTMLPart::copyToPasteboard): Added.
3309         (KHTMLPart::cutToPasteboard): Added.
3310         (KHTMLPart::redo): Added.
3311         (KHTMLPart::undo): Added.
3312         (KHTMLPart::applyStyle): Added.
3313         (updateState): Added.
3314         (KHTMLPart::selectionHasStyle): Added.
3315         (KHTMLPart::selectionStartHasStyle): Added.
3316         (KHTMLPart::selectionStartStylePropertyValue): Added.
3317         (KHTMLPart::selectionComputedStyle): Added.
3318         (KHTMLPart::print): Added.
3319
3320         * khtml/ecma/kjs_window.cpp: (WindowFunc::tryCall): Call print() on plain old part, not KWQ(part).
3321
3322         * kwq/KWQKHTMLPart.h: Removed print(), added _haveUndoRedoOperations.
3323         * kwq/KWQKHTMLPart.mm:
3324         (KHTMLPart::print): Moved from KWQKHTMLPart to KHTMLPart.
3325         (KWQKHTMLPart::registerCommandForUndo): Moved code here from bridge.
3326         (KWQKHTMLPart::registerCommandForRedo): Moved code here from bridge.
3327         (KWQKHTMLPart::clearUndoRedoOperations): Moved code here from bridge.
3328         (KWQKHTMLPart::issueUndoCommand): Moved code here from bridge.
3329         (KWQKHTMLPart::issueRedoCommand): Moved code here from bridge.
3330         (KWQKHTMLPart::issuePasteCommand): Moved code here from bridge.
3331         (KHTMLPart::canUndo): Added.
3332         (KHTMLPart::canRedo): Added.
3333
3334         * kwq/WebCoreBridge.h: Added undoManager, removed undo-related methods.
3335         * kwq/WebCoreBridge.mm: (-[WebCoreBridge applyStyle:]): Changed to call
3336         KHTMLPart::applyStyle.
3337
3338         * WebCore.pbproj/.cvsignore: Updated for new Xcode files.
3339
3340 2004-06-09  Maciej Stachowiak  <mjs@apple.com>
3341
3342         Reviewed by Dave.
3343