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