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