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