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