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