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