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