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