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