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