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