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