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