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