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