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