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