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