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