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