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