* layout-tests/css1/text_properties/text-transform-expected.txt: Removed...
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2004-09-12  Darin Adler  <darin@apple.com>
2
3         * layout-tests/css1/text_properties/text-transform-expected.txt: Removed unused test result.
4
5 2004-09-11  Maciej Stachowiak  <mjs@apple.com>
6
7         Reviewed by Darin.
8
9         <rdar://problem/3787208> can't log in to SAP SDN site (JS parse error)
10
11         * kwq/KWQKURL.mm:
12         (KURL::decode_string): Check for find result >= 0 instead of >0,
13         to handle case of first character in a string being encoded.
14
15 2004-09-09  Chris Blumenberg  <cblu@apple.com>
16
17         Support for: <rdar://problem/3795485> debug menu item to enable RSS animation on first layout
18
19         Reviewed by rjw.
20
21         * khtml/khtml_part.h:
22         (KHTMLPart::didFirstLayout): new
23         * khtml/khtmlview.cpp:
24         (KHTMLView::layout): call didFirstLayout
25         * kwq/KWQKHTMLPart.h:
26         * kwq/KWQKHTMLPart.mm:
27         (KWQKHTMLPart::didFirstLayout): new
28         * kwq/WebCoreBridge.h:
29
30 === Safari-163 ===
31
32 2004-09-09  Maciej Stachowiak  <mjs@apple.com>
33
34         - roll out the last change, it appears to cause a performance regression
35
36         * khtml/rendering/render_box.cpp:
37         (RenderBox::caretRect):
38         * khtml/rendering/render_box.h:
39         * khtml/rendering/render_br.cpp:
40         (RenderBR::caretRect):
41         * khtml/rendering/render_br.h:
42         * khtml/rendering/render_flow.cpp:
43         (RenderFlow::caretRect):
44         * khtml/rendering/render_flow.h:
45         * khtml/rendering/render_object.cpp:
46         (RenderObject::caretRect):
47         * khtml/rendering/render_object.h:
48         * khtml/rendering/render_text.cpp:
49         (RenderText::caretRect):
50         * khtml/rendering/render_text.h:
51         * kwq/WebCoreBridge.h:
52         * kwq/WebCoreBridge.mm:
53
54 2004-09-08  Maciej Stachowiak  <mjs@apple.com>
55
56         Reviewed by Dave.
57
58         WebCore part of fix for:
59         
60         <rdar://problem/3759187> REGRESSION (Mail): implement firstRectForCharacterRange:
61         
62         * kwq/WebCoreBridge.h:
63         * kwq/WebCoreBridge.mm:
64         (-[WebCoreBridge firstRectForDOMRange:]): New method to compute the rect for a
65         DOMRange, or if the range is split into multiple lines, the rect for the part on
66         the first line only.
67         
68         * khtml/rendering/render_object.cpp:
69         (RenderObject::caretRect): Added extraWidthToEndOfLine parameter and ditto
70         for the overrides below.
71         * khtml/rendering/render_object.h:
72         * khtml/rendering/render_box.cpp:
73         (RenderBox::caretRect):
74         * khtml/rendering/render_box.h:
75         * khtml/rendering/render_br.cpp:
76         (RenderBR::caretRect):
77         * khtml/rendering/render_br.h:
78         * khtml/rendering/render_flow.cpp:
79         (RenderFlow::caretRect):
80         * khtml/rendering/render_flow.h:
81         * khtml/rendering/render_text.cpp:
82         (RenderText::caretRect):
83
84 2004-09-06  Darin Adler  <darin@apple.com>
85
86         Reviewed by Ken.
87
88         - fixed <rdar://problem/3790526> mark-related methods not implemented (needed for people with them in their key bindings files)
89
90         * khtml/khtml_part.h: Added mark and setMark.
91         * khtml/khtmlpart_p.h: Added m_mark.
92         * khtml/khtml_part.cpp:
93         (KHTMLPart::mark): Added.
94         (KHTMLPart::setMark): Added.
95
96         * kwq/KWQKHTMLPart.h: Change name of markedRange to markedTextRange to decrease
97         the change it will be confused with the mark.
98         * kwq/KWQKHTMLPart.mm:
99         (KWQKHTMLPart::clear): Update for name change.
100         (KWQKHTMLPart::markedTextRange): Ditto.
101         (KWQKHTMLPart::setMarkedTextRange): Ditto.
102
103         * khtml/rendering/render_text.cpp: (RenderText::paint): Update for name change.
104
105         * kwq/WebCoreBridge.h: Remove setSelectionFrom, selectionStart, selectionStartOffset,
106         selectionEnd, selectionEndOffset, and clearMarkedDOMRange. Renamed setMarkedDOMRange
107         to setMarkedTextDOMRange and markedDOMRange to markedTextDOMRange. Added setMarkDOMRange
108         and markDOMRange for the Emacs "mark".
109         * kwq/WebCoreBridge.mm:
110         (-[WebCoreBridge setMarkDOMRange:]): Added.
111         (-[WebCoreBridge markDOMRange]): Added.
112         (-[WebCoreBridge setMarkedTextDOMRange:]): Renamed.
113         (-[WebCoreBridge markedTextDOMRange]): Renamed.
114
115         * khtml/xml/dom_selection.cpp: (DOM::Selection::validate): Make paragraph positions
116         canonical by using deep rendered positions. Maybe someday this won't be an ad hoc
117         decision any more.
118
119         * khtml/xml/dom_nodeimpl.cpp: (NodeBaseImpl::removeChildren): Use ref and deref
120         rather than the unconventional check for 0 refCount. This makes us a bit more
121         robust against a node going away partway through the removal process.
122
123         * WebCore.pbproj/project.pbxproj: Update MACOSX_DEPLOYMENT_TARGET to 10.3.
124
125 2004-09-08  Maciej Stachowiak  <mjs@apple.com>
126
127         - fixed deployment build problems noticed by Grant
128
129         * khtml/rendering/render_flow.cpp:
130         (RenderFlow::caretRect):
131         * khtml/rendering/render_text.cpp:
132         (RenderText::caretRect):
133
134 2004-09-08  David Hyatt  <hyatt@apple.com>
135
136         Fix XML so that elements with no namespace never make HTML elements (when their names coincidentally match).
137         
138         Reviewed by rjw
139
140         * khtml/xml/dom_docimpl.cpp:
141         (DocumentImpl::createElementNS):
142
143 2004-09-07  Maciej Stachowiak  <mjs@apple.com>
144
145         Reviewed by John.
146
147         - renamed caretPos to caretRect and made it return a QRect instead
148         of taking four out parameters by reference.
149         
150         * khtml/rendering/render_box.cpp:
151         (RenderBox::caretRect):
152         * khtml/rendering/render_box.h:
153         * khtml/rendering/render_br.cpp:
154         (RenderBR::caretRect):
155         * khtml/rendering/render_br.h:
156         * khtml/rendering/render_flow.cpp:
157         (RenderFlow::caretRect):
158         * khtml/rendering/render_flow.h:
159         * khtml/rendering/render_object.cpp:
160         (RenderObject::caretRect):
161         * khtml/rendering/render_object.h:
162         * khtml/rendering/render_text.cpp:
163         (RenderText::caretRect):
164         * khtml/rendering/render_text.h:
165         * khtml/xml/dom_selection.cpp:
166         (DOM::Selection::xPosForVerticalArrowNavigation):
167         (DOM::Selection::layoutCaret):
168         * kwq/WebCoreBridge.mm:
169         (-[WebCoreBridge caretRectAtNode:offset:]):
170
171 2004-09-07  Maciej Stachowiak  <mjs@apple.com>
172
173         Reviewed by Kevin.
174
175         <rdar://problem/3759209> REGRESSION (Mail): assertion failure when all of marked text deleted at start of document
176         
177         * kwq/KWQKHTMLPart.mm:
178         (KWQKHTMLPart::setMarkedRange): Allow any empty range, even if
179         it's not in a text node, since in this case it won't matter and
180         weird things can happen when all marked text is removed, there
181         might not be any text nodes.
182
183 2004-09-07  David Hyatt  <hyatt@apple.com>
184
185         Initial text-decoration CSS3 work for editing.  Just gets the properties and values parsed.
186         
187         Reviewed by darin
188
189         * khtml/css/css_computedstyle.cpp:
190         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
191         * khtml/css/cssparser.cpp:
192         (CSSParser::parseValue):
193         * khtml/css/cssproperties.c:
194         (hash_prop):
195         (findProp):
196         * khtml/css/cssproperties.h:
197         * khtml/css/cssproperties.in:
198         * khtml/css/cssstyleselector.cpp:
199         (khtml::CSSStyleSelector::adjustRenderStyle):
200         * khtml/css/cssvalues.c:
201         (hash_val):
202         (findValue):
203         * khtml/css/cssvalues.h:
204         * khtml/css/cssvalues.in:
205
206 2004-09-06  Maciej Stachowiak  <mjs@apple.com>
207
208         Reviewed by Darin and Ken.
209
210         <rdar://problem/3655568> window.open fails when URL contains trailing space
211
212         * kwq/KWQKURL.mm:
213         (KURL::KURL): Strip trailing and leading space when resolving relative URLs in all
214         cases, instead of just leading in the non-absolute case as before.
215
216         - refactored KURL constructor to put more work in separate
217         functions and also to change static methods to static functions,
218         to avoid having to change the header when only changing helper
219         functions that do not affect the KURL API (since KURL.h is widely
220         included).
221         
222         * kwq/KWQKURL.mm:
223         (encodeHostname):
224         (findHostnamesInMailToURL):
225         (findHostnameInHierarchicalURL):
226         (encodeHostnames):
227         (encodeRelativeString):
228         (substituteBackslashes):
229         * kwq/KWQKURL.h:
230
231         - add missing include of qvaluelist.h
232
233         * khtml/ecma/kjs_dom.h:
234
235 2004-09-06  Darin Adler  <darin@apple.com>
236
237         Reviewed by John.
238
239         - fixed <rdar://problem/3512066> REGRESSION (Mail): Select All highlights only part of the content, though all is copied
240         - fixed <rdar://problem/3157025> REGRESSION (Mail): Should select paragraph instead of line on triple-click
241         - fixed <rdar://problem/3735048> REGRESSION (Mail): HTML editing must select newline on triple click
242         - fixed <rdar://problem/3788872> REGRESSION (Mail): ctrl-a emacs key binding does not work (move to start of paragraph)
243         - fixed <rdar://problem/3788881> REGRESSION (Mail): ctrl-e emacs key binding does not work (move to end of paragraph)
244         - fixed <rdar://problem/3789931> REGRESSION (Mail): typing style lost when you backspace
245         - added code to select inserted text to help WebKit implement yankAndSelect:
246         - did some clean-up on editing commands code
247         
248         * khtml/khtml_part.cpp:
249         (KHTMLPart::handleMousePressEventTripleClick): Expand to a paragraph, not a line.
250         (KHTMLPart::selectAll): Remove a lot of unneeded code and just expand to document using Selection.
251         (KHTMLPart::selectionHasStyle): Remove check that limited us to only HTML elements, and add
252         a check for nil. Together, these two changes fix a few cases I ran into during testing.
253
254         * khtml/rendering/render_canvas.cpp: (RenderCanvas::setSelection): Fix test that was checking if
255         the old selection spanned multiple objects when it really should have checked whether the new
256         new selection spans multiple objects. This caused the select all redraw bug.
257
258         * khtml/editing/htmlediting.h: Fixed indenting. Remove command IDs, replacing them with a couple
259         of specific type checking methods, and SharedCommandImpl, using EditCommandImpl directly instead.
260         Got rid of virtual functions, since the command objects have no data members other than the ones
261         inherited from SharedPtr. Removed explicit copy constructors and destructors. Removed unneeded
262         empty constructors. Removed inline directives that were having no effect. Added some boolean
263         selectInsertedText parameter to some commands. Made almost all member functions const, because
264         the const here applies to the command object which is a smart pointer, not the pointed-to
265         command implementation object.
266         * khtml/editing/htmlediting.cpp:
267         (khtml::EditCommand::EditCommand): Changed since SharedPtr is now a pointer to EditCommandImpl.
268         (khtml::EditCommand::operator=): Added. By defining this explicitly, we don't need the class
269         that we are pointing to defined in the header, which lets us get rid of SharedCommandImpl.
270         (khtml::EditCommand::isInputTextCommand): Added.
271         (khtml::EditCommand::isTypingCommand): Added.
272         (khtml::EditCommand::setParent): Updated since EditCommandImpl.setParent takes an impl pointer now.
273         (khtml::EditCommand::handle): Removed, since it's identical to get().
274         (khtml::InputTextCommand::input): Added selectInsertedText parameter.
275         (khtml::TypingCommand::TypingCommand): Ditto.
276         (khtml::TypingCommand::insertText): Ditto.
277         (khtml::TypingCommand::isOpenForMoreTypingCommand): Use isTypingCommand instead of commandID.
278         (khtml::TypingCommand::closeTyping): Change parameter type to const reference.
279
280         * khtml/editing/htmlediting_impl.h: Made StyleChange functions be const member functions.
281         Changed parent() and setParent() to take and return EditCommandImpl pointers and be inlined.
282         Added virtual isInputTextCommand, isTypingCommand, and preservesTypingStyle functions.
283         Removed commandID functions and unneeded explicit destructors. Removed unneeded doApply
284         function declaration in CompositeEditCommandImpl. Changed type of applyTypingStyle to return
285         a node, not necessarily an element. Removed private execute function from InputTextCommandImpl.
286         Added selectInsertedText to InputTextCommandImpl's input function and TypingCommandImpl's constructor
287         and insertText function.
288         * khtml/editing/htmlediting_impl.cpp:
289         (khtml::StyleChange::StyleChange): Don't bother initializing the booleans since init handles that.
290         (khtml::StyleChange::init): Added code to strip whitespace, and tweaked how the function does its job.
291         (khtml::StyleChange::currentlyHasStyle): Added a check for null value, which can happen for properties
292         where we don't have computed style implemented yet.
293         (khtml::EditCommandImpl::EditCommandImpl): Updated since there is no SharedCommandImpl any more.
294         (khtml::EditCommandImpl::apply): Call new preservesTypingStyle function rather than checking
295         the command ID. This preserves typing style when deleting with the keyboard.
296         (khtml::EditCommandImpl::setStartingSelection): Changed since parent is now a EditCommandImpl.
297         Also rewrote to use for loop so it's simpler-looking.
298         (khtml::EditCommandImpl::setEndingSelection): Ditto.
299         (khtml::EditCommandImpl::setTypingStyle): Ditto.
300         (khtml::EditCommandImpl::preservesTypingStyle): Added. Returns false.
301         (khtml::EditCommandImpl::isInputTextCommand): Added. Returns false.
302         (khtml::EditCommandImpl::isTypingCommand): Added. Returns false.
303         (khtml::CompositeEditCommandImpl::applyTypingStyle): Changed this function to return a node rather
304         than an element. Also change it so it returns the child as-is if the style change has nothing in it.
305         (khtml::AppendNodeCommandImpl::~AppendNodeCommandImpl): Removed unneeded null checks.
306         (khtml::DeleteSelectionCommandImpl::preservesTypingStyle): Added. Returns true.
307         (khtml::DeleteTextCommandImpl::~DeleteTextCommandImpl): Removed unneeded null checks.
308         (khtml::InputTextCommandImpl::input): Renamed execute function to input and got rid of the additional
309         level of indirection, since it was the only caller. Added selectInsertedText parameter and changed
310         the code so it will respect it.
311         (khtml::InputTextCommandImpl::isInputTextCommand): Added. Returns true.
312         (khtml::InsertNodeBeforeCommandImpl::~InsertNodeBeforeCommandImpl): Removed unneeded null checks.
313         (khtml::JoinTextNodesCommandImpl::~JoinTextNodesCommandImpl): Ditto.
314         (khtml::MoveSelectionCommandImpl::MoveSelectionCommandImpl): Hold a reference to the fragment
315         while the command exists.
316         (khtml::MoveSelectionCommandImpl::~MoveSelectionCommandImpl): Release the fragment.
317         (khtml::RemoveNodeCommandImpl::~RemoveNodeCommandImpl): Remove unneeded null checks.
318         (khtml::RemoveNodeCommandImpl::doUnapply): Take advantage of defined behavior of insertBefore when
319         the node to insert before is 0 (means the same thing as appendChild).
320         (khtml::RemoveNodePreservingChildrenCommandImpl::~RemoveNodePreservingChildrenCommandImpl):
321         Remove unneeded null check.
322         (khtml::ReplaceSelectionCommandImpl::ReplaceSelectionCommandImpl): Hold a reference to the fragment
323         while the command exists.
324         (khtml::ReplaceSelectionCommandImpl::~ReplaceSelectionCommandImpl): Release the fragment.
325         (khtml::SetNodeAttributeCommandImpl::~SetNodeAttributeCommandImpl): Remove unneeded null check.
326         (khtml::SplitTextNodeCommandImpl::~SplitTextNodeCommandImpl): Remove unneeded null check.
327         (khtml::TypingCommandImpl::TypingCommandImpl): Added selectInsertedText parameter.
328         (khtml::TypingCommandImpl::doApply): Pass along selectInsertedText parameter.
329         (khtml::TypingCommandImpl::insertText): Ditto.
330         (khtml::TypingCommandImpl::preservesTypingStyle): Added. Returns true for DeleteKey.
331         (khtml::TypingCommandImpl::isTypingCommand): Added. Returns true.
332
333         * khtml/editing/jsediting.cpp: Add a cut at implementing the underline command. May not work
334         perfectly yet because text-decoration is not inherited the way, say, font-weight is.
335
336         * khtml/xml/dom_selection.h: Removed some unneeded friend declarations for comparison operators
337         that use only public members. Added PARAGRAPH_BOUNDARY.
338         * khtml/xml/dom_selection.cpp:
339         (DOM::Selection::modifyExtendingRightForward): Implemented paragraph boundary case, simplified line
340         boundary case (by changing parameter types and function names, not the algorithm), and made
341         paragraph case fall into line case for now.
342         (DOM::Selection::modifyMovingRightForward): Ditto.
343         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
344         (DOM::Selection::modifyMovingLeftBackward): Ditto.
345         (DOM::Selection::validate): Implemented paragraph case and paragraph boundary case, simplified the
346         line case as above and also fixed the document case.
347         (DOM::startOfFirstRunAt): Changed to use DOM::Position instead of node
348         offset pairs. Also renamed and got rid of separate bool to indicate "not found".
349         (DOM::endOfLastRunAt): Ditto.
350         (DOM::selectionForLine): Ditto.
351
352         * khtml/xml/dom_position.h: Added startParagraphBoundary and endParagraphBoundary.
353         Also used enums instead of bools in a couple of places. Removed some unneeded friend
354         declarations for comparison operators that use only public members.
355         * khtml/xml/dom_position.cpp:
356         (DOM::Position::Position): Coding style tweak.
357         (DOM::Position::startParagraphBoundary): Added.
358         (DOM::Position::endParagraphBoundary): Added.
359         (DOM::Position::upstream): Use enum parameter instead of bool.
360         (DOM::Position::downstream): Ditto.
361         (DOM::Position::rendersOnSameLine): Removed unused function. Noticed some backwards logic
362         here, and removed it rather than fixing it.
363
364         * khtml/xml/dom_nodeimpl.h: Added traversePreviousNodePostOrder.
365         * khtml/xml/dom_nodeimpl.cpp:
366         (NodeImpl::traversePreviousNodePostOrder): Added. For some uses, this function is more analogous
367         to traverseNextNode in reverse than traversePreviousNode, which does a backwards pre-order traversal.
368
369         * kwq/WebCoreBridge.h: Replaced fontForCurrentPosition method with fontForSelection:, added
370         selectInsertedText parameter to insertText method, and added selectionStartHasStyle: method.
371         Add WebSelectToParagraphBoundary.
372         * kwq/WebCoreBridge.mm:
373         (-[WebCoreBridge setSelectedDOMRange:affinity:]): Added workaround for bug where isRenderedContent
374         returns false for <br> elements at the ends of lines.
375         (-[WebCoreBridge insertText:selectInsertedText:]): Added selectInsertedText parameter, passing it
376         along to TypingCommand::insertText.
377         (-[WebCoreBridge selectionStartHasStyle:]): Added. Calls code in the part that does the real work.
378         (-[WebCoreBridge fontForSelection:]): Ditto.
379
380         * kwq/KWQKHTMLPart.h: Renamed fontForCurrentPosition to fontForSelection, and added a feature
381         where it tells us whether there are multiple fonts in the selection or not.
382         * kwq/KWQKHTMLPart.mm:
383         (KWQKHTMLPart::fontForSelection): Rewrote this to be a bit simpler, and added code to detect
384         whether there are multiple fonts in the selection.
385         (KWQKHTMLPart::didTellBridgeAboutLoad): Use a global character rather than a bad pointer here.
386         Better not to rely on undefined behavior.
387         (KWQKHTMLPart::documentFragmentWithText): Use lowercase HTML. I believe this works better when
388         the document is XML, and we should probably visit all callers and change them.
389         (KWQKHTMLPart::registerCommandForUndo): Call get() instead of handle().
390         (KWQKHTMLPart::registerCommandForRedo): Call get() instead of handle().
391
392         * khtml/misc/shared.h: Added a private, non-implemented copy constructor and assignment
393         operator to Shared<> and TreeShared<> to prevent copying reference counts by accident.
394         * khtml/rendering/render_style.h: Get rid of Shared<BorderData>, since it's not used that way.
395         This makes BorderData smaller, and allows it to compile with the change to Shared<>.
396         * khtml/xml/dom_docimpl.h: Remove unneeded copy constructor on DocumentFragmentImpl,
397         which ran afoul of the change to Shared<> and was unused.
398         * khtml/xml/dom_docimpl.cpp: Ditto.
399         * khtml/xml/dom_stringimpl.cpp:
400         (DOM::DOMStringImpl::empty): Changed code around so it doesn't run afoul of the change to
401         Shared<>. The old code was copying a DOMStringImpl.
402         (DOM::DOMStringImpl::ascii): Added code to null-terminate the string buffer.
403
404 2004-09-06  Darin Adler  <darin@apple.com>
405
406         Reviewed by John.
407
408         - improved computed style code and implemented text-decoration and text-shadow (needed for, e.g., underline)
409
410         * khtml/css/css_computedstyle.cpp:
411         Added CSS_PROP_TEXT_DECORATION to the InheritableProperties array for now even though it's
412         not inheritable. This makes underline work in some cases for typing style. We may decide to
413         take it back out again after further consideration.
414         (DOM::valueForLength): Use IDs in primitive values rather than strings.
415         (DOM::valueForBorderStyle): Ditto, also renamed this.
416         (DOM::valueForTextAlign): More of the same.
417         (DOM::valueForShadow): Added this function.
418         (DOM::CSSComputedStyleDeclarationImpl::getPositionOffsetValue): More IDs in primitive values.
419         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Changed all the cases to use
420         IDs instead of strings in primitive values. Also put the style in a local variable for
421         better code size and smaller source code too. Added implementation for CSS_PROP_TEXT_DECORATION
422         and CSS_PROP_TEXT_SHADOW.
423
424         * khtml/css/css_valueimpl.cpp:
425         (CSSValueListImpl::cssText): Put commas between list elements.
426         (CSSPrimitiveValueImpl::cssText): Fixed some messed up indenting and removed an unneeded
427         default case that would just prevent a warning if we ever have an unhandled enum value.
428
429 2004-09-06  Darin Adler  <darin@apple.com>
430
431         Reviewed by John.
432
433         - did some clean-up on form data code
434
435         * khtml/misc/formdata.h: Added more public functions as suggested by Chris when he reviewed
436         this class.
437         * khtml/misc/formdata.cpp: (khtml::FormData::appendFile): Added. Will be needed soon.
438         * kwq/KWQFormData.mm: (arrayFromFormData): Use new cleaned-up FormData API.
439
440 2004-09-06  Darin Adler  <darin@apple.com>
441
442         Reviewed by John.
443
444         * kwq/DOM-CSS.mm: (-[DOMCSSStyleDeclaration description]): Use cssText in the description
445         so it's easier to see in the debugger.
446
447 2004-09-06  Darin Adler  <darin@apple.com>
448
449         Reviewed by John.
450
451         * khtml/ecma/xmlhttprequest.cpp: (KJS::XMLHttpRequest::send): Remove uneeded QCString copy.
452
453 2004-09-04  Richard Williamson   <rjw@apple.com>
454
455         Fix build problem on panther.
456
457         * khtml/ecma/kjs_html.cpp:
458         * khtml/rendering/render_canvasimage.h:
459
460 2004-09-03  David Hyatt  <hyatt@apple.com>
461
462         Simple tweak to background-attachment.  Don't apply the slow repaint flag until after the whole style has been
463         resolved, since while cascading someone may set the attachment to fixed but later override with scroll.
464
465         * khtml/css/cssstyleselector.cpp:
466         (khtml::CSSStyleSelector::adjustRenderStyle):
467         (khtml::CSSStyleSelector::applyProperty):
468
469 2004-09-03  Richard Williamson   <rjw@apple.com>
470
471         Fixed <rdar://problem/3781001>: redirection of URL via resource load delegate does not correctly set base URL for subsequent loads
472
473         Ensure that stylesheets have the correct URL when request
474         is redirected.
475
476         Reviewed by Maciej.
477
478         * khtml/misc/loader.cpp:
479         (CachedCSSStyleSheet::checkNotify):
480         * kwq/KWQLoader.h:
481         * kwq/KWQLoader.mm:
482         (KWQIsResponseURLEqualToURL):
483         (KWQResponseURL):
484
485         * khtml/ecma/kjs_html.cpp:
486         (KJS::Context2DFunction::tryCall):
487         Compare parameter count with == instead of <=.
488
489 2004-09-03  David Hyatt  <hyatt@apple.com>
490
491         Fix for 3779083, deleting large amount of text is really slow.  Don't use NodeLists in editing remove commands.
492         
493         Reviewed by darin
494
495         * khtml/editing/htmlediting_impl.cpp:
496         (khtml::RemoveNodeCommandImpl::RemoveNodeCommandImpl):
497         (khtml::RemoveNodePreservingChildrenCommandImpl::doApply):
498
499 2004-09-03  Darin Adler  <darin@apple.com>
500
501         Reviewed by John.
502
503         - fixed <rdar://problem/3714501> REGRESSION (125.8-8A162): Chinese words display as garbage in search results (www.sz.net.cn)
504
505         * khtml/ecma/kjs_html.cpp: (KJS::HTMLDocument::putValue): Resolve URL using the document method
506         that passes the codec rather than calling the KURL constructor directly.
507
508 2004-09-03  Chris Blumenberg  <cblu@apple.com>
509
510         Fixed: <rdar://problem/3788409> can't create or clone an embed element
511
512         Reviewed by rjw.
513
514         * khtml/html/htmlparser.cpp: added fixme about sharing code
515         * khtml/xml/dom_docimpl.cpp: ditto
516         (DocumentImpl::createHTMLElement): create and return a HTMLEmbedElementImpl
517
518 2004-09-03  Darin Adler  <darin@apple.com>
519
520         Reviewed by Chris.
521
522         - fixed <rdar://problem/3410112> filename with non-ASCII name for <input type=file> should be sent in the page's encoding
523
524         * khtml/html/html_formimpl.cpp: (DOM::HTMLFormElementImpl::formData):
525         Encode filename using the codec rather than doing the &# dance. It turns out that Mozilla
526         only does the &# thing under certain circumstances that are not important. Always encoding
527         the filename is almost certainly better behavior, and will fix many serious problems for
528         Japanese and Korean users and websites.
529
530 2004-09-03  Richard Williamson   <rjw@apple.com>
531
532         Made drawImage() in <canvas> compliant with whatwg spec.
533         
534         Reviewed by John.
535
536         * khtml/ecma/kjs_html.cpp:
537         (KJS::Context2DFunction::tryCall):
538         * khtml/html/html_imageimpl.h:
539         (DOM::HTMLImageElementImpl::pixmap):
540
541 2004-09-03  David Hyatt  <hyatt@apple.com>
542
543         Fix for 3787686, CSS parser should do case-sensitive matching of ids and attributes only in strict mode
544         (and not whenever you have an HTML document).
545         
546         Reviewed by john
547
548         * khtml/css/parser.cpp:
549         * khtml/css/parser.y:
550
551 === Safari-162 ===
552
553 2004-09-03  Darin Adler  <darin@apple.com>
554
555         Reviewed by John.
556
557         - <rdar://problem/3788040> REGRESSION: text that i type into a textarea disappears when i tab out of the textarea
558
559         * kwq/KWQTextArea.mm: (-[KWQTextArea textDidChange:]): Bring back an unconditional version of
560         this method. Earlier, we deleted this method, but we should have instead removed the check.
561
562 2004-09-02  David Hyatt  <hyatt@apple.com>
563
564         Swap RenderBox and RenderContainer.  Make leaf RenderObjects actually derive off of RenderBox instead.
565         
566         Reviewed by kocienda
567
568         * khtml/rendering/render_block.cpp:
569         (khtml::RenderBlock::addChildToFlow):
570         * khtml/rendering/render_box.cpp:
571         (RenderBox::RenderBox):
572         (RenderBox::detach):
573         * khtml/rendering/render_box.h:
574         * khtml/rendering/render_container.cpp:
575         (RenderContainer::RenderContainer):
576         (RenderContainer::detach):
577         * khtml/rendering/render_container.h:
578         * khtml/rendering/render_flow.cpp:
579         (RenderFlow::detach):
580         (RenderFlow::dirtyLineBoxes):
581         (RenderFlow::createInlineBox):
582         (RenderFlow::getAbsoluteRepaintRect):
583         (RenderFlow::lowestPosition):
584         (RenderFlow::rightmostPosition):
585         (RenderFlow::leftmostPosition):
586         (RenderFlow::caretPos):
587         * khtml/rendering/render_flow.h:
588         (khtml::RenderFlow::RenderFlow):
589         * khtml/rendering/render_frames.cpp:
590         (RenderFrameSet::RenderFrameSet):
591         (RenderFrameSet::nodeAtPoint):
592         (RenderFrameSet::dump):
593         * khtml/rendering/render_frames.h:
594         * khtml/rendering/render_inline.cpp:
595         (RenderInline::addChildToFlow):
596         * khtml/rendering/render_replaced.cpp:
597         * khtml/rendering/render_replaced.h:
598         (khtml::RenderReplaced::setIntrinsicHeight):
599         * khtml/rendering/render_table.cpp:
600         (RenderTableSection::RenderTableSection):
601         (RenderTableSection::detach):
602         (RenderTableSection::setStyle):
603         * khtml/rendering/render_table.h:
604
605 2004-09-02  Ken Kocienda  <kocienda@apple.com>
606
607         Reviewed by me
608
609         * khtml/editing/htmlediting_impl.h: Fix some inconsistent use of whitespace. No code change.
610
611 2004-09-02  Ken Kocienda  <kocienda@apple.com>
612
613         Reviewed by Hyatt
614
615         Fix for this bug:
616         
617         <rdar://problem/3786848> REGRESSION (Mail): Typing styles and font panel updates broken
618
619         * khtml/xml/dom_position.cpp:
620         (DOM::Position::inRenderedContent): Check for inlines that can have kids is wrong.
621         I busted this the other day when making the PositionIterator class iterate over
622         all nodes and not just leaves of the DOM tree.
623         
624         Update all the following functions. These use the PositionIterator class, but still 
625         only want to consider leaf nodes.
626         
627         (DOM::Position::isFirstRenderedPositionOnLine)
628         (DOM::Position::isLastRenderedPositionOnLine)
629         (DOM::Position::isLastRenderedPositionInEditableBlock)
630         (DOM::Position::inFirstEditableInRootEditableElement)
631         (DOM::Position::inLastEditableInRootEditableElement)
632         (DOM::Position::inFirstEditableInContainingEditableBlock)
633         (DOM::Position::inLastEditableInContainingEditableBlock)
634
635 2004-09-02  Richard Williamson   <rjw@apple.com>
636
637         Support for patterns in <canvas>
638
639         Reviewed by Hyatt.
640
641         * khtml/ecma/kjs_html.cpp:
642         (KJS::Context2DFunction::tryCall):
643         (Context2D::putValue):
644         (drawPattern):
645         (ImagePattern::ImagePattern):
646         (ImagePattern::~ImagePattern):
647         * khtml/ecma/kjs_html.h:
648         (KJS::ImagePattern::getPattern):
649         (KJS::ImagePattern::pixmap):
650         * kwq/KWQPixmap.h:
651         * kwq/KWQPixmap.mm:
652         (QPixmap::imageRef):
653         * kwq/WebCoreImageRenderer.h:
654
655 2004-09-01  David Hyatt  <hyatt@apple.com>
656
657         Fix for 3769409, a regression from 10.3.4 to 10.3.5 involving <colgroup>s in malformed HTML.
658         
659         Reviewed by mjs
660
661         * khtml/html/htmlparser.cpp:
662         (KHTMLParser::insertNode):
663
664 2004-09-01  David Hyatt  <hyatt@apple.com>
665
666         Fix for the <colgroup> crasher.  Make sure adding to an anonymous box just returns immediately. Also eliminate
667         all the redundant setPos -500000 calls, since we don't need those at all.
668         
669         Reviewed by john
670
671         * khtml/rendering/render_block.cpp:
672         (khtml::RenderBlock::addChildToFlow):
673         (khtml::RenderBlock::makeChildrenNonInline):
674         * khtml/rendering/render_inline.cpp:
675         (RenderInline::splitFlow):
676
677 2004-09-02  Ken Kocienda  <kocienda@apple.com>
678
679         Reviewed by John
680
681         Fix for these bugs:
682         
683         <rdar://problem/3729219> REGRESSION (Mail): Caret placement and navigation not working correctly at yahoo.com
684         <rdar://problem/3758606> REGRESSION (Mail): Deletions across DIV elements is broken
685         <rdar://problem/3784810> REGRESSION (Mail): delete at beginning of line instead deletes to the end of the document (simple reduced test)
686
687         I made some very big improvements to the code which handles deletions of selections
688         which span more than one block.
689
690         * khtml/editing/htmlediting_impl.cpp:
691         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): An new, overloaded version of this
692         function which works on a NodeImpl. The code in this function fell out of some refactoring
693         I did in the function with the same name which takes a Position as an argument.
694         (khtml::DeleteSelectionCommandImpl::moveNodesToBlock): New function. This new logic provides
695         the smarts to fix the bugs listed above and greatly improves the code to perform deleting 
696         selections which span more than one block.
697         (khtml::DeleteSelectionCommandImpl::doApply): Several changes. Constrain downstream positions
698         so that they stay in the current block. This was a mistake before I think. Add code to detect
699         when the insertion point is a caret at the start of a block. This is a special-case of a
700         cross-block selection. Change the end-of-deletion-fixup case to operate on the downstreamEnd
701         position of the selection rather than the upstream. This is more logical. Refine the block 
702         merge logic to handle more cases, like dealing with whitespace. 
703         * khtml/editing/htmlediting_impl.h: Associated header file changes.
704         * khtml/xml/dom_nodeimpl.cpp: 
705         (NodeImpl::rootEditableElement): Add code to clamp the return value to the body element.
706         * khtml/xml/dom_selection.cpp:
707         (DOM::Selection::validate): Make selection canonicalizations stay in the current block.
708         * layout-tests/editing/deleting/delete-block-merge-contents-001-expected.txt:
709         * layout-tests/editing/deleting/delete-block-merge-contents-001.html:
710         * layout-tests/editing/deleting/delete-block-merge-contents-002-expected.txt: Added.
711         * layout-tests/editing/deleting/delete-block-merge-contents-002.html: Added.
712         * layout-tests/editing/deleting/delete-block-merge-contents-003-expected.txt: Added.
713         * layout-tests/editing/deleting/delete-block-merge-contents-003.html: Added.
714         * layout-tests/editing/deleting/delete-block-merge-contents-004-expected.txt: Added.
715         * layout-tests/editing/deleting/delete-block-merge-contents-004.html: Added.
716         * layout-tests/editing/deleting/delete-block-merge-contents-005-expected.txt: Added.
717         * layout-tests/editing/deleting/delete-block-merge-contents-005.html: Added.
718         * layout-tests/editing/deleting/delete-block-merge-contents-006-expected.txt: Added.
719         * layout-tests/editing/deleting/delete-block-merge-contents-006.html: Added.
720         * layout-tests/editing/deleting/delete-block-merge-contents-007-expected.txt: Added.
721         * layout-tests/editing/deleting/delete-block-merge-contents-007.html: Added.
722         * layout-tests/editing/deleting/delete-block-merge-contents-008-expected.txt: Added.
723         * layout-tests/editing/deleting/delete-block-merge-contents-008.html: Added.
724         * layout-tests/editing/deleting/delete-block-merge-contents-009-expected.txt: Added.
725         * layout-tests/editing/deleting/delete-block-merge-contents-009.html: Added.
726         * layout-tests/editing/deleting/delete-block-merge-contents-010-expected.txt: Added.
727         * layout-tests/editing/deleting/delete-block-merge-contents-010.html: Added.
728         * layout-tests/editing/deleting/delete-block-merge-contents-011-expected.txt: Added.
729         * layout-tests/editing/deleting/delete-block-merge-contents-011.html: Added.
730         * layout-tests/editing/inserting/insert-3654864-fix-expected.txt: Updated with new results.
731         * layout-tests/editing/inserting/insert-3654864-fix.html: Updated test to deal better with
732         improved select all behavior.
733         * layout-tests/editing/selection/select-all-003-expected.txt: Updated with new results.
734
735 2004-09-01  Richard Williamson   <rjw@apple.com>
736
737         Fixed panther build glitch.
738
739         Reviewed by Ken.
740
741         * khtml/ecma/kjs_html.cpp:
742
743 2004-09-01  Richard Williamson   <rjw@apple.com>
744
745         Finished implementation of gradient support in <canvas>.
746
747         Reviewed by John.
748
749         * khtml/ecma/kjs_html.cpp:
750         (KJS::HTMLElementFunction::tryCall):
751         (isGradient):
752         (isImagePattern):
753         (KJS::Context2DFunction::tryCall):
754         (Context2D::putValue):
755         (Context2D::Context2D):
756         (KJS::GradientFunction::tryCall):
757         (gradientCallback):
758         (Gradient::commonInit):
759         (Gradient::Gradient):
760         (Gradient::~Gradient):
761         (Gradient::getShading):
762         (Gradient::addColorStop):
763         (sortStops):
764         (Gradient::colorStops):
765         * khtml/ecma/kjs_html.h:
766         (KJS::ColorStop::ColorStop):
767         * khtml/ecma/kjs_html.lut.h:
768         (KJS::):
769
770 2004-09-01  David Hyatt  <hyatt@apple.com>
771
772         Fix for 3784686, hidden links still active.  Make sure text nodes exclude themselves from nodeAtPoint checks
773         when hidden.
774         
775         * khtml/rendering/render_text.cpp:
776         (RenderText::nodeAtPoint):
777
778 2004-08-31  David Hyatt  <hyatt@apple.com>
779
780         Fixes for 3761411 and 3782201.  This patch makes two changes to percentage heights.  First it makes sure that
781         replaced elements always flex inside a cell (unlike blocks and tables, which do so only sometimes under bizarre
782         conditions that are still being guessed at by me).  The second fix is a recognition that empty tables do not
783         actually honor their heights, and so it is a mistake to try to flex them.
784         
785         Reviewed by mjs
786
787         * khtml/rendering/render_table.cpp:
788         (RenderTableSection::layoutRows):
789         * khtml/rendering/render_table.h:
790         (khtml::RenderTable::hasSections):
791
792 2004-08-31  Ken Kocienda  <kocienda@apple.com>
793
794         Reviewed by Hyatt
795     
796         Fix for this bug:
797         
798         <rdar://problem/3781572> can't paste text in replied message view
799
800         * khtml/xml/dom2_rangeimpl.cpp:
801         (DOM::RangeImpl::toHTML): Copying text placed in an anonymous block was failing
802         since the code in here depending on the text node's containing block having an
803         element, which it won't. In fact, using containing block is wrong anyway, since
804         positioned elements can have containing blocks far from where they live in the
805         tree. This "move up to block check" should use the more DOM-wise enclosingBlockFlowElement()
806         in NodeImpl.
807
808 2004-08-30  David Hyatt  <hyatt@apple.com>
809
810         Fix for 3742585, sony dhtml menus wrong size.  The percentage table height algorithm was wrong.  This patch
811         unifies the table percentage height algorithm with the block percentage height algorithm and fixes bugs in
812         both.
813         
814         Reviewed by john
815
816         * khtml/rendering/render_box.cpp:
817         (RenderBox::calcPercentageHeight):
818         * khtml/rendering/render_table.cpp:
819         (RenderTable::layout):
820
821 2004-08-31  Ken Kocienda  <kocienda@apple.com>
822
823         Reviewed by me
824         
825         Added more editing layout tests.
826
827         * layout-tests/editing/deleting/delete-tab-001-expected.txt: Added.
828         * layout-tests/editing/deleting/delete-tab-001.html: Added.
829         * layout-tests/editing/deleting/delete-tab-002-expected.txt: Added.
830         * layout-tests/editing/deleting/delete-tab-002.html: Added.
831         * layout-tests/editing/deleting/delete-tab-003-expected.txt: Added.
832         * layout-tests/editing/deleting/delete-tab-003.html: Added.
833         * layout-tests/editing/deleting/delete-tab-004-expected.txt: Added.
834         * layout-tests/editing/deleting/delete-tab-004.html: Added.
835         * layout-tests/editing/editing.js: Fixed a little bug in one of the "delayed" commands.
836         * layout-tests/editing/inserting/insert-tab-001-expected.txt: Added.
837         * layout-tests/editing/inserting/insert-tab-001.html: Added.
838         * layout-tests/editing/inserting/insert-tab-002-expected.txt: Added.
839         * layout-tests/editing/inserting/insert-tab-002.html: Added.
840         * layout-tests/editing/inserting/insert-tab-003-expected.txt: Added.
841         * layout-tests/editing/inserting/insert-tab-003.html: Added.
842         * layout-tests/editing/inserting/insert-tab-004-expected.txt: Added.
843         * layout-tests/editing/inserting/insert-tab-004.html: Added.
844
845 2004-08-31  Ken Kocienda  <kocienda@apple.com>
846
847         Reviewed by John
848
849         Fix for this bug:
850         
851         <rdar://problem/3782521> Typing newline at start of block does not work
852
853         * khtml/editing/htmlediting_impl.cpp:
854         (khtml::InputNewlineCommandImpl::doApply): Change handling of case to insert
855         newline at the start of a block.
856         * layout-tests/editing/inserting/insert-br-006-expected.txt: Updated layout test with
857         new results.
858
859 2004-08-31  Ken Kocienda  <kocienda@apple.com>
860
861         Reviewed by me
862
863         Checked in incorrect results for these tests. There are the right ones.
864
865         * layout-tests/editing/deleting/collapse-whitespace-3587601-fix-expected.txt
866         * layout-tests/editing/selection/move-by-line-001-expected.txt
867
868 2004-08-31  Ken Kocienda  <kocienda@apple.com>
869
870         Reviewed by me
871         
872         Added more editing layout tests.
873
874         * layout-tests/editing/deleting/collapse-whitespace-3587601-fix-expected.txt: Added.
875         * layout-tests/editing/deleting/collapse-whitespace-3587601-fix.html: Added.
876         * layout-tests/editing/deleting/delete-block-merge-contents-001-expected.txt: Added.
877         * layout-tests/editing/deleting/delete-block-merge-contents-001.html: Added.
878         * layout-tests/editing/editing.js: Added some more navigation commands.
879         * layout-tests/editing/inserting/insert-3778059-fix-expected.txt: Added.
880         * layout-tests/editing/inserting/insert-3778059-fix.html: Added.
881         * layout-tests/editing/selection/move-by-line-001-expected.txt: Added.
882         * layout-tests/editing/selection/move-by-line-001.html: Added.
883         * layout-tests/editing/style/typing-style-003-expected.txt: Added.
884         * layout-tests/editing/style/typing-style-003.html: Added.
885
886 2004-08-31  Ken Kocienda  <kocienda@apple.com>
887
888         Reviewed by me
889         
890         Added more editing layout tests. Renamed some others.
891
892         * layout-tests/editing/inserting/insert-br-001-expected.txt: Added.
893         * layout-tests/editing/inserting/insert-br-001.html: Added.
894         * layout-tests/editing/inserting/insert-br-002-expected.txt: Added.
895         * layout-tests/editing/inserting/insert-br-002.html: Added.
896         * layout-tests/editing/inserting/insert-br-003-expected.txt: Added.
897         * layout-tests/editing/inserting/insert-br-003.html: Added.
898         * layout-tests/editing/inserting/insert-br-004-expected.txt: Added.
899         * layout-tests/editing/inserting/insert-br-004.html: Added.
900         * layout-tests/editing/inserting/insert-br-005-expected.txt: Added.
901         * layout-tests/editing/inserting/insert-br-005.html: Added.
902         * layout-tests/editing/inserting/insert-br-006-expected.txt: Added.
903         * layout-tests/editing/inserting/insert-br-006.html: Added.
904         * layout-tests/editing/inserting/insert-br-case1-expected.txt: Removed.
905         * layout-tests/editing/inserting/insert-br-case1.html: Removed.
906         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Removed.
907         * layout-tests/editing/inserting/insert-br-case2.html: Removed.
908         * layout-tests/editing/inserting/insert-br-case3-expected.txt: Removed.
909         * layout-tests/editing/inserting/insert-br-case3.html: Removed.
910         * layout-tests/editing/inserting/insert-br-case6-expected.txt: Removed.
911         * layout-tests/editing/inserting/insert-br-case6.html: Removed.
912         * layout-tests/editing/inserting/insert-text-with-newlines-expected.txt: Added.
913         * layout-tests/editing/inserting/insert-text-with-newlines.html: Added.
914
915 2004-08-31  Ken Kocienda  <kocienda@apple.com>
916
917         Reviewed by me
918
919         * layout-tests/editing/editing.js: Modified typeCharacterCommand so it can accept a character
920         as an argument.
921
922 2004-08-31  Ken Kocienda  <kocienda@apple.com>
923
924         Reviewed by Hyatt
925
926         Fix for these bugs:
927
928         <rdar://problem/3777629> REGRESSION (Mail): can't delete blank lines in quoted text in HTML mail replies
929         <rdar://problem/3780309> REGRESSION (Mail): can't delete past an empty span in a particular test case
930         <rdar://problem/3780315> REGRESSION (Mail): right arrow works incorrectly in a particular test case with an empty span
931         <rdar://problem/3780320> REGRESSION (Mail): left arrow works incorrectly in a particular test case with an empty span
932         <rdar://problem/3780336> REGRESSION (Mail): down arrow fails in a reduction of a Mail reply test case (seems to be inside a span)
933
934         * khtml/xml/dom_position.cpp:
935         (DOM::Position::upstream): If this position's node is a block, use it for the StayInBlock case, not the block's
936         enclosing block.
937         (DOM::Position::downstream): Ditto.
938         (DOM::Position::inRenderedContent): Refine the case for non-text nodes. This was erroneously returning true
939         for any empty element (like <span></span>).
940         * khtml/xml/dom_positioniterator.cpp: Change the following four functions to consider all nodes, not just
941         leaves of the DOM tree. This is a step towards making this iteration less cranky and unpredictable, and
942         was necessary to do now to keep the inRenderedContent() change above from breaking editign layout tests.
943         (DOM::PositionIterator::peekPrevious)
944         (DOM::PositionIterator::peekNext)
945         (DOM::PositionIterator::atStart)
946         (DOM::PositionIterator::atEnd)
947         * kwq/KWQKHTMLPart.mm:
948         (KWQKHTMLPart::fontForCurrentPosition): Check that the position being checked is an element and that the
949         element is in rendered content. I ran across some null-check failures while I was coding this fix, and
950         the additions seem prudent.
951         
952         Updated these layout tests with new results.
953         
954         * layout-tests/editing/deleting/delete-3608430-fix-expected.txt:
955         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt:
956         * layout-tests/editing/deleting/delete-block-contents-001-expected.txt:
957         * layout-tests/editing/deleting/delete-block-contents-002-expected.txt:
958         * layout-tests/editing/deleting/delete-block-contents-003-expected.txt:
959         * layout-tests/editing/deleting/delete-image-004-expected.txt:
960         * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt:
961         * layout-tests/editing/editing.js:
962         * layout-tests/editing/execCommand/boldSelection-expected.txt:
963         * layout-tests/editing/execCommand/italicizeByCharacter-expected.txt:
964         * layout-tests/editing/execCommand/modifyForeColorByCharacter-expected.txt:
965         * layout-tests/editing/execCommand/print-expected.txt:
966         * layout-tests/editing/execCommand/selectAll-expected.txt:
967         * layout-tests/editing/selection/extend-by-character-002-expected.txt:
968         * layout-tests/editing/selection/extend-by-character-004-expected.txt:
969         * layout-tests/editing/selection/extend-by-character-005-expected.txt:
970         * layout-tests/editing/selection/extend-by-character-006-expected.txt:
971         * layout-tests/editing/selection/select-all-001-expected.txt:
972         * layout-tests/editing/selection/select-all-002-expected.txt:
973         * layout-tests/editing/selection/select-all-003-expected.txt:
974
975 2004-08-30  Darin Adler  <darin@apple.com>
976
977         Reviewed by John.
978
979         - fixed <rdar://problem/3637519> REGRESSION (125-128): unrepro crash in QListBox::sizeForNumberOfLines at istweb.apple.com
980
981         * kwq/KWQListBox.h: Added a clearCachedTextRenderers function.
982         * kwq/KWQListBox.mm:
983         (itemTextRenderer): Change to use globals that are outside the function, and added retain calls.
984         (groupLabelTextRenderer): Ditto.
985         (QListBox::clearCachedTextRenderers): Release global text renderers and nil out the globals.
986
987         * kwq/WebCoreBridge.h: Removed updateAllViews; not needed any more.
988         * kwq/WebCoreBridge.mm: Ditto.
989
990         * kwq/WebCoreTextRendererFactory.h: Added a clearCaches method.
991         * kwq/WebCoreTextRendererFactory.mm:
992         (-[WebCoreTextRendererFactory clearCaches]): Added. Tells all the views to repaint after clearing the cached
993         text renderers from KWQListBox. To be more elegant, we could generalize the KWQListBox trick, but for now why bother?
994
995         * kwq/WebCoreTextRendererFactory.m: Removed. I needed to put some C++ code in here, so changed the extension to .mm.
996         * WebCore.pbproj/project.pbxproj: Removed WebCoreTextRendererFactory.m, and added WebCoreTextRendererFactory.mm.
997
998 2004-08-30  Darin Adler  <darin@apple.com>
999
1000         Reviewed by John.
1001
1002         - fixed <rdar://problem/3528538> can paste a Return character into the Search field at amazon.com, other browsers won't
1003
1004         * kwq/KWQTextField.mm: (-[KWQTextFieldController controlTextDidChange:]):
1005         Truncate text before the first line break.
1006
1007 2004-08-30  Darin Adler  <darin@apple.com>
1008
1009         * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertOneChunkUsingTEC):
1010         Added some more assertions I used to track down what looks like a TEC bug.
1011
1012 2004-08-30  Darin Adler  <darin@apple.com>
1013
1014         Reviewed by Ken.
1015
1016         - fixed <rdar://problem/3779122> No accesskey support on LABEL element
1017
1018         * khtml/html/html_formimpl.h: Change type of m_currValue to DOMString. Should have been done
1019         as part of my form data check-in, but harmless to do now. Add accessKeyAction function for
1020         HTMLLabelElementImpl.
1021         * khtml/html/html_formimpl.cpp:
1022         (DOM::HTMLButtonElementImpl::parseHTMLAttribute): Remove conversion of DOMString to QString
1023         for m_currValue.
1024         (DOM::HTMLLabelElementImpl::formElement): If there's no "for" attribute, search children for
1025         the first control.
1026         (DOM::HTMLLabelElementImpl::accessKeyAction): Forward the accesskey action to the formElement.
1027
1028 2004-08-30  Darin Adler  <darin@apple.com>
1029
1030         Reviewed by Dave.
1031
1032         - fixed <rdar://problem/3303968> final newline character omitted from <textarea> when parsing a new page
1033
1034         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::processListing): Handle newline pending
1035         cases as well as space and tab pending spaces at the end of this function. This seems right for
1036         both scripts and text areas; it's not clear why omittiing the LF is ever needed. Tested by running
1037         all the layout tests; no regressions.
1038
1039         - fixed <rdar://problem/3552736> word wrapped text fields that blur/focus when you type move the insertion point strangely (vtext.com)
1040
1041         * khtml/rendering/render_form.cpp: (RenderTextArea::updateFromElement): Call text() instead of
1042         calling widget->text() directly. This prevents this function from running in cases where the
1043         text didn't really change for text areas in wrap mode.
1044
1045 2004-08-30  Darin Adler  <darin@apple.com>
1046
1047         Reviewed by Dave.
1048
1049         - got rid of ERROR message when running layout tests by implementing text-transform in computed style
1050
1051         * khtml/css/css_computedstyle.cpp:
1052         (DOM::numberAsString): Added. Helper that returns "1" rather then "1.0" for integer values.
1053         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Fixed use of tabs instead of
1054         spaces. Fixed switch statements so they don't use default so we get errors if we leave
1055         a case out. Changed callers to use numberAsString instead of QString::number. Added implementation
1056         of CSS_PROP_TEXT_TRANSFORM. Added code to prevent falling through to next property when no item
1057         in a switch statement matches.
1058
1059 2004-08-30  Darin Adler  <darin@apple.com>
1060
1061         Reviewed by Chris.
1062
1063         - did work to prepare for uploading files incrementally when submitting forms
1064
1065         * khtml/misc/formdata.h: Added. Class for holding form data inside WebCore.
1066         * khtml/misc/formdata.cpp: Added.
1067
1068         * khtml/html/html_formimpl.h: Added the FormDataList type, changed the formData function parameters
1069         and made it private, renamed the encoding method to appendFormData and changed the parameters around.
1070         * khtml/html/html_formimpl.cpp:
1071         (DOM::FormDataList): Added. Class that replaces the old use of QValueList<QCString> for form data.
1072         Later we'll change it to accomodate filenames too.
1073         (DOM::HTMLFormElementImpl::formData): Changed code to use FormDataList intsead of the old encodingList.
1074         Also changed to return the "OK" result as the function result and put the form data into something
1075         passed as an "out" parameter; the old way was the other way around.
1076         (DOM::HTMLFormElementImpl::submit): Change to use FormData rather than a QByteArray when getting the
1077         form data to submit.
1078         (DOM::HTMLButtonElementImpl::appendFormData): Rename from encoding, and use the new appendData function
1079         instead of the old way of doing += to put data on the list.
1080         (DOM::HTMLInputElementImpl::appendFormData): Ditto.
1081         (DOM::HTMLSelectElementImpl::appendFormData): Ditto.
1082         (DOM::HTMLKeygenElementImpl::appendFormData): Ditto.
1083         (DOM::HTMLTextAreaElementImpl::appendFormData): Ditto.
1084         (DOM::FormDataList::FormDataList): Added.
1085         (DOM::FormDataList::appendString): Added.
1086         (DOM::FormDataList::begin): Added.
1087         (DOM::FormDataList::end): Added.
1088
1089         * khtml/khtml_part.h: Changed the type of the submitForm parameter to FormData instead of QByteArray.
1090         * khtml/khtmlpart_p.h: Changed the type of the submitFormData data member to FormData instead of QByteArray.
1091         * khtml/khtml_part.cpp: (KHTMLPart::submitForm): Called the new flattenToString function in all the
1092         code that handles mailto forms. Called the new flatten function in the non-Apple code path.
1093
1094         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::submitForm): Pass NSArray for form data instead of NSData.
1095
1096         * kwq/KWQKJob.h: Use FormData instead of QByteArray. A couple other small cleanups.
1097         * kwq/KWQKJobClasses.h: Ditto.
1098         * kwq/KWQKJobClasses.mm:
1099         (KIO::TransferJobPrivate::TransferJobPrivate): Ditto.
1100         (KIO::TransferJob::TransferJob): Ditto.
1101         (KIO::TransferJob::postData): Ditto.
1102         * kwq/KWQKPartsBrowserExtension.h: Ditto.
1103         * kwq/KWQLoader.mm:
1104         (KWQServeRequest): Ditto.
1105         (KWQServeSynchronousRequest): Ditto.
1106
1107         * kwq/KWQFormData.h: Added. A function to convert KHTML form data into an NSArray for communication
1108         with the WebKit side.
1109         * kwq/KWQFormData.mm: Added.
1110
1111         * kwq/WebCoreBridge.h: Pass NSArray instead of NSData for form data.
1112
1113         * kwq/KWQArrayImpl.h: Added a detach member function. The old version would do unnecessary work when
1114         detach was called on an array that had exactly one reference.
1115         * kwq/KWQArrayImpl.mm: (KWQArrayImpl::detach): Added.
1116         * kwq/KWQMemArray.h: (QMemArray::detach): Call through to KWQArrayImpl.
1117
1118         * kwq/KWQValueList.h:
1119         (QValueList::first): Added overload for non-const.
1120         (QValueList::last): Ditto.
1121
1122         * ForwardingHeaders/misc/formdata.h: Added.
1123         * WebCore.pbproj/project.pbxproj: Added formdata.h, formdata.cpp, KWQFormData.h, and KWQFormData.cpp.
1124
1125         * WebCore-tests.exp: Updated for changes to QValueList, and re-sorted.
1126         * WebCore-combined.exp: Regenerated.
1127
1128 2004-08-30  Darin Adler  <darin@apple.com>
1129
1130         Reviewed by Ken.
1131
1132         - improved multiple submit logic in preparation for making command-click on a form
1133           button load a form in another frame
1134
1135         * kwq/KWQKHTMLPart.h: Added const to a bunch of member functions for cleanup.
1136         Added prepareForUserAction member function.
1137         * kwq/KWQKHTMLPart.mm:
1138         (KWQKHTMLPart::submitForm): Simplified logic and removed special case for "http" and "https".
1139         (KWQKHTMLPart::renderer): Added const.
1140         (KWQKHTMLPart::keyEvent): Added call to prepareForUserAction.
1141         (KWQKHTMLPart::lastEventIsMouseUp): Added const.
1142         (KWQKHTMLPart::eventMayStartDrag): Added const.
1143         (KWQKHTMLPart::mouseDown): Added call to prepareForUserAction.
1144         (KWQKHTMLPart::overrideMediaType): Added const.
1145         (KWQKHTMLPart::canGoBackOrForward): Added const.
1146         (KWQKHTMLPart::prepareForUserAction): Added. Clears _submittedFormURL.
1147         * kwq/KWQAccObject.mm: (-[KWQAccObject accessibilityPerformAction:]): Added call to prepareForUserAction.
1148
1149 2004-08-30  Ken Kocienda  <kocienda@apple.com>
1150
1151         Reviewed by John
1152
1153         Fix for this bug:
1154
1155         <rdar://problem/3762231> REGRESSION (Mail): tab key inserts a single space
1156
1157         * khtml/editing/htmlediting_impl.cpp:
1158         (khtml::isTab): New helper. Checks a DOMString to see if it is one character and
1159         that character is a tab.
1160         (khtml::InputTextCommandImpl::execute): Trap tabs before handling insertion of
1161         other kinds of whitespace. Treat a tab like four spaces. Rearrange the code to
1162         update the ending position after the text insertion to cover the new tab case
1163         where the amount of advance is not the same as the number of character in the
1164         passed-in DOMString (i.e. tabs expand to four characters).
1165         
1166 2004-08-27  Ken Kocienda  <kocienda@apple.com>
1167
1168         Reviewed by Chris
1169
1170         Fix for this bug:
1171         
1172         <rdar://problem/3779706> plain text on pasteboard loses indentation when pasted into Blot
1173
1174         * kwq/KWQKHTMLPart.h:
1175         * kwq/KWQKHTMLPart.mm:
1176         (KWQKHTMLPart::documentFragmentWithText): New function that takes over the code from
1177         KWQKHTMLPart and improves it to handle converting tabs and spaces for suitable
1178         display in HTML.
1179         * kwq/WebCoreBridge.mm:
1180         (-[WebCoreBridge documentFragmentWithText:]): Move smarts from here to KWQKHTMLPart.
1181
1182 2004-08-27  Maciej Stachowiak  <mjs@apple.com>
1183
1184         Reviewed by John.
1185
1186         <rdar://problem/3778314> REGRESSION: Can't proceed to survey questions on Lominger's Apple website
1187
1188         Because we will stop parsing when there is a pending redirection,
1189         avoid setting one if no navigation would actually take place
1190         because the number of steps is out of range.
1191         
1192         * khtml/khtml_part.cpp:
1193         (KHTMLPart::scheduleHistoryNavigation):
1194         * kwq/KWQKHTMLPart.h:
1195         * kwq/KWQKHTMLPart.mm:
1196         (KWQKHTMLPart::canGoBackOrForward):
1197         * kwq/KWQKPartsBrowserInterface.h:
1198         * kwq/WebCoreBridge.h:
1199
1200 2004-08-27  Maciej Stachowiak  <mjs@apple.com>
1201
1202         Reviewed by Chris.
1203
1204         - fixed <rdar://problem/3778043> REGRESSION: innerHTML is broken, breaks automated iBench testing
1205         - also fixed outerHTML, which would spill over past the node for whch it was supposed to get HTML
1206         
1207         * khtml/html/html_elementimpl.cpp:
1208         (HTMLElementImpl::outerHTML):
1209         * khtml/xml/dom2_rangeimpl.cpp:
1210         (DOM::RangeImpl::toHTML):
1211         * khtml/xml/dom_nodeimpl.cpp:
1212         (NodeImpl::toHTML):
1213         (NodeImpl::recursive_toString):
1214         (NodeImpl::recursive_toHTML):
1215         * khtml/xml/dom_nodeimpl.h:
1216         * kwq/WebCoreBridge.mm:
1217         (-[WebCoreBridge markupStringFromNode:nodes:]):
1218
1219         - added new layout tests to cover the problems I fixed
1220         
1221         * layout-tests/fast/innerHTML/001-expected.txt: Added.
1222         * layout-tests/fast/innerHTML/001.html: Added.
1223         * layout-tests/fast/innerHTML/002-expected.txt: Added.
1224         * layout-tests/fast/innerHTML/002.html: Added.
1225         * layout-tests/fast/innerHTML/003-expected.txt: Added.
1226         * layout-tests/fast/innerHTML/003.html: Added.
1227
1228 2004-08-27  David Hyatt  <hyatt@apple.com>
1229
1230         Fix for 3739239, getComputedStyle of top not being implemented broke a site that checked for it.
1231         
1232         Reviewed by kocienda
1233
1234         * khtml/css/css_computedstyle.cpp:
1235         (DOM::valueForLength):
1236         (DOM::CSSComputedStyleDeclarationImpl::getPositionOffsetValue):
1237         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
1238         * khtml/css/css_computedstyle.h:
1239
1240 2004-08-27  John Sullivan  <sullivan@apple.com>
1241
1242         Reviewed by Ken.
1243         
1244         Tweaked option-tab handling to match good suggestion from Tim Omernick of OmniWeb
1245
1246         * kwq/KWQTextArea.mm:
1247         removed override of textDidChange:
1248         (-[KWQTextAreaTextView keyDown:]):
1249         moved option-tab handling that was in textDidChange to here. Rearranged existing code
1250         a little for clarity.
1251
1252 2004-08-27  Adele Amchan  <adele@apple.com>
1253
1254         Reviewed by Darin.
1255
1256         Fix for:
1257         <rdar://problem/3689949> Provide contentWindow access on an iframe
1258
1259         * khtml/ecma/kjs_html.cpp:
1260         (KJS::HTMLElement::getValueProperty): added cases for contentWindow for frames and iframes
1261         * khtml/ecma/kjs_html.h: added contentWindow to the list of properties for frames and iframes
1262         * khtml/ecma/kjs_html.lut.h: regenerated file
1263         * khtml/html/html_baseimpl.cpp:
1264         (HTMLFrameElementImpl::contentPart): factored out old contentDocument code to return KHTMLPart for frame
1265         (HTMLFrameElementImpl::contentDocument): now just gets the contentDocument from contentPart
1266         * khtml/html/html_baseimpl.h: added declaration for contentPart
1267
1268 === Safari-161 ===
1269
1270 2004-08-27  Ken Kocienda  <kocienda@apple.com>
1271
1272         Reviewed by Darin
1273
1274         Fix for this bug:
1275         
1276         <rdar://problem/3778059> Odd behaviour when editing between blockquote elements
1277
1278         * khtml/editing/htmlediting_impl.cpp:
1279         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): This function should not move
1280         the selection out of the current block, ever. This is exactly what the bug reported.
1281         What was I thinking? Now, the code looks at the passed-in position and then the equivalent
1282         upstream and downstream positions to see if the selection can be placed there after the
1283         delete, and settles on the block containing the passed-in position as a fallback.
1284         * layout-tests/editing/inserting/insert-3778059-fix-expected.txt: Added.
1285         * layout-tests/editing/inserting/insert-3778059-fix.html: Added.
1286
1287 2004-08-26  Richard Williamson   <rjw@apple.com>
1288
1289         Boiler plate for canvas gradients and patterns.
1290
1291         Reviewed by John.
1292
1293         * khtml/ecma/kjs_html.cpp:
1294         (KJS::Context2DFunction::tryCall):
1295         (Context2D::tryPut):
1296         (Context2D::~Context2D):
1297         (KJS::GradientFunction::tryCall):
1298         (Gradient::Gradient):
1299         (Gradient::tryGet):
1300         (Gradient::getValueProperty):
1301         (Gradient::tryPut):
1302         (Gradient::putValue):
1303         (Gradient::~Gradient):
1304         (ImagePattern::ImagePattern):
1305         (ImagePattern::tryGet):
1306         (ImagePattern::getValueProperty):
1307         (ImagePattern::tryPut):
1308         (ImagePattern::putValue):
1309         (ImagePattern::~ImagePattern):
1310         * khtml/ecma/kjs_html.h:
1311         (KJS::Gradient::toBoolean):
1312         (KJS::Gradient::classInfo):
1313         (KJS::Gradient::):
1314         (KJS::ImagePattern::toBoolean):
1315         (KJS::ImagePattern::classInfo):
1316         (KJS::ImagePattern::):
1317         * khtml/ecma/kjs_html.lut.h:
1318         (KJS::):
1319
1320 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1321
1322         Reviewed by John
1323
1324         Fix for this bug:
1325         
1326         <rdar://problem/3777899> REGRESSION (Mail): only first of several misspelled words separated by 
1327         carriage returns is marked
1328
1329         * khtml/editing/htmlediting_impl.cpp:
1330         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): Give the spellchecker a slightly larger 
1331         selection to work with while typing. This should preclude bugs of this type.
1332
1333 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1334
1335         Reviewed by Chris
1336         
1337         Fix for this bug:
1338         
1339         <rdar://problem/3777804> Deleting all content in a document can result in giant tall-as-window insertion point
1340
1341         * khtml/rendering/render_box.cpp:
1342         (RenderBox::caretPos): Always use the font height for calculating the caret height in 
1343         non-replaced elements (like blocks), rather than the height of the box.
1344
1345 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1346
1347         Silly me. Forgot to add this file before.
1348
1349         * layout-tests/editing/inserting/insert-3775316-fix-expected.txt: Added.
1350
1351 2004-08-26  David Hyatt  <hyatt@apple.com>
1352
1353         Fix for 3777172, crash from nested colgroup.  Don't allow nested table sections or col groups.
1354         
1355         Reviewed by darin
1356
1357         * khtml/html/htmlparser.cpp:
1358         (KHTMLParser::insertNode):
1359
1360 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1361
1362         Reviewed by Hyatt
1363
1364         Fix for this bug:
1365         
1366         <rdar://problem/3775316> document sprouts an extra newline character at the end
1367
1368         * khtml/editing/htmlediting_impl.cpp:
1369         (khtml::InputNewlineCommandImpl::doApply): There was in insufficient check
1370         in the code which adds extra BR elements at the ends of blocks, which we do 
1371         to work around the fact that BR elements, when they are the last element in a
1372         block, do not render. Now the code sees whether there already is one of these
1373         extra BR's in the document and won't add and "extra" extra. 
1374         * layout-tests/editing/inserting/insert-3775316-fix.html: Added.
1375
1376 2004-08-26  David Hyatt  <hyatt@apple.com>
1377
1378         Fix for 3710721 and 3504114, crashes because of bad ownership model for list markers.
1379         
1380         Reviewed by mjs
1381
1382         * khtml/rendering/render_container.cpp:
1383         (RenderContainer::detach):
1384         * khtml/rendering/render_list.cpp:
1385         (RenderListItem::setStyle):
1386         (RenderListItem::detach):
1387         (RenderListItem::updateMarkerLocation):
1388         * khtml/rendering/render_list.h:
1389
1390 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1391
1392         Reviewed by John
1393
1394         * khtml/editing/htmlediting_impl.cpp:
1395         (khtml::ApplyStyleCommandImpl::doApply): Remove the StayInBlock modifier from the
1396         call to upstream when passing the start position to removeStyle(). This makes the
1397         start position sufficiently upstream so that all relevant style tags are removed.
1398         (khtml::ApplyStyleCommandImpl::removeStyle): Pass the start position to nodeFullySelected.
1399         (khtml::ApplyStyleCommandImpl::nodeFullySelected): Change interface so start position
1400         for calculation is passed in, rather than recalculating it every time.
1401         * khtml/editing/htmlediting_impl.h: nodeFullySelected interface change.
1402         * khtml/xml/dom_position.h: Add a comment about the working of upstream() and
1403         downstream().
1404
1405 2004-08-26  Ken Kocienda  <kocienda@apple.com>
1406
1407         Fix garbled contenteditable attribute. I must have checked
1408         this in with a typo.
1409
1410         * layout-tests/editing/deleting/delete-3775172-fix.html
1411
1412 2004-08-25  Kevin Decker  <kdecker@apple.com>
1413
1414         Reviewed by John and Maciej.
1415
1416         - Fixes SAP bug <rdar://problem/3751295> Personalize link at the
1417         top gives an error in the pop-up window. 
1418
1419         * khtml/ecma/kjs_window.cpp:
1420         (WindowFunc::tryCall): Passes a referrer to KHTMLPart::begin() 
1421
1422 2004-08-25  Richard Williamson   <rjw@apple.com>
1423
1424         Updated to <canvas> API to match the spec.  (Still need
1425         to implement gradients and patterns.)
1426
1427         Reviewed by Ken.
1428
1429         * khtml/ecma/kjs_html.cpp:
1430         (KJS::Context2DFunction::tryCall):
1431         (Context2D::getValueProperty):
1432         (Context2D::drawingContext):
1433         (Context2D::colorRefFromValue):
1434         (Context2D::colorFromValue):
1435         (Context2D::setShadow):
1436         (Context2D::putValue):
1437         (Context2D::save):
1438         (Context2D::restore):
1439         (Context2D::Context2D):
1440         * khtml/ecma/kjs_html.h:
1441         (KJS::Context2D::):
1442         * khtml/ecma/kjs_html.lut.h:
1443         (KJS::):
1444
1445 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1446
1447         * layout-tests/editing/deleting/delete-3775172-fix.html: Wrong version of test checked in
1448         a moment ago.
1449
1450 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1451
1452         Added test case for <rdar://problem/3775172> Blot crashes after typing one character then deleting it
1453
1454         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt: Added.
1455         * layout-tests/editing/deleting/delete-3775172-fix.html: Added.
1456
1457 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1458
1459         * layout-tests/editing/style/style-3690704-fix-expected.txt: Fewer styling spans added
1460         on this test as a result of the previously-checked-in fix.
1461
1462 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1463
1464         Reviewed by John
1465
1466         Fix for this bug:
1467         
1468         <rdar://problem/3775214> BR elements cause unnecessary spans to be added when applying style
1469
1470         * khtml/editing/htmlediting_impl.cpp:
1471         (khtml::ApplyStyleCommandImpl::doApply): BR elements can be grouped more liberally with other nodes
1472         now in the iteration when attempting to find nodes that can be styled together with one span.
1473         * layout-tests/editing/style/style-3690704-fix-expected.txt: Updated with new results after
1474         bug fix.
1475
1476 2004-08-25  Ken Kocienda  <kocienda@apple.com>
1477
1478         Reviewed by John
1479
1480         Fix for this bug:
1481         
1482         <rdar://problem/3775172> Blot crashes after typing one character then deleting it
1483
1484         * khtml/css/css_computedstyle.cpp:
1485         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Bail early if the element
1486         being queried does not have a renderer or that renderer does not have a style. Prevents
1487         a crash in the cases that it does not.
1488         * khtml/editing/htmlediting_impl.cpp:
1489         (khtml::DeleteSelectionCommandImpl::doApply): Add one more case to deleting when the
1490         start and end nodes are different. If the downstream end node is the last node in the
1491         block, then it may need to be deleted completely. Before this patch, the code
1492         erroneously assumed that any deletion in this node had to be trimming of a text node.
1493         This was asserted, and the description in 3775172 shows a simple case where this assertion
1494         does not hold. The additional case and associated checks now make it all better.
1495         * layout-tests/editing/deleting/delete-3775172-fix.html: Added.
1496
1497 2004-08-25  David Hyatt  <hyatt@apple.com>
1498
1499         Fix for 3365086, large tables crash Safari.  Make sure to use ints rather than shorts for row and column
1500         counts.  Also fix a pathological array resize scenario for tables as rows are added.
1501         
1502         Reviewed by darin
1503
1504         * khtml/rendering/render_table.cpp:
1505         (RenderTable::splitColumn):
1506         (RenderTable::appendColumn):
1507         (RenderTableSection::RenderTableSection):
1508         (RenderTableSection::ensureRows):
1509         (RenderTableSection::setCellWidths):
1510         (RenderTableSection::calcRowHeight):
1511         (RenderTableSection::layoutRows):
1512         (RenderTableSection::paint):
1513         (RenderTableSection::recalcCells):
1514         (RenderTableSection::clearGrid):
1515         * khtml/rendering/render_table.h:
1516         (khtml::RenderTableSection::numRows):
1517
1518 2004-08-25  David Hyatt  <hyatt@apple.com>
1519
1520         To save memory in the common case, move the margin***Collapse variables into the CSS3 struct instead of
1521         bloating the surround struct.
1522         
1523         * khtml/rendering/render_style.cpp:
1524         (StyleSurroundData::StyleSurroundData):
1525         (StyleSurroundData::operator==):
1526         (marginBottomCollapse):
1527         (StyleCSS3NonInheritedData::operator==):
1528         (RenderStyle::diff):
1529         * khtml/rendering/render_style.h:
1530         (khtml::RenderStyle::marginTopCollapse):
1531         (khtml::RenderStyle::marginBottomCollapse):
1532         (khtml::RenderStyle::setMarginTopCollapse):
1533         (khtml::RenderStyle::setMarginBottomCollapse):
1534
1535 2004-08-25  David Hyatt  <hyatt@apple.com>
1536
1537         Fix the "extra space in TypePad blogs" Emerson problem by adding the ability to collapse away margins.
1538         Also added support for explicitly preventing margin collapsing.
1539         
1540         Reviewed by mjs
1541
1542         * khtml/css/cssparser.cpp:
1543         (CSSParser::parseValue):
1544         * khtml/css/cssproperties.c:
1545         (hash_prop):
1546         (findProp):
1547         * khtml/css/cssproperties.h:
1548         * khtml/css/cssproperties.in:
1549         * khtml/css/cssstyleselector.cpp:
1550         (khtml::CSSStyleSelector::applyProperty):
1551         * khtml/css/cssvalues.c:
1552         (hash_val):
1553         (findValue):
1554         * khtml/css/cssvalues.h:
1555         * khtml/css/cssvalues.in:
1556         * khtml/rendering/render_block.cpp:
1557         (khtml::RenderBlock::isSelfCollapsingBlock):
1558         (khtml::RenderBlock::layoutBlockChildren):
1559         * khtml/rendering/render_style.cpp:
1560         (StyleSurroundData::StyleSurroundData):
1561         (StyleSurroundData::operator==):
1562         (RenderStyle::diff):
1563         * khtml/rendering/render_style.h:
1564         (khtml::):
1565         (khtml::RenderStyle::marginTopCollapse):
1566         (khtml::RenderStyle::marginBottomCollapse):
1567         (khtml::RenderStyle::setMarginTopCollapse):
1568         (khtml::RenderStyle::setMarginBottomCollapse):
1569         (khtml::RenderStyle::initialMarginTopCollapse):
1570         (khtml::RenderStyle::initialMarginBottomCollapse):
1571
1572 2004-08-24  Ken Kocienda  <kocienda@apple.com>
1573
1574         Reviewed by Hyatt
1575
1576         Improved the ability of the bridge to report selection state.     
1577
1578         * khtml/editing/htmlediting_impl.cpp:
1579         (khtml::TypingCommandImpl::doApply): Bail when there is no selection.
1580         * kwq/WebCoreBridge.h: Added an enum to report selection state. These constants
1581         mirror those used in DOM::Selection.
1582         * kwq/WebCoreBridge.mm:
1583         (-[WebCoreBridge selectionState]): Replacement for haveSelection. Returns a value 
1584         from an enum telling whether the selection is in the None, Caret, or Range state, 
1585         rather than just true/false for the Range state as it did before.
1586
1587 2004-08-24  David Hyatt  <hyatt@apple.com>
1588
1589         Make sure the ifdef XSLT is present for Panther.
1590         
1591         * khtml/xml/xml_tokenizer.cpp:
1592         (khtml::XMLTokenizer::insertErrorMessageBlock):
1593
1594 2004-08-24  David Hyatt  <hyatt@apple.com>
1595
1596         Polish the XML error message so that it indicates when a document is the result of an XSL transformation
1597         when reporting line/col #s.
1598         
1599         * khtml/xml/dom_docimpl.cpp:
1600         (DocumentImpl::applyXSLTransform):
1601         * khtml/xml/xml_tokenizer.cpp:
1602         (khtml::XMLTokenizer::insertErrorMessageBlock):
1603         * khtml/xsl/xslt_processorimpl.cpp:
1604         (DOM::XSLTProcessorImpl::documentFromXMLDocPtr):
1605
1606 2004-08-24  David Hyatt  <hyatt@apple.com>
1607
1608         Add support for Atom and RSS MIME types to the set of XML types.
1609         
1610         Reviewed by rjw
1611
1612         * khtml/ecma/xmlhttprequest.cpp:
1613         (KJS::XMLHttpRequest::getValueProperty):
1614         * khtml/khtml_part.cpp:
1615         (KHTMLPart::begin):
1616         * khtml/misc/loader.cpp:
1617         (CachedXSLStyleSheet::CachedXSLStyleSheet):
1618         (CachedXBLDocument::CachedXBLDocument):
1619         * khtml/xml/dom_xmlimpl.cpp:
1620         (DOM::ProcessingInstructionImpl::checkStyleSheet):
1621
1622 2004-08-24  Chris Blumenberg  <cblu@apple.com>
1623
1624         Fixed: <rdar://problem/3746447> hang loading geocities.com/cinemaorchestra
1625
1626         Reviewed by john.
1627
1628         * khtml/rendering/render_frames.cpp:
1629         (RenderPartObject::updateWidget): do nothing if the src URL is the same as the part's URL
1630
1631 2004-08-24  Ken Kocienda  <kocienda@apple.com>
1632
1633         Reviewed by Chris
1634
1635         Fix for this bug:
1636         
1637         <rdar://problem/3773564> REGRESSION (125-159): Code to remove HTML styles before applying new HTML styles is broken
1638
1639         * khtml/editing/htmlediting_impl.cpp:
1640         (khtml::ApplyStyleCommandImpl::doApply): Unrelated change to constrain downstream position of selection
1641         start to block boundaries. This is a new feature of the downstream function and I missed this usage
1642         when adding the feature.
1643         (khtml::ApplyStyleCommandImpl::removeCSSStyle): There once was code to remove style attributes from spans
1644         which became emptied as a result of removing CSS properties, but I do not see such code in the 
1645         tree any more. A quick review of the ChangeLog did not reveal anything. I do not remember making such
1646         a change myself...
1647         
1648         In any case, I have restored logic to prune out styling spans we insert if the process of 
1649         removing styles caused a span-plus-styles node to become emptied of markup which changes the style
1650         of its contents. This fixes the bug.
1651
1652 2004-08-24  Ken Kocienda  <kocienda@apple.com>
1653
1654         Reviewed by John
1655
1656         Fix for this bug:
1657         
1658         <rdar://problem/3765535> paste of text with newlines into text with newlines results in broken doc, crash
1659         
1660         This is a "belt and suspenders" fix. The issue is with the paste code path which was creating
1661         zero-length DOM text nodes when a selection being pasted ended with a newline. The normal
1662         code path for parsing HTML does not allow this, but the code to convert newlines to BR's 
1663         during paste was creating such nodes. This will no longer happen.
1664         
1665         In the case where someone inserts such zero-length nodes using the DOM API, the render tree
1666         will no longer create render objects for these nodes, and it was these empty render text 
1667         nodes that was confusing the code doing editing navigation.
1668
1669         * khtml/xml/dom_textimpl.cpp:
1670         (CharacterDataImpl::rendererIsNeeded): Do not create renderers for zero-length DOM text nodes.
1671         * khtml/xml/dom_textimpl.h:
1672         * kwq/WebCoreBridge.mm:
1673         (-[WebCoreBridge documentFragmentWithText:]): Do not insert zero-length DOM text nodes as part
1674         of converting line-end sequences to BR's.
1675
1676 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
1677
1678         Reviewed by Richard.
1679
1680         - reduce cost of innerHTML from O(N^2) to O(N*D) where N is the
1681         number of nodes and D is the maximum DOM tree depth.
1682         
1683         * khtml/xml/dom_nodeimpl.cpp:
1684         (NodeImpl::recursive_toString): New static helper method for
1685         recursive_toHTML - this is recursive for children but iterative
1686         for siblings.
1687         (NodeImpl::recursive_toHTML): Call the helper with this as the
1688         first argument.
1689         * khtml/xml/dom_nodeimpl.h:
1690
1691 2004-08-23  David Hyatt  <hyatt@apple.com>
1692
1693         Fix for 3558334. 
1694
1695         Init the encodedURL explicitly for CSSStyleSelectors.  Construction time was too early to be passing in the
1696         document m_url, since it doesn't get set during construction.
1697
1698         Fix for 3769643, crash on vancouverblast.org.
1699         
1700         Reviewed by darin
1701
1702         * khtml/css/cssstyleselector.cpp:
1703         (khtml::CSSStyleSelector::CSSStyleSelector):
1704         (khtml::CSSStyleSelector::init):
1705         (khtml::CSSStyleSelector::setEncodedURL):
1706         * khtml/css/cssstyleselector.h:
1707         * khtml/xml/dom_docimpl.cpp:
1708         (DocumentImpl::DocumentImpl):
1709         (DocumentImpl::setURL):
1710         (DocumentImpl::recalcStyleSelector):
1711         * khtml/xml/dom_docimpl.h:
1712         (DOM::DocumentImpl::URL):
1713
1714 2004-08-23  Kevin Decker  <kdecker@apple.com>
1715
1716         Reviewed by Maciej.
1717
1718         - fixed rdar://problem/3681094> Crash in KJS::WindowFunc::tryCall       with application/xhtml+xml Content-Type
1719         * khtml/ecma/kjs_window.cpp:
1720         (WindowFunc::tryCall): since this is an xml document, we get the
1721         domain from the xmlDocImpl(), not docImpl().
1722
1723 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
1724
1725         Reviewed by Darin.
1726
1727         <rdar://problem/3771426> assertion failed due to reentering dispatchImageLoadEventsNow
1728         
1729         * khtml/xml/dom_docimpl.cpp:
1730         (DocumentImpl::dispatchImageLoadEventsNow): Avoid re-entering this
1731         function, since it uses a data member for the copy of the list of events
1732         to be dispatched.
1733
1734 2004-08-23  Maciej Stachowiak  <mjs@apple.com>
1735
1736         Reviewed by Darin.
1737
1738         <rdar://problem/3770306> XMLHttpRequest does not honor character set encoding
1739
1740         * khtml/ecma/xmlhttprequest.cpp:
1741         (KJS::XMLHttpRequest::slotData): Get encoding from the transfer job.
1742         * kwq/KWQKJobClasses.h:
1743         * kwq/KWQKJobClasses.mm:
1744         (KIO::TransferJobPrivate::TransferJobPrivate): Added retrievedCharset
1745         flag.
1746         (KIO::TransferJob::retrieveCharset): New method, gets the charset
1747         from the response.
1748         (KIO::TransferJob::queryMetaData): Handle charset.
1749         (KIO::TransferJob::emitReceivedResponse): Clear retreivedCharset flag.
1750         * kwq/KWQLoader.h:
1751         * kwq/KWQLoader.mm:
1752         (KWQResponseTextEncodingName): New function, gets the encoding from the response.
1753
1754 2004-08-23  David Hyatt  <hyatt@apple.com>
1755
1756         Apply leo's fix to marquees.
1757         
1758         Reviewed by hyatt
1759
1760         * khtml/rendering/render_layer.cpp:
1761         (Marquee::start):
1762
1763 2004-08-20  Darin Adler  <darin@apple.com>
1764
1765         Reviewed by Maciej.
1766
1767         - added an ascii() member function to DOMString and DOMStringImpl to help debugging
1768
1769         * khtml/dom/dom_string.h: Add ascii member function for debugging.
1770         * khtml/dom/dom_string.cpp: (DOM::DOMString::ascii): Added. Calls through to DOMStringImpl::ascii.
1771         * khtml/xml/dom_stringimpl.h: Add ascii member function for debugging.
1772         * khtml/xml/dom_stringimpl.cpp: (DOM::DOMStringImpl::ascii): Added. Makes a new buffer and puts
1773         a simple ASCII version in it. Maybe make it better about characters outside the 0x20-0x7E range
1774         some day, but for now this is way better than what we had before.
1775
1776 2004-08-20  David Hyatt  <hyatt@apple.com>
1777
1778         Divorce the notion of a marquee being stopped from JS from the notion of being suspended by the back/forward cache.
1779
1780         * khtml/ecma/kjs_html.cpp:
1781         (KJS::HTMLElementFunction::tryCall):
1782         * khtml/rendering/render_layer.cpp:
1783         (m_direction):
1784         (Marquee::start):
1785         (Marquee::stop):
1786         (Marquee::updateMarqueePosition):
1787         * khtml/rendering/render_layer.h:
1788
1789 2004-08-20  Richard Williamson   <rjw@apple.com>
1790
1791         Implemented new JNI abstraction.  We no longer invoke Java methods
1792         directly with JNI, rather we call into the plugin.  This allows the
1793         plugin to dispatch the call to the appropriate VM thread.  This
1794         change should (will?) fix a whole class of threading related problems with
1795         the Java VM.
1796
1797         Reviewed by Hyatt.
1798
1799         * kwq/KWQKHTMLPart.mm:
1800         (KWQKHTMLPart::getAppletInstanceForView):
1801         * kwq/WebCoreBridge.mm:
1802         (rootForView):
1803         (-[WebCoreBridge executionContextForView:]):
1804
1805 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
1806
1807         Reviewed by Darin.
1808
1809         More text paint cleanup. Separated the background and foreground
1810         passes instead of doing a weird for loop thing. Eliminated
1811         redundant if conditions. Added comments.
1812
1813         * khtml/rendering/render_text.cpp:
1814         (RenderText::paint):
1815
1816 2004-08-19  Ken Kocienda  <kocienda@apple.com>
1817
1818         Reviewed by Darin
1819
1820         * khtml/css/css_computedstyle.cpp:
1821         (DOM::): Changed CopyProperties constant to InheritableProperties. This reflects the
1822         name change of copy() to copyInheritableProperties()
1823         (DOM::CSSComputedStyleDeclarationImpl::copyInheritableProperties: Renamed from copy().
1824         Now just copies those properties which can be inherited.
1825         (DOM::CSSComputedStyleDeclarationImpl::diff): Add a couple null checks.
1826         * khtml/css/css_computedstyle.h: copyInheritableProperties name change. No longer needs to be virtual.
1827         * khtml/css/css_valueimpl.cpp: Removed unneeded copy() function from CSSStyleDeclarationImpl.
1828         * khtml/css/css_valueimpl.h: Ditto.
1829         * khtml/editing/htmlediting.cpp:
1830         (khtml::EditCommand::typingStyle): Added.
1831         (khtml::EditCommand::setTypingStyle): Added.
1832         * khtml/editing/htmlediting.h:
1833         * khtml/editing/htmlediting_impl.cpp:
1834         (khtml::StyleChange::currentlyHasStyle): Fix leak of computed style used in this function.
1835         (khtml::EditCommandImpl::EditCommandImpl): Initialize m_typingStyle.
1836         (khtml::EditCommandImpl::~EditCommandImpl): Deref m_typingStyle.
1837         (khtml::EditCommandImpl::assignTypingStyle): New helper used in setting typing style.
1838         (khtml::EditCommandImpl::setTypingStyle): New setter.
1839         (khtml::DeleteSelectionCommandImpl::doApply): Use new method for managing typing style.
1840         * khtml/editing/htmlediting_impl.h:
1841         (khtml::EditCommandImpl::typingStyle): New accessor.
1842         * khtml/khtml_part.cpp:
1843         (KHTMLPart::appliedEditing): Restores typing style from command after setting selection.
1844         (KHTMLPart::applyStyle): Does a diff between the current style and the style of the caret.
1845         * khtml/khtml_part.h:
1846         * khtml/xml/dom_position.cpp:
1847         (DOM::Position::computedStyle): Now returns a CSSComputedStyleDeclarationImpl instead of a plain
1848         CSSStyleDeclarationImpl.
1849         * khtml/xml/dom_position.h:
1850         * layout-tests/editing/style/style-3681552-fix-002-expected.txt:
1851
1852 2004-08-20  Trey Matteson  <trey@apple.com>
1853
1854         3655407 - Editing: -complete: method unimplemented (WebKit editing API)
1855
1856         One new support routine here.
1857
1858         Reviewed by John
1859
1860         * kwq/WebCoreBridge.h:
1861         * kwq/WebCoreBridge.mm:
1862         (-[WebCoreBridge caretRectAtNode:offset:]):  New routine.
1863         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:]):
1864         Fixed former misleading method name.
1865
1866 2004-08-20  Ken Kocienda  <kocienda@apple.com>
1867
1868         Reviewed by Trey
1869
1870         Fix for this bug:
1871         
1872         <rdar://problem/3768378> crash typing newline in Blot
1873
1874         * khtml/editing/htmlediting_impl.cpp:
1875         (khtml::InputNewlineCommandImpl::doApply): Adding an assert in a recent change
1876         showed up that inserting newlines that was not being handled correctly for the 
1877         case described in the bug. I added a new case to handle inserting BR's when
1878         at the caret max offset for a node, and this new code runs instead of the
1879         fall-through case that should not have been running and triggered the assert.
1880         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Regenerated results.
1881         * layout-tests/editing/inserting/insert-br-case6-expected.txt: Added.
1882         * layout-tests/editing/inserting/insert-br-case6.html: Added.
1883
1884 2004-08-20  Trey Matteson  <trey@apple.com>
1885
1886         Fixing: Spellchecker called once or twice for every char typed.
1887
1888         Reviewed by Ken
1889
1890         * khtml/khtml_part.cpp:
1891         (KHTMLPart::setSelection):  Don't do any spell checking if we're typing (it's done
1892         elsewhere, in markMisspellingsAfterTyping)
1893  
1894 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
1895
1896         Reviewed by John.
1897
1898         - fixed <rdar://problem/3549369> Crash at www.e1.ru in HTMLTokenizer::notifyFinished
1899
1900         Probably also fixed the following likely duplicates:
1901
1902         <rdar://problem/3503938> Safari crashed opening many tabs (HTMLTokenizer::notifyFinished(khtml::CachedObject*))
1903         <rdar://problem/3566332> CrashTracer: ..405 crashes at com.apple.WebCore: QString::QString[unified] + 0x5c
1904         <rdar://problem/3703964> CrashTracer: ...86 crashes at com.apple.WebCore: QString::QString[unified] + 0x5c
1905         <rdar://problem/3703969> CrashTracer: ..234 crashes at com.apple.WebCore: HTMLTokenizer::notifyFinished + 0x1c8
1906
1907         * khtml/xml/dom_docimpl.cpp:
1908         (DocumentImpl::open): call setParsing(true), because we need to know we are once again
1909         parsing when we re-open a document that has previously completed loading.
1910
1911 2004-08-19  Maciej Stachowiak  <mjs@apple.com>
1912
1913         Reviewed by Dave and Darin.
1914
1915         * khtml/rendering/render_text.cpp:
1916         (RenderText::paint): Split apple and non-apple code paths to allow further cleanup.
1917
1918 2004-08-19  Darin Adler  <darin@apple.com>
1919
1920         Reviewed by Dave.
1921
1922         - fixed <rdar://problem/3767274> crash in partForWidget inside setFocus (test page attached)
1923
1924         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::nextKeyViewInFrame): Remove code to do position
1925         the widget; no longer needed since we reworked how widgets get their positions.
1926         * kwq/KWQWidget.mm: (QWidget::setFocus): Ditto. This was the one that caused the bug.
1927
1928 2004-08-19  David Hyatt  <hyatt@apple.com>
1929
1930         Fix crash when text is contained inside a table-colgroup.
1931         
1932         Reviewed by john
1933
1934         * khtml/xml/dom_textimpl.cpp:
1935         (TextImpl::rendererIsNeeded):
1936
1937 2004-08-19  Trey Matteson  <trey@apple.com>
1938
1939         Unexpected errors hit while finding word boundaries, leading to crash.
1940
1941         Reviewed by Ken.
1942
1943         * kwq/KWQTextUtilities.cpp:
1944         (KWQFindWordBoundary):  Don't call UCFindTextBreak with edge cases it thinks
1945         are param errors, and pass correct mask for forward case.  Also fix off-by-one
1946         crashers in fallback code.
1947
1948 2004-08-19  David Hyatt  <hyatt@apple.com>
1949
1950         Make XSLT imports/includes work.  This code has to be turned off until the newer version of libxslt is
1951         available.
1952         
1953         Reviewed by kocienda
1954
1955         * khtml/css/css_ruleimpl.cpp:
1956         (CSSImportRuleImpl::init):
1957         * khtml/xml/dom_docimpl.cpp:
1958         (DocumentImpl::DocumentImpl):
1959         (DocumentImpl::~DocumentImpl):
1960         (DocumentImpl::applyXSLTransform):
1961         * khtml/xml/dom_docimpl.h:
1962         (DOM::DocumentImpl::setTransformSource):
1963         (DOM::DocumentImpl::transformSource):
1964         * khtml/xml/dom_xmlimpl.cpp:
1965         (DOM::ProcessingInstructionImpl::checkStyleSheet):
1966         * khtml/xml/xml_tokenizer.cpp:
1967         (khtml::matchFunc):
1968         (khtml::openFunc):
1969         (khtml::readFunc):
1970         (khtml::writeFunc):
1971         (khtml::createQStringParser):
1972         (khtml::XMLTokenizer::setTransformSource):
1973         * khtml/xsl/xsl_stylesheetimpl.cpp:
1974         (DOM::XSLStyleSheetImpl::XSLStyleSheetImpl):
1975         (DOM::XSLStyleSheetImpl::~XSLStyleSheetImpl):
1976         (DOM::XSLStyleSheetImpl::isLoading):
1977         (DOM::XSLStyleSheetImpl::clearDocuments):
1978         (DOM::XSLStyleSheetImpl::parseString):
1979         (DOM::XSLStyleSheetImpl::loadChildSheets):
1980         (DOM::XSLStyleSheetImpl::loadChildSheet):
1981         (DOM::XSLImportRuleImpl::parentStyleSheet):
1982         (DOM::XSLStyleSheetImpl::compileStyleSheet):
1983         (DOM::XSLStyleSheetImpl::locateStylesheetSubResource):
1984         (DOM::XSLImportRuleImpl::XSLImportRuleImpl):
1985         (DOM::XSLImportRuleImpl::~XSLImportRuleImpl):
1986         (DOM::XSLImportRuleImpl::setStyleSheet):
1987         (DOM::XSLImportRuleImpl::isLoading):
1988         (DOM::XSLImportRuleImpl::loadSheet):
1989         * khtml/xsl/xsl_stylesheetimpl.h:
1990         (DOM::XSLStyleSheetImpl::setOwnerDocument):
1991         (DOM::XSLStyleSheetImpl::setDocument):
1992         (DOM::XSLStyleSheetImpl::markAsProcessed):
1993         (DOM::XSLStyleSheetImpl::processed):
1994         (DOM::XSLImportRuleImpl::href):
1995         (DOM::XSLImportRuleImpl::styleSheet):
1996         (DOM::XSLImportRuleImpl::isImportRule):
1997         * khtml/xsl/xslt_processorimpl.cpp:
1998         (DOM::m_sourceDocument):
1999         (DOM::stylesheetLoadFunc):
2000         (DOM::XSLTProcessorImpl::transformDocument):
2001         * khtml/xsl/xslt_processorimpl.h:
2002
2003 === Safari-158 ===
2004
2005 2004-08-18  Trey Matteson  <trey@apple.com>
2006
2007         3765958 - downstreamPosition() can hit infinite loop when at end of doc
2008         
2009         The problem was that I had a position that was after the maximum position in the text
2010         node, because it was the old caret position before a backspace was processed.  Later
2011         I happened to call downstream() on that position, and hit the bug.  Fix is to consider
2012         a position past the end point of its node if it is *greater than* or equal to its max offset.
2013                         
2014         Reviewed by Ken.
2015
2016         * khtml/xml/dom_positioniterator.cpp:
2017         (DOM::PositionIterator::atEnd):
2018
2019 2004-08-18  David Hyatt  <hyatt@apple.com>
2020
2021         - did WebCore part of <rdar://problem/3682969> SLIDER: absolute left position of slider should be headline only
2022
2023         Make the header overlap the footer in the zero-line case.  Changes to Emerson's template will ensure the
2024         header draws over the footer.
2025         
2026         Reviewed by darin
2027
2028         * khtml/rendering/render_block.cpp:
2029         (khtml::getHeightForLineCount):
2030
2031 2004-08-18  Richard Williamson   <rjw@apple.com>
2032
2033         Replace horrible pollForAppletInView: with new
2034         webPlugInGetApplet.  The details of how the applet instance
2035         is provided now belong to the Java team.  Yeh.
2036                 
2037         Reviewed by Chris.
2038
2039         * kwq/KWQKHTMLPart.mm:
2040         (KWQKHTMLPart::getAppletInstanceForView):
2041         * kwq/WebCoreBridge.h:
2042
2043 2004-08-18  Chris Blumenberg  <cblu@apple.com>
2044
2045         Fixed: <rdar://problem/3692199> 8A146: Safari crashes in toHTMLWithOptions, selection with no renderer (various sites)
2046
2047         Reviewed by trey.
2048
2049         * khtml/xml/dom2_rangeimpl.cpp:
2050         (DOM::RangeImpl::toHTML): renamed, don't assume that nodes of the range had renderers, use the common ancestor of the range as the root
2051         * khtml/xml/dom2_rangeimpl.h:
2052         * khtml/xml/dom_nodeimpl.cpp:
2053         (NodeImpl::recursive_toHTML): renamed, removed code that determines whether to include the root in the HTML, leave this up to the caller
2054         * khtml/xml/dom_nodeimpl.h:
2055         * kwq/WebCoreBridge.mm:
2056         (-[WebCoreBridge markupStringFromNode:nodes:]): call renamed methods
2057         (-[WebCoreBridge markupStringFromRange:nodes:]): ditto
2058
2059 2004-08-18  Ken Kocienda  <kocienda@apple.com>
2060
2061         * khtml/css/css_valueimpl.cpp:
2062         (CSSStyleDeclarationImpl::copy): Roll back silly last minute change that broke this code.
2063         Note to self: read code before making changes to it.
2064
2065 2004-08-18  Ken Kocienda  <kocienda@apple.com>
2066
2067         Coded by Darin and Ken
2068
2069         * khtml/css/css_computedstyle.cpp: Added CopyProperties static array. This contains
2070         the properties we implement that we also want to copy in the new
2071         CSSComputedStyleDeclarationImpl::copy described below.
2072         (DOM::CSSComputedStyleDeclarationImpl::copy): New function. In this class, copies the
2073         computed values of all the properties listed in CopyProperties. In essence, this makes
2074         a freeze-dired version of a computed style.
2075         (DOM::CSSComputedStyleDeclarationImpl::diff): Removes every property from the passed-in 
2076         CSSStyleDeclarationImpl that is also in the computed style.
2077         * khtml/css/css_computedstyle.h:
2078         * khtml/css/css_valueimpl.cpp:
2079         (CSSStyleDeclarationImpl::copy): New function. In this class, the copy operation is
2080         straightforward. Returns a copy that will be unchanged when the original changes.
2081         * khtml/css/css_valueimpl.h:
2082         (DOM::CSSStyleDeclarationImpl::values): Added a accessor suitable for use when the 
2083         CSSStyleDeclarationImpl is const.
2084
2085 2004-08-17  Maciej Stachowiak  <mjs@apple.com>
2086
2087         Reviewed by Darin.
2088
2089         <rdar://problem/3703768> CrashTracer: ...50 crashes at com.apple.WebCore: KHTMLPart::xmlDocImpl const + 0
2090         
2091         * khtml/khtmlview.cpp:
2092         (KHTMLView::viewportMouseMoveEvent): Add a nil check and an
2093         assertion for m_part being null. It seems impossible for this to
2094         happen, so we want to debug it ourselves, but in the meantime,
2095         let's try to avoid causing crashes for our users.
2096
2097 2004-08-17  David Hyatt  <hyatt@apple.com>
2098
2099         Fix the line truncation function for Emerson so that at the far left setting of the slider, only the header
2100         is visible.
2101         
2102         Reviewed by darin
2103
2104         * khtml/rendering/render_block.cpp:
2105         (khtml::getHeightForLineCount):
2106         * khtml/rendering/render_flexbox.cpp:
2107         (khtml::RenderFlexibleBox::layoutVerticalBox):
2108
2109 2004-08-17  Ken Kocienda  <kocienda@apple.com>
2110
2111         Reviewed by Hyatt
2112
2113         Rewrite of the command that deletes a selection. I deleted great 
2114         big swaths of bug-ridden code to accomplish this and replaced it
2115         with code that is much cleaner and smarter.
2116         
2117         Also, renamed equivalentUpstreamPosition and equivalentDownstreamPosition to
2118         upstream to downstream, respectively.
2119         
2120         Added a couple of new helper methods.
2121         
2122         * khtml/editing/htmlediting.cpp: DeleteCollapsibleWhitespaceCommand and
2123         RemoveNodeAndPruneCommand now obsolete. A huge win.
2124         * khtml/editing/htmlediting.h: Ditto.
2125         * khtml/editing/htmlediting_impl.cpp:
2126         (khtml::debugPosition): Fix printf which had a placeholder, but no argument passed in the varargs.
2127         (khtml::CompositeEditCommandImpl::deleteUnrenderedText): New helper. Much simplified and cleaner
2128         version of 
2129         (khtml::ApplyStyleCommandImpl::doApply): upstream/downstream name change
2130         (khtml::ApplyStyleCommandImpl::nodeFullySelected):  upstream/downstream name change
2131         (khtml::DeleteSelectionCommandImpl::doApply):  upstream/downstream name change
2132         (khtml::DeleteTextCommandImpl::DeleteTextCommandImpl): Add an assert to check that the
2133         passed offset is less than the length of the text node.
2134         (khtml::InputNewlineCommandImpl::insertNodeAfterPosition): upstream/downstream name change
2135         (khtml::InputNewlineCommandImpl::insertNodeBeforePosition): upstream/downstream name change
2136         (khtml::InputNewlineCommandImpl::doApply): upstream/downstream name change
2137         (khtml::InputTextCommandImpl::prepareForTextInsertion): upstream/downstream name change
2138         (khtml::InputTextCommandImpl::execute): upstream/downstream name change
2139         (khtml::InputTextCommandImpl::insertSpace): upstream/downstream name change
2140         (khtml::ReplaceSelectionCommandImpl::doApply): upstream/downstream name change
2141         (khtml::TypingCommandImpl::issueCommandForDeleteKey): upstream/downstream name change
2142         (khtml::TypingCommandImpl::deleteKeyPressed):
2143         * khtml/editing/htmlediting_impl.h:
2144         * khtml/xml/dom_position.cpp:
2145         (DOM::Position::previousWordBoundary):
2146         (DOM::Position::nextWordBoundary):
2147         (DOM::Position::upstream):
2148         (DOM::Position::downstream):
2149         (DOM::Position::inRenderedText): Add null check.
2150         (DOM::Position::isRenderedCharacter): New helper.
2151         (DOM::isWS): New helper in this file.
2152         (DOM::Position::leadingWhitespacePosition): New helper. Factored out from htmlediting_impl.cpp.
2153         (DOM::Position::trailingWhitespacePosition): Ditto.
2154         (DOM::Position::debugPosition): Add null check.
2155         * khtml/xml/dom_position.h:
2156         * khtml/xml/dom_selection.cpp:
2157         (DOM::Selection::toRange): upstream/downstream name change
2158         (DOM::Selection::validate): upstream/downstream name change
2159         (DOM::Selection::debugPosition): upstream/downstream name change
2160         * layout-tests/editing/deleting/delete-block-contents-003-expected.txt: Updated tests with new expected results.
2161         * layout-tests/editing/deleting/delete-contiguous-ws-001-expected.txt: Ditto.
2162         * layout-tests/editing/deleting/delete-selection-001-expected.txt: Ditto.
2163         * layout-tests/editing/deleting/delete-trailing-ws-001-expected.txt: Ditto.
2164         * layout-tests/editing/inserting/insert-br-case1-expected.txt: Ditto.
2165         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Ditto.
2166         * layout-tests/editing/style/style-3681552-fix-002-expected.txt: Ditto.
2167
2168 2004-08-17  Trey Matteson  <trey@apple.com>
2169
2170         Various spelling fixes.
2171
2172         Reviewed by Ken.
2173
2174         * khtml/khtml_part.cpp:
2175         (KHTMLPart::setSelection): No misspellings in the spelling code comments
2176         * khtml/xml/dom_docimpl.cpp:
2177         (DocumentImpl::removeMarker):  Repaint if doc changes.  Sometimes the markers
2178         were not being erased when you clicked in a word.
2179         * khtml/xml/dom_position.cpp:
2180         (DOM::Position::previousWordBoundary):  Small optimization.  Bail after first
2181         try if the second try will not come out any different.
2182         (DOM::Position::nextWordBoundary):  Ditto
2183         * kwq/KWQKHTMLPart.mm:
2184         (KWQKHTMLPart::markMisspellingsInSelection):  Comment.
2185
2186 2004-08-17  Darin Adler  <darin@apple.com>
2187
2188         Reviewed by Maciej.
2189
2190         - fixed <rdar://problem/3689700> crash loading page; stoxx.com (works in IE and Firefox)
2191
2192         * khtml/khtml_part.h: Make completeURL public.
2193         * kwq/KWQKJavaAppletWidget.mm: (KJavaAppletWidget::KJavaAppletWidget): Complete the base URL
2194         before passing it across the bridge. This sidesteps the crashing bug in CFURL, filed as
2195         '<rdar://problem/3764632> CFURLCreateAbsoluteURLWithBytes crashes if passed the string "../.."'
2196         and also is obviously correct behavior that may fix other sites too.
2197
2198         - fixed <rdar://problem/3547725> Crashes at csuohio.edu, list box vs. mouse event problem (Spoof No Fix)
2199
2200         * kwq/KWQListBox.mm:
2201         (QListBox::~QListBox): Nil out the pointer from the KWQTableView back to the widget by calling
2202         a new detach method.
2203         (-[KWQTableView detach]): Set the pointer to the QListBox to 0. Also set the delegate and data
2204         source to nil, so we don't need nil checks in delegate and data source methods.
2205         (-[KWQTableView mouseDown:]): Add nil check.
2206         (-[KWQTableView keyDown:]): Add nil check.
2207         (-[KWQTableView keyUp:]): Add nil check.
2208         (-[KWQTableView becomeFirstResponder]): Add nil check.
2209         (-[KWQTableView resignFirstResponder]): Add nil check.
2210         (-[KWQTableView canBecomeKeyView]): Add nil check.
2211         (-[KWQTableView tableViewSelectionDidChange:]): Add nil checks, even though this is a delegate
2212         callback, to handle cases where calls to JavaScript result in the QListBox going away partway
2213         through.
2214         (-[KWQTableView drawRow:clipRect:]): Add nil check.
2215         (-[KWQTableView _accessibilityTableCell:tableColumn:]): Add nil check.
2216
2217 2004-08-17  Trey Matteson  <trey@apple.com>
2218
2219         Fix ASSERT in spelling marker management.
2220
2221         Reviewed by John.
2222
2223         * khtml/xml/dom_docimpl.cpp:
2224         (DocumentImpl::shiftMarkers):  Use assert instead of ASSERT.
2225         Tweak test to allow for a start position of 0.
2226
2227 2004-08-17  Trey Matteson  <trey@apple.com>
2228
2229         3764147 - failure of subframe to load leaves links in parent doc broken
2230
2231         Reviewed by Maciej.
2232
2233         * khtml/khtml_part.cpp:
2234         (KHTMLPart::childBegin):  New method to mark part as not complete.
2235         (KHTMLPart::processObjectRequest):  Mark child part imcomplete, so if we
2236         later get a failure on load it won't think it's already complete and do nothing.
2237         * khtml/khtml_part.h:
2238
2239 === Safari-157 ===
2240
2241 2004-08-16  David Hyatt  <hyatt@apple.com>
2242
2243         Fix the #define.  I had it all backwards.
2244         
2245         * WebCorePrefix.h:
2246
2247 2004-08-16  David Hyatt  <hyatt@apple.com>
2248
2249         Land initial support for XSLT using xml-stylesheet PIs.
2250         
2251         * WebCore.pbproj/project.pbxproj:
2252         * khtml/khtml_part.cpp:
2253         (KHTMLPart::replaceDocImpl):
2254         * khtml/khtml_part.h:
2255         * khtml/khtmlview.h:
2256         * khtml/xml/dom_docimpl.cpp:
2257         (DocumentImpl::DocumentImpl):
2258         (DocumentImpl::~DocumentImpl):
2259         (DocumentImpl::recalcStyleSelector):
2260         (DocumentImpl::applyXSLTransform):
2261         (DocumentImpl::setTransformSourceDocument):
2262         * khtml/xml/dom_docimpl.h:
2263         (DOM::DocumentImpl::setTransformSource):
2264         (DOM::DocumentImpl::transformSource):
2265         (DOM::DocumentImpl::transformSourceDocument):
2266         * khtml/xml/dom_xmlimpl.cpp:
2267         (DOM::ProcessingInstructionImpl::checkStyleSheet):
2268         * khtml/xml/dom_xmlimpl.h:
2269         (DOM::ProcessingInstructionImpl::isXSL):
2270         * khtml/xml/xml_tokenizer.cpp:
2271         (khtml::matchFunc):
2272         (khtml::openFunc):
2273         (khtml::createQStringParser):
2274         (khtml::XMLTokenizer::processingInstruction):
2275         (khtml::XMLTokenizer::finish):
2276         (khtml::XMLTokenizer::setTransformSource):
2277         * khtml/xml/xml_tokenizer.h:
2278         (khtml::Tokenizer::setTransformSource):
2279         * khtml/xml/xsl_stylesheetimpl.cpp: Removed.
2280         * khtml/xml/xsl_stylesheetimpl.h: Removed.
2281         * khtml/xsl/xsl_stylesheetimpl.cpp: Added.
2282         (DOM::XSLStyleSheetImpl::XSLStyleSheetImpl):
2283         (DOM::XSLStyleSheetImpl::~XSLStyleSheetImpl):
2284         (DOM::XSLStyleSheetImpl::isLoading):
2285         (DOM::XSLStyleSheetImpl::checkLoaded):
2286         (DOM::XSLStyleSheetImpl::docLoader):
2287         (DOM::XSLStyleSheetImpl::parseString):
2288         * khtml/xsl/xsl_stylesheetimpl.h: Added.
2289         (DOM::XSLStyleSheetImpl::isXSLStyleSheet):
2290         (DOM::XSLStyleSheetImpl::type):
2291         (DOM::XSLStyleSheetImpl::ownerDocument):
2292         (DOM::XSLStyleSheetImpl::document):
2293         (DOM::XSLStyleSheetImpl::clearDocument):
2294         * khtml/xsl/xslt_processorimpl.cpp: Added.
2295         (DOM::m_sourceDocument):
2296         (DOM::XSLTProcessorImpl::~XSLTProcessorImpl):
2297         (DOM::XSLTProcessorImpl::transformDocument):
2298         (DOM::bufferWrite):
2299         (DOM::XSLTProcessorImpl::addToResult):
2300         (DOM::XSLTProcessorImpl::documentFromXMLDocPtr):
2301         * khtml/xsl/xslt_processorimpl.h: Added.
2302
2303 2004-08-16  Maciej Stachowiak  <mjs@apple.com>
2304
2305         Fix build.
2306
2307         * khtml/khtml_part.cpp:
2308         (KHTMLPart::isImmediateRedirectPending):
2309
2310 2004-08-16  Richard Williamson   <rjw@apple.com>
2311
2312         Fixed <rdar://problem/3704339> Context2D forces integer positions in drawImage
2313
2314         Use floats instead of ints to draw images.
2315
2316         Reviewed by Ken.
2317
2318         * khtml/ecma/kjs_html.cpp:
2319         (KJS::Context2DFunction::tryCall):
2320         * kwq/KWQPainter.h:
2321         * kwq/KWQPainter.mm:
2322         (QPainter::drawPixmap):
2323         (QPainter::drawFloatPixmap):
2324
2325 2004-08-13  Maciej Stachowiak  <mjs@apple.com>
2326
2327         Reviewed by Darin.
2328
2329         - fixed <rdar://problem/3752509> Pop up windows not showing up within SAP's BW Module (changing location.href on new window created by window.open)
2330         
2331         (actually the previous fix for this bug was mostly correct, but
2332         this additional change is needed to avoid the regression in
2333         <rdar://problem/3751025> REGRESSION: website rejects Safari 125.9
2334         as "need to upgrade to IE 6", but didn't reject 125.8
2335
2336         So if merging for a software update, make sure to include both
2337         this and the previous fix.
2338         
2339         * khtml/html/htmltokenizer.cpp:
2340         (khtml::HTMLTokenizer::write): When there is an immediate reidrect pending,
2341         make sure to stop tokenizing, because we need to make sure no further
2342         script tags are processed beyond the one that triggered the redirect.
2343         * khtml/khtml_part.cpp:
2344         (KHTMLPart::isImmediateRedirectPending): New method to allow
2345         checking if a redirect is pending.
2346         * khtml/khtml_part.h:
2347
2348 2004-08-15  David Hyatt  <hyatt@apple.com>
2349
2350         - fixed <rdar://problem/3760508> REGRESSION (154-155): No text in textarea
2351
2352         Fix the blank textarea problem by ensuring that any change to a <textarea>'s DOM children causes the form control
2353         to resync with the DOM.  This behavior matches WinIE.
2354         
2355         Reviewed by kocienda
2356
2357         * khtml/html/html_formimpl.cpp:
2358         (HTMLTextAreaElementImpl::childrenChanged):
2359         * khtml/html/html_formimpl.h:
2360
2361 2004-08-13  Trey Matteson  <trey@apple.com>
2362
2363         3761794 Slider doesn't call onmouseup handler
2364
2365         Reviewed by Hyatt
2366
2367         * khtml/rendering/render_form.cpp:
2368         (RenderSlider::RenderSlider):  Listen for signal.
2369         (RenderSlider::slotClicked):  Pass to superclass.
2370         * khtml/rendering/render_form.h:
2371         * kwq/KWQSlider.h:
2372         * kwq/KWQSlider.mm:
2373         (-[KWQSlider mouseDown:]):  Generate mouseUp and clicked events,
2374         since AK consumes the mouseUp event in a modal tracking loop.
2375         (QSlider::QSlider):  Make signal.
2376         (QSlider::clicked):  Send signal.
2377
2378 2004-08-12  Trey Matteson  <trey@apple.com>
2379
2380         3761329 - query result links all dead in ingrammicro.com (sometimes)
2381         3761328 - links in some docs dead when doc is loaded from WebArchive
2382
2383         Make sure to get part to completed state when end is called,
2384         even if we have no doc.  See WebKit changelog for more info.
2385
2386         Reviewed by Richard and Darin.
2387
2388         * khtml/khtml_part.cpp:
2389         (KHTMLPart::end):
2390
2391 2004-08-13  Trey Matteson  <trey@apple.com>
2392
2393         3761098 - red dotted underline for misspelled words shows up in drag image
2394
2395         Reviewed by Ken
2396
2397         * khtml/rendering/render_text.cpp:
2398         (RenderText::paint):  Don't draw misspelling when creating selection image.
2399
2400 2004-08-12  Richard Williamson   <rjw@apple.com>
2401
2402         Bring npruntime.h and friends closer to compliance with
2403         latest spec.
2404
2405         Reviewed by Maciej.
2406
2407         * kwq/KWQKHTMLPart.mm:
2408         (KWQKHTMLPart::windowScriptNPObject):
2409
2410 2004-08-12  Maciej Stachowiak  <mjs@apple.com>
2411
2412         Reviewed by Richard.
2413
2414         <rdar://problem/3245706> URLs with backslashes instead of slashes work on WinIE; should work on Safari (SAP)
2415         <rdar://problem/3506429> <BASE> tag containing backslash is breaking images with absolute URLs
2416         
2417         * kwq/KWQKURL.mm:
2418         (substituteBackslashes): Helper method
2419         (KURL::KURL): If the URL contains any backslashes, substitute all
2420         that appear before the query or fragment.
2421
2422 2004-08-12  Ken Kocienda  <kocienda@apple.com>
2423
2424         Reviewed by Chris
2425
2426         Fix for this bug:
2427         
2428         <rdar://problem/3761014> command-down-arrow takes you to start of document instead of end of document
2429
2430         * khtml/xml/dom_selection.cpp:
2431         (DOM::Selection::modifyExtendingRightForward): Code used to assume, incorrectly, that index 1 of the
2432         document element was beyond the last node in the document. But this is not true, since the document
2433         element is the HTML element (generally). Instead, move to the index equal to the number of children
2434         of the document element. This puts us past everything.
2435         (DOM::Selection::modifyMovingRightForward): Ditto.
2436
2437 2004-08-12  Ken Kocienda  <kocienda@apple.com>
2438
2439         Reviewed by Trey
2440
2441         Fix for this bug:
2442         
2443         <rdar://problem/3695446> shift-down-arrow on last line of editable text should select to end of document
2444         
2445         Detect when current position is on first or last line and move to the
2446         start or end of that line, respectively.
2447
2448         * khtml/xml/dom_position.cpp:
2449         (DOM::Position::previousLinePosition)
2450         (DOM::Position::nextLinePosition)
2451
2452 === Safari-156 ===
2453
2454 2004-08-12  Ken Kocienda  <kocienda@apple.com>
2455
2456         Reviewed by Darin
2457
2458         Some consolidation in style application code.
2459
2460         * khtml/editing/htmlediting_impl.cpp:
2461         (khtml::StyleChange::StyleChange): Made this a full-on class and added a couple of 
2462         members and a constructors to make a StyleChange from a CSSStyleDeclarationImpl, as
2463         well as from a CSSStyleDeclarationImpl and a Position.
2464         (khtml::StyleChange::init): Common init function for StyleChange constructors.
2465         (khtml::StyleChange::currentlyHasStyle): Moved this here from ApplyStyleCommandImpl.
2466         (khtml::CompositeEditCommandImpl::applyTypingStyle): Tweak to adjust to new StyleChange
2467         interface.
2468         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Ditto.
2469         * khtml/editing/htmlediting_impl.h:
2470         (khtml::StyleChange::StyleChange):
2471         (khtml::StyleChange::cssStyle): New accessor.
2472         (khtml::StyleChange::applyBold): Ditto.
2473         (khtml::StyleChange::applyItalic): Ditto.
2474         * khtml/xml/dom_position.cpp:
2475         (DOM::Position::computedStyle): New helper.
2476         * khtml/xml/dom_position.h: Ditto.
2477
2478 2004-08-12  Ken Kocienda  <kocienda@apple.com>
2479
2480         Reviewed by Darin
2481
2482         Fix for this bug:
2483         <rdar://problem/3751098> HTML email has one set of SPAN tags per character in the message
2484         
2485         Progress on this bug:
2486         <rdar://problem/3755562> Typing styles do not use same tag application conventions as font and color panel
2487
2488         * khtml/editing/htmlediting_impl.cpp:
2489         (khtml::CompositeEditCommandImpl::applyTypingStyle): Name changed from createTypingStyleElement.
2490         Also, interface changed to take the node to which the typing style is to be applied. 
2491         This makes it easier to apply what may be up to three levels of nested tags to get the 
2492         desired style (<B>, <I>, and <SPAN STYLE="">).
2493         Also, Borrow some of the style change smarts from ApplyStyleCommandImpl to use bold and
2494         italic tags for applying styles when that is apprpriate. This creates on opportunity to
2495         factor the code to do this so that this function and the ApplyStyleCommandImpl class can
2496         share the implementation. I will follow up with a change to do that after landing this
2497         change. Some future code factoring could be done here to bring together some similar code
2498         into one place.
2499         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Add comment about code factoring work.
2500         (khtml::ApplyStyleCommandImpl::computeStyleChange): StyleChange struct no longer a member of the
2501         ApplyStyleCommandImpl class. CompositeEditCommandImpl needs it now in its applyTypingStyle()
2502         function.
2503         (khtml::InputNewlineCommandImpl::doApply): Pass along node to style to applyTypingStyle.
2504         (khtml::InputTextCommandImpl::prepareForTextInsertion): Ditto.
2505         * khtml/editing/htmlediting_impl.h:
2506         (khtml::StyleChange::StyleChange): Pull this struct out of ApplyStyleCommandImpl so 
2507         CompositeEditCommandImpl can use it.
2508         * khtml/khtml_part.cpp:
2509         (KHTMLPart::notifySelectionChanged): Always clear typing style when the selection
2510         changes, not only when closing typing. This fixes 3751098.
2511         
2512         These three tests actually had results that treated the buggy behavior as correct!
2513         
2514         * layout-tests/editing/style/style-3681552-fix-001-expected.txt
2515         * layout-tests/editing/style/style-3681552-fix-002-expected.txt
2516         * layout-tests/editing/style/typing-style-002-expected.txt
2517
2518 2004-08-12  Darin Adler  <darin@apple.com>
2519
2520         Reviewed by Ken.
2521
2522         - fixed <rdar://problem/3740485> Repro crash involving replacing content that includes form field
2523
2524         * kwq/KWQLineEdit.mm: (QLineEdit::selectAll): Since this function calls selectText: which has a side
2525         effect of making the text field be first responder, call to bridge first to make it first responder.
2526         The bridge version lets WebHTMLView know we are changing the responder, avoiding some unpleasantness
2527         because it sets the "changing focus programmatically" flag. Without that flag set, we were getting
2528         an additional setFocusNode(0) call, which is unnecessary and incorrect.
2529
2530 2004-08-12  Darin Adler  <darin@apple.com>
2531
2532         Reviewed by Ken.
2533
2534         - fixed <rdar://problem/3758756> copying text selected with down arrow results in all text to end of document
2535
2536         * khtml/xml/dom2_rangeimpl.h: Make startNode and pastEndNode public.
2537         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::pastEndNode): Fix bug where this would return
2538         one node too far in the case where the end container was not a text node.
2539
2540         * khtml/xml/dom_nodeimpl.cpp:
2541         (NodeImpl::recursive_toHTMLWithOptions): Rewrite loop, using startNode and pastEndNode,
2542         to fix bug where it would run past the end node, including too many nodes in the generated
2543         HTML. Nice side benefit: easier to read the code.
2544
2545 2004-08-11  Chris Blumenberg  <cblu@apple.com>
2546
2547         Fixed: <rdar://problem/3758216> PARENTAL: buttons on parental controls page only work once
2548
2549         Reviewed by john.
2550
2551         * kwq/KWQKHTMLPart.mm:
2552         (KWQKHTMLPart::submitForm): prevent a form from being submitted more than once only if it uses a scheme of http or https
2553
2554 2004-08-11  Darin Adler  <darin@apple.com>
2555
2556         Reviewed by Ken.
2557
2558         - fixed <rdar://problem/3715878> 8A162: connect.apple.com password field showed in cleartext
2559
2560         * kwq/KWQTextField.mm: (-[KWQSecureTextField textDidEndEditing:]):
2561         Enhanced workaround for shifting focus from one secure text field to another so that it works
2562         even for the case of shifting focus from a secure text field back to itself.
2563
2564 2004-08-11  Ken Kocienda  <kocienda@apple.com>
2565
2566         Missed adding this file before.
2567
2568         * kwq/KWQTextUtilities.mm: Added.
2569         (KWQFindNextWordFromIndex):
2570
2571 2004-08-11  Ken Kocienda  <kocienda@apple.com>
2572
2573         Reviewed by Trey
2574
2575         Efficiency improvements on string manipulations in these two new function
2576         implementations. Use the versions of QString append/prepend that take
2577         (QChar *c, uint length) instead of creating new strings each time.
2578
2579         * khtml/xml/dom_position.cpp:
2580         (DOM::Position::previousWordPosition): Changed, as described above.
2581         (DOM::Position::nextWordPosition): Ditto.
2582
2583 2004-08-11  Ken Kocienda  <kocienda@apple.com>
2584
2585         Reviewed by Darin
2586
2587         Fix for this bug:
2588         <rdar://problem/3675812> Moving a word at a time does not use the correct conception of "word"
2589         
2590         I have implemented versions of previousWordPosition and nextWordPosition that are now
2591         different than previousWordBoundary and nextWordBoundary. The behavior of the new
2592         functions attempts to match what Cocoa does as closely as it can. Let the bug filing begin! 
2593
2594         * WebCore.pbproj/project.pbxproj: Added KWQTextUtilities.mm
2595         * khtml/misc/helper.cpp:
2596         (khtml::nextWordFromIndex): Glue to call through to KWQFindNextWordFromIndex.
2597         * khtml/misc/helper.h: Declare the function above.
2598         * khtml/misc/khtml_text_operations.cpp: Added SimplifiedBackwardsTextIterator class.
2599         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator): New
2600         (khtml::SimplifiedBackwardsTextIterator::advance): Ditto.
2601         (khtml::SimplifiedBackwardsTextIterator::handleTextNode): Ditto.
2602         (khtml::SimplifiedBackwardsTextIterator::handleReplacedElement): Ditto.
2603         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode): Ditto.
2604         (khtml::SimplifiedBackwardsTextIterator::exitNode): Ditto.
2605         (khtml::SimplifiedBackwardsTextIterator::emitCharacter): Ditto.
2606         (khtml::SimplifiedBackwardsTextIterator::range): Ditto.
2607         * khtml/misc/khtml_text_operations.h:
2608         (khtml::SimplifiedBackwardsTextIterator::atEnd): Ditto.
2609         (khtml::SimplifiedBackwardsTextIterator::length): Ditto.
2610         (khtml::SimplifiedBackwardsTextIterator::characters): Ditto.
2611         * khtml/xml/dom_position.cpp:
2612         (DOM::Position::previousWordBoundary): Updated to gather appropriate text and call through to
2613         AppKit to perform the same calculations NSText uses.
2614         (DOM::Position::nextWordBoundary): Ditto.
2615         (DOM::Position::previousWordPosition): Unrelated change to fix case where the function could get "stuck".
2616         (DOM::Position::nextWordPosition): Ditto
2617         (DOM::Position::equivalentDeepPosition): Changed to look backwards if the position's offset is equal
2618         to the number of child nodes it has. This handles more cases correctly, like when the position is
2619         gives as one beyond the end of a document element's last child.
2620         * kwq/KWQTextUtilities.h: Declared KWQFindNextWordFromIndex.
2621         * kwq/KWQTextUtilities.mm: Added.
2622         (KWQFindNextWordFromIndex): New function.
2623
2624 2004-08-11  Ken Kocienda  <kocienda@apple.com>
2625
2626         Reviewed by John
2627
2628         Fix for this bug:
2629         
2630         <rdar://problem/3732702> crash in CSSComputedStyleDeclarationImpl running devtools.com editing sample code
2631
2632         * khtml/khtml_part.cpp:
2633         (KHTMLPart::selectionComputedStyle): Added a null check.
2634
2635 2004-08-10  Darin Adler  <darin@apple.com>
2636
2637         Reviewed by Trey.
2638
2639         - fixed <rdar://problem/3710123> Loading iframe that replaces content in the parent document crashes Safari
2640
2641         I fixed three problems:
2642
2643             1) script interpreter destroyed while it was interpreting scripts, caused random havoc
2644             2) code trying to get to view after view was detached from part, caused nil-deref
2645             3) signals sent to parent after child was no longer in the parent's frames list, caused nil-deref
2646
2647         Now the test page works fine. Hope the real sites do too.
2648
2649         * khtml/khtml_part.h: Add connectChild and disconnectChild helper functions (private).
2650         * khtml/khtml_part.cpp:
2651         (KHTMLPart::clear): Call disconnectChild on each frame as we detach it (see below).
2652         (KHTMLPart::end): Ref the part at the start, and deref the part at the end, of this function.
2653         Otherwise, we can end up destroying the part, and hence the interpreter, inside a script that
2654         the interpreter itself is running.
2655         (KHTMLPart::slotFinishedParsing): Add another check for a nil m_view, after the call to
2656         checkCompleted.
2657         (KHTMLPart::checkCompleted): Remove bogus if statement with empty body.
2658         (KHTMLPart::processObjectRequest): Call disconnectChild to disconnect the child <-> parent signals of the
2659         old child that the new one is replacing, and connectChild to connect the signals (nicer factoring).
2660         (KHTMLPart::slotChildCompleted): Fixed up a confusing boolean if/expression to be simpler. Not related to
2661         the bug fix, but an earlier version of the fix had changes in this function.
2662         (KHTMLPart::connectChild): Added. Connects the appropriate signals for a child frame.
2663         (KHTMLPart::disconnectChild): Added. Disconnects the same signals that connectChild connects.
2664
2665         * kwq/KWQKHTMLPart.mm: (KHTMLPart::frameDetached): Added a call to disconnectChild before removing the
2666         child from the frames list.
2667
2668 2004-08-09  Maciej Stachowiak  <mjs@apple.com>
2669
2670         Reviewed by Trey.
2671
2672         WebCore part of:
2673
2674         - made basic marked text highlighting work to complete basic level of <rdar://problem/3704359> input method support not yet implemented for HTML editing
2675
2676         * kwq/WebCoreBridge.mm:
2677         (-[WebCoreBridge setMarkedDOMRange:]): Added this new call to support storing
2678         a marked range in WebCore. The provided DOMRange must start and end in the same
2679         node, which must be a text node.
2680         (-[WebCoreBridge markedDOMRange]): New call to get the marked range. 
2681         (-[WebCoreBridge clearMarkedDOMRange]): New call to clear the marked range.
2682         * kwq/WebCoreBridge.h: Prototype new methods.
2683         * kwq/KWQKHTMLPart.mm:
2684         (KWQKHTMLPart::markedRange): Implementation of WebCore call above.
2685         (KWQKHTMLPart::setMarkedRange): Implementation of WebCore call above -
2686         store the marked range, and repaint new and old nodes if needed.
2687         (KWQKHTMLPart::clear): Clear marked range.
2688         * kwq/KWQKHTMLPart.h: Prototype new methods.
2689         * khtml/rendering/render_text.cpp:
2690         (InlineTextBox::paintMarkedTextBackground): New method to paint the background
2691         for marked text, modeled on paintSelection.
2692         (RenderText::paint): Optionally handle painting marked text
2693         background as well as selection background in the marked text
2694         pass.
2695         * khtml/rendering/render_text.h: Prototype new method.
2696
2697 2004-08-10  Darin Adler  <darin@apple.com>
2698
2699         Reviewed by Dave.
2700
2701         - switch PCRE to do UTF-16 directly instead of converting to/from UTF-8 for speed
2702
2703         * kwq/KWQRegExp.mm:
2704         (QRegExp::KWQRegExpPrivate::compile): Null-terminate the pattern and pass it.
2705         (QRegExp::match): Use the 16-bit string directly, no need to convert to UTF-8.
2706
2707 2004-08-10  Darin Adler  <darin@apple.com>
2708
2709         Reviewed by Ken.
2710
2711         - minor cleanup
2712
2713         * khtml/editing/jsediting.cpp: Capitalize command names to match Windows.
2714         The dictionary lookup is case insensitive.
2715
2716         * kwq/KWQFoundationExtras.h: Remove inaccurate comment.
2717
2718 2004-08-10  Trey Matteson  <trey@apple.com>
2719
2720         3757094 - crash spell checking after a paste
2721
2722         Reviewed by Ken
2723
2724         * khtml/rendering/render_text.cpp:
2725         (InlineTextBox::paintSelection):  Add nil check.
2726
2727 2004-08-09  Trey Matteson  <trey@apple.com>
2728
2729         3756195 - spell checking leaves misspelling marker behind after bad word is deleted
2730         ... and other follow-on spell check fixes
2731
2732         Reviewed by Ken
2733
2734         * khtml/rendering/render_text.cpp:
2735         (InlineTextBox::paintMarker):  Close inspection shows we were drawing the 
2736         misspelling marker one pixel lower than AK, and one pixel outside the selection
2737         rect we draw, in the case of Times-16.  So move it up one.  Still not an exact
2738         match for AK, but less bad.
2739         * khtml/xml/dom_docimpl.cpp:
2740         (DocumentImpl::removeMarker):  Track whether we make any changes, so we only
2741         repaint if something actually changed.
2742         (DocumentImpl::removeAllMarkers):  New utility.
2743         (DocumentImpl::removeAllMarkers):  Use clear() instead of (errant)
2744         hand-rolled loop to empty array.
2745         (DocumentImpl::shiftMarkers):  Track whether we make any changes, so we only
2746         repaint if something actually changed.
2747         * khtml/xml/dom_docimpl.h:
2748         * khtml/xml/dom_textimpl.cpp:
2749         (CharacterDataImpl::deleteData):  Along with shifting existing markers around,
2750         remove any markers in the deleted range.  Fixes 3756195.
2751         (CharacterDataImpl::replaceData):  Ditto for the replaced range.
2752         * kwq/KWQKHTMLPart.mm:
2753         (KWQKHTMLPart::updateSpellChecking): comment
2754
2755 2004-08-08  Trey Matteson  <trey@apple.com>
2756
2757         3745023 - Safari crashes trying to access anchor while downloading
2758
2759         I bet this is behind a few other crashers as well.  In this bug the start of the
2760         download leaves a KWQPageState hanging around, and when that is freed it damages
2761         the part and view.  If you're still using that page, you're dead.
2762
2763         The fix is to properly invalidate the PageState when we receive an error before
2764         reaching WebFrameCommitted state.  Normally this happens when a page is reheated
2765         from the PageState, but in this case we never manage to leave the page to begin
2766         with, although we've already created the PageState.
2767
2768         Other errors besides the synthetic one download generates would have caused similar
2769         crashing.  Another example would be clicking on a second link before the load
2770         caused by clicking on the first link reached committed state.
2771
2772         Reviewed by Richard
2773
2774         * kwq/WebCoreBridge.h:
2775         * kwq/WebCoreBridge.mm:
2776         (-[WebCoreBridge didNotOpenURL:pageCache:]):  Invalidate the pageCache state
2777         when a load doesn't get off the ground.
2778
2779 2004-08-06  Ken Kocienda  <kocienda@apple.com>
2780
2781         Reviewed by Maciej
2782
2783         Finish off spellchecking support to HTML editing. Includes work to
2784         enable continuous spellchecking.
2785
2786         * khtml/editing/htmlediting_impl.cpp:
2787         (khtml::EditCommandImpl::markMisspellingsInSelection): Basically, a one-liner convenience to
2788         make the call over to the KWQKHTMLPart.
2789         (khtml::ReplaceSelectionCommandImpl::doApply): Did some rearranging of code so that the
2790         inserted content can be spell-checked. The function is basically the same, except for
2791         the addition of calls to markMisspellingsInSelection.
2792         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): New function. Takes a look at the
2793         selection that results after typing and determines whether it needs to spellcheck. 
2794         Since the word containing the current selection is never marked, this does a check to
2795         see if typing made a new word that is not in the current selection. Basically, you
2796         get this by being at the end of a word and typing a space.
2797         (khtml::TypingCommandImpl::typingAddedToOpenCommand): Call markMisspellingsAfterTyping.
2798         * khtml/editing/htmlediting_impl.h: Add new function declarations.
2799          * khtml/khtml_part.cpp:
2800         (KHTMLPart::setSelection): Since spell checks are updated when the selection changes, 
2801         and every selection change passes through here, this is a good place to put the call 
2802         to the spellchecker.
2803         * khtml/rendering/render_text.cpp:
2804         (InlineTextBox::paintMarker): Remove temporary misspelling line drawing code. Replace with
2805         call that does AppKit-style drawing. Fix up some comments.
2806         * khtml/xml/dom_docimpl.cpp:
2807         (DocumentImpl::addMarker): Repaint the node that had the marker added. This makes it show 
2808         up on setting it.
2809         (DocumentImpl::removeMarker): Ditto.
2810         (DocumentImpl::removeAllMarkers): New function. Convenience for clearing all markers.
2811         Used when not in continuous spellchecking mode.
2812         (DocumentImpl::shiftMarkers): Moves markers in response to changes in a node's contents.
2813         This shifts the marker offsets by a given amount. This keeps the markers in the right
2814         place when a user types in a node with markers already set on it.
2815         * khtml/xml/dom_docimpl.h: Added new functions. Removed unnecessary enum qualifier from some
2816         declarations.
2817         * khtml/xml/dom_position.cpp:
2818         (DOM::Position::previousWordBoundary): This function was susceptible to endless loops...and
2819         needlessly so. Basically, if the current position is at a word boundary, run the code again
2820         to find the previous word boundary.
2821         (DOM::Position::nextWordBoundary): Same as above, but for next word boundary.
2822         * khtml/xml/dom_textimpl.cpp:
2823         (CharacterDataImpl::setData): Call shiftMarkers to update markers when this node changes.
2824         (CharacterDataImpl::insertData): Ditto.
2825         (CharacterDataImpl::deleteData): Ditto.
2826         (CharacterDataImpl::replaceData): Ditto.
2827         * kwq/KWQKHTMLPart.h:
2828         * kwq/KWQKHTMLPart.mm:
2829         (KWQKHTMLPart::advanceToNextMisspelling):
2830         (KWQKHTMLPart::markMisspellingsInSelection):
2831         (KWQKHTMLPart::updateSpellChecking):
2832         (KWQKHTMLPart::respondToChangedSelection):
2833         * kwq/KWQPainter.h:
2834         * kwq/KWQPainter.mm:
2835         (QPainter::drawLineForMisspelling): New function. Call over to WebKit to do the drawing.
2836         * kwq/WebCoreBridge.h:
2837         * kwq/WebCoreBridge.mm:
2838         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Pass markMisspellings flag to
2839         setSelection call. 
2840         * kwq/WebCoreTextRenderer.h:
2841
2842 === Safari-155 ===
2843
2844 2004-08-05  David Hyatt  <hyatt@apple.com>
2845
2846         Fix for 3752542, stack overflow that crashes Safari at www.dr.dk.  This bug is a regression caused by a fix that
2847         attempted to repair <caption> behavior to make it behave like Panther.  This fix was incorrect, and in addition
2848         even our <caption> behavior on Panther was incorrect.
2849
2850         The patch that fixes this bug also makes <caption> handling work when <caption>s are contained inside a <td>, a <tr>,
2851         a <th>, or various table section tags (<tbody>, <tfoot>, <thead>).  The <caption> is pulled out and inserted just before
2852         the relevant ancestor table section.  This behavior matches other browsers.
2853         
2854         Reviewed by mjs
2855
2856         * khtml/html/htmlparser.cpp:
2857         (KHTMLParser::insertNode):
2858
2859 2004-08-04  David Hyatt  <hyatt@apple.com>
2860
2861         The top-level XSL sheet is now loaded and shows up in the activity window.  It is not yet parsed.
2862         
2863         Reviewed by kocienda
2864
2865         * WebCore.pbproj/project.pbxproj:
2866         * khtml/css/css_base.h:
2867         (DOM::StyleBaseImpl::isXSLStyleSheet):
2868         * khtml/css/css_stylesheetimpl.cpp:
2869         (CSSStyleSheetImpl::CSSStyleSheetImpl):
2870         * khtml/css/css_stylesheetimpl.h:
2871         (DOM::StyleSheetImpl::isLoading):
2872         * khtml/misc/loader.cpp:
2873         * khtml/xml/dom_xmlimpl.cpp:
2874         (DOM::ProcessingInstructionImpl::ProcessingInstructionImpl):
2875         (DOM::ProcessingInstructionImpl::checkStyleSheet):
2876         (DOM::ProcessingInstructionImpl::sheet):
2877         (DOM::ProcessingInstructionImpl::isLoading):
2878         (DOM::ProcessingInstructionImpl::setStyleSheet):
2879         * khtml/xml/dom_xmlimpl.h:
2880
2881 2004-08-04  David Hyatt  <hyatt@apple.com>
2882
2883         Add XSL Stylesheets to the WebCore cache.
2884         
2885         Reviewed by kocienda
2886
2887         * khtml/misc/loader.cpp:
2888         (CachedXSLStyleSheet::CachedXSLStyleSheet):
2889         (CachedXSLStyleSheet::ref):
2890         (CachedXSLStyleSheet::deref):
2891         (CachedXSLStyleSheet::data):
2892         (CachedXSLStyleSheet::checkNotify):
2893         (CachedXSLStyleSheet::error):
2894         (DocLoader::requestXSLStyleSheet):
2895         (Cache::requestXSLStyleSheet):
2896         (Cache::getStatistics):
2897         * khtml/misc/loader.h:
2898         (khtml::CachedObject::):
2899         (khtml::CachedXSLStyleSheet::sheet):
2900         (khtml::CachedXSLStyleSheet::schedule):
2901
2902 2004-08-03  Ken Kocienda  <kocienda@apple.com>
2903
2904         Reviewed by Hyatt
2905
2906         Changes to improve our handling of object tags during editing, including
2907         fixing this bug:
2908         
2909         <rdar://problem/3744533> Problem editing <OBJECT> elements displayed by WebPlugIns 
2910
2911         Part of the fix for this bug involves removing the close() function from render objects.
2912         It was decided that this code was no longer needed, as the work it did could be moved
2913         to other, more modern, places.
2914
2915         Fixed this bug:
2916         
2917         <rdar://problem/3748537> crash due to nil node passed into parentNode in computeTypingStyle deleting text
2918
2919         Finally, I filed and fixed this bug I discovered while fixing the one above:
2920         
2921         <rdar://problem/3749338> Select-all + delete leaves editing view without blinking caret
2922
2923         * khtml/editing/htmlediting_impl.cpp:
2924         (khtml::DeleteSelectionCommandImpl::computeTypingStyle): Fix for 3748537. Put in some more null
2925         checks. Bail, returning 0 for typing style if any null checks yield a null.
2926         (khtml::DeleteSelectionCommandImpl::doApply): Fix for 3749338. A removeNodeAndPrune call may wind
2927         up deleting the node where we calculated that we wanted to put the selection after deleting.
2928         If this happens, move this ending selection to a sensible alternative.
2929         (khtml::RemoveNodeAndPruneCommandImpl::doApply): Call previousNodeConsideringAtomicNodes instead 
2930         of traversePreviousNode when doing the prune.
2931         * khtml/html/html_objectimpl.cpp:
2932         (HTMLObjectElementImpl::attach): Part of the fix for 3744533.
2933         (HTMLObjectElementImpl::recalcStyle): Change old strcmp check for type of renderer to be a call
2934         to canRenderImageType.
2935         (HTMLObjectElementImpl::childrenChanged): New function. Helps to keep object tags up to date 
2936         as their children change. This also will help to make object tags respond properly to having their
2937         params changed by DOM calls.
2938         * khtml/html/html_objectimpl.h: Cosmetic change.
2939         * khtml/html/htmlparser.cpp:
2940         (KHTMLParser::insertNode): Remove call to obsolete closeRenderer() function.
2941         (KHTMLParser::popOneBlock): Ditto.
2942         * khtml/rendering/render_block.cpp:
2943         (khtml::RenderBlock::makeChildrenNonInline): Remove call to obsolete close() function.
2944         * khtml/rendering/render_container.cpp:
2945         (RenderContainer::updatePseudoChild): Ditto.
2946         * khtml/rendering/render_form.cpp: Remove obsolete close() function.
2947         * khtml/rendering/render_form.h: Ditto.
2948         * khtml/rendering/render_frames.cpp: Ditto.
2949         * khtml/rendering/render_frames.h: Ditto.
2950         * khtml/rendering/render_inline.cpp:
2951         (RenderInline::splitFlow): Remove calls to obsolete close() function.
2952         * khtml/rendering/render_object.h: Remove obsolete close() function.
2953         * khtml/rendering/render_table.cpp:
2954         (RenderTableCell::layout): Ditto.
2955         * khtml/rendering/render_table.h: Ditto.
2956         * khtml/xml/dom_docimpl.cpp:
2957         (DocumentImpl::closeInternal): Remove call to obsolete close() function.
2958         * khtml/xml/dom_nodeimpl.cpp: Remove obsolete m_rendererNeedsClose initialization.
2959         (NodeImpl::NodeImpl): Remove obsolete closeRenderer() function.
2960         (NodeImpl::attach): Remove call to obsolete close() function.
2961         (NodeImpl::isAtomicNode): New function. Helps to fix 3744533. Determines if a node should
2962         be treated as an atomic node for the purposes of editing.
2963         (NodeImpl::previousNodeConsideringAtomicNodes): New helper to traverse tree taking atomic nodes
2964         into account.
2965         (NodeImpl::nextNodeConsideringAtomicNodes): Ditto.
2966         (NodeImpl::previousLeafNode): Now calls nextNodeConsideringAtomicNodes to iterate. This helps to 
2967         prevent deleting PARAM tag portions of object tags erroneously.
2968         (NodeImpl::nextLeafNode): Ditto.
2969         * khtml/xml/dom_nodeimpl.h: Removed m_rendererNeedsClose bit. Added declarations for new functions.
2970         * khtml/xml/dom_position.cpp:
2971         (DOM::Position::equivalentDeepPosition): Now takes atomic nodes into account as it drills down into the
2972         tree.
2973         * khtml/xml/xml_tokenizer.cpp:
2974         (khtml::XMLTokenizer::endElement): Remove call to obsolete closeRenderer() function.
2975
2976 2004-08-03  David Hyatt  <hyatt@apple.com>
2977
2978         Add the deprecated text/xsl MIME type (introduced by Internet Explorer 5) as an acceptable MIME type for XML
2979         documents.
2980         
2981         Reviewed by john
2982
2983         * khtml/ecma/xmlhttprequest.cpp:
2984         (KJS::XMLHttpRequest::getValueProperty):
2985         * khtml/khtml_part.cpp:
2986         (KHTMLPart::begin):
2987         * khtml/misc/loader.cpp:
2988         (CachedXBLDocument::CachedXBLDocument):
2989
2990 2004-08-03  Maciej Stachowiak  <mjs@apple.com>
2991
2992         Reviewed by Ken.
2993
2994         - remove assertions that asserted text is non-empty, just avoid
2995         doing anything for the empty case; this is needed because input
2996         methods like to insert empty text in various cases.
2997
2998         * khtml/editing/htmlediting_impl.cpp:
2999         (khtml::InsertTextCommandImpl::InsertTextCommandImpl):
3000         (khtml::InsertTextCommandImpl::doApply):
3001         (khtml::InsertTextCommandImpl::doUnapply):
3002
3003 2004-08-03  Darin Adler  <darin@apple.com>
3004
3005         Reviewed by Ken.
3006
3007         - fixed <rdar://problem/3740937> ER: A way to turn a DOMRange into text (equivalent of -innerText)
3008
3009         * khtml/xml/dom2_rangeimpl.h: Added text function. Like innerText, but on a range.
3010         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::text): Added.
3011
3012         * kwq/DOM.mm: (-[DOMRange _text]): Added. Calls DOM::RangeImpl::text.
3013         * kwq/DOMPrivate.h: Added.
3014
3015         * WebCore.pbproj/project.pbxproj: Added DOMPrivate.h, an internal header (private in WebKit, internal here).
3016
3017 2004-08-02  John Sullivan  <sullivan@apple.com>
3018
3019         Reviewed by Darin.
3020         
3021         WebCore part of fix for <rdar://problem/3631868> NSToolbar adoption: 
3022         Tab key should cycle around toolbar and page content
3023
3024         * kwq/WebCoreBridge.mm:
3025         (-[WebCoreBridge nextKeyViewInsideWebFrameViews]):
3026         Made this method start looking from the current focus node. This won't
3027         affect any existing callers because there were no existing callers.
3028         (-[WebCoreBridge previousKeyViewInsideWebFrameViews]):
3029         ditto
3030
3031 2004-08-02  David Hyatt  <hyatt@apple.com>
3032
3033         Create a #define for XSLT support that at the moment will only be enabled on Tiger.
3034         
3035         Reviewed by kocienda
3036
3037         * WebCorePrefix.h:
3038
3039 2004-08-02  Ken Kocienda  <kocienda@apple.com>
3040
3041         Reviewed by Hyatt
3042
3043         Fix for this bug:
3044         
3045         <rdar://problem/3747945> Deleting replaced element can cause crash
3046
3047         * khtml/xml/dom_selection.cpp:
3048         (DOM::Selection::layoutCaret): The crux of the problem is that
3049         the caret drawing code tries to draw the caret at the image
3050         offset after it has been removed from the document. So, make
3051         sure the start node for the selection is in the document before
3052         trying to lay out the caret using that node.
3053
3054 2004-07-31  Ken Kocienda  <kocienda@apple.com>
3055
3056         Reviewed by John
3057
3058         <rdar://problem/3745498> HTMLCompose: Can't edit new empty message (and typing eventually crashes)
3059         <rdar://problem/3746408> HTMLCompose: cannot type in message body of new messages (and tabbing causes a crash.)
3060         
3061         * kwq/KWQKHTMLPart.mm:
3062         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Add in some smarts to look around for
3063         a good place to put the caret if focus is turning "on", the part is contentEditable,
3064         and it does not currently have a selection. This has the effect of flashing the caret 
3065         in a contentEditable view automatically without requiring the programmer to set a 
3066         selection explicitly. This also fixes the bug listed above. Both are cases where the
3067         bad behavior happened since the editing code tried to process input without an active 
3068         selection. I always took the extra step of setting the selection explicitly when
3069         opening new windows in programs like Blot, but it seems silly to require developers to
3070         do this in general. With this patch, they no longer need to.
3071
3072 2004-07-30  Ken Kocienda  <kocienda@apple.com>
3073
3074         Reviewed by John
3075
3076         Fix for this bug:
3077         
3078         <rdar://problem/3745498> HTMLCompose: Can't edit new empty message (and typing eventually crashes)
3079
3080         * khtml/xml/dom_selection.cpp:
3081         (DOM::Selection::layoutCaret): Don't bail when the start position of the selection is not in rendered
3082         content. The validate() bottleneck function will do all it can to make sure that the start is
3083         moved to rendered content if at all possible before this function runs. If no rendered position can
3084         be found, like in the case of an empty body element, we still want to flash the caret there.
3085         (DOM::Selection::validate): Look for rendered positions for the base and extent, but save off the
3086         base before making this move, and set the selection to the enclosing block flow element of this
3087         original base if no rendered positions can be found. This has the effect of flashing the caret 
3088         someplace in an editable block, even if it does not contain any rendered content.
3089
3090 2004-07-30  Ken Kocienda  <kocienda@apple.com>
3091
3092         Reviewed by John
3093
3094         Fix a large number of editing layout test regressions.
3095
3096         * khtml/misc/khtml_text_operations.cpp:
3097         (khtml::TextIterator::TextIterator): Use a new way to compute the end offset of a node for
3098         purposes of text iteration. The end offset is either child count of a node with children,
3099         or the maxOffset() of a node that does not.
3100         * khtml/xml/dom_nodeimpl.cpp: Remove maxOffset() implementation from NodeBaseImpl. This 
3101         conflicted with the usage of this function that is needed for editing.
3102         * khtml/xml/dom_nodeimpl.h: Ditto.
3103
3104 2004-07-30  Trey Matteson  <trey@apple.com>
3105
3106         Next steps for spell checking:  We have data structures for the marked pieces of
3107         text and the smarts to draw them (although at this point, they just get a green
3108         underline instead of using the real AppKit pattern.)
3109
3110         Note we don't call this code outside of development, since at this point I suspect
3111         it could be made to crash by mixing spelling and editing. 
3112
3113         Reviewed by Ken.
3114
3115         * khtml/rendering/render_text.cpp:
3116         (InlineTextBox::paintMarker):  Paint one marker's intersection with a text run
3117         (RenderText::paint):  Find intersections of all markers and runs, call paintMarker
3118         * khtml/rendering/render_text.h:
3119         * khtml/xml/dom_docimpl.cpp:
3120         (DocumentImpl::addMarker):  Adds a marker to a DOM Range.
3121         (DocumentImpl::removeMarker):  Removes a marker from a DOM Range.
3122         (DocumentImpl::addMarker):  Adds a marker to a single DOM Node, merging previous
3123         markers as needed.
3124         (DocumentImpl::removeMarker):  Removes a marker from a single DOM Node, breaking
3125         up previous markers as needed.
3126         (DocumentImpl::markersForNode):  Return markers for a Node.
3127         * khtml/xml/dom_docimpl.h:
3128         (DOM::DocumentMarker::):  New marker struct
3129         (DOM::DocumentMarker::operator == ):
3130         (DOM::DocumentMarker::operator != ):
3131         * kwq/KWQKHTMLPart.mm:
3132         (KWQKHTMLPart::advanceToNextMisspelling):  Mark misspelled ranges when we find them.
3133         Debug only for now.
3134
3135 2004-07-29  Maciej Stachowiak  <mjs@apple.com>
3136
3137         Reviewed by Darin.
3138
3139         <rdar://problem/3745808> Seed: WebKit: Table's caption broken
3140         
3141         * khtml/html/htmlparser.cpp:
3142         (KHTMLParser::insertNode): When a caption appears in an illegal
3143         place in a table, pop blocks until we hit a place where it's
3144         allowed.
3145
3146 === Safari-154 ===
3147
3148 2004-07-29  Darin Adler  <darin@apple.com>
3149
3150         Reviewed by Ken.
3151
3152         - added constants for motion across entire document for use in operations like
3153           move to beginning of document
3154
3155         * khtml/xml/dom_selection.h: Added DOCUMENT to ETextGranularity.
3156         * khtml/xml/dom_selection.cpp:
3157         (DOM::Selection::modifyExtendingRightForward): Added case for DOCUMENT.
3158         (DOM::Selection::modifyMovingRightForward): Added case for DOCUMENT.
3159         (DOM::Selection::modifyExtendingLeftBackward): Added case for DOCUMENT.
3160         (DOM::Selection::modifyMovingLeftBackward): Added case for DOCUMENT.
3161         (DOM::Selection::validate): Changed if statements into switch statement,
3162         added case for DOCUMENT.
3163
3164         * kwq/WebCoreBridge.h: Added WebCoreBridge to WebSelectionGranularity.
3165
3166 2004-07-28  Trey Matteson  <trey@apple.com>
3167
3168         Small refinement of last checkin.  The text iterators now return reasonable values
3169         for range() when atEnd, which gets rid of special cases and pitfalls in the client.
3170
3171         Reviewed by Ken.
3172
3173         * khtml/misc/khtml_text_operations.cpp:
3174         (khtml::TextIterator::TextIterator):  Set endOffset to a valid value instead of
3175         using LONG_MAX.
3176         (khtml::TextIterator::range):  Implement when atEnd.
3177         (khtml::CharacterIterator::range):  Don't massage result when atEnd.
3178         (khtml::WordAwareIterator::WordAwareIterator):  Now that this is fixed, we no
3179         longer need this special case.
3180         (khtml::WordAwareIterator::advance):  Always set range, even when atEnd, now that
3181         TextIterator::range() always works.
3182         * khtml/xml/dom_nodeimpl.cpp:
3183         (NodeImpl::childNodeCount):  Made const
3184         (NodeBaseImpl::maxOffset):  Add missing implementation
3185         * khtml/xml/dom_nodeimpl.h:
3186         * kwq/KWQKHTMLPart.mm:
3187         (KWQKHTMLPart::advanceToNextMisspelling):  Get rid of special cases, always call
3188         range on our iterator even when it is atEnd.
3189
3190 2004-07-28  Maciej Stachowiak  <mjs@apple.com>
3191
3192         Reviewed by Trey.
3193
3194         <rdar://problem/3678534> controls on page at http://help.sap.com don't work properly
3195
3196         To fix this I implemented the various JavaScript BarInfo properties in JavaScript.
3197         
3198         * khtml/ecma/kjs_window.cpp:
3199         (Window::Window):
3200         (Window::locationbar):
3201         (Window::menubar):
3202         (Window::personalbar):
3203         (Window::statusbar):
3204         (Window::toolbar):
3205         (Window::scrollbars):
3206         (Window::mark):
3207         (Window::get):
3208         (SelectionFunc::tryCall):
3209         (BarInfo::BarInfo):
3210         (BarInfo::~BarInfo):
3211         (BarInfo::get):
3212         (BarInfo::put):
3213         * khtml/ecma/kjs_window.h:
3214         (KJS::Window::):
3215         (KJS::BarInfo::):
3216         (KJS::BarInfo::part):
3217         (KJS::BarInfo::classInfo):
3218         * khtml/ecma/kjs_window.lut.h:
3219         (KJS::):
3220         * kwq/KWQKHTMLPart.h:
3221         * kwq/KWQKHTMLPart.mm:
3222         (KWQKHTMLPart::locationbarVisible):
3223         (KWQKHTMLPart::menubarVisible):
3224         (KWQKHTMLPart::personalbarVisible):
3225         (KWQKHTMLPart::scrollbarsVisible):
3226         (KWQKHTMLPart::statusbarVisible):
3227         (KWQKHTMLPart::toolbarVisible):
3228
3229 2004-07-28  Ken Kocienda  <kocienda@apple.com>
3230
3231         Added more layout tests.
3232
3233         * layout-tests/editing/style/style-3681552-fix-001-expected.txt: Added.
3234         * layout-tests/editing/style/style-3681552-fix-001.html: Added.
3235         * layout-tests/editing/style/style-3681552-fix-002-expected.txt: Added.
3236         * layout-tests/editing/style/style-3681552-fix-002.html: Added.
3237         * layout-tests/editing/style/style-3690704-fix-expected.txt: Added.
3238         * layout-tests/editing/style/style-3690704-fix.html: Added.
3239         * layout-tests/editing/style/typing-style-001-expected.txt: Added.
3240         * layout-tests/editing/style/typing-style-001.html: Added.
3241         * layout-tests/editing/style/typing-style-002-expected.txt: Added.
3242         * layout-tests/editing/style/typing-style-002.html: Added.
3243
3244 2004-07-28  Ken Kocienda  <kocienda@apple.com>
3245
3246         Added some layout tests.
3247
3248         * layout-tests/editing/selection/select-all-001-expected.txt: Added.
3249         * layout-tests/editing/selection/select-all-001.html: Added.
3250         * layout-tests/editing/selection/select-all-002-expected.txt: Added.
3251         * layout-tests/editing/selection/select-all-002.html: Added.
3252         * layout-tests/editing/selection/select-all-003-expected.txt: Added.
3253         * layout-tests/editing/selection/select-all-003.html: Added.
3254
3255 2004-07-28  Trey Matteson  <trey@apple.com>
3256
3257         Spellchecking, Part I.  Basic spellcheck is working.  Spelling panel is hooked up.
3258
3259         At this point, no special marking of misspellings, no grammar check, no context
3260         menu integration, no "check continually" mode.
3261
3262         Much of the TextIterator and CharacterIterator interface got published outside
3263         of khtml_text_operations.cpp, with a little API rationalizing.
3264
3265         Reviewed by Ken.
3266
3267         * khtml/misc/khtml_text_operations.cpp:
3268         (khtml::TextIterator::range):  Name changes.
3269         (khtml::CharacterIterator::CharacterIterator):  Ditto.
3270         (khtml::CharacterIterator::range):  Ditto.
3271         (khtml::CharacterIterator::advance):  Ditto.
3272         (khtml::CharacterIterator::string):  New method to consume chars into a string.
3273         (khtml::WordAwareIterator::WordAwareIterator):  New class that iterates over
3274         the text respecting word boundaries.
3275         (khtml::WordAwareIterator::advance):
3276         (khtml::WordAwareIterator::length):
3277         (khtml::WordAwareIterator::characters):
3278         (khtml::plainText):  Name changes.
3279         (khtml::findPlainText):  Ditto.
3280
3281         API moved from cpp to header file.
3282         * khtml/misc/khtml_text_operations.h:
3283         (khtml::TextIterator::atEnd):
3284         (khtml::TextIterator::length):
3285         (khtml::TextIterator::characters):
3286         (khtml::CharacterIterator::atBreak):
3287         (khtml::CharacterIterator::atEnd):
3288         (khtml::CharacterIterator::length):
3289         (khtml::CharacterIterator::characters):
3290         (khtml::CharacterIterator::characterOffset):
3291         (khtml::WordAwareIterator::atEnd):
3292         (khtml::WordAwareIterator::range):
3293
3294         * khtml/xml/dom_position.cpp:
3295         (DOM::Position::previousWordBoundary):  New name for the old routine.  This routines semantics
3296         match the current behavior of this code.
3297         (DOM::Position::nextWordBoundary):  Ditto.
3298         (DOM::Position::previousWordPosition):  Call old code with the new name.  When we fix
3299         word advancement, this routine will have its own impl.
3300         (DOM::Position::nextWordPosition):  Ditto.
3301         * khtml/xml/dom_position.h:
3302         * khtml/xml/dom_selection.h:
3303         (DOM::Selection::rangeStart):  New convenience methods
3304         (DOM::Selection::rangeEnd):
3305         * kwq/KWQKHTMLPart.h:
3306         * kwq/KWQKHTMLPart.mm:
3307         (KWQKHTMLPart::findString):  Ensure we use range-compatible positions.
3308         (KWQKHTMLPart::advanceToNextMisspelling):  Brand new.
3309         * kwq/WebCoreBridge.h:
3310         * kwq/WebCoreBridge.mm:
3311         (-[WebCoreBridge advanceToNextMisspelling]):  Typical bridge glue.
3312
3313 2004-07-28  Ken Kocienda  <kocienda@apple.com>
3314
3315         Reviewed by Maciej
3316         
3317         Fixed this bug:
3318         
3319         <rdar://problem/3690704> marking partly bold text italic across blocks wrongly extends the bold section
3320
3321         * khtml/editing/htmlediting_impl.cpp:
3322         (khtml::ApplyStyleCommandImpl::doApply): Fixed loop that gathers up groups of nodes to
3323         pass off to the function that applies styles. While this is meant to be conservative in
3324         order to leave the DOM well-formed in all cases, it contained an error where the set
3325         of nodes to be styled together erroneously could include a node that was meant for 
3326         the next set. Fixed.
3327         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Unrelated change to remove DOM:: scope
3328         resolution qualifier. Unneeded here.