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