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