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