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