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