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