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