Reviewed by Darin.
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2004-09-21  Maciej Stachowiak  <mjs@apple.com>
2
3         Reviewed by Darin.
4
5         <rdar://problem/3805137> REGRESSION: Cannot search on pricetool.com
6
7         The problem here is that residual style handling can cause an
8         element associated with a misnested form to lose the association,
9         because it can become detached and then reattached in this
10         case. So we need to maintain the association.
11         
12         * khtml/html/html_formimpl.h: Added list of dormant elements to form,
13         and dormant bit to generic form element.
14         * khtml/html/html_formimpl.cpp:
15         (DOM::HTMLFormElementImpl::~HTMLFormElementImpl): Clear m_form field for
16         dormant elements too.
17         (DOM::HTMLFormElementImpl::registerFormElement): Remove from dormant list
18         in addition to adding to main list.
19         (DOM::HTMLFormElementImpl::removeFormElement): Remove from both lists.
20         (DOM::HTMLFormElementImpl::makeFormElementDormant): New method, remove from
21         main list, add to dormant list.
22         (DOM::HTMLGenericFormElementImpl::HTMLGenericFormElementImpl): Initialize
23         dormant bit to false.
24         (DOM::HTMLGenericFormElementImpl::insertedIntoDocument): If the element is
25         dormant and has a form, re-register it and clear the dormant bit.
26         (DOM::HTMLGenericFormElementImpl::removedFromDocument): If the document has
27         a form, tell the form it is dormant and set the dormant bit.
28
29 2004-09-22  Chris Blumenberg  <cblu@apple.com>
30
31         Fixed: <rdar://problem/3811187> REGRESSION (Mail): Control-click past end of document does not spell check last word
32
33         Reviewed by kocienda.
34
35         * khtml/xml/dom_selection.cpp:
36         (DOM::Selection::validate): if at the end of the document, expand to the left.
37
38 2004-09-22  Maciej Stachowiak  <mjs@apple.com>
39
40         Reviewed by Ken and John.
41
42         <rdar://problem/3759228> REGRESSION (Mail): stray characters when entering text via input method right after newline
43         
44         * khtml/editing/htmlediting_impl.cpp:
45         (khtml::CompositeEditCommandImpl::inputText): Add an optional 
46         selectInsertedText parameter.
47         (khtml::ReplaceSelectionCommandImpl::doApply): Let the inputText operation
48         select the text when inserting plain text, because it already knows all the right
49         information to do so, and this function doesn't (sometimes text is inserted
50         before the start of the old selection, not after!)
51         * khtml/editing/htmlediting_impl.h:
52
53 2004-09-22  Richard Williamson   <rjw@apple.com>
54
55         More tweaks to dashboard regions.
56
57         Move dashboard regions list into css3NonInheritedData so it will be shared
58         by all styles that don't modify the empty region list.
59
60         Make the initial value for dashboard region list a static to minimize allocations
61         of empty lists.
62
63         Make marquee and flex style accessor functions const.
64
65         Reviewed by Hyatt.
66
67         * khtml/rendering/render_style.cpp:
68         (RenderStyle::diff):
69         * khtml/rendering/render_style.h:
70         (khtml::RenderStyle::opacity):
71         (khtml::RenderStyle::boxAlign):
72         (khtml::RenderStyle::boxDirection):
73         (khtml::RenderStyle::boxFlexGroup):
74         (khtml::RenderStyle::boxOrdinalGroup):
75         (khtml::RenderStyle::boxOrient):
76         (khtml::RenderStyle::boxPack):
77         (khtml::RenderStyle::marqueeIncrement):
78         (khtml::RenderStyle::marqueeSpeed):
79         (khtml::RenderStyle::marqueeLoopCount):
80         (khtml::RenderStyle::marqueeBehavior):
81         (khtml::RenderStyle::marqueeDirection):
82         (khtml::RenderStyle::dashboardRegions):
83         (khtml::RenderStyle::setDashboardRegions):
84         (khtml::RenderStyle::setDashboardRegion):
85         (khtml::RenderStyle::initialDashboardRegions):
86
87 2004-09-22  David Hyatt  <hyatt@apple.com>
88
89         Fix for 3802766, entire view redrawn in Blot while typing.  Don't needlessly create text nodes just to find
90         out the font for the caret position.
91         
92         Reviewed by darin
93
94         * kwq/KWQKHTMLPart.mm:
95         (KWQKHTMLPart::fontForSelection):
96
97 2004-09-21  Chris Blumenberg  <cblu@apple.com>
98
99         Fixed:
100         <rdar://problem/3735071> REGRESSION (Mail): WebCore Editing must do smart paste
101         <rdar://problem/3799163> REGRESSION (Mail): Deleting a word doesn't delete whitespace
102
103         Reviewed by darin.
104
105         * khtml/editing/htmlediting.cpp:
106         (khtml::DeleteSelectionCommand::DeleteSelectionCommand): take smartDelete parameter
107         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): take smartReplace parameter
108         * khtml/editing/htmlediting.h:
109         * khtml/editing/htmlediting_impl.cpp:
110         (khtml::DeleteSelectionCommandImpl::DeleteSelectionCommandImpl): take smartDelete parameter
111         (khtml::DeleteSelectionCommandImpl::doApply): delete whitespace before and after selection if necessary
112         (khtml::ReplaceSelectionCommandImpl::ReplaceSelectionCommandImpl): take smartReplace parameter
113         (khtml::ReplaceSelectionCommandImpl::doApply): add whitespace before and after the replacement if necessary
114         * khtml/editing/htmlediting_impl.h:
115         * kwq/WebCoreBridge.h:
116         * kwq/WebCoreBridge.mm:
117         (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:smartReplace:]): take smartReplace parameter
118         (-[WebCoreBridge replaceSelectionWithNode:selectReplacement:smartReplace:]): ditto
119         (-[WebCoreBridge replaceSelectionWithMarkupString:baseURLString:selectReplacement:smartReplace:]): ditto
120         (-[WebCoreBridge replaceSelectionWithText:selectReplacement:smartReplace:]): ditto
121         (-[WebCoreBridge deleteSelectionWithSmartDelete:]): take smartDelete parameter
122
123 2004-09-21  Richard Williamson   <rjw@apple.com>
124
125         More dashboard region work.
126
127         Added support for computed style and cssText for new region property.
128         Added restriction on length types allowed in region functions.
129         Added initial and inheritance support for -apple-dashboard-region.
130
131         Reviewed by Hyatt.
132
133         * khtml/css/css_computedstyle.cpp:
134         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
135         * khtml/css/css_valueimpl.cpp:
136         (CSSPrimitiveValueImpl::cssText):
137         * khtml/css/cssparser.cpp:
138         (CSSParser::parseDashboardRegions):
139         * khtml/css/cssstyleselector.cpp:
140         (khtml::CSSStyleSelector::applyProperty):
141         * khtml/rendering/render_object.cpp:
142         (RenderObject::addDashboardRegions):
143         * khtml/rendering/render_style.cpp:
144         (RenderStyle::diff):
145         * khtml/rendering/render_style.h:
146         (khtml::StyleDashboardRegion::operator==):
147         (khtml::RenderStyle::dashboardRegions):
148         (khtml::RenderStyle::setDashboardRegions):
149         (khtml::RenderStyle::initialDashboardRegions):
150
151 2004-09-21  Darin Adler  <darin@apple.com>
152
153         Reviewed by Ken.
154
155         - fixed problem where our updateLayout call ignores pending stylesheets all the time
156
157         * khtml/xml/dom_docimpl.h: Added updateLayoutIgnorePendingStylesheets.
158         * khtml/xml/dom_docimpl.cpp:
159         (DocumentImpl::updateLayout): Took out the "ignore pending stylesheets" business here.
160         (DocumentImpl::updateLayoutIgnorePendingStylesheets): Put it in here.
161
162         * khtml/ecma/kjs_dom.cpp: (DOMNode::getValueProperty): Call the new
163         updateLayoutIgnorePendingStylesheets function.
164         * khtml/ecma/kjs_html.cpp:
165         (KJS::HTMLElement::getValueProperty): Ditto.
166         (KJS::HTMLElement::putValue): Ditto.
167         * khtml/ecma/kjs_views.cpp: (DOMAbstractViewFunc::tryCall): Ditto.
168         * khtml/ecma/kjs_window.cpp:
169         (Window::updateLayout): Ditto.
170         (Selection::get): Ditto.
171         (SelectionFunc::tryCall): Ditto.
172
173         * khtml/html/html_imageimpl.h: Add ignorePendingStylesheets boolean parameter.
174         * khtml/html/html_imageimpl.cpp:
175         (HTMLImageElementImpl::width): Respect new parameter.
176         (HTMLImageElementImpl::height): Ditto.
177
178         - tweaks
179
180         * kwq/WebCoreBridge.mm:
181         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Removed unneeded
182         explicit "true" parameter to setSelection.
183         (-[WebCoreBridge alterCurrentSelection:verticalDistance:]): Ditto.
184
185 2004-09-21  Darin Adler  <darin@apple.com>
186
187         Reviewed by Ken.
188
189         - fix crash when pasting text at the end of the document and then doing an undo
190
191         * khtml/editing/htmlediting_impl.cpp:
192         (khtml::EditCommandImpl::apply): Call markMisspellingsInSelection before doing
193         the editing operation, and we'll tell setSelection not to unmark the old selection.
194         Also call updateLayout before calling appliedEditing so DOM operations in the
195         code responding to the selection change will work.
196         (khtml::EditCommandImpl::unapply): Ditto.
197         (khtml::EditCommandImpl::reapply): Ditto.
198
199         * khtml/khtml_part.h: Added a third parameter to setSelection to tell it whether
200         to unmark the old selection. We must pass false when editing, because the old
201         selection might have now-invalid offsets inside it.
202         * khtml/khtml_part.cpp:
203         (KHTMLPart::setSelection): Add unmarkOldSelection parameter, and respect it.
204         (KHTMLPart::appliedEditing): Pass false for unmarkOldSelection.
205         (KHTMLPart::unappliedEditing): Ditto.
206         (KHTMLPart::reappliedEditing): Ditto.
207
208 2004-09-21  Richard Williamson   <rjw@apple.com>
209
210         Part 2 of the feature requested in
211         <rdar://problem/3752791> Dashboard: Need a better solution for control regions
212         
213         This patch actually collections the regions and converts to absolute coordinates.
214         Only remaining piece is to pass over the bridge and up the alley to WebKit
215         UI delegate.
216  
217         Reviewed by Ken.
218
219         * khtml/css/css_valueimpl.h:
220         (DOM::CSSPrimitiveValueImpl::getDashboardRegionValue):
221         * khtml/css/cssparser.cpp:
222         (CSSParser::parseValue):
223         (CSSParser::parseDashboardRegions):
224         * khtml/css/cssproperties.c:
225         * khtml/css/cssproperties.h:
226         * khtml/css/cssproperties.in:
227         * khtml/css/cssstyleselector.cpp:
228         (khtml::CSSStyleSelector::applyProperty):
229         * khtml/khtmlview.cpp:
230         (KHTMLView::layout):
231         * khtml/rendering/render_object.cpp:
232         (RenderObject::computeDashboardRegions):
233         (RenderObject::addDashboardRegions):
234         (RenderObject::collectDashboardRegions):
235         * khtml/rendering/render_object.h:
236         (khtml::DashboardRegionValue::operator==):
237         * khtml/rendering/render_style.cpp:
238         * khtml/rendering/render_style.h:
239         (khtml::StyleDashboardRegion::):
240         (khtml::RenderStyle::dashboardRegions):
241         (khtml::RenderStyle::setDashboardRegion):
242         * khtml/xml/dom_docimpl.cpp:
243         (DocumentImpl::DocumentImpl):
244         (DocumentImpl::updateLayout):
245         (DocumentImpl::acceptsEditingFocus):
246         (DocumentImpl::dashboardRegions):
247         (DocumentImpl::setDashboardRegions):
248         * khtml/xml/dom_docimpl.h:
249         (DOM::DocumentImpl::hasDashboardRegions):
250         (DOM::DocumentImpl::setHasDashboardRegions):
251
252 2004-09-21  John Sullivan  <sullivan@apple.com>
253
254         Reviewed by Darin.
255         
256         - WebCore part of fix for <rdar://problem/3618274> REGRESSION (125-135): 
257         Option-tab doesn't always work as expected
258
259         * kwq/KWQKHTMLPart.mm:
260         (KWQKHTMLPart::tabsToAllControls):
261         reworked logic to match what we promise in the UI; this worked correctly
262         before for regular tabbing, but not for option-tabbing.
263
264         * kwq/KWQButton.mm:
265         (QButton::focusPolicy):
266         check tabsToAllControls() rather than just WebCoreKeyboardAccessFull
267         
268         * kwq/KWQComboBox.mm:
269         (QComboBox::focusPolicy):
270         ditto
271         
272         * kwq/KWQFileButton.mm:
273         (KWQFileButton::focusPolicy):
274         ditto
275         
276         * kwq/KWQListBox.mm:
277         (QListBox::focusPolicy):
278         ditto
279
280 2004-09-21  John Sullivan  <sullivan@apple.com>
281
282         * khtml/xml/dom_selection.cpp:
283         (DOM::Selection::modify):
284         initialize xPos to make compiler happy in deployment builds
285
286 2004-09-21  Darin Adler  <darin@apple.com>
287
288         Reviewed by Ken.
289
290         - some small mechanical improvements to the position and selection classes
291
292         * khtml/xml/dom_position.h: Added clear(), startPosition(), and endPosition().
293         * khtml/xml/dom_position.cpp:
294         (DOM::Position::clear): Added.
295         (DOM::startPosition): Added.
296         (DOM::endPosition): Added.
297
298         * khtml/xml/dom_caretposition.h: Changed m_position to m_deepPosition. Added clear(),
299         removed node() and offset().
300         * khtml/xml/dom_caretposition.cpp:
301         (DOM::CaretPosition::init): Updated for name change of m_position to m_deepPosition.
302         (DOM::CaretPosition::isLastInBlock): Ditto.
303         (DOM::CaretPosition::next): Ditto.
304         (DOM::CaretPosition::previous): Ditto.
305         (DOM::CaretPosition::debugPosition): Ditto.
306         (DOM::CaretPosition::formatForDebugger): Ditto.
307
308         * khtml/xml/dom_selection.h: Remove setStart, setEnd, setStartAndEnd, rangeStart, rangeEnd,
309         and all the assignXXX functions.
310         * khtml/xml/dom_selection.cpp:
311         (DOM::Selection::Selection): Wean from assign functions, get and set data members directly.
312         (DOM::Selection::init): Don't clear base, extent, start, and end, since they have constructors.
313         (DOM::Selection::operator=): Wean from assign functions, get and set data members directly.
314         (DOM::Selection::moveTo): Ditto.
315         (DOM::Selection::setModifyBias): Ditto.
316         (DOM::Selection::modifyExtendingRightForward): Ditto.
317         (DOM::Selection::modifyMovingRightForward): Ditto.
318         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
319         (DOM::Selection::modifyMovingLeftBackward): Ditto.
320         (DOM::Selection::modify): Ditto.
321         (DOM::Selection::xPosForVerticalArrowNavigation): Ditto.
322         (DOM::Selection::clear): Ditto.
323         (DOM::Selection::setBase): Ditto.
324         (DOM::Selection::setExtent): Ditto.
325         (DOM::Selection::setBaseAndExtent): Ditto.
326         (DOM::Selection::toRange): Ditto.
327         (DOM::Selection::layoutCaret): Ditto.
328         (DOM::Selection::needsCaretRepaint): Ditto.
329         (DOM::Selection::validate): Ditto.
330         (DOM::Selection::debugRenderer): Ditto.
331         (DOM::Selection::debugPosition): Ditto.
332         (DOM::Selection::end):
333
334         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::advanceToNextMisspelling): Tweaked whitespace.
335
336 2004-09-21  Chris Blumenberg  <cblu@apple.com>
337
338         Fixed: <rdar://problem/3647229> Safari does not play inline Windows Media Content on some sites (miggy.net and ministryofsound.com)
339
340         Reviewed by john.
341
342         * khtml/rendering/render_frames.cpp:
343         (RenderPartObject::updateWidget): when no MIME type is specified map from the WMP CLASSID to the WMP MIME type, look for the URL of the content in the URL PARAM tag
344
345 2004-09-20  Darin Adler  <darin@apple.com>
346
347         Reviewed by Maciej.
348
349         - fixed regression from my recent check-in where misspelled words do not get unmarked when moving the caret
350         - changed CaretPosition to hold a Position instead of a node and offset
351         - renamed isEmpty to isNull, etc.
352
353         * kwq/KWQKHTMLPart.mm:
354         (KWQKHTMLPart::jumpToSelection): Updated for name changes.
355         (KWQKHTMLPart::advanceToNextMisspelling): Ditto.
356         (KWQKHTMLPart::fontForSelection): Ditto.
357         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Ditto.
358         (KWQKHTMLPart::markMisspellingsInSelection): Ditto.
359         (KWQKHTMLPart::updateSpellChecking): Fixed bug by using LeftWordIfOnBoundary.
360
361         * khtml/xml/dom_position.h: Updated for name changes.
362         * khtml/xml/dom_position.cpp:
363         (DOM::Position::element): Change to not use a separate null check.
364         (DOM::Position::computedStyle): Updated for name changes.
365         (DOM::Position::previousCharacterPosition): Ditto.
366         (DOM::Position::nextCharacterPosition): Ditto.
367         (DOM::Position::equivalentRangeCompliantPosition): Ditto.
368         (DOM::Position::equivalentShallowPosition): Ditto.
369         (DOM::Position::equivalentDeepPosition): Ditto.
370         (DOM::Position::closestRenderedPosition): Ditto.
371         (DOM::Position::inRenderedContent): Ditto.
372         (DOM::Position::inRenderedText): Ditto.
373         (DOM::Position::isRenderedCharacter): Ditto.
374         (DOM::Position::rendersInDifferentPosition): Ditto.
375         (DOM::Position::isFirstRenderedPositionOnLine): Ditto.
376         (DOM::Position::isLastRenderedPositionOnLine): Ditto.
377         (DOM::Position::inFirstEditableInRootEditableElement): Ditto.
378         (DOM::Position::leadingWhitespacePosition): Ditto.
379         (DOM::Position::trailingWhitespacePosition): Ditto.
380         (DOM::Position::debugPosition): Ditto.
381         (DOM::Position::formatForDebugger): Ditto.
382
383         * khtml/xml/dom_caretposition.h: Change to use m_position, and change names.
384         * khtml/xml/dom_caretposition.cpp:
385         (DOM::CaretPosition::CaretPosition): Remove code to set up m_node.
386         (DOM::CaretPosition::init): Set m_position directly.
387         (DOM::CaretPosition::isLastInBlock): Updated for name changes.
388         (DOM::CaretPosition::next): Set m_position directly.
389         (DOM::CaretPosition::previous): Set m_position directly.
390         (DOM::CaretPosition::previousCaretPosition): Updated for name changes.
391         (DOM::CaretPosition::nextCaretPosition): Ditto.
392         (DOM::CaretPosition::previousPosition): Ditto.
393         (DOM::CaretPosition::nextPosition): Ditto.
394         (DOM::CaretPosition::atStart): Ditto.
395         (DOM::CaretPosition::atEnd): Ditto.
396         (DOM::CaretPosition::isCandidate): Ditto.
397         (DOM::CaretPosition::debugPosition): Ditto.
398         (DOM::CaretPosition::formatForDebugger): Ditto.
399         (DOM::startOfWord): Ditto.
400         (DOM::endOfWord): Ditto.
401         (DOM::previousParagraphPosition): Ditto.
402         (DOM::nextParagraphPosition): Ditto.
403
404         * khtml/xml/dom_selection.h: Updated names. Added isCaret and isRange.
405         * khtml/xml/dom_selection.cpp:
406         (DOM::Selection::modifyMovingRightForward): Updated for name changes.
407         (DOM::Selection::modifyMovingLeftBackward): Ditto.
408         (DOM::Selection::modify): Ditto.
409         (DOM::Selection::expandUsingGranularity): Ditto.
410         (DOM::Selection::xPosForVerticalArrowNavigation): Ditto.
411         (DOM::Selection::toRange): Ditto.
412         (DOM::Selection::layoutCaret): Ditto.
413         (DOM::Selection::needsCaretRepaint): Ditto.
414         (DOM::Selection::validate): Ditto.
415         (DOM::startOfFirstRunAt): Ditto.
416         (DOM::endOfLastRunAt): Ditto.
417         (DOM::selectionForLine): Ditto.
418         (DOM::Selection::formatForDebugger): Ditto.
419
420         * khtml/ecma/kjs_window.cpp:
421         (Selection::get): Updated for name changes.
422         (Selection::toString): Ditto.
423         * khtml/editing/htmlediting_impl.cpp:
424         (khtml::debugPosition): Ditto.
425         (khtml::StyleChange::init): Ditto.
426         (khtml::StyleChange::currentlyHasStyle): Ditto.
427         (khtml::CompositeEditCommandImpl::deleteSelection): Ditto.
428         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): Ditto.
429         (khtml::ApplyStyleCommandImpl::doApply): Ditto.
430         (khtml::DeleteSelectionCommandImpl::doApply): Ditto.
431         (khtml::InputNewlineCommandImpl::doApply): Ditto.
432         (khtml::InputTextCommandImpl::prepareForTextInsertion): Ditto.
433         (khtml::InputTextCommandImpl::input): Ditto.
434         (khtml::ReplaceSelectionCommandImpl::doApply): Ditto.
435         (khtml::MoveSelectionCommandImpl::doApply): Ditto.
436         (khtml::TypingCommandImpl::doApply): Ditto.
437         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): Ditto.
438         (khtml::TypingCommandImpl::issueCommandForDeleteKey): Ditto.
439         * khtml/editing/jsediting.cpp:
440         (enabledAnySelection): Ditto.
441         (enabledRangeSelection): Ditto.
442         * khtml/khtml_part.cpp:
443         (KHTMLPart::hasSelection): Ditto.
444         (KHTMLPart::setFocusNodeIfNeeded): Ditto.
445         (KHTMLPart::selectionLayoutChanged): Ditto.
446         (KHTMLPart::timerEvent): Ditto.
447         (KHTMLPart::isPointInsideSelection): Ditto.
448         (KHTMLPart::selectClosestWordFromMouseEvent): Ditto.
449         (KHTMLPart::handleMousePressEventTripleClick): Ditto.
450         (KHTMLPart::handleMousePressEventSingleClick): Ditto.
451         (KHTMLPart::handleMouseMoveEventSelection): Ditto.
452         (KHTMLPart::khtmlMouseReleaseEvent): Ditto.
453         (KHTMLPart::selectionHasStyle): Ditto.
454         (KHTMLPart::selectionComputedStyle): Ditto.
455         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::updateSelection): Ditto.
456         * khtml/xml/dom_positioniterator.cpp:
457         (DOM::PositionIterator::peekPrevious): Ditto.
458         (DOM::PositionIterator::peekNext): Ditto.
459         (DOM::PositionIterator::atStart): Ditto.
460         (DOM::PositionIterator::atEnd): Ditto.
461         * khtml/xml/dom_positioniterator.h:
462         (DOM::PositionIterator::isEmpty): Ditto.
463         * kwq/KWQRenderTreeDebug.cpp:
464         (writeSelection): Ditto.
465         * kwq/WebCoreBridge.mm:
466         (-[WebCoreBridge editableDOMRangeForPoint:]): Ditto.
467         (-[WebCoreBridge deleteSelection]): Ditto.
468         (-[WebCoreBridge ensureCaretVisible]): Ditto.
469         (-[WebCoreBridge rangeOfCharactersAroundCaret]): Ditto.
470
471 2004-09-20  Darin Adler  <darin@apple.com>
472
473         Reviewed by Maciej.
474
475         - fixed <rdar://problem/3808073> find is broken
476
477         * khtml/misc/khtml_text_operations.h: Add m_pastEndNode and change name of m_endNode to
478         m_endContainer to more accurately reflect its purpose.
479         * khtml/misc/khtml_text_operations.cpp:
480         (khtml::TextIterator::TextIterator): Use pastEnd() for end of iteration, and change to
481         handle bad ranges better: just return an empty iterator instead of raising an exception.
482         (khtml::TextIterator::advance): Change to use m_pastEndNode to detect the end of iteration.
483         (khtml::TextIterator::handleTextNode): Update for name change.
484         (khtml::TextIterator::handleTextBox): Ditto.
485         (khtml::TextIterator::range): Handle case where m_endContainer is nil.
486
487         * khtml/xml/dom2_rangeimpl.cpp:
488         (DOM::RangeImpl::surroundContents): Use offsetInCharacters.
489         (DOM::RangeImpl::startNode): Added check for nil start container and use offsetInCharacters.
490         (DOM::RangeImpl::pastEndNode): Ditto.
491
492 2004-09-20  Chris Blumenberg  <cblu@apple.com>
493
494         Fixed: <rdar://problem/3781290> REGRESSION (Mail): Crash in ReplaceSelectionCommandImpl attaching file to new message
495
496         Reviewed by kocienda.
497
498         * khtml/khtml_part.cpp:
499         (KHTMLPart::setSelection): setFocusNodeIfNeeded now works on the current selection so call setFocusNodeIfNeeded after setting the selection
500         (KHTMLPart::clearSelection): don't call setFocusNodeIfNeeded with the current selection
501         (KHTMLPart::setCaretVisible): ditto
502         (KHTMLPart::setFocusNodeIfNeeded): do nothing if the part isn't focused, work with the current selection
503         * khtml/khtml_part.h:
504         * khtml/khtmlpart_p.h:
505         (KHTMLPartPrivate::KHTMLPartPrivate): added m_isFocused
506         * kwq/KWQKHTMLPart.h:
507         * kwq/KWQKHTMLPart.mm:
508         (KWQKHTMLPart::KWQKHTMLPart): removed _displaysWithFocusAttributes this is replaced by m_isFocused
509         (KWQKHTMLPart::setSelectionFromNone): new, code factored out from setDisplaysWithFocusAttributes
510         (KWQKHTMLPart::setDisplaysWithFocusAttributes): call setSelectionFromNone
511         (KWQKHTMLPart::displaysWithFocusAttributes): now returns m_isFocused
512         * kwq/WebCoreBridge.h:
513         * kwq/WebCoreBridge.mm:
514         (-[WebCoreBridge setSelectionFromNone]): new
515
516 2004-09-20  Darin Adler  <darin@apple.com>
517
518         Reviewed by Dave.
519
520         - fixed nil-deref happening often in Mail when I delete
521
522         * khtml/rendering/render_br.cpp: (RenderBR::selectionRect): Check for nil lastLeafChild.
523         Dave may want to figure out why it's nil and do a different fix later.
524
525 2004-09-20  Maciej Stachowiak  <mjs@apple.com>
526
527         Reviewed by Richard.
528
529         <rdar://problem/3672101> HANG: typing into login field at dws-direkt.deutsche-bank.de (infinite recursion)
530         
531         * khtml/xml/dom_docimpl.cpp:
532         (DocumentImpl::defaultEventHandler): Copy the list of handlers
533         before firing any of them, in case a handler affects the list of
534         event handlers.
535
536 2004-09-20  Chris Blumenberg  <cblu@apple.com>
537
538         Fixed:
539         <rdar://problem/3429921> obey PARAM tags inside of OBJECT tags when necessary
540         <rdar://problem/3515685> Object tag in Java 1.4.1 / Safari doesn't recognize params
541
542         Reviewed by darin.
543
544         * khtml/khtml_part.cpp:
545         (KHTMLPart::requestFrame): take 2 parameter arrays rather than 1 which will have to be parsed
546         (KHTMLPart::requestObject): ditto
547         * khtml/khtml_part.h:
548         * khtml/khtmlpart_p.h:
549         * khtml/rendering/render_frames.cpp:
550         (RenderPartObject::updateWidget): use PARAM tags when there is no EMBED specified
551         * kwq/KWQKHTMLPart.h:
552         * kwq/KWQKHTMLPart.mm:
553         (KWQKHTMLPart::createPart): call renamed bridge method
554         * kwq/KWQKJavaAppletWidget.mm:
555         (KJavaAppletWidget::KJavaAppletWidget): ditto
556         * kwq/KWQStringList.h:
557         * kwq/KWQStringList.mm:
558         (QStringList::getNSArray): return a const array
559         * kwq/WebCoreBridge.h:
560         * kwq/WebCoreBridge.mm:
561         (-[WebCoreBridge URLWithAttributeString:]): renamed to match API
562
563 2004-09-20  Darin Adler  <darin@apple.com>
564
565         Reviewed by Ken.
566
567         - fixed <rdar://problem/3655360> REGRESSION (Mail): Ctrl-V emacs key binding, -pageDown: method, unimplemented (and pageUp, and selection-modifying versions)
568         - fixed <rdar://problem/3735055> REGRESSION (Mail): WebCore double click rules treat style change as a boundary
569         - fixed <rdar://problem/3789939> REGRESSION (Mail): double-clicking on border whitespace selects space plus word before/after
570         - fixed <rdar://problem/3792138> REGRESSION (Mail): Spell checker doesn't check current selected word
571         - fixed <rdar://problem/3806604> REGRESSION (164): Triple-click sometimes selects extra characters
572         - fixed <rdar://problem/3806996> REGRESSION (125-162): Triple-click in <pre> tagged text behaves oddly (leuf.net)
573
574         * khtml/xml/dom_caretposition.h: Added a lot of new functions. Removed implicit conversion operator
575         that converts from CaretPosition to Position.
576         * khtml/xml/dom_caretposition.cpp:
577         (DOM::CaretPosition::CaretPosition): Change to call deepEquivalent so it works without the implicit
578         Position conversion operator.
579         (DOM::CaretPosition::operator=): Ditto.
580         (DOM::CaretPosition::next): Ditto.
581         (DOM::CaretPosition::previous): Ditto.
582         (DOM::CaretPosition::setPosition): Added an assertion.
583         (DOM::start): Added.
584         (DOM::end): Added.
585         (DOM::setStart): Added.
586         (DOM::setEnd): Added.
587         (DOM::previousWordBoundary): Added.
588         (DOM::nextWordBoundary): Added.
589         (DOM::startWordBoundary): Added.
590         (DOM::startOfWord): Added.
591         (DOM::endWordBoundary): Added.
592         (DOM::endOfWord): Added.
593         (DOM::previousWordPositionBoundary): Added.
594         (DOM::previousWordPosition): Added.
595         (DOM::nextWordPositionBoundary): Added.
596         (DOM::nextWordPosition): Added.
597         (DOM::previousLinePosition): Added.
598         (DOM::nextLinePosition): Added.
599         (DOM::startOfParagraph): Changed function name.
600         (DOM::endOfParagraph): Changed function name. Fixed code in includeLineBreak to work around
601         the CaretPosition constructor issue for <br>, pass the right parameter for the block flow case,
602         and handle <pre> properly.
603         (DOM::inSameParagraph): Added.
604         (DOM::previousParagraphPosition): Added.
605         (DOM::nextParagraphPosition): Added.
606
607         * khtml/xml/dom_position.h: Removed a number of functions no longer used; also made some private.
608         * khtml/xml/dom_position.cpp: Removed a number of functions no longer used.
609
610         * khtml/xml/dom_selection.h: Replaced DOCUMENT with DOCUMENT_BOUNDARY. Added overloads of lots
611         of functions that take CaretPosition directly. Added overload of modify that takes a parameter
612         for vertical distance to help implement pageDown: and friends. Replaced getRepaintRect with
613         two new functions named caretRect and caretRepaintRect. Removed nodeIsBeforeNode.
614         * khtml/xml/dom_selection.cpp:
615         (DOM::Selection::Selection): Added constructor that takes two CaretPosition objects.
616         (DOM::Selection::setModifyBias): Added. Helper function.
617         (DOM::Selection::modifyExtendingRightForward): Don't set modify bias, since that's now the caller's
618         responsibility. Reimplement WORD and LINE in terms of new CaretPosition functions. Implement PARAGRAPH
619         and change PARAGRAPH_BOUNDARY to use CaretPosition function by its new name.
620         (DOM::Selection::modifyMovingRightForward): Ditto.
621         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
622         (DOM::Selection::modifyMovingLeftBackward): Ditto.
623         (DOM::Selection::modify): Call setModifyBias, and use a switch statement instead of if.
624         (DOM::caretY): Added. Helper for the new modify function that implements moving a pixel distance,
625         used by pageDown: and friends.
626         (DOM::Selection::modify): Added.
627         (DOM::Selection::toRange): Use RangeImpl::compareBoundaryPoints instead of nodeIsBeforeNode.
628         (DOM::Selection::caretRect): Added. Replaces getRepaintRect, but does not add slop.
629         (DOM::Selection::caretRepaintRect): Added. Replaces getRepaintRect; still adds slop.
630         (DOM::Selection::needsCaretRepaint): Call caretRepaintRect.
631         (DOM::Selection::validate): Use RangeImpl::compareBoundaryPoints instead of nodeIsBeforeNode.
632         Reimplement WORD to use new CaretPosition functions; this fixes the double-clicking problems.
633         Change paragraph calls to use new names.
634
635         * ForwardingHeaders/dom/dom_position.h: Removed. This was in the wrong location.
636         * khtml/editing/htmlediting.cpp: Fixed include that said "dom/dom_position.h".
637         * khtml/editing/htmlediting_impl.cpp: Fixed include that said "dom/dom_position.h".
638         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): Rewrote this to use the new CaretPosition
639         functions instead of the old Position functions.
640
641         * khtml/misc/helper.h: Added const to character pointer parameter. Also put invertedColor inside
642         an !APPLE_CHANGES since it doesn't do us any good.
643         * khtml/misc/helper.cpp:
644         (khtml::findWordBoundary): Added const to character pointer parameter.
645         (khtml::nextWordFromIndex): Ditto.
646
647         * kwq/KWQTextUtilities.h: Change parameters to const.
648         * kwq/KWQTextUtilities.cpp: (KWQFindWordBoundary): Change parameter to const.
649         * kwq/KWQTextUtilities.mm: (KWQFindNextWordFromIndex): Change parameter to const.
650
651         * khtml/css/cssstyleselector.cpp: Disable code that uses invertedColor when APPLE_CHANGES, since it
652         won't work for us.
653
654         * khtml/rendering/render_canvas.cpp: (RenderCanvas::setSelection): Added checks for selection end
655         so we can set the selection end to nodes that are not leaf nodes and it will still work. Also took
656         out bogus firstChild/lastChild loops for the same reason.
657
658         * kwq/KWQKHTMLPart.h: Add "start before selection" flag to advanceToNextMisspelling.
659         Needed to fix bug with spell checking.
660         * kwq/KWQKHTMLPart.mm:
661         (KWQKHTMLPart::findString): Changed to use CaretPosition.
662         (KWQKHTMLPart::advanceToNextMisspelling): Added code to handle "start before selection" flag
663         and changed to use CaretPosition and new helper functions.
664         (KWQKHTMLPart::markMisspellingsInSelection): More changes to use CaretPosition.
665         (KWQKHTMLPart::updateSpellChecking): Ditto.
666
667         * kwq/WebCoreBridge.h: Replaced WebSelectByDocument with WebSelectToDocumentBoundary.
668         Added advanceToNextMisspellingStartingJustBeforeSelection,
669         rangeByAlteringCurrentSelection:verticalDistance:, and
670         alterCurrentSelection:verticalDistance:.
671
672         * kwq/WebCoreBridge.mm:
673         (-[WebCoreBridge advanceToNextMisspellingStartingJustBeforeSelection]): Added.
674         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Added case for selecting by
675         paragraph to save X position.
676         (-[WebCoreBridge rangeByAlteringCurrentSelection:verticalDistance:]): Added.
677         (-[WebCoreBridge alterCurrentSelection:verticalDistance:]): Added.
678         (-[WebCoreBridge ensureCaretVisible]): Call caretRect instead of getRepaintRect.
679
680 2004-09-20  Darin Adler  <darin@apple.com>
681
682         Reviewed by Ken.
683
684         - cleaned up DOM::RangeImpl a little so compareBoundaryPoints can be used outside the class
685
686         * khtml/xml/dom2_rangeimpl.h: Added const to many of the member functions and made the
687         compareBoundaryPoints that works on parameters be a const member function.
688         * khtml/xml/dom2_rangeimpl.cpp:
689         (DOM::RangeImpl::commonAncestorContainer): Added const.
690         (DOM::RangeImpl::compareBoundaryPoints): Added const.
691         (DOM::RangeImpl::boundaryPointsValid): Added const, and wrote cleaner version.
692         (DOM::RangeImpl::insertNode): Simplified by calling containedByReadOnly.
693         (DOM::RangeImpl::toString): Added const.
694         (DOM::RangeImpl::toHTML): Added const.
695         (DOM::RangeImpl::createContextualFragment): Added const.
696         (DOM::RangeImpl::cloneRange): Added const.
697         (DOM::RangeImpl::surroundContents): Simplified by calling containedByReadOnly.
698
699 2004-09-20  Darin Adler  <darin@apple.com>
700
701         Reviewed by Ken.
702
703         - fixed <rdar://problem/3806990> REGRESSION (125-162): Crash on Select All at http://leuf.net/cgi/wikidn?PerlConvertEolScript
704
705         * khtml/rendering/render_replaced.cpp: (RenderWidget::setSelectionState): Added nil check for the
706         widget.
707
708 2004-09-20  Darin Adler  <darin@apple.com>
709
710         Reviewed by Ken.
711
712         - fixed <rdar://problem/3773740> calling addEventListener on a frame that hasn't loaded yet crashes
713
714         * khtml/ecma/kjs_window.cpp: (WindowFunc::tryCall): Add nil checks for the document.
715         The nil check prevents the crash but there's still a bug here; I filed 3807059 about that.
716
717 2004-09-20  Darin Adler  <darin@apple.com>
718
719         Reviewed by Ken.
720
721         - fixed problem where up and down arrow keys are not preserving X position
722
723         * khtml/khtml_part.cpp:
724         (KHTMLPart::selectionLayoutChanged): Moved code to clear m_xPosForVerticalArrowNavigation out of here.
725         (KHTMLPart::notifySelectionChanged): Moved it into here.
726
727 2004-09-18  Darin Adler  <darin@apple.com>
728
729         Reviewed by Maciej.
730
731         - fixed <rdar://problem/3805627> -[DOMRange _text] sometimes includes all text to the end of the document for certain ranges
732
733         * khtml/misc/khtml_text_operations.cpp: (khtml::TextIterator::advance):
734         Correctly handle the case when we are already on m_endNode. The concept here is that
735         m_endNode is a node you must never "leave" when iterating.
736
737 === Safari-164 ===
738
739 2004-09-17  Ken Kocienda  <kocienda@apple.com>
740
741         * layout-tests/editing/selection/unrendered-004-expected.txt: Updated expected results.
742
743 2004-09-17  Ken Kocienda  <kocienda@apple.com>
744
745         Reviewed by Darin
746
747         Fix for this bug:
748         
749         <rdar://problem/3780245> REGRESSION (Mail): some lines are skipped when doing arrow navigation
750
751         * khtml/xml/dom_position.cpp:
752         (DOM::Position::previousLinePosition): One-line fix. Make sure that BRs at the end of blocks
753         are not skipped.
754
755 2004-09-17  Ken Kocienda  <kocienda@apple.com>
756
757         Reviewed by Darin
758
759         Fix for this bug:
760         
761         <rdar://problem/3805594> REGRESSION (Mail): Second return key stroke does not work when first was in blockquote
762
763         * khtml/xml/dom_selection.cpp:
764         (DOM::Selection::toRange): Code to convert caret positions moved the position upstream
765         before making a range-compliant position, but erroneously would allow the position
766         to cross blocks. Now it will no longer do so.
767
768 2004-09-16  Richard Williamson   <rjw@apple.com>
769
770         Part 1 of the feature requested in
771         <rdar://problem/3752791> Dashboard: Need a better solution for control regions
772
773         This patch implements the CSS parsing necessary for dashboard regions.  
774         Here's an example of the syntax we support:
775
776         <style>
777         #aDiv {
778             -apple-dashboard-region:
779                 dashboard-region-circle(control 0 0 80 0)
780                 dashboard-region-rectangle(control,20,0,20,0)
781                 dashboard-region-circle(control 80 0 0 0); 
782         }
783         </style>
784
785
786         Part 2 will determine the appropriate regions.
787
788         Reviewed by Chris.
789
790         * khtml/css/css_valueimpl.cpp:
791         (CSSPrimitiveValueImpl::CSSPrimitiveValueImpl):
792         * khtml/css/css_valueimpl.h:
793         (DOM::CSSPrimitiveValueImpl::):
794         (DOM::DashboardRegionImpl::DashboardRegionImpl):
795         (DOM::DashboardRegionImpl::~DashboardRegionImpl):
796         (DOM::DashboardRegionImpl::setNext):
797         (DOM::DashboardRegionImpl::setLabel):
798         * khtml/css/cssparser.cpp:
799         (CSSParser::parseValue):
800         (CSSParser::parseContent):
801         (skipCommaInDashboardRegion):
802         (CSSParser::parseDashboardRegions):
803         * khtml/css/cssparser.h:
804         * khtml/css/cssproperties.c:
805         (hash_prop):
806         (findProp):
807         * khtml/css/cssproperties.h:
808         * khtml/css/cssproperties.in:
809         * khtml/dom/css_value.h:
810         (DOM::CSSPrimitiveValue::):
811
812 2004-09-16  Darin Adler  <darin@apple.com>
813
814         - fixed caret-drawing regression from my last patch
815
816         * khtml/xml/dom_selection.cpp:
817         (DOM::Selection::xPosForVerticalArrowNavigation): Pass false, meaning "vertical line caret"
818         rather than true meaning "big box for overtyping".
819         (DOM::Selection::layoutCaret): Ditto.
820
821 2004-09-16  Darin Adler  <darin@apple.com>
822
823         Reviewed by Ken.
824
825         - fixed <rdar://problem/3803280> crash in selectAll on page with no contents
826
827         * khtml/khtml_part.cpp: (KHTMLPart::selectAll): Handle case of 0 for documentElement().
828         * khtml/xml/dom_position.cpp:
829         (DOM::Position::previousWordPosition): Ditto.
830         (DOM::Position::nextWordPosition): Ditto.
831
832         - cleaned up caret code
833         - changed DOM::Selection to use CaretPosition more
834
835         * khtml/rendering/render_box.cpp: (RenderBox::caretRect): Change to use empty rectangles
836         instead of an X value of -1 to mean no rectangle.
837         * khtml/rendering/render_image.cpp: (RenderImage::selectionRect): Take advantage of the
838         fixed QRect constructor.
839         * khtml/rendering/render_object.cpp: (RenderObject::caretRect): Change to use empty
840         rectangle instead of an X value of -1 to mean no rectangle.
841         * khtml/rendering/render_text.cpp: (RenderText::caretRect): Cleaned up, and changed to use
842         an empty rectangle instead of an X value of -1 to mean no rectangle.
843
844         * khtml/xml/dom_caretposition.h: Made conversion from Position to CaretPosition something you
845         can do implicitly, since it's an unambiguous conversion. Conversion in the other direction
846         needs to be done explicitly. Moved EIncludeLineBreak here, and added startParagraphBoundary
847         and endParagraphBoundary functions.
848         * khtml/xml/dom_caretposition.cpp:
849         (DOM::startParagraphBoundary): Added. Replaces, and made from, member function of DOM::Position.
850         (DOM::endParagraphBoundary): Ditto.
851
852         * khtml/xml/dom_position.h: Removed EIncludeLineBreak and startParagraphBoundary and
853         endParagraphBoundary.
854         * khtml/xml/dom_position.cpp: Removed startParagraphBoundary and endParagraphBoundary.
855
856         * khtml/xml/dom_selection.h: Use CaretPosition instead of Position in a few places.
857         Use a QRect for the caret rect. Change nodeIsBeforeNode to be a static member function.
858         * khtml/xml/dom_selection.cpp:
859         (DOM::Selection::Selection): Change caret to store QRect instead of 3 separate fields.
860         (DOM::Selection::init): Ditto.
861         (DOM::Selection::operator=): Ditto.
862         (DOM::Selection::modifyExtendingRightForward): Change to use CaretPosition instead of Position.
863         Check for 0.
864         (DOM::Selection::modifyMovingRightForward): Ditto. Check for 0.
865         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
866         (DOM::Selection::modifyMovingLeftBackward): Ditto.
867         (DOM::Selection::modify): Ditto.
868         (DOM::Selection::layoutCaret): Change to use a QRect for the caret rect, and use an empty
869         one to mean no rectangle.
870         (DOM::Selection::getRepaintRect): Ditto.
871         (DOM::Selection::paintCaret): Ditto.
872         (DOM::Selection::validate): Change to use CaretPosition instead of Position. Also fixed
873         PARAGRAPH_BOUNDARY, which was broken and doing the same thing as PARAGRAPH before, but
874         it's not really used so that didn't matter. Check for 0.
875         (DOM::Selection::nodeIsBeforeNode): Tightened up a bit and added some FIXMEs. This function
876         has a number of problems and should probably be discarded in favor of the DOMStringImpl
877         method that does the same thing.
878
879 2004-09-16  Ken Kocienda  <kocienda@apple.com>
880
881         Reviewed by Hyatt
882         
883         Fix for this bug:
884         
885         <rdar://problem/3787168> REGRESSION (Mail): Deleting text from the beginning of a quoted range removes the quoting from the rest
886
887         * khtml/editing/htmlediting_impl.cpp:
888         (khtml::DeleteSelectionCommandImpl::moveNodesAfterNode): Only move the text nodes (and their siblings) when
889         doing this move between blocks. This serves to mimic NSText behavior very well.
890
891 2004-09-15  Darin Adler  <darin@apple.com>
892
893         - fixed Panther build
894
895         * kwq/KWQAccObject.mm: (-[KWQAccObject accessibilityActionDescription:]): Fixed backwards
896         check in #if that was compiling the code on Panther only rather than Tiger only.
897
898 2004-09-15  Darin Adler  <darin@apple.com>
899
900         Reviewed by John.
901
902         - fixed lockFocus exception I observed; perhaps not a real issue in the field due to exception blocking
903
904         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::imageFromRect): Put most of the function inside a
905         big if statement to avoid the exception we get from lockFocus otherwise.
906
907 2004-09-15  Darin Adler  <darin@apple.com>
908
909         Reviewed by Dave.
910
911         - fixed <rdar://problem/3786467> REGRESSION (Mail): Reproducible crash replying to an HTML message when your preference is for plain text composing.
912
913         * khtml/rendering/render_block.h: Remove removeChildrenFromLineBoxes.
914         * khtml/rendering/render_block.cpp: (khtml::RenderBlock::removeChild): Remove calls
915         to removeChildrenFromLineBoxes which was the old way of working around this.
916         * khtml/rendering/render_flow.cpp: (RenderFlow::detach): Add comments and code to handle
917         removing children from line boxes we are about to delete.
918
919 2004-09-15  Richard Williamson   <rjw@apple.com>
920
921         Fixed <rdar://problem/3781561> REGRESSION (Mail): typing in Mail became suddenly really sluggish (substitute font code)
922
923         A DocumentMarker may begin before the InLineBox that includes
924         it.  Ensure that we correctly handle that case.  The paintMarker()
925         method and code that calls it could do with some cleanup to
926         make it clearer how all the cases are handled, i.e. marker
927         within box, or intersecting beginning or end of box.
928
929         Reviewed by Darin.
930
931         * khtml/rendering/render_text.cpp:
932         (InlineTextBox::paintMarker):  Minimal change to ensure that we
933         handle the case of marker starting before box.
934
935 2004-09-15  Darin Adler  <darin@apple.com>
936
937         Reviewed by John.
938
939         - get rid of some of the localizable strings in here; we still have to figure out
940           how we're going to localize the last few role descriptions
941
942         * kwq/KWQAccObject.mm:
943         (-[KWQAccObject roleDescription]): Use NSAccessibilityRoleDescription for most
944         descriptions instead of a hard-coded string (inside the UI_STRING placeholder).
945         (-[KWQAccObject accessibilityActionDescription:]): Same thing, with NSAccessibilityActionDescription.
946
947 2004-09-15  Darin Adler  <darin@apple.com>
948
949         Reviewed by John.
950
951         - did some QRect-related changes to facilitate later bug fixing
952
953         * kwq/KWQPainter.h: Added fillRect overload that takes QRect to match the real Qt one.
954         * kwq/KWQPainter.mm: (QPainter::fillRect): Added overload that takes QRect.
955
956         * kwq/KWQRect.mm: (QRect::QRect): Change default constructed QRect to have a width and
957         height of 0 rather than 1. Contrary to what we believed earlier, this is what Qt does.
958
959 2004-09-15  Darin Adler  <darin@apple.com>
960
961         Reviewed by John.
962
963         - fixed <rdar://problem/3799512> REGRESSION (Mail): caret flashes 1 pixel too far to the left
964
965         * khtml/rendering/render_text.cpp: (RenderText::caretRect): Added one to the horizontal position
966         of the caret rect.
967
968 2004-09-15  Ken Kocienda  <kocienda@apple.com>
969
970         Reviewed by Hyatt
971
972         * khtml/editing/htmlediting_impl.cpp:
973         (khtml::DeleteSelectionCommandImpl::doApply): The whitespace fixup code
974         that makes sure proper whitespace renders after deletion was getting confused
975         in cases where the deletion merged blocks. Basically, I needed to move some
976         whitespace fixup code so it runs before deleting in the case where blocks
977         need to be merged. It used to run after, and was getting confused by
978         whitespace left over at the ends of the block after the deletion.
979         * layout-tests/editing/deleting/delete-block-merge-contents-012-expected.txt: Added.
980         * layout-tests/editing/deleting/delete-block-merge-contents-012.html: Added.
981         * layout-tests/editing/deleting/delete-block-merge-contents-013-expected.txt: Added.
982         * layout-tests/editing/deleting/delete-block-merge-contents-013.html: Added.
983         * layout-tests/editing/deleting/delete-block-merge-contents-014-expected.txt: Added.
984         * layout-tests/editing/deleting/delete-block-merge-contents-014.html: Added.
985         * layout-tests/editing/deleting/delete-block-merge-contents-015-expected.txt: Added.
986         * layout-tests/editing/deleting/delete-block-merge-contents-015.html: Added.
987         * layout-tests/editing/deleting/delete-block-merge-contents-016-expected.txt: Added.
988         * layout-tests/editing/deleting/delete-block-merge-contents-016.html: Added.
989         * layout-tests/editing/deleting/delete-block-merge-contents-017-expected.txt: Added.
990         * layout-tests/editing/deleting/delete-block-merge-contents-017.html: Added.
991
992 2004-09-15  Ken Kocienda  <kocienda@apple.com>
993
994         Reviewed by Hyatt
995
996         * khtml/editing/htmlediting_impl.cpp:
997         (khtml::DeleteSelectionCommandImpl::moveNodesAfterNode): Renamed from moveNodesToBlock.
998         Just some simplification and cleanup in this function.
999         (khtml::DeleteSelectionCommandImpl::doApply): Remove a hunk of start-of-block code I thought
1000         I was going to get around to improving and refining. However, I no longer need this case.
1001         * khtml/editing/htmlediting_impl.h: Function name change.
1002
1003 2004-09-14  Darin Adler  <darin@apple.com>
1004
1005         Reviewed by Maciej.
1006
1007         - added method for fix to <rdar://problem/3788894> REGRESSION (Mail): ctrl-t emacs key binding does not work (transpose)
1008
1009         * kwq/WebCoreBridge.h: Added rangeOfCharactersAroundCaret.
1010         * kwq/WebCoreBridge.mm: (-[WebCoreBridge rangeOfCharactersAroundCaret]): Added.
1011
1012         * khtml/xml/dom_caretposition.h: Added range function to make a Range from two CaretPosition objects.
1013         * khtml/xml/dom_caretposition.cpp:
1014         (DOM::CaretPosition::rangeCompliantEquivalent): Fixed a bug in this that caused it to screw up
1015         ranges in text nodes. Also changed it to use offset 0 as Ken and I discussed.
1016         (DOM::range): Added.
1017
1018         * kwq/DOM.mm: (-[DOMRange description]): Added.
1019
1020 2004-09-14  Darin Adler  <darin@apple.com>
1021
1022         Reviewed by John.
1023
1024         - fixed <rdar://problem/3786986> REGRESSION: TEXTAREAs have extra wide right margins where the scrollbars used to be
1025
1026         * kwq/KWQTextArea.mm:
1027         (-[KWQTextArea _updateTextViewWidth]): Renamed from _frameSizeChanged. Now uses the width of
1028         the size from the contentSize method rather than trying to compute a size.
1029         (-[KWQTextArea initWithFrame:]): Call method by new name.
1030         (-[KWQTextArea tile]): Override this instead of setFrame: to adjust the size as the size of
1031         the text area changes.
1032
1033 2004-09-14  Chris Blumenberg  <cblu@apple.com>
1034
1035         Backed out my changes to these files. They were not meant to be checked. (I'm having a bad CVS day)
1036
1037         * kwq/WebCoreBridge.h:
1038         * kwq/WebCoreBridge.mm:
1039         (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:]):
1040         (-[WebCoreBridge replaceSelectionWithNode:selectReplacement:]):
1041         (-[WebCoreBridge replaceSelectionWithMarkupString:baseURLString:selectReplacement:]):
1042         (-[WebCoreBridge replaceSelectionWithText:selectReplacement:]):
1043
1044 2004-09-14  David Hyatt  <hyatt@apple.com>
1045
1046         Fix the crash in the layout tests caused by my recent selection changes.  Simply eliminate the buggy
1047         selection border setting code and let isSelectionBorder be implemented in terms of the SelectionState.
1048         
1049         Reviewed by kocienda
1050
1051         * khtml/rendering/render_canvas.cpp:
1052         (RenderCanvas::setSelection):
1053         * khtml/rendering/render_object.cpp:
1054         (RenderObject::RenderObject):
1055         (RenderObject::container):
1056         (RenderObject::isSelectionBorder):
1057         * khtml/rendering/render_object.h:
1058         (khtml::RenderObject::minMaxKnown):
1059         (khtml::RenderObject::setReplaced):
1060
1061 2004-09-14  Chris Blumenberg  <cblu@apple.com>
1062
1063         Fixed: <rdar://problem/3778680> REGRESSION: plug-in content sometimes doesn't show up
1064
1065         Reviewed by dave.
1066
1067         * khtml/html/html_objectimpl.cpp:
1068         (HTMLObjectElementImpl::parseHTMLAttribute): set needWidgetUpdate to true only if there is a renderer
1069         (HTMLObjectElementImpl::attach): if needWidgetUpdate is true, call updateWidget
1070
1071 2004-09-14  Maciej Stachowiak  <mjs@apple.com>
1072
1073         Reviewed by Darin.
1074
1075         - fixed <rdar://problem/3800315> encode-URI-test layout test is failing
1076         - updated escape/encodeURI layout test to match our new, more
1077         compatible behavior.
1078
1079         * layout-tests/fast/js/global/encode-URI-test.html:
1080
1081 2004-09-14  Ken Kocienda  <kocienda@apple.com>
1082
1083         Reviewed by Richard
1084
1085         Fix for this bug:
1086         
1087         <rdar://problem/3800834> REGRESSION (Mail): Can't delete backwards past quoted text using HTML editing
1088
1089         * khtml/editing/htmlediting_impl.cpp:
1090         (khtml::TypingCommandImpl::issueCommandForDeleteKey): Use CaretPosition class to get superior
1091         smarts about the selection to delete in the "start of block" case. This fixes the bug.
1092         While I was in the neighborhood, I cleaned up this function a bit.
1093         * layout-tests/editing/deleting/delete-3800834-fix-expected.txt: Added.
1094         * layout-tests/editing/deleting/delete-3800834-fix.html: Added.
1095
1096 2004-09-14  Ken Kocienda  <kocienda@apple.com>
1097
1098         * khtml/css/parser.cpp: Did not regenerate this file from parser.y before last checkin.
1099
1100 2004-09-14  Chris Blumenberg  <cblu@apple.com>
1101
1102         Fixed typos in last check-in.
1103
1104         * khtml/khtml_part.cpp:
1105         (KHTMLPart::selectClosestWordFromMouseEvent):
1106         (KHTMLPart::handleMousePressEventDoubleClick):
1107         * khtml/khtml_part.h:
1108         * kwq/KWQKHTMLPart.mm:
1109         (KWQKHTMLPart::sendContextMenuEvent):
1110
1111 2004-09-09  David Hyatt  <hyatt@apple.com>
1112
1113         Fix for 3667862, regression where dragging of selection became really slow.  This patch completely rewrites
1114         selection painting and drawing so that the enclosing rect is much more snug.  The containing block rect is no
1115         longer used at all.
1116         
1117         Reviewed by kocienda
1118
1119         * khtml/rendering/render_canvas.cpp:
1120         (RenderCanvas::selectionRect):
1121         (getSelectionInfo):
1122         (RenderCanvas::setSelection):
1123         (RenderCanvas::clearSelection):
1124         * khtml/rendering/render_canvas.h:
1125         * khtml/rendering/render_container.cpp:
1126         (RenderContainer::removeChildNode):
1127         * khtml/rendering/render_image.cpp:
1128         (RenderImage::selectionRect):
1129         (RenderImage::selectionTintColor):
1130         (RenderImage::paint):
1131         * khtml/rendering/render_image.h:
1132         * khtml/rendering/render_object.cpp:
1133         (RenderObject::selectionStartEnd):
1134         * khtml/rendering/render_object.h:
1135         (khtml::RenderObject::selectionRect):
1136         (khtml::RenderObject::SelectionInfo::object):
1137         (khtml::RenderObject::SelectionInfo::rect):
1138         (khtml::RenderObject::SelectionInfo::state):
1139         (khtml::RenderObject::SelectionInfo::SelectionInfo):
1140         (khtml::RenderObject::SelectionInfo::m_state):
1141         * khtml/rendering/render_text.cpp:
1142         (InlineTextBox::textObject):
1143         (InlineTextBox::selectionRect):
1144         (InlineTextBox::paintSelection):
1145         (RenderText::getAbsoluteRepaintRect):
1146         (RenderText::selectionRect):
1147         * khtml/rendering/render_text.h:
1148         * kwq/KWQPainter.mm:
1149         (getBlendedColorComponent):
1150         (QPainter::selectedTextBackgroundColor):
1151
1152 2004-09-14  Ken Kocienda  <kocienda@apple.com>
1153
1154         Reviewed by Hyatt
1155
1156         Fix for this bug:
1157         
1158         <rdar://problem/3794376> vertical formatting lines that show quote level are missing
1159
1160         Rolling out change Dave made to fix 3787686. It turns out that we do not want this
1161         change, as it does not appear to have any effect on the bug. In addition, it caused
1162         the regression in quote bar behavior.
1163
1164         * khtml/css/parser.cp
1165         * khtml/css/parser.y
1166
1167 2004-09-14  Chris Blumenberg  <cblu@apple.com>
1168
1169         Fixed: Control-click shouldn't cause deselect when clicking selection.
1170
1171         Reviewed by rjw.
1172
1173         * kwq/KWQKHTMLPart.mm:
1174         (KWQKHTMLPart::sendContextMenuEvent): don't attempt to select the closest word when the selection is clicked
1175
1176 2004-09-14  Chris Blumenberg  <cblu@apple.com>
1177
1178         Fixed badness that my last patch caused. Because there was a conflict, my last patch added stuff that darin had just removed.
1179
1180         Reviewed by darin.
1181
1182         * kwq/KWQKHTMLPart.mm:
1183         (KWQKHTMLPart::sendContextMenuEvent): don't call deref on the view
1184
1185 2004-09-14  Chris Blumenberg  <cblu@apple.com>
1186
1187         Fixed: <rdar://problem/3783595> REGRESSION (Mail): control-click does not select closest word
1188
1189         Reviewed by kocienda.
1190
1191         * khtml/khtml_part.cpp:
1192         (KHTMLPart::selectionGranularity): new getter, need this for an upcoming patch
1193         (KHTMLPart::selectClosetWordFromMouseEvent): new, factored from handleMousePressEventDoubleClick
1194         (KHTMLPart::handleMousePressEventDoubleClick): call selectClosetWordFromMouseEvent
1195         * khtml/khtml_part.h:
1196         * kwq/KWQKHTMLPart.mm:
1197         (KWQKHTMLPart::sendContextMenuEvent): call selectClosetWordFromMouseEvent if nothing swallows the event
1198
1199 2004-09-14  Ken Kocienda  <kocienda@apple.com>
1200
1201         Reviewed by John
1202
1203         Fix for this bug:
1204         
1205         <rdar://problem/3800346> Inserting newline in BR after block not working
1206
1207         * khtml/editing/htmlediting_impl.cpp:
1208         (khtml::InputNewlineCommandImpl::doApply): The code to insert the "extra" BR at the end
1209         of blocks (hack done to make BRs show up when they appear at the ends of blocks) did not
1210         cover this one quirky case where the insertion point can be placed in a BR at the end of 
1211         a block that does actually render. Now the input newline code can handle this addtional
1212         case.
1213         * layout-tests/editing/selection/insert-3800346-fix-expected.txt: Added.
1214         * layout-tests/editing/selection/insert-3800346-fix.html: Added.
1215
1216 2004-09-14  Darin Adler  <darin@apple.com>
1217
1218         Reviewed by Ken.
1219
1220         - fixed <rdar://problem/3479392> REGRESSION (Mail): select all does not select all at some pages
1221
1222         * khtml/xml/dom_caretposition.cpp: (DOM::CaretPosition::deepEquivalent):
1223         Use caretMaxOffset instead of maxOffset when descending to the last node.
1224         Also change around the function a bit.
1225
1226 2004-09-13  Darin Adler  <darin@apple.com>
1227
1228         Reviewed by Maciej.
1229
1230         - fixed <rdar://problem/3710123> Loading iframe that replaces content in the parent document crashes Safari (Oracle Portal)
1231
1232         This is a more complete fix, but it requires the previous attempt at a fix for this same
1233         bug below, because this is only the "don't destroy the KHTMLPart" portion; other fixes are
1234         still needed to survive shutdown of the part.
1235
1236         * khtml/ecma/kjs_proxy.cpp: (KJSProxyImpl::interpreter): Call the new keepAlive method.
1237         This is called whenever we're about to use an interpreter to run some JavaScript, and
1238         it's JavaScript that might destroy the part, hence the interpreter.
1239
1240         * khtml/khtml_part.h: Added keepAlive() and slotEndLifeSupport() member functions.
1241         * khtml/khtmlpart_p.h: Added m_lifeSupportTimer.
1242         * khtml/khtml_part.cpp:
1243         (KHTMLPart::init): Connects m_lifeSupportTimer to slotEndLifeSupport.
1244         (KHTMLPart::write): Removed old attempt to work around this issue.
1245         (KHTMLPart::end): Ditto.
1246         (KHTMLPart::keepAlive): Added. References the part, then sets up a one-shot timer.
1247         (KHTMLPart::slotEndLifeSupport): Added. Stops the timer and then removes the reference
1248         from the part, possibly destroying it.
1249
1250         * kwq/KWQSlot.mm:
1251         (KWQSlot::KWQSlot): Added the new slot to the list of slots.
1252         (KWQSlot::call): Ditto.
1253
1254         * kwq/KWQKHTMLPart.mm:
1255         (KWQKHTMLPart::sendResizeEvent): Removed an old attempt to work around this same issue.
1256         (KWQKHTMLPart::mouseDown): Ditto.
1257         (KWQKHTMLPart::mouseDragged): Ditto.
1258         (KWQKHTMLPart::mouseUp): Ditto.
1259         (KWQKHTMLPart::mouseMoved): Ditto.
1260         (KWQKHTMLPart::sendContextMenuEvent): Ditto.
1261
1262 2004-09-13  Darin Adler  <darin@apple.com>
1263
1264         Reviewed by Maciej.
1265
1266         - fixed regression caused by change earlier today
1267
1268         * khtml/xml/dom_selection.cpp: (DOM::Selection::modifyExtendingRightForward):
1269         Use CaretPosition for CHARACTER, not WORD.
1270
1271 2004-09-13  Darin Adler  <darin@apple.com>
1272
1273         Reviewed by Kevin.
1274
1275         - fixed <rdar://problem/3798453> DIG failure: getting variable with same name as DOM element attribute gets attribute value instead
1276
1277         * khtml/ecma/kjs_events.cpp: (JSEventListener::handleEvent): When adding current target and
1278         other event handler scope, put it below the existing scope chain. This ensures that things
1279         found in the function's scope will come before the event handler, as in other browsers.
1280
1281 2004-09-13  Ken Kocienda  <kocienda@apple.com>
1282
1283         Reviewed by Darin
1284         
1285         Fix for this bug:
1286         
1287         <rdar://problem/3798346> REGRESSION (125-162): crash pushing down arrow key on KLM.com site
1288
1289         * khtml/xml/dom_position.cpp:
1290         (DOM::Position::nextLinePosition): This function was being called in a case where it was not expected
1291         until we traced the code. It has to do with some deeper issues associated with handling arrow keys, 
1292         resulting in the editing arrow-down code running in a case where we are not editing. I discussed this 
1293         with Darin, and we decided to handle the broader issues at a later date. The fix I am checking in
1294         here to fix the bug is merely avoiding a null-deref.
1295
1296 2004-09-13  Ken Kocienda  <kocienda@apple.com>
1297
1298         Reviewed by John
1299
1300         Fix for this bug:
1301         
1302         <rdar://problem/3784840> REGRESSION (Mail): Text is inserted in the wrong place after changing typing style
1303
1304         * khtml/editing/htmlediting_impl.cpp:
1305         (khtml::InputTextCommandImpl::prepareForTextInsertion): Code to handle typing style did not
1306         check to see if the reference node used for the DOM node insertion operation was a block.
1307         If it is, then the new node containing the new editing style now is inserted at the start of the block,
1308         instead of after it.
1309
1310 2004-09-13  Ken Kocienda  <kocienda@apple.com>
1311
1312         Added a couple new layout tests to cover recent changes.
1313
1314         * layout-tests/editing/editing.js: Added some new functions to do by-word selection movement.
1315         * layout-tests/editing/selection/move-backwords-by-word-001-expected.txt: Added.
1316         * layout-tests/editing/selection/move-backwords-by-word-001.html: Added.
1317         * layout-tests/editing/selection/selection-3748164-fix-expected.txt: Added.
1318         * layout-tests/editing/selection/selection-3748164-fix.html: Added.
1319
1320 2004-09-13  Ken Kocienda  <kocienda@apple.com>
1321
1322         Reviewed by John
1323
1324         Fix for this bug:
1325         
1326         <rdar://problem/3765519> REGRESSION (Mail): word movement goes too far upstream at start of line
1327         
1328         * khtml/xml/dom_position.cpp:
1329         (DOM::Position::previousWordPosition): Use downstream position here when making final placement of caret. 
1330
1331 2004-09-13  Ken Kocienda  <kocienda@apple.com>
1332
1333         Reviewed by Darin
1334
1335         Various editing improvements, many focused on the improvements made possible by the
1336         new CaretPosition class.
1337         
1338         Includes fixes for these bugs:
1339         
1340         <rdar://problem/3748164> REGRESSION (Mail): Arrow navigation in typical mail message can result in stuck caret
1341         <rdar://problem/3782062> REGRESSION (Mail): option-delete can delete almost all of a message when it has trouble finding a word
1342         <rdar://problem/3790456> triple click does not select entire paragraph (folklore.org)
1343
1344         * WebCore.pbproj/project.pbxproj: Added CaretPosition class files.
1345         * khtml/dom/dom2_range.h:
1346         (DOM::offsetInCharacters): Moved this helper here from khtml_text_operations.cpp. This
1347         function helps to determine how to interpret the offsets used in DOM Ranges.
1348         * khtml/editing/htmlediting_impl.cpp:
1349         (khtml::InputNewlineCommandImpl::doApply): Use CaretPosition class to make "end-of-block" determination.
1350         Also, fix a caret placement glitch in "case 1" in the code: Place the caret in the node after the inserted
1351         BR. This makes it show up in the right place.
1352         * khtml/khtml_part.cpp:
1353         (KHTMLPart::handleMousePressEventDoubleClick): Don't limit double-click and triple-click handling only to text nodes.
1354         (KHTMLPart::handleMousePressEventTripleClick): Ditto.
1355         (KHTMLPart::selectAll): Use CaretPosition class to implement improved selectAll.
1356         * khtml/misc/khtml_text_operations.cpp:
1357         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator): Make a fix to the initial state setting of
1358         m_handledChildren. This is true if the offset into the end node is 0, meaning that we do not want to descend
1359         into its children at all.
1360         * khtml/xml/dom_caretposition.cpp: Added.
1361         * khtml/xml/dom_caretposition.h: Added.
1362         * khtml/xml/dom_nodeimpl.cpp:
1363         (NodeImpl::traverseNextNode): Fix bugs with the stayWithin implementation. We could miss nodes we want to test
1364         due to an erroneous check of stayWithin when no such check is needed.
1365         (NodeImpl::traverseNextSibling): Ditto.
1366         (NodeImpl::traversePreviousNodePostOrder): Ditto.
1367         * khtml/xml/dom_position.cpp:
1368         (DOM::Position::Position): Remove spurious semi-colon.
1369         (DOM::Position::upstream): Move incoming Position to its equivalentDeepPosition. This is part of the transition
1370         that will make this code work better with increased use of CaretPosition.
1371         (DOM::Position::downstream): Ditto.
1372         (DOM::Position::atStartOfContainingEditableBlock): Removed. Dead code; was not being called.
1373         (DOM::Position::atStartOfRootEditableElement): Removed. Dead code; was not being called.
1374         (DOM::Position::isLastRenderedPositionInEditableBlock): Removed. Replaced with calls to CaretPosition class.
1375         (DOM::Position::inLastEditableInRootEditableElement): Removed. Dead code; was not being called.
1376         (DOM::Position::inFirstEditableInRootEditableElement): Removed. Was only being called by other code that has been removed.
1377         * khtml/xml/dom_position.h:
1378         * khtml/xml/dom_selection.cpp:
1379         (DOM::Selection::modifyExtendingRightForward): Moved implementation of CHARACTER case to use CaretPosition class instead
1380         of Position class helpers.
1381         (DOM::Selection::modifyMovingRightForward): Ditto.
1382         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
1383         (DOM::Selection::modifyMovingLeftBackward): Ditto.
1384         (DOM::Selection::validate): Made simplifications in code that used to call a concoction of Position class helpers to
1385         do the right thing. Now calls CaretPosition equivalents.
1386
1387 2004-09-13  Ken Kocienda  <kocienda@apple.com>
1388
1389         This test was broken. The result is that it was not testing what it was supposed to 
1390         be testing. I fixed the test and updated the expected results.
1391
1392         * layout-tests/editing/selection/move-between-blocks-no-001-expected.txt
1393         * layout-tests/editing/selection/move-between-blocks-no-001.html
1394
1395 2004-09-13  Ken Kocienda  <kocienda@apple.com>
1396
1397         Reviewed by John
1398
1399         Fix for these bugs:
1400         
1401         <rdar://problem/3784835> REGRESSION (Mail): crash in DOM::ElementImpl::tagName inside delete text command code while editing a Mail message
1402         <rdar://problem/3788015> REGRESSION (Mail): Crash deleting before a blockquote
1403         <rdar://problem/3796366> REGRESSION (Mail): Crash Mail by deleting the right line from pasted HTML
1404
1405         * khtml/editing/htmlediting_impl.cpp:
1406         (khtml::DeleteSelectionCommandImpl::doApply): All of these bugs are due to the same problem. When I
1407         made the delete command run even when the text is a caret (to make block merges work right when the
1408         caret is at the start of a block), I failed to handle one case when there might be no text to 
1409         delete. This resulted in a call to the DeleteTextCommand with a zero-length deletion request.
1410         This is not supported. Now, I have added an additional test in this one place in the code that
1411         was causing all these failures.
1412
1413 2004-09-12  Darin Adler  <darin@apple.com>
1414
1415         Reviewed by Maciej.
1416
1417         - fixed <rdar://problem/3797758> REGRESSION (155-156): Cannot tab between input fields at switchboard.com
1418
1419         * kwq/KWQLineEdit.mm: (QLineEdit::selectAll): Use setFocus() instead of calling makeFirstResponder
1420         directly since it handles the case where the field editor has focus.
1421
1422 2004-09-12  Darin Adler  <darin@apple.com>
1423
1424         Reviewed by Maciej.
1425
1426         - fixed <rdar://problem/3792082> zero character codes in UTF-16 input cause crash
1427
1428         * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertUTF16): Fixed code that was using the wrong variable
1429         to decrement the input length, causing buffer overrun.
1430
1431 2004-09-12  Darin Adler  <darin@apple.com>
1432
1433         Reviewed by Maciej.
1434
1435         - fixed <rdar://problem/3798240> computed style error log messages seen with numbers in the range 74-77
1436
1437         * khtml/css/css_computedstyle.cpp: (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
1438         Added implementations for CSS_PROP__KHTML_MARQUEE_INCREMENT, CSS_PROP_MAX_HEIGHT, CSS_PROP_MAX_WIDTH,
1439         CSS_PROP_MIN_HEIGHT, CSS_PROP_MIN_WIDTH, and CSS_PROP_VISIBILITY.
1440
1441 2004-09-12  Darin Adler  <darin@apple.com>
1442
1443         * layout-tests/css1/text_properties/text-transform-expected.txt: Removed unused test result.
1444
1445 2004-09-11  Maciej Stachowiak  <mjs@apple.com>
1446
1447         Reviewed by Darin.
1448
1449         <rdar://problem/3787208> can't log in to SAP SDN site (JS parse error)
1450
1451         * kwq/KWQKURL.mm:
1452         (KURL::decode_string): Check for find result >= 0 instead of >0,
1453         to handle case of first character in a string being encoded.
1454
1455 2004-09-09  Chris Blumenberg  <cblu@apple.com>
1456
1457         Support for: <rdar://problem/3795485> debug menu item to enable RSS animation on first layout
1458
1459         Reviewed by rjw.
1460
1461         * khtml/khtml_part.h:
1462         (KHTMLPart::didFirstLayout): new
1463         * khtml/khtmlview.cpp:
1464         (KHTMLView::layout): call didFirstLayout
1465         * kwq/KWQKHTMLPart.h:
1466         * kwq/KWQKHTMLPart.mm:
1467         (KWQKHTMLPart::didFirstLayout): new
1468         * kwq/WebCoreBridge.h:
1469
1470 === Safari-163 ===
1471
1472 2004-09-09  Maciej Stachowiak  <mjs@apple.com>
1473
1474         - roll out the last change, it appears to cause a performance regression
1475
1476         * khtml/rendering/render_box.cpp:
1477         (RenderBox::caretRect):
1478         * khtml/rendering/render_box.h:
1479         * khtml/rendering/render_br.cpp:
1480         (RenderBR::caretRect):
1481         * khtml/rendering/render_br.h:
1482         * khtml/rendering/render_flow.cpp:
1483         (RenderFlow::caretRect):
1484         * khtml/rendering/render_flow.h:
1485         * khtml/rendering/render_object.cpp:
1486         (RenderObject::caretRect):
1487         * khtml/rendering/render_object.h:
1488         * khtml/rendering/render_text.cpp:
1489         (RenderText::caretRect):
1490         * khtml/rendering/render_text.h:
1491         * kwq/WebCoreBridge.h:
1492         * kwq/WebCoreBridge.mm:
1493
1494 2004-09-08  Maciej Stachowiak  <mjs@apple.com>
1495
1496         Reviewed by Dave.
1497
1498         WebCore part of fix for:
1499         
1500         <rdar://problem/3759187> REGRESSION (Mail): implement firstRectForCharacterRange:
1501         
1502         * kwq/WebCoreBridge.h:
1503         * kwq/WebCoreBridge.mm:
1504         (-[WebCoreBridge firstRectForDOMRange:]): New method to compute the rect for a
1505         DOMRange, or if the range is split into multiple lines, the rect for the part on
1506         the first line only.
1507         
1508         * khtml/rendering/render_object.cpp:
1509         (RenderObject::caretRect): Added extraWidthToEndOfLine parameter and ditto
1510         for the overrides below.
1511         * khtml/rendering/render_object.h:
1512         * khtml/rendering/render_box.cpp:
1513         (RenderBox::caretRect):
1514         * khtml/rendering/render_box.h:
1515         * khtml/rendering/render_br.cpp:
1516         (RenderBR::caretRect):
1517         * khtml/rendering/render_br.h:
1518         * khtml/rendering/render_flow.cpp:
1519         (RenderFlow::caretRect):
1520         * khtml/rendering/render_flow.h:
1521         * khtml/rendering/render_text.cpp:
1522         (RenderText::caretRect):
1523
1524 2004-09-06  Darin Adler  <darin@apple.com>
1525
1526         Reviewed by Ken.
1527
1528         - fixed <rdar://problem/3790526> mark-related methods not implemented (needed for people with them in their key bindings files)
1529
1530         * khtml/khtml_part.h: Added mark and setMark.
1531         * khtml/khtmlpart_p.h: Added m_mark.
1532         * khtml/khtml_part.cpp:
1533         (KHTMLPart::mark): Added.
1534         (KHTMLPart::setMark): Added.
1535
1536         * kwq/KWQKHTMLPart.h: Change name of markedRange to markedTextRange to decrease
1537         the change it will be confused with the mark.
1538         * kwq/KWQKHTMLPart.mm:
1539         (KWQKHTMLPart::clear): Update for name change.
1540         (KWQKHTMLPart::markedTextRange): Ditto.
1541         (KWQKHTMLPart::setMarkedTextRange): Ditto.
1542
1543         * khtml/rendering/render_text.cpp: (RenderText::paint): Update for name change.
1544
1545         * kwq/WebCoreBridge.h: Remove setSelectionFrom, selectionStart, selectionStartOffset,
1546         selectionEnd, selectionEndOffset, and clearMarkedDOMRange. Renamed setMarkedDOMRange
1547         to setMarkedTextDOMRange and markedDOMRange to markedTextDOMRange. Added setMarkDOMRange
1548         and markDOMRange for the Emacs "mark".
1549         * kwq/WebCoreBridge.mm:
1550         (-[WebCoreBridge setMarkDOMRange:]): Added.
1551         (-[WebCoreBridge markDOMRange]): Added.
1552         (-[WebCoreBridge setMarkedTextDOMRange:]): Renamed.
1553         (-[WebCoreBridge markedTextDOMRange]): Renamed.
1554
1555         * khtml/xml/dom_selection.cpp: (DOM::Selection::validate): Make paragraph positions
1556         canonical by using deep rendered positions. Maybe someday this won't be an ad hoc
1557         decision any more.
1558
1559         * khtml/xml/dom_nodeimpl.cpp: (NodeBaseImpl::removeChildren): Use ref and deref
1560         rather than the unconventional check for 0 refCount. This makes us a bit more
1561         robust against a node going away partway through the removal process.
1562
1563         * WebCore.pbproj/project.pbxproj: Update MACOSX_DEPLOYMENT_TARGET to 10.3.
1564
1565 2004-09-08  Maciej Stachowiak  <mjs@apple.com>
1566
1567         - fixed deployment build problems noticed by Grant
1568
1569         * khtml/rendering/render_flow.cpp:
1570         (RenderFlow::caretRect):
1571         * khtml/rendering/render_text.cpp:
1572         (RenderText::caretRect):
1573
1574 2004-09-08  David Hyatt  <hyatt@apple.com>
1575
1576         Fix XML so that elements with no namespace never make HTML elements (when their names coincidentally match).
1577         
1578         Reviewed by rjw
1579
1580         * khtml/xml/dom_docimpl.cpp:
1581         (DocumentImpl::createElementNS):
1582
1583 2004-09-07  Maciej Stachowiak  <mjs@apple.com>
1584
1585         Reviewed by John.
1586
1587         - renamed caretPos to caretRect and made it return a QRect instead
1588         of taking four out parameters by reference.
1589         
1590         * khtml/rendering/render_box.cpp:
1591         (RenderBox::caretRect):
1592         * khtml/rendering/render_box.h:
1593         * khtml/rendering/render_br.cpp:
1594         (RenderBR::caretRect):
1595         * khtml/rendering/render_br.h:
1596         * khtml/rendering/render_flow.cpp:
1597         (RenderFlow::caretRect):
1598         * khtml/rendering/render_flow.h:
1599         * khtml/rendering/render_object.cpp:
1600         (RenderObject::caretRect):
1601         * khtml/rendering/render_object.h:
1602         * khtml/rendering/render_text.cpp:
1603         (RenderText::caretRect):
1604         * khtml/rendering/render_text.h:
1605         * khtml/xml/dom_selection.cpp:
1606         (DOM::Selection::xPosForVerticalArrowNavigation):
1607         (DOM::Selection::layoutCaret):
1608         * kwq/WebCoreBridge.mm:
1609         (-[WebCoreBridge caretRectAtNode:offset:]):
1610
1611 2004-09-07  Maciej Stachowiak  <mjs@apple.com>
1612
1613         Reviewed by Kevin.
1614
1615         <rdar://problem/3759209> REGRESSION (Mail): assertion failure when all of marked text deleted at start of document
1616         
1617         * kwq/KWQKHTMLPart.mm:
1618         (KWQKHTMLPart::setMarkedRange): Allow any empty range, even if
1619         it's not in a text node, since in this case it won't matter and
1620         weird things can happen when all marked text is removed, there
1621         might not be any text nodes.
1622
1623 2004-09-07  David Hyatt  <hyatt@apple.com>
1624
1625         Initial text-decoration CSS3 work for editing.  Just gets the properties and values parsed.
1626         
1627         Reviewed by darin
1628
1629         * khtml/css/css_computedstyle.cpp:
1630         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
1631         * khtml/css/cssparser.cpp:
1632         (CSSParser::parseValue):
1633         * khtml/css/cssproperties.c:
1634         (hash_prop):
1635         (findProp):
1636         * khtml/css/cssproperties.h:
1637         * khtml/css/cssproperties.in:
1638         * khtml/css/cssstyleselector.cpp:
1639         (khtml::CSSStyleSelector::adjustRenderStyle):
1640         * khtml/css/cssvalues.c:
1641         (hash_val):
1642         (findValue):
1643         * khtml/css/cssvalues.h:
1644         * khtml/css/cssvalues.in:
1645
1646 2004-09-06  Maciej Stachowiak  <mjs@apple.com>
1647
1648         Reviewed by Darin and Ken.
1649
1650         <rdar://problem/3655568> window.open fails when URL contains trailing space
1651
1652         * kwq/KWQKURL.mm:
1653         (KURL::KURL): Strip trailing and leading space when resolving relative URLs in all
1654         cases, instead of just leading in the non-absolute case as before.
1655
1656         - refactored KURL constructor to put more work in separate
1657         functions and also to change static methods to static functions,
1658         to avoid having to change the header when only changing helper
1659         functions that do not affect the KURL API (since KURL.h is widely
1660         included).
1661         
1662         * kwq/KWQKURL.mm:
1663         (encodeHostname):
1664         (findHostnamesInMailToURL):
1665         (findHostnameInHierarchicalURL):
1666         (encodeHostnames):
1667         (encodeRelativeString):
1668         (substituteBackslashes):
1669         * kwq/KWQKURL.h:
1670
1671         - add missing include of qvaluelist.h
1672
1673         * khtml/ecma/kjs_dom.h:
1674
1675 2004-09-06  Darin Adler  <darin@apple.com>
1676
1677         Reviewed by John.
1678
1679         - fixed <rdar://problem/3512066> REGRESSION (Mail): Select All highlights only part of the content, though all is copied
1680         - fixed <rdar://problem/3157025> REGRESSION (Mail): Should select paragraph instead of line on triple-click
1681         - fixed <rdar://problem/3735048> REGRESSION (Mail): HTML editing must select newline on triple click
1682         - fixed <rdar://problem/3788872> REGRESSION (Mail): ctrl-a emacs key binding does not work (move to start of paragraph)
1683         - fixed <rdar://problem/3788881> REGRESSION (Mail): ctrl-e emacs key binding does not work (move to end of paragraph)
1684         - fixed <rdar://problem/3789931> REGRESSION (Mail): typing style lost when you backspace
1685         - added code to select inserted text to help WebKit implement yankAndSelect:
1686         - did some clean-up on editing commands code
1687         
1688         * khtml/khtml_part.cpp:
1689         (KHTMLPart::handleMousePressEventTripleClick): Expand to a paragraph, not a line.
1690         (KHTMLPart::selectAll): Remove a lot of unneeded code and just expand to document using Selection.
1691         (KHTMLPart::selectionHasStyle): Remove check that limited us to only HTML elements, and add
1692         a check for nil. Together, these two changes fix a few cases I ran into during testing.
1693
1694         * khtml/rendering/render_canvas.cpp: (RenderCanvas::setSelection): Fix test that was checking if
1695         the old selection spanned multiple objects when it really should have checked whether the new
1696         new selection spans multiple objects. This caused the select all redraw bug.
1697
1698         * khtml/editing/htmlediting.h: Fixed indenting. Remove command IDs, replacing them with a couple
1699         of specific type checking methods, and SharedCommandImpl, using EditCommandImpl directly instead.
1700         Got rid of virtual functions, since the command objects have no data members other than the ones
1701         inherited from SharedPtr. Removed explicit copy constructors and destructors. Removed unneeded
1702         empty constructors. Removed inline directives that were having no effect. Added some boolean
1703         selectInsertedText parameter to some commands. Made almost all member functions const, because
1704         the const here applies to the command object which is a smart pointer, not the pointed-to
1705         command implementation object.
1706         * khtml/editing/htmlediting.cpp:
1707         (khtml::EditCommand::EditCommand): Changed since SharedPtr is now a pointer to EditCommandImpl.
1708         (khtml::EditCommand::operator=): Added. By defining this explicitly, we don't need the class
1709         that we are pointing to defined in the header, which lets us get rid of SharedCommandImpl.
1710         (khtml::EditCommand::isInputTextCommand): Added.
1711         (khtml::EditCommand::isTypingCommand): Added.
1712         (khtml::EditCommand::setParent): Updated since EditCommandImpl.setParent takes an impl pointer now.
1713         (khtml::EditCommand::handle): Removed, since it's identical to get().
1714         (khtml::InputTextCommand::input): Added selectInsertedText parameter.
1715         (khtml::TypingCommand::TypingCommand): Ditto.
1716         (khtml::TypingCommand::insertText): Ditto.
1717         (khtml::TypingCommand::isOpenForMoreTypingCommand): Use isTypingCommand instead of commandID.
1718         (khtml::TypingCommand::closeTyping): Change parameter type to const reference.
1719
1720         * khtml/editing/htmlediting_impl.h: Made StyleChange functions be const member functions.
1721         Changed parent() and setParent() to take and return EditCommandImpl pointers and be inlined.
1722         Added virtual isInputTextCommand, isTypingCommand, and preservesTypingStyle functions.
1723         Removed commandID functions and unneeded explicit destructors. Removed unneeded doApply
1724         function declaration in CompositeEditCommandImpl. Changed type of applyTypingStyle to return
1725         a node, not necessarily an element. Removed private execute function from InputTextCommandImpl.
1726         Added selectInsertedText to InputTextCommandImpl's input function and TypingCommandImpl's constructor
1727         and insertText function.
1728         * khtml/editing/htmlediting_impl.cpp:
1729         (khtml::StyleChange::StyleChange): Don't bother initializing the booleans since init handles that.
1730         (khtml::StyleChange::init): Added code to strip whitespace, and tweaked how the function does its job.
1731         (khtml::StyleChange::currentlyHasStyle): Added a check for null value, which can happen for properties
1732         where we don't have computed style implemented yet.
1733         (khtml::EditCommandImpl::EditCommandImpl): Updated since there is no SharedCommandImpl any more.
1734         (khtml::EditCommandImpl::apply): Call new preservesTypingStyle function rather than checking
1735         the command ID. This preserves typing style when deleting with the keyboard.
1736         (khtml::EditCommandImpl::setStartingSelection): Changed since parent is now a EditCommandImpl.
1737         Also rewrote to use for loop so it's simpler-looking.
1738         (khtml::EditCommandImpl::setEndingSelection): Ditto.
1739         (khtml::EditCommandImpl::setTypingStyle): Ditto.
1740         (khtml::EditCommandImpl::preservesTypingStyle): Added. Returns false.
1741         (khtml::EditCommandImpl::isInputTextCommand): Added. Returns false.
1742         (khtml::EditCommandImpl::isTypingCommand): Added. Returns false.
1743         (khtml::CompositeEditCommandImpl::applyTypingStyle): Changed this function to return a node rather
1744         than an element. Also change it so it returns the child as-is if the style change has nothing in it.
1745         (khtml::AppendNodeCommandImpl::~AppendNodeCommandImpl): Removed unneeded null checks.
1746         (khtml::DeleteSelectionCommandImpl::preservesTypingStyle): Added. Returns true.
1747         (khtml::DeleteTextCommandImpl::~DeleteTextCommandImpl): Removed unneeded null checks.
1748         (khtml::InputTextCommandImpl::input): Renamed execute function to input and got rid of the additional
1749         level of indirection, since it was the only caller. Added selectInsertedText parameter and changed
1750         the code so it will respect it.
1751         (khtml::InputTextCommandImpl::isInputTextCommand): Added. Returns true.
1752         (khtml::InsertNodeBeforeCommandImpl::~InsertNodeBeforeCommandImpl): Removed unneeded null checks.
1753         (khtml::JoinTextNodesCommandImpl::~JoinTextNodesCommandImpl): Ditto.
1754         (khtml::MoveSelectionCommandImpl::MoveSelectionCommandImpl): Hold a reference to the fragment
1755         while the command exists.
1756         (khtml::MoveSelectionCommandImpl::~MoveSelectionCommandImpl): Release the fragment.
1757         (khtml::RemoveNodeCommandImpl::~RemoveNodeCommandImpl): Remove unneeded null checks.
1758         (khtml::RemoveNodeCommandImpl::doUnapply): Take advantage of defined behavior of insertBefore when
1759         the node to insert before is 0 (means the same thing as appendChild).
1760         (khtml::RemoveNodePreservingChildrenCommandImpl::~RemoveNodePreservingChildrenCommandImpl):
1761         Remove unneeded null check.
1762         (khtml::ReplaceSelectionCommandImpl::ReplaceSelectionCommandImpl): Hold a reference to the fragment
1763         while the command exists.
1764         (khtml::ReplaceSelectionCommandImpl::~ReplaceSelectionCommandImpl): Release the fragment.
1765         (khtml::SetNodeAttributeCommandImpl::~SetNodeAttributeCommandImpl): Remove unneeded null check.
1766         (khtml::SplitTextNodeCommandImpl::~SplitTextNodeCommandImpl): Remove unneeded null check.
1767         (khtml::TypingCommandImpl::TypingCommandImpl): Added selectInsertedText parameter.
1768         (khtml::TypingCommandImpl::doApply): Pass along selectInsertedText parameter.
1769         (khtml::TypingCommandImpl::insertText): Ditto.
1770         (khtml::TypingCommandImpl::preservesTypingStyle): Added. Returns true for DeleteKey.
1771         (khtml::TypingCommandImpl::isTypingCommand): Added. Returns true.
1772
1773         * khtml/editing/jsediting.cpp: Add a cut at implementing the underline command. May not work
1774         perfectly yet because text-decoration is not inherited the way, say, font-weight is.
1775
1776         * khtml/xml/dom_selection.h: Removed some unneeded friend declarations for comparison operators
1777         that use only public members. Added PARAGRAPH_BOUNDARY.
1778         * khtml/xml/dom_selection.cpp:
1779         (DOM::Selection::modifyExtendingRightForward): Implemented paragraph boundary case, simplified line
1780         boundary case (by changing parameter types and function names, not the algorithm), and made
1781         paragraph case fall into line case for now.
1782         (DOM::Selection::modifyMovingRightForward): Ditto.
1783         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
1784         (DOM::Selection::modifyMovingLeftBackward): Ditto.
1785         (DOM::Selection::validate): Implemented paragraph case and paragraph boundary case, simplified the
1786         line case as above and also fixed the document case.
1787         (DOM::startOfFirstRunAt): Changed to use DOM::Position instead of node
1788         offset pairs. Also renamed and got rid of separate bool to indicate "not found".
1789         (DOM::endOfLastRunAt): Ditto.
1790         (DOM::selectionForLine): Ditto.
1791
1792         * khtml/xml/dom_position.h: Added startParagraphBoundary and endParagraphBoundary.
1793         Also used enums instead of bools in a couple of places. Removed some unneeded friend
1794         declarations for comparison operators that use only public members.
1795         * khtml/xml/dom_position.cpp:
1796         (DOM::Position::Position): Coding style tweak.
1797         (DOM::Position::startParagraphBoundary): Added.
1798         (DOM::Position::endParagraphBoundary): Added.
1799         (DOM::Position::upstream): Use enum parameter instead of bool.
1800         (DOM::Position::downstream): Ditto.
1801         (DOM::Position::rendersOnSameLine): Removed unused function. Noticed some backwards logic
1802         here, and removed it rather than fixing it.
1803
1804         * khtml/xml/dom_nodeimpl.h: Added traversePreviousNodePostOrder.
1805         * khtml/xml/dom_nodeimpl.cpp:
1806         (NodeImpl::traversePreviousNodePostOrder): Added. For some uses, this function is more analogous
1807         to traverseNextNode in reverse than traversePreviousNode, which does a backwards pre-order traversal.
1808
1809         * kwq/WebCoreBridge.h: Replaced fontForCurrentPosition method with fontForSelection:, added
1810         selectInsertedText parameter to insertText method, and added selectionStartHasStyle: method.
1811         Add WebSelectToParagraphBoundary.
1812         * kwq/WebCoreBridge.mm:
1813         (-[WebCoreBridge setSelectedDOMRange:affinity:]): Added workaround for bug where isRenderedContent
1814         returns false for <br> elements at the ends of lines.
1815         (-[WebCoreBridge insertText:selectInsertedText:]): Added selectInsertedText parameter, passing it
1816         along to TypingCommand::insertText.
1817         (-[WebCoreBridge selectionStartHasStyle:]): Added. Calls code in the part that does the real work.
1818         (-[WebCoreBridge fontForSelection:]): Ditto.
1819
1820         * kwq/KWQKHTMLPart.h: Renamed fontForCurrentPosition to fontForSelection, and added a feature
1821         where it tells us whether there are multiple fonts in the selection or not.
1822         * kwq/KWQKHTMLPart.mm:
1823         (KWQKHTMLPart::fontForSelection): Rewrote this to be a bit simpler, and added code to detect
1824         whether there are multiple fonts in the selection.
1825         (KWQKHTMLPart::didTellBridgeAboutLoad): Use a global character rather than a bad pointer here.
1826         Better not to rely on undefined behavior.
1827         (KWQKHTMLPart::documentFragmentWithText): Use lowercase HTML. I believe this works better when
1828         the document is XML, and we should probably visit all callers and change them.
1829         (KWQKHTMLPart::registerCommandForUndo): Call get() instead of handle().
1830         (KWQKHTMLPart::registerCommandForRedo): Call get() instead of handle().
1831
1832         * khtml/misc/shared.h: Added a private, non-implemented copy constructor and assignment
1833         operator to Shared<> and TreeShared<> to prevent copying reference counts by accident.
1834         * khtml/rendering/render_style.h: Get rid of Shared<BorderData>, since it's not used that way.
1835         This makes BorderData smaller, and allows it to compile with the change to Shared<>.
1836         * khtml/xml/dom_docimpl.h: Remove unneeded copy constructor on DocumentFragmentImpl,
1837         which ran afoul of the change to Shared<> and was unused.
1838         * khtml/xml/dom_docimpl.cpp: Ditto.
1839         * khtml/xml/dom_stringimpl.cpp:
1840         (DOM::DOMStringImpl::empty): Changed code around so it doesn't run afoul of the change to
1841         Shared<>. The old code was copying a DOMStringImpl.
1842         (DOM::DOMStringImpl::ascii): Added code to null-terminate the string buffer.
1843
1844 2004-09-06  Darin Adler  <darin@apple.com>
1845
1846         Reviewed by John.
1847
1848         - improved computed style code and implemented text-decoration and text-shadow (needed for, e.g., underline)
1849
1850         * khtml/css/css_computedstyle.cpp:
1851         Added CSS_PROP_TEXT_DECORATION to the InheritableProperties array for now even though it's
1852         not inheritable. This makes underline work in some cases for typing style. We may decide to
1853         take it back out again after further consideration.
1854         (DOM::valueForLength): Use IDs in primitive values rather than strings.
1855         (DOM::valueForBorderStyle): Ditto, also renamed this.
1856         (DOM::valueForTextAlign): More of the same.
1857         (DOM::valueForShadow): Added this function.
1858         (DOM::CSSComputedStyleDeclarationImpl::getPositionOffsetValue): More IDs in primitive values.
1859         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Changed all the cases to use
1860         IDs instead of strings in primitive values. Also put the style in a local variable for
1861         better code size and smaller source code too. Added implementation for CSS_PROP_TEXT_DECORATION
1862         and CSS_PROP_TEXT_SHADOW.
1863
1864         * khtml/css/css_valueimpl.cpp:
1865         (CSSValueListImpl::cssText): Put commas between list elements.
1866         (CSSPrimitiveValueImpl::cssText): Fixed some messed up indenting and removed an unneeded
1867         default case that would just prevent a warning if we ever have an unhandled enum value.
1868
1869 2004-09-06  Darin Adler  <darin@apple.com>
1870
1871         Reviewed by John.
1872
1873         - did some clean-up on form data code
1874
1875         * khtml/misc/formdata.h: Added more public functions as suggested by Chris when he reviewed
1876         this class.
1877         * khtml/misc/formdata.cpp: (khtml::FormData::appendFile): Added. Will be needed soon.
1878         * kwq/KWQFormData.mm: (arrayFromFormData): Use new cleaned-up FormData API.
1879
1880 2004-09-06  Darin Adler  <darin@apple.com>
1881
1882         Reviewed by John.
1883
1884         * kwq/DOM-CSS.mm: (-[DOMCSSStyleDeclaration description]): Use cssText in the description
1885         so it's easier to see in the debugger.
1886
1887 2004-09-06  Darin Adler  <darin@apple.com>
1888
1889         Reviewed by John.
1890
1891         * khtml/ecma/xmlhttprequest.cpp: (KJS::XMLHttpRequest::send): Remove uneeded QCString copy.
1892
1893 2004-09-04  Richard Williamson   <rjw@apple.com>
1894
1895         Fix build problem on panther.
1896
1897         * khtml/ecma/kjs_html.cpp:
1898         * khtml/rendering/render_canvasimage.h:
1899
1900 2004-09-03  David Hyatt  <hyatt@apple.com>
1901
1902         Simple tweak to background-attachment.  Don't apply the slow repaint flag until after the whole style has been
1903         resolved, since while cascading someone may set the attachment to fixed but later override with scroll.
1904
1905         * khtml/css/cssstyleselector.cpp:
1906         (khtml::CSSStyleSelector::adjustRenderStyle):
1907         (khtml::CSSStyleSelector::applyProperty):
1908
1909 2004-09-03  Richard Williamson   <rjw@apple.com>
1910
1911         Fixed <rdar://problem/3781001>: redirection of URL via resource load delegate does not correctly set base URL for subsequent loads
1912
1913         Ensure that stylesheets have the correct URL when request
1914         is redirected.
1915
1916         Reviewed by Maciej.
1917
1918         * khtml/misc/loader.cpp:
1919         (CachedCSSStyleSheet::checkNotify):
1920         * kwq/KWQLoader.h:
1921         * kwq/KWQLoader.mm:
1922         (KWQIsResponseURLEqualToURL):
1923         (KWQResponseURL):
1924
1925         * khtml/ecma/kjs_html.cpp:
1926         (KJS::Context2DFunction::tryCall):
1927         Compare parameter count with == instead of <=.
1928
1929 2004-09-03  David Hyatt  <hyatt@apple.com>
1930
1931         Fix for 3779083, deleting large amount of text is really slow.  Don't use NodeLists in editing remove commands.
1932         
1933         Reviewed by darin
1934
1935         * khtml/editing/htmlediting_impl.cpp:
1936         (khtml::RemoveNodeCommandImpl::RemoveNodeCommandImpl):
1937         (khtml::RemoveNodePreservingChildrenCommandImpl::doApply):
1938
1939 2004-09-03  Darin Adler  <darin@apple.com>
1940
1941         Reviewed by John.
1942
1943         - fixed <rdar://problem/3714501> REGRESSION (125.8-8A162): Chinese words display as garbage in search results (www.sz.net.cn)
1944
1945         * khtml/ecma/kjs_html.cpp: (KJS::HTMLDocument::putValue): Resolve URL using the document method
1946         that passes the codec rather than calling the KURL constructor directly.
1947
1948 2004-09-03  Chris Blumenberg  <cblu@apple.com>
1949
1950         Fixed: <rdar://problem/3788409> can't create or clone an embed element
1951
1952         Reviewed by rjw.
1953
1954         * khtml/html/htmlparser.cpp: added fixme about sharing code
1955         * khtml/xml/dom_docimpl.cpp: ditto
1956         (DocumentImpl::createHTMLElement): create and return a HTMLEmbedElementImpl
1957
1958 2004-09-03  Darin Adler  <darin@apple.com>
1959
1960         Reviewed by Chris.
1961
1962         - fixed <rdar://problem/3410112> filename with non-ASCII name for <input type=file> should be sent in the page's encoding
1963
1964         * khtml/html/html_formimpl.cpp: (DOM::HTMLFormElementImpl::formData):
1965         Encode filename using the codec rather than doing the &# dance. It turns out that Mozilla
1966         only does the &# thing under certain circumstances that are not important. Always encoding
1967         the filename is almost certainly better behavior, and will fix many serious problems for
1968         Japanese and Korean users and websites.
1969
1970 2004-09-03  Richard Williamson   <rjw@apple.com>
1971
1972         Made drawImage() in <canvas> compliant with whatwg spec.
1973         
1974         Reviewed by John.
1975
1976         * khtml/ecma/kjs_html.cpp:
1977         (KJS::Context2DFunction::tryCall):
1978         * khtml/html/html_imageimpl.h:
1979         (DOM::HTMLImageElementImpl::pixmap):
1980
1981 2004-09-03  David Hyatt  <hyatt@apple.com>
1982
1983         Fix for 3787686, CSS parser should do case-sensitive matching of ids and attributes only in strict mode
1984         (and not whenever you have an HTML document).
1985         
1986         Reviewed by john
1987
1988         * khtml/css/parser.cpp:
1989         * khtml/css/parser.y:
1990
1991 === Safari-162 ===
1992
1993 2004-09-03  Darin Adler  <darin@apple.com>
1994
1995         Reviewed by John.
1996
1997         - <rdar://problem/3788040> REGRESSION: text that i type into a textarea disappears when i tab out of the textarea
1998
1999         * kwq/KWQTextArea.mm: (-[KWQTextArea textDidChange:]): Bring back an unconditional version of
2000         this method. Earlier, we deleted this method, but we should have instead removed the check.
2001
2002 2004-09-02  David Hyatt  <hyatt@apple.com>
2003
2004         Swap RenderBox and RenderContainer.  Make leaf RenderObjects actually derive off of RenderBox instead.
2005         
2006         Reviewed by kocienda
2007
2008         * khtml/rendering/render_block.cpp:
2009         (khtml::RenderBlock::addChildToFlow):
2010         * khtml/rendering/render_box.cpp:
2011         (RenderBox::RenderBox):
2012         (RenderBox::detach):
2013         * khtml/rendering/render_box.h:
2014         * khtml/rendering/render_container.cpp:
2015         (RenderContainer::RenderContainer):
2016         (RenderContainer::detach):
2017         * khtml/rendering/render_container.h:
2018         * khtml/rendering/render_flow.cpp:
2019         (RenderFlow::detach):
2020         (RenderFlow::dirtyLineBoxes):
2021         (RenderFlow::createInlineBox):
2022         (RenderFlow::getAbsoluteRepaintRect):
2023         (RenderFlow::lowestPosition):
2024         (RenderFlow::rightmostPosition):
2025         (RenderFlow::leftmostPosition):
2026         (RenderFlow::caretPos):
2027         * khtml/rendering/render_flow.h:
2028         (khtml::RenderFlow::RenderFlow):
2029         * khtml/rendering/render_frames.cpp:
2030         (RenderFrameSet::RenderFrameSet):
2031         (RenderFrameSet::nodeAtPoint):
2032         (RenderFrameSet::dump):
2033         * khtml/rendering/render_frames.h:
2034         * khtml/rendering/render_inline.cpp:
2035         (RenderInline::addChildToFlow):
2036         * khtml/rendering/render_replaced.cpp:
2037         * khtml/rendering/render_replaced.h:
2038         (khtml::RenderReplaced::setIntrinsicHeight):
2039         * khtml/rendering/render_table.cpp:
2040         (RenderTableSection::RenderTableSection):
2041         (RenderTableSection::detach):
2042         (RenderTableSection::setStyle):
2043         * khtml/rendering/render_table.h:
2044
2045 2004-09-02  Ken Kocienda  <kocienda@apple.com>
2046
2047         * khtml/editing/htmlediting_impl.h: Fix some inconsistent use of whitespace. No code change.
2048
2049 2004-09-02  Ken Kocienda  <kocienda@apple.com>
2050
2051         Reviewed by Hyatt
2052
2053         Fix for this bug:
2054         
2055         <rdar://problem/3786848> REGRESSION (Mail): Typing styles and font panel updates broken
2056
2057         * khtml/xml/dom_position.cpp:
2058         (DOM::Position::inRenderedContent): Check for inlines that can have kids is wrong.
2059         I busted this the other day when making the PositionIterator class iterate over
2060         all nodes and not just leaves of the DOM tree.
2061         
2062         Update all the following functions. These use the PositionIterator class, but still 
2063         only want to consider leaf nodes.
2064         
2065         (DOM::Position::isFirstRenderedPositionOnLine)
2066         (DOM::Position::isLastRenderedPositionOnLine)
2067         (DOM::Position::isLastRenderedPositionInEditableBlock)
2068         (DOM::Position::inFirstEditableInRootEditableElement)
2069         (DOM::Position::inLastEditableInRootEditableElement)
2070         (DOM::Position::inFirstEditableInContainingEditableBlock)
2071         (DOM::Position::inLastEditableInContainingEditableBlock)
2072
2073 2004-09-02  Richard Williamson   <rjw@apple.com>
2074
2075         Support for patterns in <canvas>
2076
2077         Reviewed by Hyatt.
2078
2079         * khtml/ecma/kjs_html.cpp:
2080         (KJS::Context2DFunction::tryCall):
2081         (Context2D::putValue):
2082         (drawPattern):
2083         (ImagePattern::ImagePattern):
2084         (ImagePattern::~ImagePattern):
2085         * khtml/ecma/kjs_html.h:
2086         (KJS::ImagePattern::getPattern):
2087         (KJS::ImagePattern::pixmap):
2088         * kwq/KWQPixmap.h:
2089         * kwq/KWQPixmap.mm:
2090         (QPixmap::imageRef):
2091         * kwq/WebCoreImageRenderer.h:
2092
2093 2004-09-01  David Hyatt  <hyatt@apple.com>
2094
2095         Fix for 3769409, a regression from 10.3.4 to 10.3.5 involving <colgroup>s in malformed HTML.
2096         
2097         Reviewed by mjs
2098
2099         * khtml/html/htmlparser.cpp:
2100         (KHTMLParser::insertNode):
2101
2102 2004-09-01  David Hyatt  <hyatt@apple.com>
2103
2104         Fix for the <colgroup> crasher.  Make sure adding to an anonymous box just returns immediately. Also eliminate
2105         all the redundant setPos -500000 calls, since we don't need those at all.
2106         
2107         Reviewed by john
2108
2109         * khtml/rendering/render_block.cpp:
2110         (khtml::RenderBlock::addChildToFlow):
2111         (khtml::RenderBlock::makeChildrenNonInline):
2112         * khtml/rendering/render_inline.cpp:
2113         (RenderInline::splitFlow):
2114
2115 2004-09-02  Ken Kocienda  <kocienda@apple.com>
2116
2117         Reviewed by John
2118
2119         Fix for these bugs:
2120         
2121         <rdar://problem/3729219> REGRESSION (Mail): Caret placement and navigation not working correctly at yahoo.com
2122         <rdar://problem/3758606> REGRESSION (Mail): Deletions across DIV elements is broken
2123         <rdar://problem/3784810> REGRESSION (Mail): delete at beginning of line instead deletes to the end of the document (simple reduced test)
2124
2125         I made some very big improvements to the code which handles deletions of selections
2126         which span more than one block.
2127
2128         * khtml/editing/htmlediting_impl.cpp:
2129         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): An new, overloaded version of this
2130         function which works on a NodeImpl. The code in this function fell out of some refactoring
2131         I did in the function with the same name which takes a Position as an argument.
2132         (khtml::DeleteSelectionCommandImpl::moveNodesToBlock): New function. This new logic provides
2133         the smarts to fix the bugs listed above and greatly improves the code to perform deleting 
2134         selections which span more than one block.
2135         (khtml::DeleteSelectionCommandImpl::doApply): Several changes. Constrain downstream positions
2136         so that they stay in the current block. This was a mistake before I think. Add code to detect
2137         when the insertion point is a caret at the start of a block. This is a special-case of a
2138         cross-block selection. Change the end-of-deletion-fixup case to operate on the downstreamEnd
2139         position of the selection rather than the upstream. This is more logical. Refine the block 
2140         merge logic to handle more cases, like dealing with whitespace. 
2141         * khtml/editing/htmlediting_impl.h: Associated header file changes.
2142         * khtml/xml/dom_nodeimpl.cpp: 
2143         (NodeImpl::rootEditableElement): Add code to clamp the return value to the body element.
2144         * khtml/xml/dom_selection.cpp:
2145         (DOM::Selection::validate): Make selection canonicalizations stay in the current block.
2146         * layout-tests/editing/deleting/delete-block-merge-contents-001-expected.txt:
2147         * layout-tests/editing/deleting/delete-block-merge-contents-001.html:
2148         * layout-tests/editing/deleting/delete-block-merge-contents-002-expected.txt: Added.
2149         * layout-tests/editing/deleting/delete-block-merge-contents-002.html: Added.
2150         * layout-tests/editing/deleting/delete-block-merge-contents-003-expected.txt: Added.
2151         * layout-tests/editing/deleting/delete-block-merge-contents-003.html: Added.
2152         * layout-tests/editing/deleting/delete-block-merge-contents-004-expected.txt: Added.
2153         * layout-tests/editing/deleting/delete-block-merge-contents-004.html: Added.
2154         * layout-tests/editing/deleting/delete-block-merge-contents-005-expected.txt: Added.
2155         * layout-tests/editing/deleting/delete-block-merge-contents-005.html: Added.
2156         * layout-tests/editing/deleting/delete-block-merge-contents-006-expected.txt: Added.
2157         * layout-tests/editing/deleting/delete-block-merge-contents-006.html: Added.
2158         * layout-tests/editing/deleting/delete-block-merge-contents-007-expected.txt: Added.
2159         * layout-tests/editing/deleting/delete-block-merge-contents-007.html: Added.
2160         * layout-tests/editing/deleting/delete-block-merge-contents-008-expected.txt: Added.
2161         * layout-tests/editing/deleting/delete-block-merge-contents-008.html: Added.
2162         * layout-tests/editing/deleting/delete-block-merge-contents-009-expected.txt: Added.
2163         * layout-tests/editing/deleting/delete-block-merge-contents-009.html: Added.
2164         * layout-tests/editing/deleting/delete-block-merge-contents-010-expected.txt: Added.
2165         * layout-tests/editing/deleting/delete-block-merge-contents-010.html: Added.
2166         * layout-tests/editing/deleting/delete-block-merge-contents-011-expected.txt: Added.
2167         * layout-tests/editing/deleting/delete-block-merge-contents-011.html: Added.
2168         * layout-tests/editing/inserting/insert-3654864-fix-expected.txt: Updated with new results.
2169         * layout-tests/editing/inserting/insert-3654864-fix.html: Updated test to deal better with
2170         improved select all behavior.
2171         * layout-tests/editing/selection/select-all-003-expected.txt: Updated with new results.
2172
2173 2004-09-01  Richard Williamson   <rjw@apple.com>
2174
2175         Fixed panther build glitch.
2176
2177         Reviewed by Ken.
2178
2179         * khtml/ecma/kjs_html.cpp:
2180
2181 2004-09-01  Richard Williamson   <rjw@apple.com>
2182
2183         Finished implementation of gradient support in <canvas>.
2184
2185         Reviewed by John.
2186
2187         * khtml/ecma/kjs_html.cpp:
2188         (KJS::HTMLElementFunction::tryCall):
2189         (isGradient):
2190         (isImagePattern):
2191         (KJS::Context2DFunction::tryCall):
2192         (Context2D::putValue):
2193         (Context2D::Context2D):
2194         (KJS::GradientFunction::tryCall):
2195         (gradientCallback):
2196         (Gradient::commonInit):
2197         (Gradient::Gradient):
2198         (Gradient::~Gradient):
2199         (Gradient::getShading):
2200         (Gradient::addColorStop):
2201         (sortStops):
2202         (Gradient::colorStops):
2203         * khtml/ecma/kjs_html.h:
2204         (KJS::ColorStop::ColorStop):
2205         * khtml/ecma/kjs_html.lut.h:
2206         (KJS::):
2207
2208 2004-09-01  David Hyatt  <hyatt@apple.com>
2209
2210         Fix for 3784686, hidden links still active.  Make sure text nodes exclude themselves from nodeAtPoint checks
2211         when hidden.
2212         
2213         * khtml/rendering/render_text.cpp:
2214         (RenderText::nodeAtPoint):
2215
2216 2004-08-31  David Hyatt  <hyatt@apple.com>
2217
2218         Fixes for 3761411 and 3782201.  This patch makes two changes to percentage heights.  First it makes sure that
2219         replaced elements always flex inside a cell (unlike blocks and tables, which do so only sometimes under bizarre
2220         conditions that are still being guessed at by me).  The second fix is a recognition that empty tables do not
2221         actually honor their heights, and so it is a mistake to try to flex them.
2222         
2223         Reviewed by mjs
2224
2225         * khtml/rendering/render_table.cpp:
2226         (RenderTableSection::layoutRows):
2227         * khtml/rendering/render_table.h:
2228         (khtml::RenderTable::hasSections):
2229
2230 2004-08-31  Ken Kocienda  <kocienda@apple.com>
2231
2232         Reviewed by Hyatt
2233     
2234         Fix for this bug:
2235         
2236         <rdar://problem/3781572> can't paste text in replied message view
2237
2238         * khtml/xml/dom2_rangeimpl.cpp:
2239         (DOM::RangeImpl::toHTML): Copying text placed in an anonymous block was failing
2240         since the code in here depending on the text node's containing block having an
2241         element, which it won't. In fact, using containing block is wrong anyway, since
2242         positioned elements can have containing blocks far from where they live in the
2243         tree. This "move up to block check" should use the more DOM-wise enclosingBlockFlowElement()
2244         in NodeImpl.
2245
2246 2004-08-30  David Hyatt  <hyatt@apple.com>
2247
2248         Fix for 3742585, sony dhtml menus wrong size.  The percentage table height algorithm was wrong.  This patch
2249         unifies the table percentage height algorithm with the block percentage height algorithm and fixes bugs in
2250         both.
2251         
2252         Reviewed by john
2253
2254         * khtml/rendering/render_box.cpp:
2255         (RenderBox::calcPercentageHeight):
2256         * khtml/rendering/render_table.cpp:
2257         (RenderTable::layout):
2258
2259 2004-08-31  Ken Kocienda  <kocienda@apple.com>
2260
2261         Added more editing layout tests.
2262
2263         * layout-tests/editing/deleting/delete-tab-001-expected.txt: Added.
2264         * layout-tests/editing/deleting/delete-tab-001.html: Added.
2265         * layout-tests/editing/deleting/delete-tab-002-expected.txt: Added.
2266         * layout-tests/editing/deleting/delete-tab-002.html: Added.
2267         * layout-tests/editing/deleting/delete-tab-003-expected.txt: Added.
2268         * layout-tests/editing/deleting/delete-tab-003.html: Added.
2269         * layout-tests/editing/deleting/delete-tab-004-expected.txt: Added.
2270         * layout-tests/editing/deleting/delete-tab-004.html: Added.
2271         * layout-tests/editing/editing.js: Fixed a little bug in one of the "delayed" commands.
2272         * layout-tests/editing/inserting/insert-tab-001-expected.txt: Added.
2273         * layout-tests/editing/inserting/insert-tab-001.html: Added.
2274         * layout-tests/editing/inserting/insert-tab-002-expected.txt: Added.
2275         * layout-tests/editing/inserting/insert-tab-002.html: Added.
2276         * layout-tests/editing/inserting/insert-tab-003-expected.txt: Added.
2277         * layout-tests/editing/inserting/insert-tab-003.html: Added.
2278         * layout-tests/editing/inserting/insert-tab-004-expected.txt: Added.
2279         * layout-tests/editing/inserting/insert-tab-004.html: Added.
2280
2281 2004-08-31  Ken Kocienda  <kocienda@apple.com>
2282
2283         Reviewed by John
2284
2285         Fix for this bug:
2286         
2287         <rdar://problem/3782521> Typing newline at start of block does not work
2288
2289         * khtml/editing/htmlediting_impl.cpp:
2290         (khtml::InputNewlineCommandImpl::doApply): Change handling of case to insert
2291         newline at the start of a block.
2292         * layout-tests/editing/inserting/insert-br-006-expected.txt: Updated layout test with
2293         new results.
2294
2295 2004-08-31  Ken Kocienda  <kocienda@apple.com>
2296
2297         Checked in incorrect results for these tests. There are the right ones.
2298
2299         * layout-tests/editing/deleting/collapse-whitespace-3587601-fix-expected.txt
2300         * layout-tests/editing/selection/move-by-line-001-expected.txt
2301
2302 2004-08-31  Ken Kocienda  <kocienda@apple.com>
2303
2304         Added more editing layout tests.
2305
2306         * layout-tests/editing/deleting/collapse-whitespace-3587601-fix-expected.txt: Added.
2307         * layout-tests/editing/deleting/collapse-whitespace-3587601-fix.html: Added.
2308         * layout-tests/editing/deleting/delete-block-merge-contents-001-expected.txt: Added.
2309         * layout-tests/editing/deleting/delete-block-merge-contents-001.html: Added.
2310         * layout-tests/editing/editing.js: Added some more navigation commands.
2311         * layout-tests/editing/inserting/insert-3778059-fix-expected.txt: Added.
2312         * layout-tests/editing/inserting/insert-3778059-fix.html: Added.
2313         * layout-tests/editing/selection/move-by-line-001-expected.txt: Added.
2314         * layout-tests/editing/selection/move-by-line-001.html: Added.
2315         * layout-tests/editing/style/typing-style-003-expected.txt: Added.
2316         * layout-tests/editing/style/typing-style-003.html: Added.
2317
2318 2004-08-31  Ken Kocienda  <kocienda@apple.com>
2319
2320         Added more editing layout tests. Renamed some others.
2321
2322         * layout-tests/editing/inserting/insert-br-001-expected.txt: Added.
2323         * layout-tests/editing/inserting/insert-br-001.html: Added.
2324         * layout-tests/editing/inserting/insert-br-002-expected.txt: Added.
2325         * layout-tests/editing/inserting/insert-br-002.html: Added.
2326         * layout-tests/editing/inserting/insert-br-003-expected.txt: Added.
2327         * layout-tests/editing/inserting/insert-br-003.html: Added.
2328         * layout-tests/editing/inserting/insert-br-004-expected.txt: Added.
2329         * layout-tests/editing/inserting/insert-br-004.html: Added.
2330         * layout-tests/editing/inserting/insert-br-005-expected.txt: Added.
2331         * layout-tests/editing/inserting/insert-br-005.html: Added.
2332         * layout-tests/editing/inserting/insert-br-006-expected.txt: Added.
2333         * layout-tests/editing/inserting/insert-br-006.html: Added.
2334         * layout-tests/editing/inserting/insert-br-case1-expected.txt: Removed.
2335         * layout-tests/editing/inserting/insert-br-case1.html: Removed.
2336         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Removed.
2337         * layout-tests/editing/inserting/insert-br-case2.html: Removed.
2338         * layout-tests/editing/inserting/insert-br-case3-expected.txt: Removed.
2339         * layout-tests/editing/inserting/insert-br-case3.html: Removed.
2340         * layout-tests/editing/inserting/insert-br-case6-expected.txt: Removed.
2341         * layout-tests/editing/inserting/insert-br-case6.html: Removed.
2342         * layout-tests/editing/inserting/insert-text-with-newlines-expected.txt: Added.
2343         * layout-tests/editing/inserting/insert-text-with-newlines.html: Added.
2344
2345 2004-08-31  Ken Kocienda  <kocienda@apple.com>
2346
2347         * layout-tests/editing/editing.js: Modified typeCharacterCommand so it can accept a character
2348         as an argument.
2349
2350 2004-08-31  Ken Kocienda  <kocienda@apple.com>
2351
2352         Reviewed by Hyatt
2353
2354         Fix for these bugs:
2355
2356         <rdar://problem/3777629> REGRESSION (Mail): can't delete blank lines in quoted text in HTML mail replies
2357         <rdar://problem/3780309> REGRESSION (Mail): can't delete past an empty span in a particular test case
2358         <rdar://problem/3780315> REGRESSION (Mail): right arrow works incorrectly in a particular test case with an empty span
2359         <rdar://problem/3780320> REGRESSION (Mail): left arrow works incorrectly in a particular test case with an empty span
2360         <rdar://problem/3780336> REGRESSION (Mail): down arrow fails in a reduction of a Mail reply test case (seems to be inside a span)
2361
2362         * khtml/xml/dom_position.cpp:
2363         (DOM::Position::upstream): If this position's node is a block, use it for the StayInBlock case, not the block's
2364         enclosing block.
2365         (DOM::Position::downstream): Ditto.
2366         (DOM::Position::inRenderedContent): Refine the case for non-text nodes. This was erroneously returning true
2367         for any empty element (like <span></span>).
2368         * khtml/xml/dom_positioniterator.cpp: Change the following four functions to consider all nodes, not just
2369         leaves of the DOM tree. This is a step towards making this iteration less cranky and unpredictable, and
2370         was necessary to do now to keep the inRenderedContent() change above from breaking editign layout tests.
2371         (DOM::PositionIterator::peekPrevious)
2372         (DOM::PositionIterator::peekNext)
2373         (DOM::PositionIterator::atStart)
2374         (DOM::PositionIterator::atEnd)
2375         * kwq/KWQKHTMLPart.mm:
2376         (KWQKHTMLPart::fontForCurrentPosition): Check that the position being checked is an element and that the
2377         element is in rendered content. I ran across some null-check failures while I was coding this fix, and
2378         the additions seem prudent.
2379         
2380         Updated these layout tests with new results.
2381         
2382         * layout-tests/editing/deleting/delete-3608430-fix-expected.txt:
2383         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt:
2384         * layout-tests/editing/deleting/delete-block-contents-001-expected.txt:
2385         * layout-tests/editing/deleting/delete-block-contents-002-expected.txt:
2386         * layout-tests/editing/deleting/delete-block-contents-003-expected.txt:
2387         * layout-tests/editing/deleting/delete-image-004-expected.txt:
2388         * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt:
2389         * layout-tests/editing/editing.js:
2390         * layout-tests/editing/execCommand/boldSelection-expected.txt:
2391         * layout-tests/editing/execCommand/italicizeByCharacter-expected.txt:
2392         * layout-tests/editing/execCommand/modifyForeColorByCharacter-expected.txt:
2393         * layout-tests/editing/execCommand/print-expected.txt:
2394         * layout-tests/editing/execCommand/selectAll-expected.txt:
2395         * layout-tests/editing/selection/extend-by-character-002-expected.txt:
2396         * layout-tests/editing/selection/extend-by-character-004-expected.txt:
2397         * layout-tests/editing/selection/extend-by-character-005-expected.txt:
2398         * layout-tests/editing/selection/extend-by-character-006-expected.txt:
2399         * layout-tests/editing/selection/select-all-001-expected.txt:
2400         * layout-tests/editing/selection/select-all-002-expected.txt:
2401         * layout-tests/editing/selection/select-all-003-expected.txt:
2402
2403 2004-08-30  Darin Adler  <darin@apple.com>
2404
2405         Reviewed by John.
2406
2407         - fixed <rdar://problem/3637519> REGRESSION (125-128): unrepro crash in QListBox::sizeForNumberOfLines at istweb.apple.com
2408
2409         * kwq/KWQListBox.h: Added a clearCachedTextRenderers function.
2410         * kwq/KWQListBox.mm:
2411         (itemTextRenderer): Change to use globals that are outside the function, and added retain calls.
2412         (groupLabelTextRenderer): Ditto.
2413         (QListBox::clearCachedTextRenderers): Release global text renderers and nil out the globals.
2414
2415         * kwq/WebCoreBridge.h: Removed updateAllViews; not needed any more.
2416         * kwq/WebCoreBridge.mm: Ditto.
2417
2418         * kwq/WebCoreTextRendererFactory.h: Added a clearCaches method.
2419         * kwq/WebCoreTextRendererFactory.mm:
2420         (-[WebCoreTextRendererFactory clearCaches]): Added. Tells all the views to repaint after clearing the cached
2421         text renderers from KWQListBox. To be more elegant, we could generalize the KWQListBox trick, but for now why bother?
2422
2423         * kwq/WebCoreTextRendererFactory.m: Removed. I needed to put some C++ code in here, so changed the extension to .mm.
2424         * WebCore.pbproj/project.pbxproj: Removed WebCoreTextRendererFactory.m, and added WebCoreTextRendererFactory.mm.
2425
2426 2004-08-30  Darin Adler  <darin@apple.com>
2427
2428         Reviewed by John.
2429
2430         - fixed <rdar://problem/3528538> can paste a Return character into the Search field at amazon.com, other browsers won't
2431
2432         * kwq/KWQTextField.mm: (-[KWQTextFieldController controlTextDidChange:]):
2433         Truncate text before the first line break.
2434
2435 2004-08-30  Darin Adler  <darin@apple.com>
2436
2437         * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertOneChunkUsingTEC):
2438         Added some more assertions I used to track down what looks like a TEC bug.
2439
2440 2004-08-30  Darin Adler  <darin@apple.com>
2441
2442         Reviewed by Ken.
2443
2444         - fixed <rdar://problem/3779122> No accesskey support on LABEL element
2445
2446         * khtml/html/html_formimpl.h: Change type of m_currValue to DOMString. Should have been done
2447         as part of my form data check-in, but harmless to do now. Add accessKeyAction function for
2448         HTMLLabelElementImpl.
2449         * khtml/html/html_formimpl.cpp:
2450         (DOM::HTMLButtonElementImpl::parseHTMLAttribute): Remove conversion of DOMString to QString
2451         for m_currValue.
2452         (DOM::HTMLLabelElementImpl::formElement): If there's no "for" attribute, search children for
2453         the first control.
2454         (DOM::HTMLLabelElementImpl::accessKeyAction): Forward the accesskey action to the formElement.
2455
2456 2004-08-30  Darin Adler  <darin@apple.com>
2457
2458         Reviewed by Dave.
2459
2460         - fixed <rdar://problem/3303968> final newline character omitted from <textarea> when parsing a new page
2461
2462         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::processListing): Handle newline pending
2463         cases as well as space and tab pending spaces at the end of this function. This seems right for
2464         both scripts and text areas; it's not clear why omittiing the LF is ever needed. Tested by running
2465         all the layout tests; no regressions.
2466
2467         - fixed <rdar://problem/3552736> word wrapped text fields that blur/focus when you type move the insertion point strangely (vtext.com)
2468
2469         * khtml/rendering/render_form.cpp: (RenderTextArea::updateFromElement): Call text() instead of
2470         calling widget->text() directly. This prevents this function from running in cases where the
2471         text didn't really change for text areas in wrap mode.
2472
2473 2004-08-30  Darin Adler  <darin@apple.com>
2474
2475         Reviewed by Dave.
2476
2477         - got rid of ERROR message when running layout tests by implementing text-transform in computed style
2478
2479         * khtml/css/css_computedstyle.cpp:
2480         (DOM::numberAsString): Added. Helper that returns "1" rather then "1.0" for integer values.
2481         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Fixed use of tabs instead of
2482         spaces. Fixed switch statements so they don't use default so we get errors if we leave
2483         a case out. Changed callers to use numberAsString instead of QString::number. Added implementation
2484         of CSS_PROP_TEXT_TRANSFORM. Added code to prevent falling through to next property when no item
2485         in a switch statement matches.
2486
2487 2004-08-30  Darin Adler  <darin@apple.com>
2488
2489         Reviewed by Chris.
2490
2491         - did work to prepare for uploading files incrementally when submitting forms
2492
2493         * khtml/misc/formdata.h: Added. Class for holding form data inside WebCore.
2494         * khtml/misc/formdata.cpp: Added.
2495
2496         * khtml/html/html_formimpl.h: Added the FormDataList type, changed the formData function parameters
2497         and made it private, renamed the encoding method to appendFormData and changed the parameters around.
2498         * khtml/html/html_formimpl.cpp:
2499         (DOM::FormDataList): Added. Class that replaces the old use of QValueList<QCString> for form data.
2500         Later we'll change it to accomodate filenames too.
2501         (DOM::HTMLFormElementImpl::formData): Changed code to use FormDataList intsead of the old encodingList.
2502         Also changed to return the "OK" result as the function result and put the form data into something
2503         passed as an "out" parameter; the old way was the other way around.
2504         (DOM::HTMLFormElementImpl::submit): Change to use FormData rather than a QByteArray when getting the
2505         form data to submit.
2506         (DOM::HTMLButtonElementImpl::appendFormData): Rename from encoding, and use the new appendData function
2507         instead of the old way of doing += to put data on the list.
2508         (DOM::HTMLInputElementImpl::appendFormData): Ditto.
2509         (DOM::HTMLSelectElementImpl::appendFormData): Ditto.
2510         (DOM::HTMLKeygenElementImpl::appendFormData): Ditto.
2511         (DOM::HTMLTextAreaElementImpl::appendFormData): Ditto.
2512         (DOM::FormDataList::FormDataList): Added.
2513         (DOM::FormDataList::appendString): Added.
2514         (DOM::FormDataList::begin): Added.
2515         (DOM::FormDataList::end): Added.
2516
2517         * khtml/khtml_part.h: Changed the type of the submitForm parameter to FormData instead of QByteArray.
2518         * khtml/khtmlpart_p.h: Changed the type of the submitFormData data member to FormData instead of QByteArray.
2519         * khtml/khtml_part.cpp: (KHTMLPart::submitForm): Called the new flattenToString function in all the
2520         code that handles mailto forms. Called the new flatten function in the non-Apple code path.
2521
2522         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::submitForm): Pass NSArray for form data instead of NSData.
2523
2524         * kwq/KWQKJob.h: Use FormData instead of QByteArray. A couple other small cleanups.
2525         * kwq/KWQKJobClasses.h: Ditto.
2526         * kwq/KWQKJobClasses.mm:
2527         (KIO::TransferJobPrivate::TransferJobPrivate): Ditto.
2528         (KIO::TransferJob::TransferJob): Ditto.
2529         (KIO::TransferJob::postData): Ditto.
2530         * kwq/KWQKPartsBrowserExtension.h: Ditto.
2531         * kwq/KWQLoader.mm:
2532         (KWQServeRequest): Ditto.
2533         (KWQServeSynchronousRequest): Ditto.
2534
2535         * kwq/KWQFormData.h: Added. A function to convert KHTML form data into an NSArray for communication
2536         with the WebKit side.
2537         * kwq/KWQFormData.mm: Added.
2538
2539         * kwq/WebCoreBridge.h: Pass NSArray instead of NSData for form data.
2540
2541         * kwq/KWQArrayImpl.h: Added a detach member function. The old version would do unnecessary work when
2542         detach was called on an array that had exactly one reference.
2543         * kwq/KWQArrayImpl.mm: (KWQArrayImpl::detach): Added.
2544         * kwq/KWQMemArray.h: (QMemArray::detach): Call through to KWQArrayImpl.
2545
2546         * kwq/KWQValueList.h:
2547         (QValueList::first): Added overload for non-const.
2548         (QValueList::last): Ditto.
2549
2550         * ForwardingHeaders/misc/formdata.h: Added.
2551         * WebCore.pbproj/project.pbxproj: Added formdata.h, formdata.cpp, KWQFormData.h, and KWQFormData.cpp.
2552
2553         * WebCore-tests.exp: Updated for changes to QValueList, and re-sorted.
2554         * WebCore-combined.exp: Regenerated.
2555
2556 2004-08-30  Darin Adler  <darin@apple.com>
2557
2558         Reviewed by Ken.
2559
2560         - improved multiple submit logic in preparation for making command-click on a form
2561           button load a form in another frame
2562
2563         * kwq/KWQKHTMLPart.h: Added const to a bunch of member functions for cleanup.
2564         Added prepareForUserAction member function.
2565         * kwq/KWQKHTMLPart.mm:
2566         (KWQKHTMLPart::submitForm): Simplified logic and removed special case for "http" and "https".
2567         (KWQKHTMLPart::renderer): Added const.
2568         (KWQKHTMLPart::keyEvent): Added call to prepareForUserAction.
2569         (KWQKHTMLPart::lastEventIsMouseUp): Added const.
2570         (KWQKHTMLPart::eventMayStartDrag): Added const.
2571         (KWQKHTMLPart::mouseDown): Added call to prepareForUserAction.
2572         (KWQKHTMLPart::overrideMediaType): Added const.
2573         (KWQKHTMLPart::canGoBackOrForward): Added const.
2574         (KWQKHTMLPart::prepareForUserAction): Added. Clears _submittedFormURL.
2575         * kwq/KWQAccObject.mm: (-[KWQAccObject accessibilityPerformAction:]): Added call to prepareForUserAction.
2576
2577 2004-08-30  Ken Kocienda  <kocienda@apple.com>
2578
2579         Reviewed by John
2580
2581         Fix for this bug:
2582
2583         <rdar://problem/3762231> REGRESSION (Mail): tab key inserts a single space
2584
2585         * khtml/editing/htmlediting_impl.cpp:
2586         (khtml::isTab): New helper. Checks a DOMString to see if it is one character and
2587         that character is a tab.
2588         (khtml::InputTextCommandImpl::execute): Trap tabs before handling insertion of
2589         other kinds of whitespace. Treat a tab like four spaces. Rearrange the code to
2590         update the ending position after the text insertion to cover the new tab case
2591         where the amount of advance is not the same as the number of character in the
2592         passed-in DOMString (i.e. tabs expand to four characters).
2593         
2594 2004-08-27  Ken Kocienda  <kocienda@apple.com>
2595
2596         Reviewed by Chris
2597
2598         Fix for this bug:
2599         
2600         <rdar://problem/3779706> plain text on pasteboard loses indentation when pasted into Blot
2601
2602         * kwq/KWQKHTMLPart.h:
2603         * kwq/KWQKHTMLPart.mm:
2604         (KWQKHTMLPart::documentFragmentWithText): New function that takes over the code from
2605         KWQKHTMLPart and improves it to handle converting tabs and spaces for suitable
2606         display in HTML.
2607         * kwq/WebCoreBridge.mm:
2608         (-[WebCoreBridge documentFragmentWithText:]): Move smarts from here to KWQKHTMLPart.
2609
2610 2004-08-27  Maciej Stachowiak  <mjs@apple.com>
2611
2612         Reviewed by John.
2613
2614         <rdar://problem/3778314> REGRESSION: Can't proceed to survey questions on Lominger's Apple website
2615
2616         Because we will stop parsing when there is a pending redirection,
2617         avoid setting one if no navigation would actually take place
2618         because the number of steps is out of range.
2619         
2620         * khtml/khtml_part.cpp:
2621         (KHTMLPart::scheduleHistoryNavigation):
2622         * kwq/KWQKHTMLPart.h:
2623         * kwq/KWQKHTMLPart.mm:
2624         (KWQKHTMLPart::canGoBackOrForward):
2625         * kwq/KWQKPartsBrowserInterface.h:
2626         * kwq/WebCoreBridge.h:
2627
2628 2004-08-27  Maciej Stachowiak  <mjs@apple.com>
2629
2630         Reviewed by Chris.
2631
2632         - fixed <rdar://problem/3778043> REGRESSION: innerHTML is broken, breaks automated iBench testing
2633         - also fixed outerHTML, which would spill over past the node for whch it was supposed to get HTML
2634         
2635         * khtml/html/html_elementimpl.cpp:
2636         (HTMLElementImpl::outerHTML):
2637         * khtml/xml/dom2_rangeimpl.cpp:
2638         (DOM::RangeImpl::toHTML):
2639         * khtml/xml/dom_nodeimpl.cpp:
2640         (NodeImpl::toHTML):
2641         (NodeImpl::recursive_toString):
2642         (NodeImpl::recursive_toHTML):
2643         * khtml/xml/dom_nodeimpl.h:
2644         * kwq/WebCoreBridge.mm:
2645         (-[WebCoreBridge markupStringFromNode:nodes:]):
2646
2647         - added new layout tests to cover the problems I fixed
2648         
2649         * layout-tests/fast/innerHTML/001-expected.txt: Added.
2650         * layout-tests/fast/innerHTML/001.html: Added.
2651         * layout-tests/fast/innerHTML/002-expected.txt: Added.
2652         * layout-tests/fast/innerHTML/002.html: Added.
2653         * layout-tests/fast/innerHTML/003-expected.txt: Added.
2654         * layout-tests/fast/innerHTML/003.html: Added.
2655
2656 2004-08-27  David Hyatt  <hyatt@apple.com>
2657
2658         Fix for 3739239, getComputedStyle of top not being implemented broke a site that checked for it.
2659         
2660         Reviewed by kocienda
2661
2662         * khtml/css/css_computedstyle.cpp:
2663         (DOM::valueForLength):
2664         (DOM::CSSComputedStyleDeclarationImpl::getPositionOffsetValue):
2665         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
2666         * khtml/css/css_computedstyle.h:
2667
2668 2004-08-27  John Sullivan  <sullivan@apple.com>
2669
2670         Reviewed by Ken.
2671         
2672         Tweaked option-tab handling to match good suggestion from Tim Omernick of OmniWeb
2673
2674         * kwq/KWQTextArea.mm:
2675         removed override of textDidChange:
2676         (-[KWQTextAreaTextView keyDown:]):
2677         moved option-tab handling that was in textDidChange to here. Rearranged existing code
2678         a little for clarity.
2679
2680 2004-08-27  Adele Amchan  <adele@apple.com>
2681
2682         Reviewed by Darin.
2683
2684         Fix for:
2685         <rdar://problem/3689949> Provide contentWindow access on an iframe
2686
2687         * khtml/ecma/kjs_html.cpp:
2688         (KJS::HTMLElement::getValueProperty): added cases for contentWindow for frames and iframes
2689         * khtml/ecma/kjs_html.h: added contentWindow to the list of properties for frames and iframes
2690         * khtml/ecma/kjs_html.lut.h: regenerated file
2691         * khtml/html/html_baseimpl.cpp:
2692         (HTMLFrameElementImpl::contentPart): factored out old contentDocument code to return KHTMLPart for frame
2693         (HTMLFrameElementImpl::contentDocument): now just gets the contentDocument from contentPart
2694         * khtml/html/html_baseimpl.h: added declaration for contentPart
2695
2696 === Safari-161 ===
2697
2698 2004-08-27  Ken Kocienda  <kocienda@apple.com>
2699
2700         Reviewed by Darin
2701
2702         Fix for this bug:
2703         
2704         <rdar://problem/3778059> Odd behaviour when editing between blockquote elements
2705
2706         * khtml/editing/htmlediting_impl.cpp:
2707         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): This function should not move
2708         the selection out of the current block, ever. This is exactly what the bug reported.
2709         What was I thinking? Now, the code looks at the passed-in position and then the equivalent
2710         upstream and downstream positions to see if the selection can be placed there after the
2711         delete, and settles on the block containing the passed-in position as a fallback.
2712         * layout-tests/editing/inserting/insert-3778059-fix-expected.txt: Added.
2713         * layout-tests/editing/inserting/insert-3778059-fix.html: Added.
2714
2715 2004-08-26  Richard Williamson   <rjw@apple.com>
2716
2717         Boiler plate for canvas gradients and patterns.
2718
2719         Reviewed by John.
2720
2721         * khtml/ecma/kjs_html.cpp:
2722         (KJS::Context2DFunction::tryCall):
2723         (Context2D::tryPut):
2724         (Context2D::~Context2D):
2725         (KJS::GradientFunction::tryCall):
2726         (Gradient::Gradient):
2727         (Gradient::tryGet):
2728         (Gradient::getValueProperty):
2729         (Gradient::tryPut):
2730         (Gradient::putValue):
2731         (Gradient::~Gradient):
2732         (ImagePattern::ImagePattern):
2733         (ImagePattern::tryGet):
2734         (ImagePattern::getValueProperty):
2735         (ImagePattern::tryPut):
2736         (ImagePattern::putValue):
2737         (ImagePattern::~ImagePattern):
2738         * khtml/ecma/kjs_html.h:
2739         (KJS::Gradient::toBoolean):
2740         (KJS::Gradient::classInfo):
2741         (KJS::Gradient::):
2742         (KJS::ImagePattern::toBoolean):
2743         (KJS::ImagePattern::classInfo):
2744         (KJS::ImagePattern::):
2745         * khtml/ecma/kjs_html.lut.h:
2746         (KJS::):
2747
2748 2004-08-26  Ken Kocienda  <kocienda@apple.com>
2749
2750         Reviewed by John
2751
2752         Fix for this bug:
2753         
2754         <rdar://problem/3777899> REGRESSION (Mail): only first of several misspelled words separated by 
2755         carriage returns is marked
2756
2757         * khtml/editing/htmlediting_impl.cpp:
2758         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): Give the spellchecker a slightly larger 
2759         selection to work with while typing. This should preclude bugs of this type.
2760
2761 2004-08-26  Ken Kocienda  <kocienda@apple.com>
2762
2763         Reviewed by Chris
2764         
2765         Fix for this bug:
2766         
2767         <rdar://problem/3777804> Deleting all content in a document can result in giant tall-as-window insertion point
2768
2769         * khtml/rendering/render_box.cpp:
2770         (RenderBox::caretPos): Always use the font height for calculating the caret height in 
2771         non-replaced elements (like blocks), rather than the height of the box.
2772
2773 2004-08-26  Ken Kocienda  <kocienda@apple.com>
2774
2775         Silly me. Forgot to add this file before.
2776
2777         * layout-tests/editing/inserting/insert-3775316-fix-expected.txt: Added.
2778
2779 2004-08-26  David Hyatt  <hyatt@apple.com>
2780
2781         Fix for 3777172, crash from nested colgroup.  Don't allow nested table sections or col groups.
2782         
2783         Reviewed by darin
2784
2785         * khtml/html/htmlparser.cpp:
2786         (KHTMLParser::insertNode):
2787
2788 2004-08-26  Ken Kocienda  <kocienda@apple.com>
2789
2790         Reviewed by Hyatt
2791
2792         Fix for this bug:
2793         
2794         <rdar://problem/3775316> document sprouts an extra newline character at the end
2795
2796         * khtml/editing/htmlediting_impl.cpp:
2797         (khtml::InputNewlineCommandImpl::doApply): There was in insufficient check
2798         in the code which adds extra BR elements at the ends of blocks, which we do 
2799         to work around the fact that BR elements, when they are the last element in a
2800         block, do not render. Now the code sees whether there already is one of these
2801         extra BR's in the document and won't add and "extra" extra. 
2802         * layout-tests/editing/inserting/insert-3775316-fix.html: Added.
2803
2804 2004-08-26  David Hyatt  <hyatt@apple.com>
2805
2806         Fix for 3710721 and 3504114, crashes because of bad ownership model for list markers.
2807         
2808         Reviewed by mjs
2809
2810         * khtml/rendering/render_container.cpp:
2811         (RenderContainer::detach):
2812         * khtml/rendering/render_list.cpp:
2813         (RenderListItem::setStyle):
2814         (RenderListItem::detach):
2815         (RenderListItem::updateMarkerLocation):
2816         * khtml/rendering/render_list.h:
2817
2818 2004-08-26  Ken Kocienda  <kocienda@apple.com>
2819
2820         Reviewed by John
2821
2822         * khtml/editing/htmlediting_impl.cpp:
2823         (khtml::ApplyStyleCommandImpl::doApply): Remove the StayInBlock modifier from the
2824         call to upstream when passing the start position to removeStyle(). This makes the
2825         start position sufficiently upstream so that all relevant style tags are removed.
2826         (khtml::ApplyStyleCommandImpl::removeStyle): Pass the start position to nodeFullySelected.
2827         (khtml::ApplyStyleCommandImpl::nodeFullySelected): Change interface so start position
2828         for calculation is passed in, rather than recalculating it every time.
2829         * khtml/editing/htmlediting_impl.h: nodeFullySelected interface change.
2830         * khtml/xml/dom_position.h: Add a comment about the working of upstream() and
2831         downstream().
2832
2833 2004-08-26  Ken Kocienda  <kocienda@apple.com>
2834
2835         Fix garbled contenteditable attribute. I must have checked
2836         this in with a typo.
2837
2838         * layout-tests/editing/deleting/delete-3775172-fix.html
2839
2840 2004-08-25  Kevin Decker  <kdecker@apple.com>
2841
2842         Reviewed by John and Maciej.
2843
2844         - Fixes SAP bug <rdar://problem/3751295> Personalize link at the
2845         top gives an error in the pop-up window. 
2846
2847         * khtml/ecma/kjs_window.cpp:
2848         (WindowFunc::tryCall): Passes a referrer to KHTMLPart::begin() 
2849
2850 2004-08-25  Richard Williamson   <rjw@apple.com>
2851
2852         Updated to <canvas> API to match the spec.  (Still need
2853         to implement gradients and patterns.)
2854
2855         Reviewed by Ken.
2856
2857         * khtml/ecma/kjs_html.cpp:
2858         (KJS::Context2DFunction::tryCall):
2859         (Context2D::getValueProperty):
2860         (Context2D::drawingContext):
2861         (Context2D::colorRefFromValue):
2862         (Context2D::colorFromValue):
2863         (Context2D::setShadow):
2864         (Context2D::putValue):
2865         (Context2D::save):
2866         (Context2D::restore):
2867         (Context2D::Context2D):
2868         * khtml/ecma/kjs_html.h:
2869         (KJS::Context2D::):
2870         * khtml/ecma/kjs_html.lut.h:
2871         (KJS::):
2872
2873 2004-08-25  Ken Kocienda  <kocienda@apple.com>
2874
2875         * layout-tests/editing/deleting/delete-3775172-fix.html: Wrong version of test checked in
2876         a moment ago.
2877
2878 2004-08-25  Ken Kocienda  <kocienda@apple.com>
2879
2880         Added test case for <rdar://problem/3775172> Blot crashes after typing one character then deleting it
2881
2882         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt: Added.
2883         * layout-tests/editing/deleting/delete-3775172-fix.html: Added.
2884
2885 2004-08-25  Ken Kocienda  <kocienda@apple.com>
2886
2887         * layout-tests/editing/style/style-3690704-fix-expected.txt: Fewer styling spans added
2888         on this test as a result of the previously-checked-in fix.
2889
2890 2004-08-25  Ken Kocienda  <kocienda@apple.com>
2891
2892         Reviewed by John
2893
2894         Fix for this bug:
2895         
2896         <rdar://problem/3775214> BR elements cause unnecessary spans to be added when applying style
2897
2898         * khtml/editing/htmlediting_impl.cpp:
2899         (khtml::ApplyStyleCommandImpl::doApply): BR elements can be grouped more liberally with other nodes
2900         now in the iteration when attempting to find nodes that can be styled together with one span.
2901         * layout-tests/editing/style/style-3690704-fix-expected.txt: Updated with new results after
2902         bug fix.
2903
2904 2004-08-25  Ken Kocienda  <kocienda@apple.com>
2905
2906         Reviewed by John
2907
2908         Fix for this bug:
2909         
2910         <rdar://problem/3775172> Blot crashes after typing one character then deleting it
2911
2912         * khtml/css/css_computedstyle.cpp:
2913         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Bail early if the element
2914         being queried does not have a renderer or that renderer does not have a style. Prevents
2915         a crash in the cases that it does not.
2916         * khtml/editing/htmlediting_impl.cpp:
2917         (khtml::DeleteSelectionCommandImpl::doApply): Add one more case to deleting when the
2918         start and end nodes are different. If the downstream end node is the last node in the
2919         block, then it may need to be deleted completely. Before this patch, the code
2920         erroneously assumed that any deletion in this node had to be trimming of a text node.
2921         This was asserted, and the description in 3775172 shows a simple case where this assertion
2922         does not hold. The additional case and associated checks now make it all better.
2923         * layout-tests/editing/deleting/delete-3775172-fix.html: Added.
2924
2925 2004-08-25  David Hyatt  <hyatt@apple.com>
2926
2927         Fix for 3365086, large tables crash Safari.  Make sure to use ints rather than shorts for row and column
2928         counts.  Also fix a pathological array resize scenario for tables as rows are added.
2929         
2930         Reviewed by darin
2931
2932         * khtml/rendering/render_table.cpp:
2933         (RenderTable::splitColumn):
2934         (RenderTable::appendColumn):
2935         (RenderTableSection::RenderTableSection):
2936         (RenderTableSection::ensureRows):
2937         (RenderTableSection::setCellWidths):
2938         (RenderTableSection::calcRowHeight):
2939         (RenderTableSection::layoutRows):
2940         (RenderTableSection::paint):
2941         (RenderTableSection::recalcCells):
2942         (RenderTableSection::clearGrid):
2943         * khtml/rendering/render_table.h:
2944         (khtml::RenderTableSection::numRows):
2945
2946 2004-08-25  David Hyatt  <hyatt@apple.com>
2947
2948         To save memory in the common case, move the margin***Collapse variables into the CSS3 struct instead of
2949         bloating the surround struct.
2950         
2951         * khtml/rendering/render_style.cpp:
2952         (StyleSurroundData::StyleSurroundData):
2953         (StyleSurroundData::operator==):
2954         (marginBottomCollapse):
2955         (StyleCSS3NonInheritedData::operator==):
2956         (RenderStyle::diff):
2957         * khtml/rendering/render_style.h:
2958         (khtml::RenderStyle::marginTopCollapse):
2959         (khtml::RenderStyle::marginBottomCollapse):
2960         (khtml::RenderStyle::setMarginTopCollapse):
2961         (khtml::RenderStyle::setMarginBottomCollapse):
2962
2963 2004-08-25  David Hyatt  <hyatt@apple.com>
2964
2965         Fix the "extra space in TypePad blogs" Emerson problem by adding the ability to collapse away margins.
2966         Also added support for explicitly preventing margin collapsing.
2967         
2968         Reviewed by mjs
2969
2970         * khtml/css/cssparser.cpp:
2971         (CSSParser::parseValue):
2972         * khtml/css/cssproperties.c:
2973         (hash_prop):
2974         (findProp):
2975         * khtml/css/cssproperties.h:
2976         * khtml/css/cssproperties.in:
2977         * khtml/css/cssstyleselector.cpp:
2978         (khtml::CSSStyleSelector::applyProperty):
2979         * khtml/css/cssvalues.c:
2980         (hash_val):
2981         (findValue):
2982         * khtml/css/cssvalues.h:
2983         * khtml/css/cssvalues.in:
2984         * khtml/rendering/render_block.cpp:
2985         (khtml::RenderBlock::isSelfCollapsingBlock):
2986         (khtml::RenderBlock::layoutBlockChildren):
2987         * khtml/rendering/render_style.cpp:
2988         (StyleSurroundData::StyleSurroundData):
2989         (StyleSurroundData::operator==):
2990         (RenderStyle::diff):
2991         * khtml/rendering/render_style.h:
2992         (khtml::):
2993         (khtml::RenderStyle::marginTopCollapse):
2994         (khtml::RenderStyle::marginBottomCollapse):
2995         (khtml::RenderStyle::setMarginTopCollapse):
2996         (khtml::RenderStyle::setMarginBottomCollapse):
2997         (khtml::RenderStyle::initialMarginTopCollapse):
2998         (khtml::RenderStyle::initialMarginBottomCollapse):
2999
3000 2004-08-24  Ken Kocienda  <kocienda@apple.com>
3001
3002         Reviewed by Hyatt
3003
3004         Improved the ability of the bridge to report selection state.     
3005
3006         * khtml/editing/htmlediting_impl.cpp:
3007         (khtml::TypingCommandImpl::doApply): Bail when there is no selection.
3008         * kwq/WebCoreBridge.h: Added an enum to report selection state. These constants
3009         mirror those used in DOM::Selection.
3010         * kwq/WebCoreBridge.mm:
3011         (-[WebCoreBridge selectionState]): Replacement for haveSelection. Returns a value 
3012         from an enum telling whether the selection is in the None, Caret, or Range state, 
3013         rather than just true/false for the Range state as it did before.
3014
3015 2004-08-24  David Hyatt  <hyatt@apple.com>
3016
3017         Make sure the ifdef XSLT is present for Panther.
3018         
3019         * khtml/xml/xml_tokenizer.cpp:
3020         (khtml::XMLTokenizer::insertErrorMessageBlock):
3021
3022 2004-08-24  David Hyatt  <hyatt@apple.com>
3023
3024         Polish the XML error message so that it indicates when a document is the result of an XSL transformation
3025         when reporting line/col #s.
3026         
3027         * khtml/xml/dom_docimpl.cpp:
3028         (DocumentImpl::applyXSLTransform):
3029         * khtml/xml/xml_tokenizer.cpp:
3030         (khtml::XMLTokenizer::insertErrorMessageBlock):
3031         * khtml/xsl/xslt_processorimpl.cpp:
3032         (DOM::XSLTProcessorImpl::documentFromXMLDocPtr):
3033
3034 2004-08-24  David Hyatt  <hyatt@apple.com>
3035
3036         Add support for Atom and RSS MIME types to the set of XML types.
3037         
3038         Reviewed by rjw
3039
3040         * khtml/ecma/xmlhttprequest.cpp:
3041         (KJS::XMLHttpRequest::getValueProperty):
3042         * khtml/khtml_part.cpp:
3043         (KHTMLPart::begin):
3044         * khtml/misc/loader.cpp:
3045         (CachedXSLStyleSheet::CachedXSLStyleSheet):
3046         (CachedXBLDocument::CachedXBLDocument):
3047         * khtml/xml/dom_xmlimpl.cpp:
3048         (DOM::ProcessingInstructionImpl::checkStyleSheet):
3049
3050 2004-08-24  Chris Blumenberg  <cblu@apple.com>
3051
3052         Fixed: <rdar://problem/3746447> hang loading geocities.com/cinemaorchestra
3053
3054         Reviewed by john.
3055
3056         * khtml/rendering/render_frames.cpp:
3057         (RenderPartObject::updateWidget): do nothing if the src URL is the same as the part's URL
3058
3059 2004-08-24  Ken Kocienda  <kocienda@apple.com>
3060
3061         Reviewed by Chris
3062
3063         Fix for this bug:
3064         
3065         <rdar://problem/3773564> REGRESSION (125-159): Code to remove HTML styles before applying new HTML styles is broken
3066
3067         * khtml/editing/htmlediting_impl.cpp:
3068         (khtml::ApplyStyleCommandImpl::doApply): Unrelated change to constrain downstream position of selection
3069         start to block boundaries. This is a new feature of the downstream function and I missed this usage
3070         when adding the feature.
3071         (khtml::ApplyStyleCommandImpl::removeCSSStyle): There once was code to remove style attributes from spans
3072         which became emptied as a result of removing CSS properties, but I do not see such code in the 
3073         tree any more. A quick review of the ChangeLog did not reveal anything. I do not remember making such
3074         a change myself...
3075         
3076         In any case, I have restored logic to prune out styling spans we insert if the process of 
3077         removing styles caused a span-plus-styles node to become emptied of markup which changes the style
3078         of its contents. This fixes the bug.
3079
3080 2004-08-24  Ken Kocienda  <kocienda@apple.com>
3081
3082         Reviewed by John
3083
3084         Fix for this bug:
3085         
3086         <rdar://problem/3765535> paste of text with newlines into text with newlines results in broken doc, crash
3087         
3088         This is a "belt and suspenders" fix. The issue is with the paste code path which was creating
3089         zero-length DOM text nodes when a selection being pasted ended with a newline. The normal
3090         code path for parsing HTML does not allow this, but the code to convert newlines to BR's 
3091         during paste was creating such nodes. This will no longer happen.
3092         
3093         In the case where someone inserts such zero-length nodes using the DOM API, the render tree
3094         will no longer create render objects for these nodes, and it was these empty render text 
3095         nodes that was confusing the code doing editing navigation.
3096
3097         * khtml/xml/dom_textimpl.cpp:
3098         (CharacterDataImpl::rendererIsNeeded): Do not create renderers for zero-length DOM text nodes.
3099         * khtml/xml/dom_textimpl.h:
3100         * kwq/WebCoreBridge.mm:
3101         (-[WebCoreBridge documentFragmentWithText:]): Do not insert zero-length DOM text nodes as part
3102         of converting line-end sequences to BR's.
3103
3104 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
3105
3106         Reviewed by Richard.
3107
3108         - reduce cost of innerHTML from O(N^2) to O(N*D) where N is the
3109         number of nodes and D is the maximum DOM tree depth.
3110         
3111         * khtml/xml/dom_nodeimpl.cpp:
3112         (NodeImpl::recursive_toString): New static helper method for
3113         recursive_toHTML - this is recursive for children but iterative
3114         for siblings.
3115         (NodeImpl::recursive_toHTML): Call the helper with this as the
3116         first argument.
3117         * khtml/xml/dom_nodeimpl.h:
3118
3119 2004-08-23  David Hyatt  <hyatt@apple.com>
3120
3121         Fix for 3558334. 
3122
3123         Init the encodedURL explicitly for CSSStyleSelectors.  Construction time was too early to be passing in the
3124         document m_url, since it doesn't get set during construction.
3125
3126         Fix for 3769643, crash on vancouverblast.org.
3127         
3128         Reviewed by darin
3129
3130         * khtml/css/cssstyleselector.cpp:
3131         (khtml::CSSStyleSelector::CSSStyleSelector):
3132         (khtml::CSSStyleSelector::init):
3133         (khtml::CSSStyleSelector::setEncodedURL):
3134         * khtml/css/cssstyleselector.h:
3135         * khtml/xml/dom_docimpl.cpp:
3136         (DocumentImpl::DocumentImpl):
3137         (DocumentImpl::setURL):
3138         (DocumentImpl::recalcStyleSelector):
3139         * khtml/xml/dom_docimpl.h:
3140         (DOM::DocumentImpl::URL):
3141
3142 2004-08-23  Kevin Decker  <kdecker@apple.com>
3143
3144         Reviewed by Maciej.
3145
3146         - fixed rdar://problem/3681094> Crash in KJS::WindowFunc::tryCall       with application/xhtml+xml Content-Type
3147         * khtml/ecma/kjs_window.cpp:
3148         (WindowFunc::tryCall): since this is an xml document, we get the
3149         domain from the xmlDocImpl(), not docImpl().
3150
3151 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
3152
3153         Reviewed by Darin.
3154
3155         <rdar://problem/3771426> assertion failed due to reentering dispatchImageLoadEventsNow
3156         
3157         * khtml/xml/dom_docimpl.cpp:
3158         (DocumentImpl::dispatchImageLoadEventsNow): Avoid re-entering this
3159         function, since it uses a data member for the copy of the list of events
3160         to be dispatched.
3161
3162 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
3163
3164         Reviewed by Darin.
3165
3166         <rdar://problem/3770306> XMLHttpRequest does not honor character set encoding
3167
3168         * khtml/ecma/xmlhttprequest.cpp:
3169         (KJS::XMLHttpRequest::slotData): Get encoding from the transfer job.
3170         * kwq/KWQKJobClasses.h:
3171         * kwq/KWQKJobClasses.mm:
3172         (KIO::TransferJobPrivate::TransferJobPrivate): Added retrievedCharset
3173         flag.
3174         (KIO::TransferJob::retrieveCharset): New method, gets the charset
3175         from the response.
3176         (KIO::TransferJob::queryMetaData): Handle charset.
3177         (KIO::TransferJob::emitReceivedResponse): Clear retreivedCharset flag.
3178         * kwq/KWQLoader.h:
3179         * kwq/KWQLoader.mm:
3180         (KWQResponseTextEncodingName): New function, gets the encoding from the response.
3181
3182 2004-08-23  David Hyatt  <hyatt@apple.com>
3183
3184         Apply leo's fix to marquees.
3185         
3186         Reviewed by hyatt
3187
3188         * khtml/rendering/render_layer.cpp:
3189         (Marquee::start):
3190
3191 2004-08-20  Darin Adler  <darin@apple.com>
3192
3193         Reviewed by Maciej.
3194
3195         - added an ascii() member function to DOMString and DOMStringImpl to help debugging
3196
3197         * khtml/dom/dom_string.h: Add ascii member function for debugging.
3198         * khtml/dom/dom_string.cpp: (DOM::DOMString::ascii): Added. Calls through to DOMStringImpl::ascii.
3199         * khtml/xml/dom_stringimpl.h: Add ascii member function for debugging.
3200         * khtml/xml/dom_stringimpl.cpp: (DOM::DOMStringImpl::ascii): Added. Makes a new buffer and puts
3201         a simple ASCII version in it. Maybe make it better about characters outside the 0x20-0x7E range
3202         some day, but for now this is way better than what we had before.
3203
3204 2004-08-20  David Hyatt  <hyatt@apple.com>
3205
3206         Divorce the notion of a marquee being stopped from JS from the notion of being suspended by the back/forward cache.
3207
3208         * khtml/ecma/kjs_html.cpp:
3209         (KJS::HTMLElementFunction::tryCall):
3210         * khtml/rendering/render_layer.cpp:
3211         (m_direction):
3212         (Marquee::start):
3213         (Marquee::stop):
3214         (Marquee::updateMarqueePosition):
3215         * khtml/rendering/render_layer.h:
3216
3217 2004-08-20  Richard Williamson   <rjw@apple.com>
3218
3219         Implemented new JNI abstraction.  We no longer invoke Java methods
3220         directly with JNI, rather we call into the plugin.  This allows the
3221         plugin to dispatch the call to the appropriate VM thread.  This
3222         change should (will?) fix a whole class of threading related problems with
3223         the Java VM.
3224
3225         Reviewed by Hyatt.
3226
3227         * kwq/KWQKHTMLPart.mm:
3228         (KWQKHTMLPart::getAppletInstanceForView):
3229         * kwq/WebCoreBridge.mm:
3230         (rootForView):
3231         (-[WebCoreBridge executionContextForView:]):
3232
3233 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
3234
3235         Reviewed by Darin.
3236
3237         More text paint cleanup. Separated the background and foreground
3238         passes instead of doing a weird for loop thing. Eliminated
3239         redundant if conditions. Added comments.
3240
3241         * khtml/rendering/render_text.cpp:
3242         (RenderText::paint):
3243
3244 2004-08-19  Ken Kocienda  <kocienda@apple.com>
3245
3246         Reviewed by Darin
3247
3248         * khtml/css/css_computedstyle.cpp:
3249         (DOM::): Changed CopyProperties constant to InheritableProperties. This reflects the
3250         name change of copy() to copyInheritableProperties()
3251         (DOM::CSSComputedStyleDeclarationImpl::copyInheritableProperties: Renamed from copy().
3252         Now just copies those properties which can be inherited.
3253         (DOM::CSSComputedStyleDeclarationImpl::diff): Add a couple null checks.
3254         * khtml/css/css_computedstyle.h: copyInheritableProperties name change. No longer needs to be virtual.
3255         * khtml/css/css_valueimpl.cpp: Removed unneeded copy() function from CSSStyleDeclarationImpl.
3256         * khtml/css/css_valueimpl.h: Ditto.
3257         * khtml/editing/htmlediting.cpp:
3258         (khtml::EditCommand::typingStyle): Added.
3259         (khtml::EditCommand::setTypingStyle): Added.
3260         * khtml/editing/htmlediting.h:
3261         * khtml/editing/htmlediting_impl.cpp:
3262         (khtml::StyleChange::currentlyHasStyle): Fix leak of computed style used in this function.
3263         (khtml::EditCommandImpl::EditCommandImpl): Initialize m_typingStyle.
3264         (khtml::EditCommandImpl::~EditCommandImpl): Deref m_typingStyle.
3265         (khtml::EditCommandImpl::assignTypingStyle): New helper used in setting typing style.
3266         (khtml::EditCommandImpl::setTypingStyle): New setter.
3267         (khtml::DeleteSelectionCommandImpl::doApply): Use new method for managing typing style.
3268         * khtml/editing/htmlediting_impl.h:
3269         (khtml::EditCommandImpl::typingStyle): New accessor.
3270         * khtml/khtml_part.cpp:
3271         (KHTMLPart::appliedEditing): Restores typing style from command after setting selection.
3272         (KHTMLPart::applyStyle): Does a diff between the current style and the style of the caret.
3273         * khtml/khtml_part.h:
3274         * khtml/xml/dom_position.cpp:
3275         (DOM::Position::computedStyle): Now returns a CSSComputedStyleDeclarationImpl instead of a plain
3276         CSSStyleDeclarationImpl.
3277         * khtml/xml/dom_position.h:
3278         * layout-tests/editing/style/style-3681552-fix-002-expected.txt:
3279
3280 2004-08-20  Trey Matteson  <trey@apple.com>
3281
3282         3655407 - Editing: -complete: method unimplemented (WebKit editing API)
3283
3284         One new support routine here.
3285
3286         Reviewed by John
3287
3288         * kwq/WebCoreBridge.h:
3289         * kwq/WebCoreBridge.mm:
3290         (-[WebCoreBridge caretRectAtNode:offset:]):  New routine.
3291         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
3292         Fixed former misleading method name.
3293
3294 2004-08-20  Ken Kocienda  <kocienda@apple.com>
3295
3296         Reviewed by Trey
3297
3298         Fix for this bug:
3299         
3300         <rdar://problem/3768378> crash typing newline in Blot
3301
3302         * khtml/editing/htmlediting_impl.cpp:
3303         (khtml::InputNewlineCommandImpl::doApply): Adding an assert in a recent change
3304         showed up that inserting newlines that was not being handled correctly for the 
3305         case described in the bug. I added a new case to handle inserting BR's when
3306         at the caret max offset for a node, and this new code runs instead of the
3307         fall-through case that should not have been running and triggered the assert.
3308         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Regenerated results.
3309         * layout-tests/editing/inserting/insert-br-case6-expected.txt: Added.
3310         * layout-tests/editing/inserting/insert-br-case6.html: Added.
3311
3312 2004-08-20  Trey Matteson  <trey@apple.com>
3313
3314         Fixing: Spellchecker called once or twice for every char typed.
3315
3316         Reviewed by Ken
3317
3318         * khtml/khtml_part.cpp:
3319         (KHTMLPart::setSelection):  Don't do any spell checking if we're typing (it's done
3320         elsewhere, in markMisspellingsAfterTyping)
3321  
3322 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
3323
3324         Reviewed by John.
3325
3326         - fixed <rdar://problem/3549369> Crash at www.e1.ru in HTMLTokenizer::notifyFinished
3327
3328         Probably also fixed the following likely duplicates:
3329
3330         <rdar://problem/3503938> Safari crashed opening many tabs (HTMLTokenizer::notifyFinished(khtml::CachedObject*))