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