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