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