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