f0d7e3fe1c60dd0fddc1df9a05251c864b1affea
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2004-08-13  Trey Matteson  <trey@apple.com>
2
3         3761098 - red dotted underline for misspelled words shows up in drag image
4
5         Reviewed by Ken
6
7         * khtml/rendering/render_text.cpp:
8         (RenderText::paint):  Don't draw misspelling when creating selection image.
9
10 2004-08-12  Richard Williamson   <rjw@apple.com>
11
12         Bring npruntime.h and friends closer to compliance with
13         latest spec.
14
15         Reviewed by Maciej.
16
17         * kwq/KWQKHTMLPart.mm:
18         (KWQKHTMLPart::windowScriptNPObject):
19
20 2004-08-12  Maciej Stachowiak  <mjs@apple.com>
21
22         Reviewed by Richard.
23
24         <rdar://problem/3245706> URLs with backslashes instead of slashes work on WinIE; should work on Safari (SAP)
25         <rdar://problem/3506429> <BASE> tag containing backslash is breaking images with absolute URLs
26         
27         * kwq/KWQKURL.mm:
28         (substituteBackslashes): Helper method
29         (KURL::KURL): If the URL contains any backslashes, substitute all
30         that appear before the query or fragment.
31
32 2004-08-12  Ken Kocienda  <kocienda@apple.com>
33
34         Reviewed by Chris
35
36         Fix for this bug:
37         
38         <rdar://problem/3761014> command-down-arrow takes you to start of document instead of end of document
39
40         * khtml/xml/dom_selection.cpp:
41         (DOM::Selection::modifyExtendingRightForward): Code used to assume, incorrectly, that index 1 of the
42         document element was beyond the last node in the document. But this is not true, since the document
43         element is the HTML element (generally). Instead, move to the index equal to the number of children
44         of the document element. This puts us past everything.
45         (DOM::Selection::modifyMovingRightForward): Ditto.
46
47 2004-08-12  Ken Kocienda  <kocienda@apple.com>
48
49         Reviewed by Trey
50
51         Fix for this bug:
52         
53         <rdar://problem/3695446> shift-down-arrow on last line of editable text should select to end of document
54         
55         Detect when current position is on first or last line and move to the
56         start or end of that line, respectively.
57
58         * khtml/xml/dom_position.cpp:
59         (DOM::Position::previousLinePosition)
60         (DOM::Position::nextLinePosition)
61
62 === Safari-156 ===
63
64 2004-08-12  Ken Kocienda  <kocienda@apple.com>
65
66         Reviewed by Darin
67
68         Some consolidation in style application code.
69
70         * khtml/editing/htmlediting_impl.cpp:
71         (khtml::StyleChange::StyleChange): Made this a full-on class and added a couple of 
72         members and a constructors to make a StyleChange from a CSSStyleDeclarationImpl, as
73         well as from a CSSStyleDeclarationImpl and a Position.
74         (khtml::StyleChange::init): Common init function for StyleChange constructors.
75         (khtml::StyleChange::currentlyHasStyle): Moved this here from ApplyStyleCommandImpl.
76         (khtml::CompositeEditCommandImpl::applyTypingStyle): Tweak to adjust to new StyleChange
77         interface.
78         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Ditto.
79         * khtml/editing/htmlediting_impl.h:
80         (khtml::StyleChange::StyleChange):
81         (khtml::StyleChange::cssStyle): New accessor.
82         (khtml::StyleChange::applyBold): Ditto.
83         (khtml::StyleChange::applyItalic): Ditto.
84         * khtml/xml/dom_position.cpp:
85         (DOM::Position::computedStyle): New helper.
86         * khtml/xml/dom_position.h: Ditto.
87
88 2004-08-12  Ken Kocienda  <kocienda@apple.com>
89
90         Reviewed by Darin
91
92         Fix for this bug:
93         <rdar://problem/3751098> HTML email has one set of SPAN tags per character in the message
94         
95         Progress on this bug:
96         <rdar://problem/3755562> Typing styles do not use same tag application conventions as font and color panel
97
98         * khtml/editing/htmlediting_impl.cpp:
99         (khtml::CompositeEditCommandImpl::applyTypingStyle): Name changed from createTypingStyleElement.
100         Also, interface changed to take the node to which the typing style is to be applied. 
101         This makes it easier to apply what may be up to three levels of nested tags to get the 
102         desired style (<B>, <I>, and <SPAN STYLE="">).
103         Also, Borrow some of the style change smarts from ApplyStyleCommandImpl to use bold and
104         italic tags for applying styles when that is apprpriate. This creates on opportunity to
105         factor the code to do this so that this function and the ApplyStyleCommandImpl class can
106         share the implementation. I will follow up with a change to do that after landing this
107         change. Some future code factoring could be done here to bring together some similar code
108         into one place.
109         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Add comment about code factoring work.
110         (khtml::ApplyStyleCommandImpl::computeStyleChange): StyleChange struct no longer a member of the
111         ApplyStyleCommandImpl class. CompositeEditCommandImpl needs it now in its applyTypingStyle()
112         function.
113         (khtml::InputNewlineCommandImpl::doApply): Pass along node to style to applyTypingStyle.
114         (khtml::InputTextCommandImpl::prepareForTextInsertion): Ditto.
115         * khtml/editing/htmlediting_impl.h:
116         (khtml::StyleChange::StyleChange): Pull this struct out of ApplyStyleCommandImpl so 
117         CompositeEditCommandImpl can use it.
118         * khtml/khtml_part.cpp:
119         (KHTMLPart::notifySelectionChanged): Always clear typing style when the selection
120         changes, not only when closing typing. This fixes 3751098.
121         
122         These three tests actually had results that treated the buggy behavior as correct!
123         
124         * layout-tests/editing/style/style-3681552-fix-001-expected.txt
125         * layout-tests/editing/style/style-3681552-fix-002-expected.txt
126         * layout-tests/editing/style/typing-style-002-expected.txt
127
128 2004-08-12  Darin Adler  <darin@apple.com>
129
130         Reviewed by Ken.
131
132         - fixed <rdar://problem/3740485> Repro crash involving replacing content that includes form field
133
134         * kwq/KWQLineEdit.mm: (QLineEdit::selectAll): Since this function calls selectText: which has a side
135         effect of making the text field be first responder, call to bridge first to make it first responder.
136         The bridge version lets WebHTMLView know we are changing the responder, avoiding some unpleasantness
137         because it sets the "changing focus programmatically" flag. Without that flag set, we were getting
138         an additional setFocusNode(0) call, which is unnecessary and incorrect.
139
140 2004-08-12  Darin Adler  <darin@apple.com>
141
142         Reviewed by Ken.
143
144         - fixed <rdar://problem/3758756> copying text selected with down arrow results in all text to end of document
145
146         * khtml/xml/dom2_rangeimpl.h: Make startNode and pastEndNode public.
147         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::pastEndNode): Fix bug where this would return
148         one node too far in the case where the end container was not a text node.
149
150         * khtml/xml/dom_nodeimpl.cpp:
151         (NodeImpl::recursive_toHTMLWithOptions): Rewrite loop, using startNode and pastEndNode,
152         to fix bug where it would run past the end node, including too many nodes in the generated
153         HTML. Nice side benefit: easier to read the code.
154
155 2004-08-11  Chris Blumenberg  <cblu@apple.com>
156
157         Fixed: <rdar://problem/3758216> PARENTAL: buttons on parental controls page only work once
158
159         Reviewed by john.
160
161         * kwq/KWQKHTMLPart.mm:
162         (KWQKHTMLPart::submitForm): prevent a form from being submitted more than once only if it uses a scheme of http or https
163
164 2004-08-11  Darin Adler  <darin@apple.com>
165
166         Reviewed by Ken.
167
168         - fixed <rdar://problem/3715878> 8A162: connect.apple.com password field showed in cleartext
169
170         * kwq/KWQTextField.mm: (-[KWQSecureTextField textDidEndEditing:]):
171         Enhanced workaround for shifting focus from one secure text field to another so that it works
172         even for the case of shifting focus from a secure text field back to itself.
173
174 2004-08-11  Ken Kocienda  <kocienda@apple.com>
175
176         Reviewed by me
177
178         Missed adding this file before.
179
180         * kwq/KWQTextUtilities.mm: Added.
181         (KWQFindNextWordFromIndex):
182
183 2004-08-11  Ken Kocienda  <kocienda@apple.com>
184
185         Reviewed by Trey
186
187         Efficiency improvements on string manipulations in these two new function
188         implementations. Use the versions of QString append/prepend that take
189         (QChar *c, uint length) instead of creating new strings each time.
190
191         * khtml/xml/dom_position.cpp:
192         (DOM::Position::previousWordPosition): Changed, as described above.
193         (DOM::Position::nextWordPosition): Ditto.
194
195 2004-08-11  Ken Kocienda  <kocienda@apple.com>
196
197         Reviewed by Darin
198
199         Fix for this bug:
200         <rdar://problem/3675812> Moving a word at a time does not use the correct conception of "word"
201         
202         I have implemented versions of previousWordPosition and nextWordPosition that are now
203         different than previousWordBoundary and nextWordBoundary. The behavior of the new
204         functions attempts to match what Cocoa does as closely as it can. Let the bug filing begin! 
205
206         * WebCore.pbproj/project.pbxproj: Added KWQTextUtilities.mm
207         * khtml/misc/helper.cpp:
208         (khtml::nextWordFromIndex): Glue to call through to KWQFindNextWordFromIndex.
209         * khtml/misc/helper.h: Declare the function above.
210         * khtml/misc/khtml_text_operations.cpp: Added SimplifiedBackwardsTextIterator class.
211         (khtml::SimplifiedBackwardsTextIterator::SimplifiedBackwardsTextIterator): New
212         (khtml::SimplifiedBackwardsTextIterator::advance): Ditto.
213         (khtml::SimplifiedBackwardsTextIterator::handleTextNode): Ditto.
214         (khtml::SimplifiedBackwardsTextIterator::handleReplacedElement): Ditto.
215         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode): Ditto.
216         (khtml::SimplifiedBackwardsTextIterator::exitNode): Ditto.
217         (khtml::SimplifiedBackwardsTextIterator::emitCharacter): Ditto.
218         (khtml::SimplifiedBackwardsTextIterator::range): Ditto.
219         * khtml/misc/khtml_text_operations.h:
220         (khtml::SimplifiedBackwardsTextIterator::atEnd): Ditto.
221         (khtml::SimplifiedBackwardsTextIterator::length): Ditto.
222         (khtml::SimplifiedBackwardsTextIterator::characters): Ditto.
223         * khtml/xml/dom_position.cpp:
224         (DOM::Position::previousWordBoundary): Updated to gather appropriate text and call through to
225         AppKit to perform the same calculations NSText uses.
226         (DOM::Position::nextWordBoundary): Ditto.
227         (DOM::Position::previousWordPosition): Unrelated change to fix case where the function could get "stuck".
228         (DOM::Position::nextWordPosition): Ditto
229         (DOM::Position::equivalentDeepPosition): Changed to look backwards if the position's offset is equal
230         to the number of child nodes it has. This handles more cases correctly, like when the position is
231         gives as one beyond the end of a document element's last child.
232         * kwq/KWQTextUtilities.h: Declared KWQFindNextWordFromIndex.
233         * kwq/KWQTextUtilities.mm: Added.
234         (KWQFindNextWordFromIndex): New function.
235
236 2004-08-11  Ken Kocienda  <kocienda@apple.com>
237
238         Reviewed by John
239
240         Fix for this bug:
241         
242         <rdar://problem/3732702> crash in CSSComputedStyleDeclarationImpl running devtools.com editing sample code
243
244         * khtml/khtml_part.cpp:
245         (KHTMLPart::selectionComputedStyle): Added a null check.
246
247 2004-08-10  Darin Adler  <darin@apple.com>
248
249         Reviewed by Trey.
250
251         - fixed <rdar://problem/3710123> Loading iframe that replaces content in the parent document crashes Safari
252
253         I fixed three problems:
254
255             1) script interpreter destroyed while it was interpreting scripts, caused random havoc
256             2) code trying to get to view after view was detached from part, caused nil-deref
257             3) signals sent to parent after child was no longer in the parent's frames list, caused nil-deref
258
259         Now the test page works fine. Hope the real sites do too.
260
261         * khtml/khtml_part.h: Add connectChild and disconnectChild helper functions (private).
262         * khtml/khtml_part.cpp:
263         (KHTMLPart::clear): Call disconnectChild on each frame as we detach it (see below).
264         (KHTMLPart::end): Ref the part at the start, and deref the part at the end, of this function.
265         Otherwise, we can end up destroying the part, and hence the interpreter, inside a script that
266         the interpreter itself is running.
267         (KHTMLPart::slotFinishedParsing): Add another check for a nil m_view, after the call to
268         checkCompleted.
269         (KHTMLPart::checkCompleted): Remove bogus if statement with empty body.
270         (KHTMLPart::processObjectRequest): Call disconnectChild to disconnect the child <-> parent signals of the
271         old child that the new one is replacing, and connectChild to connect the signals (nicer factoring).
272         (KHTMLPart::slotChildCompleted): Fixed up a confusing boolean if/expression to be simpler. Not related to
273         the bug fix, but an earlier version of the fix had changes in this function.
274         (KHTMLPart::connectChild): Added. Connects the appropriate signals for a child frame.
275         (KHTMLPart::disconnectChild): Added. Disconnects the same signals that connectChild connects.
276
277         * kwq/KWQKHTMLPart.mm: (KHTMLPart::frameDetached): Added a call to disconnectChild before removing the
278         child from the frames list.
279
280 2004-08-09  Maciej Stachowiak  <mjs@apple.com>
281
282         Reviewed by Trey.
283
284         WebCore part of:
285
286         - made basic marked text highlighting work to complete basic level of <rdar://problem/3704359> input method support not yet implemented for HTML editing
287
288         * kwq/WebCoreBridge.mm:
289         (-[WebCoreBridge setMarkedDOMRange:]): Added this new call to support storing
290         a marked range in WebCore. The provided DOMRange must start and end in the same
291         node, which must be a text node.
292         (-[WebCoreBridge markedDOMRange]): New call to get the marked range. 
293         (-[WebCoreBridge clearMarkedDOMRange]): New call to clear the marked range.
294         * kwq/WebCoreBridge.h: Prototype new methods.
295         * kwq/KWQKHTMLPart.mm:
296         (KWQKHTMLPart::markedRange): Implementation of WebCore call above.
297         (KWQKHTMLPart::setMarkedRange): Implementation of WebCore call above -
298         store the marked range, and repaint new and old nodes if needed.
299         (KWQKHTMLPart::clear): Clear marked range.
300         * kwq/KWQKHTMLPart.h: Prototype new methods.
301         * khtml/rendering/render_text.cpp:
302         (InlineTextBox::paintMarkedTextBackground): New method to paint the background
303         for marked text, modeled on paintSelection.
304         (RenderText::paint): Optionally handle painting marked text
305         background as well as selection background in the marked text
306         pass.
307         * khtml/rendering/render_text.h: Prototype new method.
308
309 2004-08-10  Darin Adler  <darin@apple.com>
310
311         Reviewed by Dave.
312
313         - switch PCRE to do UTF-16 directly instead of converting to/from UTF-8 for speed
314
315         * kwq/KWQRegExp.mm:
316         (QRegExp::KWQRegExpPrivate::compile): Null-terminate the pattern and pass it.
317         (QRegExp::match): Use the 16-bit string directly, no need to convert to UTF-8.
318
319 2004-08-10  Darin Adler  <darin@apple.com>
320
321         Reviewed by Ken.
322
323         - minor cleanup
324
325         * khtml/editing/jsediting.cpp: Capitalize command names to match Windows.
326         The dictionary lookup is case insensitive.
327
328         * kwq/KWQFoundationExtras.h: Remove inaccurate comment.
329
330 2004-08-10  Trey Matteson  <trey@apple.com>
331
332         3757094 - crash spell checking after a paste
333
334         Reviewed by Ken
335
336         * khtml/rendering/render_text.cpp:
337         (InlineTextBox::paintSelection):  Add nil check.
338
339 2004-08-09  Trey Matteson  <trey@apple.com>
340
341         3756195 - spell checking leaves misspelling marker behind after bad word is deleted
342         ... and other follow-on spell check fixes
343
344         Reviewed by Ken
345
346         * khtml/rendering/render_text.cpp:
347         (InlineTextBox::paintMarker):  Close inspection shows we were drawing the 
348         misspelling marker one pixel lower than AK, and one pixel outside the selection
349         rect we draw, in the case of Times-16.  So move it up one.  Still not an exact
350         match for AK, but less bad.
351         * khtml/xml/dom_docimpl.cpp:
352         (DocumentImpl::removeMarker):  Track whether we make any changes, so we only
353         repaint if something actually changed.
354         (DocumentImpl::removeAllMarkers):  New utility.
355         (DocumentImpl::removeAllMarkers):  Use clear() instead of (errant)
356         hand-rolled loop to empty array.
357         (DocumentImpl::shiftMarkers):  Track whether we make any changes, so we only
358         repaint if something actually changed.
359         * khtml/xml/dom_docimpl.h:
360         * khtml/xml/dom_textimpl.cpp:
361         (CharacterDataImpl::deleteData):  Along with shifting existing markers around,
362         remove any markers in the deleted range.  Fixes 3756195.
363         (CharacterDataImpl::replaceData):  Ditto for the replaced range.
364         * kwq/KWQKHTMLPart.mm:
365         (KWQKHTMLPart::updateSpellChecking): comment
366
367 2004-08-08  Trey Matteson  <trey@apple.com>
368
369         3745023 - Safari crashes trying to access anchor while downloading
370
371         I bet this is behind a few other crashers as well.  In this bug the start of the
372         download leaves a KWQPageState hanging around, and when that is freed it damages
373         the part and view.  If you're still using that page, you're dead.
374
375         The fix is to properly invalidate the PageState when we receive an error before
376         reaching WebFrameCommitted state.  Normally this happens when a page is reheated
377         from the PageState, but in this case we never manage to leave the page to begin
378         with, although we've already created the PageState.
379
380         Other errors besides the synthetic one download generates would have caused similar
381         crashing.  Another example would be clicking on a second link before the load
382         caused by clicking on the first link reached committed state.
383
384         Reviewed by Richard
385
386         * kwq/WebCoreBridge.h:
387         * kwq/WebCoreBridge.mm:
388         (-[WebCoreBridge didNotOpenURL:pageCache:]):  Invalidate the pageCache state
389         when a load doesn't get off the ground.
390
391 2004-08-06  Ken Kocienda  <kocienda@apple.com>
392
393         Reviewed by Maciej
394
395         Finish off spellchecking support to HTML editing. Includes work to
396         enable continuous spellchecking.
397
398         * khtml/editing/htmlediting_impl.cpp:
399         (khtml::EditCommandImpl::markMisspellingsInSelection): Basically, a one-liner convenience to
400         make the call over to the KWQKHTMLPart.
401         (khtml::ReplaceSelectionCommandImpl::doApply): Did some rearranging of code so that the
402         inserted content can be spell-checked. The function is basically the same, except for
403         the addition of calls to markMisspellingsInSelection.
404         (khtml::TypingCommandImpl::markMisspellingsAfterTyping): New function. Takes a look at the
405         selection that results after typing and determines whether it needs to spellcheck. 
406         Since the word containing the current selection is never marked, this does a check to
407         see if typing made a new word that is not in the current selection. Basically, you
408         get this by being at the end of a word and typing a space.
409         (khtml::TypingCommandImpl::typingAddedToOpenCommand): Call markMisspellingsAfterTyping.
410         * khtml/editing/htmlediting_impl.h: Add new function declarations.
411          * khtml/khtml_part.cpp:
412         (KHTMLPart::setSelection): Since spell checks are updated when the selection changes, 
413         and every selection change passes through here, this is a good place to put the call 
414         to the spellchecker.
415         * khtml/rendering/render_text.cpp:
416         (InlineTextBox::paintMarker): Remove temporary misspelling line drawing code. Replace with
417         call that does AppKit-style drawing. Fix up some comments.
418         * khtml/xml/dom_docimpl.cpp:
419         (DocumentImpl::addMarker): Repaint the node that had the marker added. This makes it show 
420         up on setting it.
421         (DocumentImpl::removeMarker): Ditto.
422         (DocumentImpl::removeAllMarkers): New function. Convenience for clearing all markers.
423         Used when not in continuous spellchecking mode.
424         (DocumentImpl::shiftMarkers): Moves markers in response to changes in a node's contents.
425         This shifts the marker offsets by a given amount. This keeps the markers in the right
426         place when a user types in a node with markers already set on it.
427         * khtml/xml/dom_docimpl.h: Added new functions. Removed unnecessary enum qualifier from some
428         declarations.
429         * khtml/xml/dom_position.cpp:
430         (DOM::Position::previousWordBoundary): This function was susceptible to endless loops...and
431         needlessly so. Basically, if the current position is at a word boundary, run the code again
432         to find the previous word boundary.
433         (DOM::Position::nextWordBoundary): Same as above, but for next word boundary.
434         * khtml/xml/dom_textimpl.cpp:
435         (CharacterDataImpl::setData): Call shiftMarkers to update markers when this node changes.
436         (CharacterDataImpl::insertData): Ditto.
437         (CharacterDataImpl::deleteData): Ditto.
438         (CharacterDataImpl::replaceData): Ditto.
439         * kwq/KWQKHTMLPart.h:
440         * kwq/KWQKHTMLPart.mm:
441         (KWQKHTMLPart::advanceToNextMisspelling):
442         (KWQKHTMLPart::markMisspellingsInSelection):
443         (KWQKHTMLPart::updateSpellChecking):
444         (KWQKHTMLPart::respondToChangedSelection):
445         * kwq/KWQPainter.h:
446         * kwq/KWQPainter.mm:
447         (QPainter::drawLineForMisspelling): New function. Call over to WebKit to do the drawing.
448         * kwq/WebCoreBridge.h:
449         * kwq/WebCoreBridge.mm:
450         (-[WebCoreBridge alterCurrentSelection:direction:granularity:]): Pass markMisspellings flag to
451         setSelection call. 
452         * kwq/WebCoreTextRenderer.h:
453
454 === Safari-155 ===
455
456 2004-08-05  David Hyatt  <hyatt@apple.com>
457
458         Fix for 3752542, stack overflow that crashes Safari at www.dr.dk.  This bug is a regression caused by a fix that
459         attempted to repair <caption> behavior to make it behave like Panther.  This fix was incorrect, and in addition
460         even our <caption> behavior on Panther was incorrect.
461
462         The patch that fixes this bug also makes <caption> handling work when <caption>s are contained inside a <td>, a <tr>,
463         a <th>, or various table section tags (<tbody>, <tfoot>, <thead>).  The <caption> is pulled out and inserted just before
464         the relevant ancestor table section.  This behavior matches other browsers.
465         
466         Reviewed by mjs
467
468         * khtml/html/htmlparser.cpp:
469         (KHTMLParser::insertNode):
470
471 2004-08-04  David Hyatt  <hyatt@apple.com>
472
473         The top-level XSL sheet is now loaded and shows up in the activity window.  It is not yet parsed.
474         
475         Reviewed by kocienda
476
477         * WebCore.pbproj/project.pbxproj:
478         * khtml/css/css_base.h:
479         (DOM::StyleBaseImpl::isXSLStyleSheet):
480         * khtml/css/css_stylesheetimpl.cpp:
481         (CSSStyleSheetImpl::CSSStyleSheetImpl):
482         * khtml/css/css_stylesheetimpl.h:
483         (DOM::StyleSheetImpl::isLoading):
484         * khtml/misc/loader.cpp:
485         * khtml/xml/dom_xmlimpl.cpp:
486         (DOM::ProcessingInstructionImpl::ProcessingInstructionImpl):
487         (DOM::ProcessingInstructionImpl::checkStyleSheet):
488         (DOM::ProcessingInstructionImpl::sheet):
489         (DOM::ProcessingInstructionImpl::isLoading):
490         (DOM::ProcessingInstructionImpl::setStyleSheet):
491         * khtml/xml/dom_xmlimpl.h:
492
493 2004-08-04  David Hyatt  <hyatt@apple.com>
494
495         Add XSL Stylesheets to the WebCore cache.
496         
497         Reviewed by kocienda
498
499         * khtml/misc/loader.cpp:
500         (CachedXSLStyleSheet::CachedXSLStyleSheet):
501         (CachedXSLStyleSheet::ref):
502         (CachedXSLStyleSheet::deref):
503         (CachedXSLStyleSheet::data):
504         (CachedXSLStyleSheet::checkNotify):
505         (CachedXSLStyleSheet::error):
506         (DocLoader::requestXSLStyleSheet):
507         (Cache::requestXSLStyleSheet):
508         (Cache::getStatistics):
509         * khtml/misc/loader.h:
510         (khtml::CachedObject::):
511         (khtml::CachedXSLStyleSheet::sheet):
512         (khtml::CachedXSLStyleSheet::schedule):
513
514 2004-08-03  Ken Kocienda  <kocienda@apple.com>
515
516         Reviewed by Hyatt
517
518         Changes to improve our handling of object tags during editing, including
519         fixing this bug:
520         
521         <rdar://problem/3744533> Problem editing <OBJECT> elements displayed by WebPlugIns 
522
523         Part of the fix for this bug involves removing the close() function from render objects.
524         It was decided that this code was no longer needed, as the work it did could be moved
525         to other, more modern, places.
526
527         Fixed this bug:
528         
529         <rdar://problem/3748537> crash due to nil node passed into parentNode in computeTypingStyle deleting text
530
531         Finally, I filed and fixed this bug I discovered while fixing the one above:
532         
533         <rdar://problem/3749338> Select-all + delete leaves editing view without blinking caret
534
535         * khtml/editing/htmlediting_impl.cpp:
536         (khtml::DeleteSelectionCommandImpl::computeTypingStyle): Fix for 3748537. Put in some more null
537         checks. Bail, returning 0 for typing style if any null checks yield a null.
538         (khtml::DeleteSelectionCommandImpl::doApply): Fix for 3749338. A removeNodeAndPrune call may wind
539         up deleting the node where we calculated that we wanted to put the selection after deleting.
540         If this happens, move this ending selection to a sensible alternative.
541         (khtml::RemoveNodeAndPruneCommandImpl::doApply): Call previousNodeConsideringAtomicNodes instead 
542         of traversePreviousNode when doing the prune.
543         * khtml/html/html_objectimpl.cpp:
544         (HTMLObjectElementImpl::attach): Part of the fix for 3744533.
545         (HTMLObjectElementImpl::recalcStyle): Change old strcmp check for type of renderer to be a call
546         to canRenderImageType.
547         (HTMLObjectElementImpl::childrenChanged): New function. Helps to keep object tags up to date 
548         as their children change. This also will help to make object tags respond properly to having their
549         params changed by DOM calls.
550         * khtml/html/html_objectimpl.h: Cosmetic change.
551         * khtml/html/htmlparser.cpp:
552         (KHTMLParser::insertNode): Remove call to obsolete closeRenderer() function.
553         (KHTMLParser::popOneBlock): Ditto.
554         * khtml/rendering/render_block.cpp:
555         (khtml::RenderBlock::makeChildrenNonInline): Remove call to obsolete close() function.
556         * khtml/rendering/render_container.cpp:
557         (RenderContainer::updatePseudoChild): Ditto.
558         * khtml/rendering/render_form.cpp: Remove obsolete close() function.
559         * khtml/rendering/render_form.h: Ditto.
560         * khtml/rendering/render_frames.cpp: Ditto.
561         * khtml/rendering/render_frames.h: Ditto.
562         * khtml/rendering/render_inline.cpp:
563         (RenderInline::splitFlow): Remove calls to obsolete close() function.
564         * khtml/rendering/render_object.h: Remove obsolete close() function.
565         * khtml/rendering/render_table.cpp:
566         (RenderTableCell::layout): Ditto.
567         * khtml/rendering/render_table.h: Ditto.
568         * khtml/xml/dom_docimpl.cpp:
569         (DocumentImpl::closeInternal): Remove call to obsolete close() function.
570         * khtml/xml/dom_nodeimpl.cpp: Remove obsolete m_rendererNeedsClose initialization.
571         (NodeImpl::NodeImpl): Remove obsolete closeRenderer() function.
572         (NodeImpl::attach): Remove call to obsolete close() function.
573         (NodeImpl::isAtomicNode): New function. Helps to fix 3744533. Determines if a node should
574         be treated as an atomic node for the purposes of editing.
575         (NodeImpl::previousNodeConsideringAtomicNodes): New helper to traverse tree taking atomic nodes
576         into account.
577         (NodeImpl::nextNodeConsideringAtomicNodes): Ditto.
578         (NodeImpl::previousLeafNode): Now calls nextNodeConsideringAtomicNodes to iterate. This helps to 
579         prevent deleting PARAM tag portions of object tags erroneously.
580         (NodeImpl::nextLeafNode): Ditto.
581         * khtml/xml/dom_nodeimpl.h: Removed m_rendererNeedsClose bit. Added declarations for new functions.
582         * khtml/xml/dom_position.cpp:
583         (DOM::Position::equivalentDeepPosition): Now takes atomic nodes into account as it drills down into the
584         tree.
585         * khtml/xml/xml_tokenizer.cpp:
586         (khtml::XMLTokenizer::endElement): Remove call to obsolete closeRenderer() function.
587
588 2004-08-03  David Hyatt  <hyatt@apple.com>
589
590         Add the deprecated text/xsl MIME type (introduced by Internet Explorer 5) as an acceptable MIME type for XML
591         documents.
592         
593         Reviewed by john
594
595         * khtml/ecma/xmlhttprequest.cpp:
596         (KJS::XMLHttpRequest::getValueProperty):
597         * khtml/khtml_part.cpp:
598         (KHTMLPart::begin):
599         * khtml/misc/loader.cpp:
600         (CachedXBLDocument::CachedXBLDocument):
601
602 2004-08-03  Maciej Stachowiak  <mjs@apple.com>
603
604         Reviewed by Ken.
605
606         - remove assertions that asserted text is non-empty, just avoid
607         doing anything for the empty case; this is needed because input
608         methods like to insert empty text in various cases.
609
610         * khtml/editing/htmlediting_impl.cpp:
611         (khtml::InsertTextCommandImpl::InsertTextCommandImpl):
612         (khtml::InsertTextCommandImpl::doApply):
613         (khtml::InsertTextCommandImpl::doUnapply):
614
615 2004-08-03  Darin Adler  <darin@apple.com>
616
617         Reviewed by Ken.
618
619         - fixed <rdar://problem/3740937> ER: A way to turn a DOMRange into text (equivalent of -innerText)
620
621         * khtml/xml/dom2_rangeimpl.h: Added text function. Like innerText, but on a range.
622         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::text): Added.
623
624         * kwq/DOM.mm: (-[DOMRange _text]): Added. Calls DOM::RangeImpl::text.
625         * kwq/DOMPrivate.h: Added.
626
627         * WebCore.pbproj/project.pbxproj: Added DOMPrivate.h, an internal header (private in WebKit, internal here).
628
629 2004-08-02  John Sullivan  <sullivan@apple.com>
630
631         Reviewed by Darin.
632         
633         WebCore part of fix for <rdar://problem/3631868> NSToolbar adoption: 
634         Tab key should cycle around toolbar and page content
635
636         * kwq/WebCoreBridge.mm:
637         (-[WebCoreBridge nextKeyViewInsideWebFrameViews]):
638         Made this method start looking from the current focus node. This won't
639         affect any existing callers because there were no existing callers.
640         (-[WebCoreBridge previousKeyViewInsideWebFrameViews]):
641         ditto
642
643 2004-08-02  David Hyatt  <hyatt@apple.com>
644
645         Create a #define for XSLT support that at the moment will only be enabled on Tiger.
646         
647         Reviewed by kocienda
648
649         * WebCorePrefix.h:
650
651 2004-08-02  Ken Kocienda  <kocienda@apple.com>
652
653         Reviewed by Hyatt
654
655         Fix for this bug:
656         
657         <rdar://problem/3747945> Deleting replaced element can cause crash
658
659         * khtml/xml/dom_selection.cpp:
660         (DOM::Selection::layoutCaret): The crux of the problem is that
661         the caret drawing code tries to draw the caret at the image
662         offset after it has been removed from the document. So, make
663         sure the start node for the selection is in the document before
664         trying to lay out the caret using that node.
665
666 2004-07-31  Ken Kocienda  <kocienda@apple.com>
667
668         Reviewed by John
669
670         <rdar://problem/3745498> HTMLCompose: Can't edit new empty message (and typing eventually crashes)
671         <rdar://problem/3746408> HTMLCompose: cannot type in message body of new messages (and tabbing causes a crash.)
672         
673         * kwq/KWQKHTMLPart.mm:
674         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Add in some smarts to look around for
675         a good place to put the caret if focus is turning "on", the part is contentEditable,
676         and it does not currently have a selection. This has the effect of flashing the caret 
677         in a contentEditable view automatically without requiring the programmer to set a 
678         selection explicitly. This also fixes the bug listed above. Both are cases where the
679         bad behavior happened since the editing code tried to process input without an active 
680         selection. I always took the extra step of setting the selection explicitly when
681         opening new windows in programs like Blot, but it seems silly to require developers to
682         do this in general. With this patch, they no longer need to.
683
684 2004-07-30  Ken Kocienda  <kocienda@apple.com>
685
686         Reviewed by John
687
688         Fix for this bug:
689         
690         <rdar://problem/3745498> HTMLCompose: Can't edit new empty message (and typing eventually crashes)
691
692         * khtml/xml/dom_selection.cpp:
693         (DOM::Selection::layoutCaret): Don't bail when the start position of the selection is not in rendered
694         content. The validate() bottleneck function will do all it can to make sure that the start is
695         moved to rendered content if at all possible before this function runs. If no rendered position can
696         be found, like in the case of an empty body element, we still want to flash the caret there.
697         (DOM::Selection::validate): Look for rendered positions for the base and extent, but save off the
698         base before making this move, and set the selection to the enclosing block flow element of this
699         original base if no rendered positions can be found. This has the effect of flashing the caret 
700         someplace in an editable block, even if it does not contain any rendered content.
701
702 2004-07-30  Ken Kocienda  <kocienda@apple.com>
703
704         Reviewed by John
705
706         Fix a large number of editing layout test regressions.
707
708         * khtml/misc/khtml_text_operations.cpp:
709         (khtml::TextIterator::TextIterator): Use a new way to compute the end offset of a node for
710         purposes of text iteration. The end offset is either child count of a node with children,
711         or the maxOffset() of a node that does not.
712         * khtml/xml/dom_nodeimpl.cpp: Remove maxOffset() implementation from NodeBaseImpl. This 
713         conflicted with the usage of this function that is needed for editing.
714         * khtml/xml/dom_nodeimpl.h: Ditto.
715
716 2004-07-30  Trey Matteson  <trey@apple.com>
717
718         Next steps for spell checking:  We have data structures for the marked pieces of
719         text and the smarts to draw them (although at this point, they just get a green
720         underline instead of using the real AppKit pattern.)
721
722         Note we don't call this code outside of development, since at this point I suspect
723         it could be made to crash by mixing spelling and editing. 
724
725         Reviewed by Ken.
726
727         * khtml/rendering/render_text.cpp:
728         (InlineTextBox::paintMarker):  Paint one marker's intersection with a text run
729         (RenderText::paint):  Find intersections of all markers and runs, call paintMarker
730         * khtml/rendering/render_text.h:
731         * khtml/xml/dom_docimpl.cpp:
732         (DocumentImpl::addMarker):  Adds a marker to a DOM Range.
733         (DocumentImpl::removeMarker):  Removes a marker from a DOM Range.
734         (DocumentImpl::addMarker):  Adds a marker to a single DOM Node, merging previous
735         markers as needed.
736         (DocumentImpl::removeMarker):  Removes a marker from a single DOM Node, breaking
737         up previous markers as needed.
738         (DocumentImpl::markersForNode):  Return markers for a Node.
739         * khtml/xml/dom_docimpl.h:
740         (DOM::DocumentMarker::):  New marker struct
741         (DOM::DocumentMarker::operator == ):
742         (DOM::DocumentMarker::operator != ):
743         * kwq/KWQKHTMLPart.mm:
744         (KWQKHTMLPart::advanceToNextMisspelling):  Mark misspelled ranges when we find them.
745         Debug only for now.
746
747 2004-07-29  Maciej Stachowiak  <mjs@apple.com>
748
749         Reviewed by Darin.
750
751         <rdar://problem/3745808> Seed: WebKit: Table's caption broken
752         
753         * khtml/html/htmlparser.cpp:
754         (KHTMLParser::insertNode): When a caption appears in an illegal
755         place in a table, pop blocks until we hit a place where it's
756         allowed.
757
758 === Safari-154 ===
759
760 2004-07-29  Darin Adler  <darin@apple.com>
761
762         Reviewed by Ken.
763
764         - added constants for motion across entire document for use in operations like
765           move to beginning of document
766
767         * khtml/xml/dom_selection.h: Added DOCUMENT to ETextGranularity.
768         * khtml/xml/dom_selection.cpp:
769         (DOM::Selection::modifyExtendingRightForward): Added case for DOCUMENT.
770         (DOM::Selection::modifyMovingRightForward): Added case for DOCUMENT.
771         (DOM::Selection::modifyExtendingLeftBackward): Added case for DOCUMENT.
772         (DOM::Selection::modifyMovingLeftBackward): Added case for DOCUMENT.
773         (DOM::Selection::validate): Changed if statements into switch statement,
774         added case for DOCUMENT.
775
776         * kwq/WebCoreBridge.h: Added WebCoreBridge to WebSelectionGranularity.
777
778 2004-07-28  Trey Matteson  <trey@apple.com>
779
780         Small refinement of last checkin.  The text iterators now return reasonable values
781         for range() when atEnd, which gets rid of special cases and pitfalls in the client.
782
783         Reviewed by Ken.
784
785         * khtml/misc/khtml_text_operations.cpp:
786         (khtml::TextIterator::TextIterator):  Set endOffset to a valid value instead of
787         using LONG_MAX.
788         (khtml::TextIterator::range):  Implement when atEnd.
789         (khtml::CharacterIterator::range):  Don't massage result when atEnd.
790         (khtml::WordAwareIterator::WordAwareIterator):  Now that this is fixed, we no
791         longer need this special case.
792         (khtml::WordAwareIterator::advance):  Always set range, even when atEnd, now that
793         TextIterator::range() always works.
794         * khtml/xml/dom_nodeimpl.cpp:
795         (NodeImpl::childNodeCount):  Made const
796         (NodeBaseImpl::maxOffset):  Add missing implementation
797         * khtml/xml/dom_nodeimpl.h:
798         * kwq/KWQKHTMLPart.mm:
799         (KWQKHTMLPart::advanceToNextMisspelling):  Get rid of special cases, always call
800         range on our iterator even when it is atEnd.
801
802 2004-07-28  Maciej Stachowiak  <mjs@apple.com>
803
804         Reviewed by Trey.
805
806         <rdar://problem/3678534> controls on page at http://help.sap.com don't work properly
807
808         To fix this I implemented the various JavaScript BarInfo properties in JavaScript.
809         
810         * khtml/ecma/kjs_window.cpp:
811         (Window::Window):
812         (Window::locationbar):
813         (Window::menubar):
814         (Window::personalbar):
815         (Window::statusbar):
816         (Window::toolbar):
817         (Window::scrollbars):
818         (Window::mark):
819         (Window::get):
820         (SelectionFunc::tryCall):
821         (BarInfo::BarInfo):
822         (BarInfo::~BarInfo):
823         (BarInfo::get):
824         (BarInfo::put):
825         * khtml/ecma/kjs_window.h:
826         (KJS::Window::):
827         (KJS::BarInfo::):
828         (KJS::BarInfo::part):
829         (KJS::BarInfo::classInfo):
830         * khtml/ecma/kjs_window.lut.h:
831         (KJS::):
832         * kwq/KWQKHTMLPart.h:
833         * kwq/KWQKHTMLPart.mm:
834         (KWQKHTMLPart::locationbarVisible):
835         (KWQKHTMLPart::menubarVisible):
836         (KWQKHTMLPart::personalbarVisible):
837         (KWQKHTMLPart::scrollbarsVisible):
838         (KWQKHTMLPart::statusbarVisible):
839         (KWQKHTMLPart::toolbarVisible):
840
841 2004-07-28  Ken Kocienda  <kocienda@apple.com>
842
843         Reviewed by me
844         
845         Added more layout tests.
846
847         * layout-tests/editing/style/style-3681552-fix-001-expected.txt: Added.
848         * layout-tests/editing/style/style-3681552-fix-001.html: Added.
849         * layout-tests/editing/style/style-3681552-fix-002-expected.txt: Added.
850         * layout-tests/editing/style/style-3681552-fix-002.html: Added.
851         * layout-tests/editing/style/style-3690704-fix-expected.txt: Added.
852         * layout-tests/editing/style/style-3690704-fix.html: Added.
853         * layout-tests/editing/style/typing-style-001-expected.txt: Added.
854         * layout-tests/editing/style/typing-style-001.html: Added.
855         * layout-tests/editing/style/typing-style-002-expected.txt: Added.
856         * layout-tests/editing/style/typing-style-002.html: Added.
857
858 2004-07-28  Ken Kocienda  <kocienda@apple.com>
859
860         Reviewed by me
861         
862         Added some layout tests.
863
864         * layout-tests/editing/selection/select-all-001-expected.txt: Added.
865         * layout-tests/editing/selection/select-all-001.html: Added.
866         * layout-tests/editing/selection/select-all-002-expected.txt: Added.
867         * layout-tests/editing/selection/select-all-002.html: Added.
868         * layout-tests/editing/selection/select-all-003-expected.txt: Added.
869         * layout-tests/editing/selection/select-all-003.html: Added.
870
871 2004-07-28  Trey Matteson  <trey@apple.com>
872
873         Spellchecking, Part I.  Basic spellcheck is working.  Spelling panel is hooked up.
874
875         At this point, no special marking of misspellings, no grammar check, no context
876         menu integration, no "check continually" mode.
877
878         Much of the TextIterator and CharacterIterator interface got published outside
879         of khtml_text_operations.cpp, with a little API rationalizing.
880
881         Reviewed by Ken.
882
883         * khtml/misc/khtml_text_operations.cpp:
884         (khtml::TextIterator::range):  Name changes.
885         (khtml::CharacterIterator::CharacterIterator):  Ditto.
886         (khtml::CharacterIterator::range):  Ditto.
887         (khtml::CharacterIterator::advance):  Ditto.
888         (khtml::CharacterIterator::string):  New method to consume chars into a string.
889         (khtml::WordAwareIterator::WordAwareIterator):  New class that iterates over
890         the text respecting word boundaries.
891         (khtml::WordAwareIterator::advance):
892         (khtml::WordAwareIterator::length):
893         (khtml::WordAwareIterator::characters):
894         (khtml::plainText):  Name changes.
895         (khtml::findPlainText):  Ditto.
896
897         API moved from cpp to header file.
898         * khtml/misc/khtml_text_operations.h:
899         (khtml::TextIterator::atEnd):
900         (khtml::TextIterator::length):
901         (khtml::TextIterator::characters):
902         (khtml::CharacterIterator::atBreak):
903         (khtml::CharacterIterator::atEnd):
904         (khtml::CharacterIterator::length):
905         (khtml::CharacterIterator::characters):
906         (khtml::CharacterIterator::characterOffset):
907         (khtml::WordAwareIterator::atEnd):
908         (khtml::WordAwareIterator::range):
909
910         * khtml/xml/dom_position.cpp:
911         (DOM::Position::previousWordBoundary):  New name for the old routine.  This routines semantics
912         match the current behavior of this code.
913         (DOM::Position::nextWordBoundary):  Ditto.
914         (DOM::Position::previousWordPosition):  Call old code with the new name.  When we fix
915         word advancement, this routine will have its own impl.
916         (DOM::Position::nextWordPosition):  Ditto.
917         * khtml/xml/dom_position.h:
918         * khtml/xml/dom_selection.h:
919         (DOM::Selection::rangeStart):  New convenience methods
920         (DOM::Selection::rangeEnd):
921         * kwq/KWQKHTMLPart.h:
922         * kwq/KWQKHTMLPart.mm:
923         (KWQKHTMLPart::findString):  Ensure we use range-compatible positions.
924         (KWQKHTMLPart::advanceToNextMisspelling):  Brand new.
925         * kwq/WebCoreBridge.h:
926         * kwq/WebCoreBridge.mm:
927         (-[WebCoreBridge advanceToNextMisspelling]):  Typical bridge glue.
928
929 2004-07-28  Ken Kocienda  <kocienda@apple.com>
930
931         Reviewed by Maciej
932         
933         Fixed this bug:
934         
935         <rdar://problem/3690704> marking partly bold text italic across blocks wrongly extends the bold section
936
937         * khtml/editing/htmlediting_impl.cpp:
938         (khtml::ApplyStyleCommandImpl::doApply): Fixed loop that gathers up groups of nodes to
939         pass off to the function that applies styles. While this is meant to be conservative in
940         order to leave the DOM well-formed in all cases, it contained an error where the set
941         of nodes to be styled together erroneously could include a node that was meant for 
942         the next set. Fixed.
943         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded): Unrelated change to remove DOM:: scope
944         resolution qualifier. Unneeded here.
945
946 2004-07-28  Darin Adler  <darin@apple.com>
947
948         Reviewed by Trey.
949
950         - fixed <rdar://problem/3658471> REGRESSION: Node.appendChild( ) fails when parent already contains that child
951
952         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::isAncestor): Restore the original meaning of this function.
953         It returns true if the parameter is an ancestor of this, but had been changed to return true if this
954         is an ancestor of the parameter. However, we do retain one change we made at the same time, which is
955         that it does not consider a node an ancestor of itself.
956
957         * khtml/editing/htmlediting_impl.cpp: (khtml::ApplyStyleCommandImpl::nodeFullySelected):
958         * khtml/xml/dom2_traversalimpl.cpp: (DOM::NodeIteratorImpl::notifyBeforeNodeRemoval):
959         Reverse parameters for callers who wanted the new meaning of isAncestor, with care to not use it in
960         any cases where the pointer might be 0.
961
962         * khtml/xml/dom_nodeimpl.h: Added const to the parameter to make things more symmetric and allow the
963         new uses to all compile.
964
965 2004-07-28  Ken Kocienda  <kocienda@apple.com>
966
967         Reviewed by Darin
968
969         Fix for this bug:
970         
971         <rdar://problem/3681552> html editing needs to preserve typing font when replacing selection
972
973         * khtml/css/css_valueimpl.cpp:
974         (CSSStyleDeclarationImpl::merge): New helper that merges styles together. Helpful for
975         dealing with typing styles.
976         * khtml/css/css_valueimpl.h:
977         * khtml/editing/htmlediting_impl.cpp:
978         (khtml::DeleteSelectionCommandImpl::computeTypingStyle): New helper that updates the
979         typing style based on the current selection. This is a convenient bottleneck for all
980         the code that needs to worry about typing style.
981         (khtml::DeleteSelectionCommandImpl::doApply): Update typing style before doing the delete.
982         (khtml::InputNewlineCommandImpl::doApply): No need to redeclare exceptionCode local.
983         Improve comments. 
984         (khtml::InputTextCommandImpl::prepareForTextInsertion): Remove unneeded complication when 
985         figuring out where to insert style node. Not even sure what I was trying to do here, but
986         it does not seem to be needed any more.
987         (khtml::InputTextCommandImpl::execute): Remove unneeded comment.
988         * khtml/editing/htmlediting_impl.h: Declare new computeTypingStyle helper.
989         * khtml/khtml_part.cpp:
990         (KHTMLPart::setCaretVisible): Call selectionLayoutChanged instead of notifySelectionChanged
991         in this function. The selection did not change simply by calling this function, but it
992         does need a layout.
993         (KHTMLPart::notifySelectionChanged): Treat clearing the typing style much like closing typing,
994         instead of clearing it unconditionally.
995         (KHTMLPart::applyStyle): In the case where the current selection is a caret, merge the
996         style being applied with any current typing style that already exists.
997
998 2004-07-28  Darin Adler  <darin@apple.com>
999
1000         Reviewed by Ken.
1001
1002         - fixed <rdar://problem/3711080> REGRESSION (125-146): form fields have shrunk by 1 pixel, and now clip descenders
1003
1004         * kwq/KWQLineEdit.mm: (QLineEdit::sizeForCharacterWidth):
1005         Compute the size without ever calling cellSize. After talking with Andrew Platzer,
1006         we decided that hard-coding the size of the borders of a text field was the best
1007         way for WebCore to handle this.
1008
1009 2004-07-28  Darin Adler  <darin@apple.com>
1010
1011         Reviewed by Ken.
1012
1013         - fixed <rdar://problem/3743204> REGRESSION: crash at startribune.com in InlineBox::root()
1014
1015         * khtml/rendering/render_flow.cpp: (RenderFlow::dirtyLinesFromChangedChild):
1016         Added a check for nil.
1017
1018 2004-07-27  Darin Adler  <darin@apple.com>
1019
1020         Reviewed by Trey.
1021
1022         - fixed <rdar://problem/3743138> opaque colors come out of getComputedStyle as "rgba", transparent ones as "rgb"
1023
1024         * khtml/css/css_valueimpl.cpp: (CSSPrimitiveValueImpl::cssText): Use "rgb" rather than
1025         "rgba" when alpha is 0xFF, not when alpha is 0.
1026
1027 2004-07-27  Ken Kocienda  <kocienda@apple.com>
1028
1029         Reviewed by Hyatt
1030         
1031         Fixed the problem where BR elements on lines by themselves don't paint when selected.
1032
1033         * khtml/khtml_part.cpp:
1034         (KHTMLPart::selectAll): Related fix. Include BR's when figuring out what "all" is.
1035         * khtml/rendering/render_br.cpp:
1036         (RenderBR::paint): New function implementation. Teach BR's how to paint selections.
1037         * khtml/rendering/render_br.h:
1038         * khtml/rendering/render_text.cpp: 
1039         (InlineTextBox::paintSelection): Fix some geometry calculations to be more readable (i.e. don't
1040         reuse function argument as a local). Also, improve the logic for determining whether to 
1041         extend the selection to block boundaries.
1042         (RenderText::paint): Remove extendSelection argument from paintSelection. The logic to figure out
1043         extensions is now fully contained in paintSelection.
1044         * khtml/rendering/render_text.h:
1045
1046 2004-07-27  David Hyatt  <hyatt@apple.com>
1047
1048         Fix for 3665211 (again).  Make sure not to leave child line boxes pointing to deleted ancestor line boxes.
1049         
1050         Reviewed by kocienda
1051
1052         * khtml/rendering/render_block.cpp:
1053         (khtml::RenderBlock::removeChild):
1054
1055 2004-07-26  Chris Blumenberg  <cblu@apple.com>
1056
1057         Fixed: WebView scrolls to the top after making an editing change via drag & drop
1058
1059         Fixed by Ken, reviewed by me.
1060
1061         * kwq/WebCoreBridge.mm:
1062         (-[WebCoreBridge ensureCaretVisible]): do nothing if the selection is not a caret
1063
1064 === Safari-153 ===
1065
1066 2004-07-26  Maciej Stachowiak  <mjs@apple.com>
1067
1068         Reviewed by John.
1069
1070         <rdar://problem/3740855> REGRESSION: Flash incorrectly positioned at macromedia.com
1071         
1072         * khtml/html/htmltokenizer.cpp:
1073         (khtml::HTMLTokenizer::scriptExecution): Do the prepending-src
1074         trick as for inline script execution.
1075
1076         Added new layout tests covering this and other recent tokenizer
1077         bugs.
1078         
1079         * layout-tests/fast/tokenizer/001-expected.txt: Added.
1080         * layout-tests/fast/tokenizer/001.html: Added.
1081         * layout-tests/fast/tokenizer/002-expected.txt: Added.
1082         * layout-tests/fast/tokenizer/002.html: Added.
1083         * layout-tests/fast/tokenizer/003-expected.txt: Added.
1084         * layout-tests/fast/tokenizer/003.html: Added.
1085         * layout-tests/fast/tokenizer/resources/003-script.js: Added.
1086
1087 2004-07-23  Ken Kocienda  <kocienda@apple.com>
1088
1089         Reviewed by Trey
1090
1091         Fix for this bug:
1092         
1093         <rdar://problem/3738920> Caret blinks in inactive window
1094
1095         As part of the fix, I cleaned up the way we handle special drawing that needs
1096         to be done in the HTML view that is first responder in the key window (e.g the
1097         drawing of text selection highlight and caret blinking).
1098
1099         * khtml/khtml_part.cpp: Removed setCaretVisible function. Updating caret visibility
1100         is now done in setDisplaysWithFocusAttributes, described below.
1101         * khtml/khtml_part.h: Ditto.
1102         * khtml/khtmlpart_p.h:
1103         (KHTMLPartPrivate::KHTMLPartPrivate): m_caretVisible now defaults to false. This prevents
1104         the caret from blinking when an app is started from the command line and remains in the
1105         background.
1106         * khtml/khtmlview.cpp:
1107         (KHTMLView::focusInEvent): Remove caret code from here. Not needed.
1108         (KHTMLView::focusOutEvent): Ditto.
1109         * kwq/KWQKHTMLPart.h:
1110         (KWQKHTMLPart::displaysWithFocusAttributes): New accessor to return cached value to other code
1111         in WebCore.
1112         * kwq/KWQKHTMLPart.mm:
1113         (KWQKHTMLPart::KWQKHTMLPart):
1114         (KWQKHTMLPart::setDisplaysWithFocusAttributes): Renamed from setShowsFirstResponder and modified
1115         to do the display updating in a clearer way....and now has comments!
1116         * kwq/WebCoreBridge.h: Remove several obsolete functions that use to try to do the work of the new
1117         setDisplaysWithFocusAttributes function (and did so less well).
1118         * kwq/WebCoreBridge.mm:
1119         (-[WebCoreBridge drawRect:]): Now calls displaysWithFocusAttributes to figure out how to draw the
1120         text selection background.
1121         (-[WebCoreBridge setDisplaysWithFocusAttributes:]): Calls through to setDisplaysWithFocusAttributes in 
1122         KWQKHTMLPart.
1123         (-[WebCoreBridge selectionColor]): Flipped the value of this ternary expression to accommodate the
1124         change from usesInactiveTextBackgroundColor to setDisplaysWithFocusAttributes.
1125         (-[WebCoreBridge setCaretVisible:]): Removed.
1126
1127 2004-07-23  John Sullivan  <sullivan@apple.com>
1128
1129         Reviewed by Maciej.
1130
1131         - fixed <rdar://problem/3691569> REGRESSION (142): cmd-shift-clicking on a link 
1132         now also extends selection (even if there wasn't one before)
1133
1134         * khtml/khtml_part.cpp:
1135         (KHTMLPart::handleMousePressEventSingleClick):
1136         Uh, duh. Got a ! wrong last time somehow, so it did even more the wrong thing
1137         than ever. I did test this before, so my best guess is an accidental undo or
1138         something before committing.
1139
1140 2004-07-23  David Hyatt  <hyatt@apple.com>
1141
1142         Fix for 3735084 and 3737209, when you can find no line boxes in your previous sibling, the line box to dirty
1143         should be the *first* line box and not the last.
1144         
1145         Reviewed by kocienda
1146
1147         * khtml/rendering/render_flow.cpp:
1148         (RenderFlow::dirtyLinesFromChangedChild):
1149
1150 2004-07-23  Ken Kocienda  <kocienda@apple.com>
1151
1152         Reviewed by John
1153
1154         * khtml/xml/dom_selection.cpp:
1155         (DOM::Selection::validate): Not exactly a fix of anything per se, but more of a refinement
1156         of how selection validation works. The idea is to let the selection validation process
1157         end up with an empty selection given real DOM position inputs if the validation code
1158         cannot find a rendered position. Since selection is all about display, this makes sense.
1159         Currently, the code will allow the selection to be placed in a location that is not
1160         rendered, and this does nobody any good, as it can lead to bugs like accepting key input
1161         in a div that is set to display:none.
1162
1163 2004-07-23  Ken Kocienda  <kocienda@apple.com>
1164
1165         Reviewed by me
1166
1167         Updated layout tests with new expected results.
1168
1169         * layout-tests/editing/execCommand/boldSelection-expected.txt
1170         * layout-tests/editing/selection/extend-by-character-001-expected.txt
1171         * layout-tests/editing/selection/extend-by-character-003-expected.txt
1172         * layout-tests/editing/selection/unrendered-005-expected.txt
1173
1174 2004-07-22  Maciej Stachowiak  <mjs@apple.com>
1175
1176         Reviewed by Kevin.
1177
1178         <rdar://problem/3725467> REGRESSION(140-142) nothing displayed at http://Ye-Olde-Movies.tripod.com
1179         <rdar://problem/3599494> REGRESSION (100-125): Frame does not refresh until user clicks on browser.
1180         
1181         * khtml/rendering/render_frames.cpp:
1182         (RenderFrameSet::layout): When returning early because there are
1183         no children, make sure to mark self as no longer needing
1184         layout. Otherwise, when children are added, we'll fail to
1185         propagate childrenNeedLayout to our own parent! This is almost
1186         certainly a long-standing bug that was just masked by our old
1187         layout tomfoolery.
1188
1189 2004-07-22  Kevin Decker  <kdecker@apple.com>
1190
1191         Reviewed by Darin
1192
1193         Fixed <rdar://problem/3682340> (error console does not include source urls or line numbers of event exceptions).
1194
1195         * khtml/ecma/kjs_events.cpp:
1196         (JSLazyEventListener::JSLazyEventListener):
1197         (JSLazyEventListener::parseCode):
1198         * khtml/ecma/kjs_events.h:
1199         * khtml/ecma/kjs_proxy.cpp:
1200         (KJSProxyImpl::createHTMLEventHandler):
1201         * khtml/ecma/kjs_window.cpp:
1202         (Window::getJSLazyEventListener):
1203         * khtml/ecma/kjs_window.h:
1204
1205 2004-07-22  Ken Kocienda  <kocienda@apple.com>
1206
1207         Reviewed by Hyatt
1208
1209         Fix for this bug:
1210
1211         <rdar://problem/3724344> Bolding and unbolding creates extraneous tags
1212
1213         * khtml/editing/htmlediting_impl.cpp:
1214         (khtml::ApplyStyleCommandImpl::doApply): Move the start of the selection upstream
1215         before calling removeStyle. This makes sure we remove all styles that could apply to the 
1216         selection, and not just ones in from the start position of the selection passed to us. 
1217         This fixes the bug.
1218         * khtml/xml/dom_selection.cpp:
1219         (DOM::Selection::validate): Related fix to "constrain" the selection to be the 
1220         smallest equivalent range of nodes, in effect making a "canonical" version of the
1221         selection. While this is not strictly necessary to fix the bug, it is a step I have been 
1222         wanting to take this step for a long time, and some recent improvements made it 
1223         possible for me to do now in just two lines of code.
1224
1225 2004-07-22  Ken Kocienda  <kocienda@apple.com>
1226
1227         Reviewed by Hyatt
1228
1229         Fix for this bug:
1230         
1231         <rdar://problem/3711264> difficult (impossible?) to get cursor in an editable webview containing only tags
1232
1233         * khtml/rendering/render_container.cpp:
1234         (RenderContainer::positionForCoordinates): Don't assume you can pass off
1235         the check to a first child if there is one, since the child can be an element
1236         we do not want to place the caret in, like a table row with no cells (the case
1237         in the bug above). So now, we iterate of the renderer's children looking for
1238         the closest one, but only consider those renderers which either have children
1239         themselves, or are render block flows or are render inlines. 
1240
1241 2004-07-22  Darin Adler  <darin@apple.com>
1242
1243         - remove a bunch of now-unused code
1244
1245         * ForwardingHeaders/qxml.h: Removed.
1246         * kwq/KWQXmlAttributes.h: Removed.
1247         * kwq/KWQXmlAttributes.mm: Removed.
1248         * kwq/KWQXmlDefaultHandler.h: Removed.
1249         * kwq/KWQXmlDefaultHandler.mm: Removed.
1250         * kwq/KWQXmlSimpleReader.h: Removed.
1251         * kwq/KWQXmlSimpleReader.mm: Removed.
1252
1253 2004-07-22  Darin Adler  <darin@apple.com>
1254
1255         Reviewed by Dave.
1256
1257         - got rid of QXml classes and changed XML parsing to use libxml directly
1258
1259         This is the first step toward more direct use of libxml and libxslt.
1260         Dave is planning to build on this to implement XSLT and to improve our handling
1261         of XML documents (faster and more feature complete, including DTDs).
1262
1263         * khtml/html/html_elementimpl.cpp:
1264         (HTMLElementImpl::createContextualFragment):
1265         * khtml/html/htmltokenizer.cpp:
1266         (khtml::HTMLTokenizer::HTMLTokenizer):
1267         * khtml/html/htmltokenizer.h:
1268         * khtml/xml/dom_docimpl.cpp:
1269         (DocumentImpl::createTokenizer):
1270         (DocumentImpl::open):
1271         * khtml/xml/dom_docimpl.h:
1272         (DOM::DocumentImpl::tokenizer):
1273         * khtml/xml/dom_xmlimpl.cpp:
1274         (DOM::ProcessingInstructionImpl::checkStyleSheet):
1275         * khtml/xml/dom_xmlimpl.h:
1276         * khtml/xml/xml_tokenizer.h:
1277         * khtml/xml/xml_tokenizer.cpp: Redid this all to use libxml directly.
1278
1279         * WebCore.pbproj/project.pbxproj: Removed a bunch of files.
1280
1281 2004-07-21  Trey Matteson  <trey@apple.com>
1282
1283         DHTML dragging should use UTI for MIME-pboard type conversion
1284
1285         Reviewed by Ken
1286
1287         * kwq/KWQClipboard.mm:
1288         (cocoaTypeFromMIMEType):  Use UTI, except for cases we need to hardwire.  Only cut off
1289         MIME args following a semi-colon for text/plain.
1290         (MIMETypeFromCocoaType): Use UTI, except for cases we need to hardwire.  
1291         (KWQClipboard::types):  Filter out ancient NSAsciiPboardType so DHTML never sees this cruft.
1292
1293 2004-07-21  Ken Kocienda  <kocienda@apple.com>
1294
1295         Reviewed by Trey
1296
1297         Remove handling of HTML editing key events from WebCore.
1298         This now happens in WebKit if an event passes all the
1299         way through WebCore without being handled by the DOM.
1300
1301         In each case below, function were removed, as their
1302         only purpose was to handle editing key events.
1303
1304         * khtml/xml/dom_elementimpl.cpp
1305         * khtml/xml/dom_elementimpl.h
1306         * kwq/KWQKHTMLPart.h
1307         * kwq/KWQKHTMLPart.mm
1308         * kwq/WebCoreBridge.h
1309
1310 2004-07-21  Ken Kocienda  <kocienda@apple.com>
1311
1312         Reviewed by John
1313
1314         * khtml/xml/dom_selection.cpp:
1315         (DOM::Selection::modifyExtendingRightForward): Add LINE_BOUNDARY case to the switch statement in this
1316         function. Use the startAndEndLineNodesIncludingNode helper which already existed to get the right
1317         position.
1318         (DOM::Selection::modifyMovingRightForward): Ditto
1319         (DOM::Selection::modifyExtendingLeftBackward): Ditto
1320         (DOM::Selection::modifyMovingLeftBackward): Ditto
1321         * khtml/xml/dom_selection.h: 
1322         (DOM::Selection::): Add LINE_BOUNDARY constant to ETextGranularity enum. This
1323         specifies a new kind of movement that we need to implement the "move-to beggining/end of line"
1324         behavior which AppKit binds to cmd+left/right arrow keys.
1325         * kwq/WebCoreBridge.h: Add WebSelectToLineBoundary constant. This matches
1326
1327 2004-07-20  David Hyatt  <hyatt@apple.com>
1328
1329         Fix for 3714434, user stylesheet is always parsed in strict mode, when it should honor the document's setting.
1330         
1331         Reviewed by john
1332
1333         * khtml/css/cssstyleselector.cpp:
1334         (khtml::CSSStyleSelector::CSSStyleSelector):
1335
1336 2004-07-20  Ken Kocienda  <kocienda@apple.com>
1337
1338         Reviewed by Richard
1339
1340         * khtml/xml/dom_elementimpl.cpp:
1341         (ElementImpl::defaultEventHandler): No longer check whether
1342         the command key is modifying the key event. This check is
1343         now done elsewhere in the code. See the WebKit checkin that
1344         added the _web_keyBindingManagerHasBinding method to 
1345         WebNSEventExtras.
1346
1347 2004-07-20  Chris Blumenberg  <cblu@apple.com>
1348
1349         Fixed:
1350         <rdar://problem/3580589> REGRESSION (1.1-1.2): can't open a new window for an image that has not loaded
1351         <rdar://problem/3612691> Missing image icons (blue ?) lack context menu
1352
1353         Reviewed by john.
1354
1355         * kwq/WebCoreBridge.mm:
1356         (-[WebCoreBridge elementAtPoint:]): if there is no image, put the image URL on the element anyway
1357
1358 2004-07-20  David Hyatt  <hyatt@apple.com>
1359
1360         Fix for alt text not working on images.
1361         
1362         Reviewed by john
1363
1364         * khtml/rendering/render_image.cpp:
1365         (RenderImage::RenderImage):
1366         (RenderImage::setPixmap):
1367         (RenderImage::paint):
1368         (RenderImage::calcReplacedWidth):
1369         (RenderImage::calcReplacedHeight):
1370
1371 2004-07-20  Maciej Stachowiak  <mjs@apple.com>
1372
1373         Reviewed by Dave.
1374
1375         <rdar://problem/3720111> REGRESSION(125-152): map fails to load depending on banner ad; weather.com (works in IE and Firefox)
1376         
1377         * khtml/html/htmltokenizer.cpp:
1378         (khtml::HTMLTokenizer::begin): Initialize currentPrependingSrc.
1379         (khtml::HTMLTokenizer::scriptHandler): Store a pointer to the currently
1380         active prependingSrc variable on the stack, the better to handle weird cases
1381         of scripts writing out additional script tags and so forth.
1382         (khtml::HTMLTokenizer::write): Deal with the above.
1383         * khtml/html/htmltokenizer.h: Declare new member field.
1384
1385 2004-07-20  David Hyatt  <hyatt@apple.com>
1386
1387         Fix for layer positioning error that occurs when absolute positioned blocks are inside static positioned overflow:auto
1388         elements.
1389         
1390         Reviewed by john
1391
1392         * khtml/rendering/render_layer.cpp:
1393         (RenderLayer::updateLayerPosition):
1394
1395 2004-07-20  Trey Matteson  <trey@apple.com>
1396
1397         3705624 REGRESSION: can't rearrange photos on homepage.mac.com album
1398
1399         A subtle problem stemming from some interaction between focus handing and
1400         event propagation.  We previously made it so when a focus shift fails we
1401         don't propagate the event to KHTML.  The fix is to get rid of the inverse
1402         effect, so now even if a focus shift succeeds, we don't propagate to KHTML if
1403         the page already canceled default behavior.
1404
1405         In this specific case, the page is cancelling default behavior since it
1406         does its own dragging, and the bug was our new system dragging was
1407         kicking in.
1408
1409         Reviewed by Ken.
1410
1411         * khtml/khtmlview.cpp:
1412         (KHTMLView::dispatchMouseEvent):  What he said.
1413
1414 2004-07-20  Ken Kocienda  <kocienda@apple.com>
1415
1416         Reviewed by Darin
1417
1418         Fix for this bug:
1419         
1420         <rdar://problem/3695240> pasting plain text with newlines in it turns them into spaces
1421
1422         * kwq/WebCoreBridge.mm:
1423         (-[WebCoreBridge documentFragmentWithText:]): Refine this function to be smart about converting
1424         line endings into BR elements.
1425
1426 2004-07-20  Ken Kocienda  <kocienda@apple.com>
1427
1428         Reviewed by Hyatt
1429
1430         Fix for this bug:
1431         
1432         <rdar://problem/3707505> HTMLCompose: blinking cursor in both an address text field and the message body
1433
1434         * khtml/khtml_part.cpp:
1435         (KHTMLPart::setCaretVisible): This method renamed from setSelectionVisible. Since it really only operates
1436         on the caret, this seems like a better name.
1437         * khtml/khtml_part.h:
1438         * khtml/khtmlview.cpp:
1439         (KHTMLView::focusInEvent): Call setCaretVisible(true)
1440         (KHTMLView::focusOutEvent): Call setCaretVisible(false)
1441         * kwq/KWQKHTMLPart.mm:
1442         (KWQKHTMLPart::setShowsFirstResponder): Name change: setSelectionVisible becomes setCaretVisible.
1443         * kwq/WebCoreBridge.h: Expose setCaretVisible as a bridge method.
1444         * kwq/WebCoreBridge.mm:
1445         (-[WebCoreBridge setCaretVisible:]): Ditto.
1446
1447 2004-07-19  Maciej Stachowiak  <mjs@apple.com>
1448
1449         Reviewed by Trey.
1450
1451         <rdar://problem/3721428> REGRESSION (125.8-146): external javascript statements produce extra garbage character (sina.com)
1452         
1453         * khtml/misc/stringit.h:
1454         (khtml::TokenizerSubstring::TokenizerSubstring): For the apple branch, use the new
1455         stableUnicode() method to get the unicode pointer.
1456         * kwq/KWQString.h:
1457         * kwq/KWQString.mm:
1458         (QString::detachIfInternal): Reorganize this to be a bit less wacky about refcounts.
1459         It does not leave around a zombie internal data handle but rather destroys it right away,
1460         and leaves the object pointing to the new handle (which it can then deref). This makes
1461         the code more clear.
1462         (QString::~QString): Simplify.
1463         (QString::stableUnicode): New method that detaches a copy of the KWQStringData if it
1464         is internal to a string besides this one. This guarantees that if you get the unicode()
1465         pointer, it won't go bad so long as this string is still alive.
1466
1467 2004-07-19  David Hyatt  <hyatt@apple.com>
1468
1469         Fix for 3715117, crash from a bug in removeChildren.  Clean up node removal and fix an n-squared removal
1470         bug.  Also clean up checks in removeChild and in the dispatch of removedFromDocument mutation events to
1471         make node removal more efficient.
1472         
1473         Reviewed by kocienda
1474
1475         * khtml/xml/dom_nodeimpl.cpp:
1476
1477 2004-07-19  John Sullivan  <sullivan@apple.com>
1478
1479         Reviewed by Trey.
1480         
1481         - fixed <rdar://problem/3141150> can't undo in form textarea fields
1482
1483         * kwq/KWQTextArea.mm:
1484         (-[KWQTextArea _createTextView]):
1485         call setAllowsUndo:YES. My, wasn't this easy?
1486
1487 2004-07-19  David Hyatt  <hyatt@apple.com>
1488
1489         Merge @import fix for CSS1 test suite from Stephan Kulow.
1490         
1491         Reviewed by hyatt
1492
1493         * khtml/css/parser.cpp:
1494         * khtml/css/parser.y:
1495         * layout-tests/css1/basic/containment-expected.txt:
1496
1497 2004-07-19  David Hyatt  <hyatt@apple.com>
1498
1499         Fix for 3718697, crash clicking on JS tab at alaskaair.com.
1500         
1501         Reviewed by kocienda
1502
1503         * khtml/rendering/render_flow.cpp:
1504         (RenderFlow::detach):
1505         (RenderFlow::dirtyLinesFromChangedChild):
1506         * khtml/rendering/render_flow.h:
1507         * khtml/rendering/render_object.cpp:
1508         (RenderObject::dirtyLinesFromChangedChild):
1509         * khtml/rendering/render_object.h:
1510
1511 2004-07-16  David Hyatt  <hyatt@apple.com>
1512
1513         Fix for 3726471, need to ensure that it's safe to do updateRendering from within layout, since isContentEditable
1514         relies on it.  The fix is to just recalcStyle up front before beginning the layout, so that all of our renderobjects
1515         will be up-to-date.
1516         
1517         Reviewed by john
1518
1519         * khtml/khtmlview.cpp:
1520         (KHTMLView::layout):
1521
1522 2004-07-16  Ken Kocienda  <kocienda@apple.com>
1523
1524         Reviewed by Hyatt
1525
1526         Fix for this bug:
1527         
1528         <rdar://problem/3722153> Random crash while typing (DOM::NodeImpl::parentNode (this=0x0))
1529
1530         * khtml/editing/htmlediting_impl.cpp:
1531         (khtml::DeleteSelectionCommandImpl::doApply): This check merely makes the code
1532         more robust. I do not understand how Grant ended up with null start or end 
1533         blocks in the case of his bug report, but by adding two null checks, the code is 
1534         now hardened a bit in case it happens again.
1535
1536 2004-07-16  Ken Kocienda  <kocienda@apple.com>
1537
1538         Reviewed by Hyatt
1539
1540         Fix for these bugs:
1541
1542         <rdar://problem/3730785> Crash when arrow navigation goes to empty table cell
1543         <rdar://problem/3730790> Caret does not blink when placed in empty table cell
1544
1545         * khtml/rendering/render_block.cpp:
1546         (khtml::RenderBlock::paintObject): Caret node's renderer might be this block, so
1547         don't block the painting of the caret in this case. This was the case in 3730790.
1548         We had the right geometry for the caret but blocked its painting. 
1549         * khtml/xml/dom_position.cpp:
1550         (DOM::Position::previousLinePosition): Rework the logic here. This function asserted
1551         that the new position we would navigate to had a line box, but empty table cells, for
1552         instance will not. So, deal with this situation as well. The end result is a 
1553         function that worked like it did before in cases where the previous line position has
1554         a line box, but now also will allow navigation to work when it does not.
1555         (DOM::Position::nextLinePosition): Ditto.
1556
1557 2004-07-16  Ken Kocienda  <kocienda@apple.com>
1558
1559         Reviewed by Hyatt
1560
1561         Fix for this bug:
1562         
1563         <rdar://problem/3687216> editable inline causes crash when focused
1564
1565         * khtml/xml/dom_docimpl.cpp:
1566         (DocumentImpl::relinquishesEditingFocus): Add null check for rootEditableElement.
1567         (DocumentImpl::acceptsEditingFocus): Ditto.
1568
1569 2004-07-16  David Hyatt  <hyatt@apple.com>
1570
1571         Fix for 3709337, crash when using display: compact.  Need to make sure that the isCompact() check in bidi.cpp is
1572         also checking for RenderBlocks, since otherwise you match text nodes (and that's just wrong).
1573         
1574         Reviewed by kocienda
1575
1576         * khtml/rendering/bidi.cpp:
1577         (khtml::RenderBlock::layoutInlineChildren):
1578
1579 === Safari-152 ===
1580
1581 2004-07-15  David Hyatt  <hyatt@apple.com>
1582
1583         Fix for 3625611, images offset on first visit to page.  The method for determining the last clean line was
1584         flawed and would incorrectly miss dirty lines that occurred after the first clean line.
1585         
1586         Reviewed by john
1587
1588         * khtml/rendering/bidi.cpp:
1589         (khtml::RenderBlock::determineEndPosition):
1590
1591 2004-07-15  Ken Kocienda  <kocienda@apple.com>
1592
1593         Reviewed by John
1594
1595         Fix for this bug:
1596         <rdar://problem/3587601> reproducible assertion failure in Blot deleting text, then image at Yahoo.com
1597         
1598         * khtml/editing/htmlediting_impl.cpp:
1599         (khtml::DeleteCollapsibleWhitespaceCommandImpl::deleteWhitespace): Relax assertion
1600         that nodes are text nodes during the walk of eligible nodes that could possibly be
1601         deleted. Change the assertion to an conditional check for text nodes. We may have 
1602         unrendered nodes in the mix here (as is the case in the bug where the assertion
1603         failed on an AREA element), and the conditional check is sufficient to
1604         skip them while leaving the delete logic we want unperturbed. 
1605
1606 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1607
1608         Reviewed by John
1609
1610         * khtml/rendering/render_block.cpp:
1611         (khtml::RenderBlock::paintObject): Add null check on DOM node before
1612         asking if it is contentEditable.
1613
1614 2004-07-14  David Hyatt  <hyatt@apple.com>
1615
1616         Fix for 3595073, setting innerHTML on a <table> should work.
1617         
1618         Reviewed by rjw
1619
1620         * khtml/html/html_elementimpl.cpp:
1621         (HTMLElementImpl::createContextualFragment):
1622
1623 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1624
1625         Reviewed by Hyatt
1626         
1627         Updated these layout tests as a result of the last patch.
1628         These results are better.
1629
1630         * layout-tests/editing/execCommand/selectAll-expected.txt
1631         * layout-tests/editing/selection/extend-by-character-006-expected.txt
1632         * layout-tests/editing/selection/unrendered-001-expected.txt
1633         * layout-tests/editing/selection/unrendered-003-expected.txt
1634
1635 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1636
1637         Reviewed by Hyatt
1638
1639         * khtml/rendering/render_block.cpp: 
1640         (khtml::RenderBlock::paintObject): Change back to start() from caretPosition().
1641         Since the policy is now to move the selection to rendered content, if possible,
1642         when the selection is set, there is no longer any reason to have the additional
1643         caretPosition() function to store where the caret should be drawn.
1644         * khtml/xml/dom_docimpl.cpp:
1645         (DocumentImpl::updateSelection): No longer any need to call closestRenderedPosition here.
1646         This is done in Selection::validate.
1647         * khtml/xml/dom_position.cpp:
1648         (DOM::Position::closestRenderedPosition): Improved algorithm. Now much simpler.
1649         * khtml/xml/dom_selection.cpp:
1650         (DOM::Selection::Selection): caretPosition() and m_caretPosition now obsolete.
1651         (DOM::Selection::init): Ditto.
1652         (DOM::Selection::modifyExtendingRightForward): No longer any need to call 
1653         closestRenderedPosition here. This is done in Selection::validate.
1654         (DOM::Selection::modifyMovingRightForward): Ditto.
1655         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
1656         (DOM::Selection::modifyMovingLeftBackward): Ditto.
1657         (DOM::Selection::layoutCaret): Ditto.
1658         (DOM::Selection::validate): Add code to move the selection to rendered content if possible.
1659         * khtml/xml/dom_selection.h: caretPosition() and m_caretPosition now obsolete.
1660
1661 2004-07-14  David Hyatt  <hyatt@apple.com>
1662
1663         Fix for 3716082, assert when you dynamically remove float or position styles.
1664         
1665         Reviewed by kevin
1666
1667         * khtml/rendering/render_object.cpp:
1668         (RenderObject::setStyle):
1669
1670 2004-07-14  David Hyatt  <hyatt@apple.com>
1671
1672         Fix for various table regressions (malumovies.com and cityofheroes.gameamp.com) involving bungling of
1673         percentage heights.
1674         
1675         Reviewed by kocienda
1676
1677         * khtml/rendering/render_box.cpp:
1678         (RenderBox::calcPercentageHeight):
1679         (RenderBox::availableHeightUsing):
1680         * khtml/rendering/render_table.cpp:
1681         (RenderTable::layout):
1682         (RenderTableSection::calcRowHeight):
1683         (RenderTableSection::layoutRows):
1684         (RenderTableCell::updateFromElement):
1685         * khtml/rendering/render_table.h:
1686
1687 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1688
1689         Reviewed by John
1690
1691         * khtml/xml/dom_position.cpp:
1692         (DOM::Position::equivalentDeepPosition): New helper function to improve selection handling.
1693         Soon, I plan to land some changes that use this new function.
1694         * khtml/xml/dom_position.h:
1695
1696 2004-07-14  Ken Kocienda  <kocienda@apple.com>
1697
1698         Reviewed by Vicki
1699
1700         * WebCore-combined.exp: Added QString.at symbol to tests exports to facilitate debugging
1701         data formatting change that is to come.
1702         * WebCore-tests.exp:
1703         
1704 2004-07-13  John Sullivan  <sullivan@apple.com>
1705
1706         Reviewed by Ken.
1707         
1708         - fixed <rdar://problem/3705500> REGRESSION (125.8-146): Cmd-E on an 
1709         HTML page puts a trailing space on Find pasteboard
1710
1711         * khtml/misc/khtml_text_operations.cpp:
1712         (khtml::TextIterator::handleTextBox):
1713         In the case where a subrun doesn't extend to the end of the text box,
1714         the well-commented code was supposed to return from this routine, but
1715         the wrong variable was being compared. This would send us through another
1716         pass of the loop, which would end up worrying about collapsed space at the
1717         end of the current box, even though we only cared about the beginning of the
1718         current box.
1719
1720 2004-07-12  Richard Williamson   <rjw@apple.com>
1721
1722         Fixed 3717982.  Implemented navigator.language!
1723
1724         Reviewed by John.
1725
1726         * khtml/ecma/kjs_navigator.cpp:
1727         (Navigator::getValueProperty):
1728
1729 2004-07-12  Ken Kocienda  <kocienda@apple.com>
1730
1731         Reviewed by Hyatt
1732
1733         * khtml/xml/dom_position.cpp:
1734         (DOM::Position::inRenderedContent): I broke selection drawing with my last patch. This 
1735         function is now used in selection drawing, and it was making an unneeded check to see
1736         that content was editable to answer whether or not is was rendered. Bad. Fixed.
1737
1738 2004-07-12  David Hyatt  <hyatt@apple.com>
1739
1740         Fix for 3621138, crash on hrweb.apple.com.  Make sure that in the case where objects get pulled up from merging
1741         blocks that we just delete all line boxes.
1742         
1743         Reviewed by kocienda
1744
1745         * khtml/rendering/render_block.cpp:
1746         (khtml::RenderBlock::removeChild):
1747
1748 2004-07-10  Maciej Stachowiak  <mjs@apple.com>
1749
1750         Reviewed by John.
1751
1752         <rdar://problem/3706080>: (REGRESSION (125.8-147u): Nested <ul> do not display bullets)
1753         <rdar://problem/3676376>: (Second level bullets not printed when printing Xcode release notes)
1754         
1755         * kwq/KWQPainter.h:
1756         * kwq/KWQPainter.mm:
1757         (CGColorFromNSColor):
1758         (QPainter::drawEllipse):
1759         (QPainter::setShadow):
1760
1761 2004-07-12  Ken Kocienda  <kocienda@apple.com>
1762
1763         Reviewed by me
1764         
1765         Added new editing-related layout tests
1766
1767         * layout-tests/editing/deleting/delete-after-span-ws-001-expected.txt: Added.
1768         * layout-tests/editing/deleting/delete-after-span-ws-001.html: Added.
1769         * layout-tests/editing/deleting/delete-after-span-ws-002-expected.txt: Added.
1770         * layout-tests/editing/deleting/delete-after-span-ws-002.html: Added.
1771         * layout-tests/editing/deleting/delete-after-span-ws-003-expected.txt: Added.
1772         * layout-tests/editing/deleting/delete-after-span-ws-003.html: Added.
1773         * layout-tests/editing/selection/unrendered-001-expected.txt: Added.
1774         * layout-tests/editing/selection/unrendered-001.html: Added.
1775         * layout-tests/editing/selection/unrendered-002-expected.txt: Added.
1776         * layout-tests/editing/selection/unrendered-002.html: Added.
1777         * layout-tests/editing/selection/unrendered-003-expected.txt: Added.
1778         * layout-tests/editing/selection/unrendered-003.html: Added.
1779         * layout-tests/editing/selection/unrendered-004-expected.txt: Added.
1780         * layout-tests/editing/selection/unrendered-004.html: Added.
1781         * layout-tests/editing/selection/unrendered-005-expected.txt: Added.
1782         * layout-tests/editing/selection/unrendered-005.html: Added.
1783         * layout-tests/traversal/node-iterator-008-expected.txt: Added.
1784         * layout-tests/traversal/node-iterator-008.html: Added.
1785         * layout-tests/traversal/tree-walker-005-expected.txt: Added.
1786         * layout-tests/traversal/tree-walker-005.html: Added.
1787
1788 2004-07-12  Ken Kocienda  <kocienda@apple.com>
1789
1790         Reviewed by Hyatt
1791
1792         Fixes for these bugs:
1793         
1794         <rdar://problem/3723359> Extending then "unextending" selection with arrow keys should draw caret but doesn't
1795         <rdar://problem/3724626> White-space deletion code deletes wrong character when space follows span
1796         
1797         * khtml/editing/htmlediting_impl.cpp:
1798         (khtml::DeleteSelectionCommandImpl::doApply): Modify special-case white-space deletion code so it runs
1799         only in the special case. It was throwing its net too widely, catching the case described in 3724626.
1800         By tightening up the special-case white-space deletion, and allowing the more general-purpose code to run,
1801         the bug is fixed.
1802         * khtml/xml/dom_docimpl.cpp:
1803         (DocumentImpl::updateSelection): Use recently-added closestRenderedPosition helper in Position class
1804         to figure out the start and end positions for selection drawing.
1805         * khtml/xml/dom_position.cpp:
1806         (DOM::Position::equivalentUpstreamPosition): Added code to handle white-space that causes line breaks.
1807         (DOM::Position::equivalentDownstreamPosition): Ditto.
1808         (DOM::Position::closestRenderedPosition): Trap empty selections at function entry, return *this.
1809         (DOM::Position::isFirstRenderedPositionOnLine): Can't be first rendered position on line if not rendered.
1810         Add check for this.
1811         (DOM::Position::isLastRenderedPositionOnLine): Ditto, but s/first/last/
1812         * khtml/xml/dom_selection.cpp:
1813         (DOM::Selection::validate): A selection is in caret state if the start and end are equal *or* equivalent.
1814         The equivalence case is new, and fixes 3723359.
1815
1816 2004-07-09  Kevin Decker  <kdecker@apple.com>
1817
1818         Reviewed by Hyatt.
1819         
1820         fixes the width:auto problem in
1821         <rdar://problem/3698344> REGRESSION (143?-144): macrumors.com tabs are compressed and illegible
1822         
1823         * khtml/css/cssstyleselector.cpp:
1824         (khtml::CSSStyleSelector::applyProperty):
1825
1826 2004-07-09  Ken Kocienda  <kocienda@apple.com>
1827
1828         Reviewed by me
1829         
1830         Updated some layout test results.
1831
1832         * layout-tests/editing/deleting/delete-image-004-expected.txt:
1833         * layout-tests/editing/selection/extend-by-character-006-expected.txt:
1834
1835 2004-07-09  Chris Blumenberg  <cblu@apple.com>
1836
1837         Allowed my change for 3715785 to compile on Jaguar.
1838
1839         Reviewed by kocienda.
1840
1841         * kwq/WebCoreBridge.h:
1842         * kwq/WebCoreBridge.mm:
1843         (-[WebCoreBridge domain]): new, allows access to the domain without using the DOM API which doesn't exist on Jaguar
1844
1845 2004-07-09  Ken Kocienda  <kocienda@apple.com>
1846
1847         Reviewed by Hyatt
1848         
1849         Some improvements to fix:
1850         
1851         <rdar://problem/3723111> Caret not drawn when selection set to unrendered content
1852
1853         * khtml/editing/htmlediting_impl.cpp:
1854         (khtml::TypingCommandImpl::issueCommandForDeleteKey): Adjust selection to delete if
1855         selected position is not rendered.
1856         * khtml/rendering/render_block.cpp:
1857         (khtml::RenderBlock::paintObject): Use new caretPosition() function on Selection to
1858         figure out whether to paint.
1859         * khtml/xml/dom_position.cpp:
1860         (DOM::Position::previousCharacterPosition): Now correctly deals with a start
1861         position that is not rendered.
1862         (DOM::Position::nextCharacterPosition): Ditto.
1863         (DOM::Position::closestRenderedPosition): New helper.
1864         * khtml/xml/dom_position.h:
1865         (DOM::): Moved in EAffinity from Selection header. Now used in closestRenderedPosition function.
1866         * khtml/xml/dom_selection.cpp:
1867         (DOM::Selection::Selection): Added new m_caretPosition member. This is the position of the caret
1868         after a caret layout. This may be different from start or end if start and end are not rendered. 
1869         (DOM::Selection::init):
1870         (DOM::Selection::modifyExtendingRightForward): New helper to clean up modify() and make it more readble.
1871         (DOM::Selection::modifyMovingRightForward): Ditto.
1872         (DOM::Selection::modifyExtendingLeftBackward): Ditto.
1873         (DOM::Selection::modifyMovingLeftBackward): Ditto.
1874         (DOM::Selection::modify): Use new helpers to make this more readble.
1875         (DOM::Selection::layoutCaret): Uses new closestRenderedPosition helper to place the caret if in unrendered
1876         content.
1877         (DOM::Selection::paintCaret): Remove moveToRenderedContent. obsolete.
1878         * khtml/xml/dom_selection.h:
1879         (DOM::Selection::caretPosition): New accessor.
1880         * kwq/WebCoreBridge.mm:
1881         (-[WebCoreBridge setSelectedDOMRange:affinity:]): EAffinity no longer a member enum of Selection class.
1882
1883 2004-07-08  David Hyatt  <hyatt@apple.com>
1884
1885         Fix for the table layout test that failed because of a change in how innerText worked.  We need to do
1886         updateLayout now when using innerText, since the method has been changed to use line boxes in the render tree
1887         that might otherwise be out of date.
1888         
1889         Reviewed by kocienda
1890
1891         * khtml/html/html_elementimpl.cpp:
1892         (HTMLElementImpl::innerText):
1893
1894 2004-07-08  John Sullivan  <sullivan@apple.com>
1895
1896         Reviewed by Ken.
1897         
1898         - fixed <rdar://problem/3691569> REGRESSION (142): cmd-shift-clicking on a link 
1899         now also extends selection (even if there wasn't one before)
1900
1901         * khtml/khtml_part.cpp:
1902         (KHTMLPart::handleMousePressEventSingleClick):
1903         if there's a URL associated with the event, don't extend the selection
1904
1905 2004-07-08  Ken Kocienda  <kocienda@apple.com>
1906
1907         Reviewed by Vicki
1908
1909         Added some helper functions which provide strings to display in the 
1910         Xcode debugger's variable inspector window. These functions are called
1911         from the LabyrinthDataFormatter debugger plugin I just checked in to 
1912         the Labyrinth/Tools directory.
1913         
1914         Note that these functions are compiled in on Development builds only.
1915
1916         * WebCore-combined.exp:
1917         * WebCore-tests.exp: Export all the formatForDebugger symbols so the
1918         debugger program can link with them.
1919         * khtml/xml/dom2_rangeimpl.cpp:
1920         (DOM::RangeImpl::formatForDebugger):
1921         * khtml/xml/dom2_rangeimpl.h:
1922         * khtml/xml/dom_elementimpl.cpp:
1923         (ElementImpl::formatForDebugger):
1924         * khtml/xml/dom_elementimpl.h:
1925         * khtml/xml/dom_nodeimpl.cpp:
1926         * khtml/xml/dom_nodeimpl.h:
1927         * khtml/xml/dom_position.cpp:
1928         (DOM::Position::formatForDebugger):
1929         * khtml/xml/dom_position.h:
1930         * khtml/xml/dom_selection.cpp:
1931         (DOM::Selection::formatForDebugger):
1932         * khtml/xml/dom_selection.h:
1933         * khtml/xml/dom_textimpl.cpp:
1934         (TextImpl::formatForDebugger):
1935         * khtml/xml/dom_textimpl.h:
1936
1937 2004-07-08  John Sullivan  <sullivan@apple.com>
1938
1939         Reviewed by Vicki.
1940         
1941         - fixed <rdar://problem/3721544> crash increasing font size; 
1942         entrezeroetun.com (works in IE and Firefox)
1943
1944         * khtml/rendering/render_block.cpp:
1945         (khtml::RenderBlock::updateFirstLetter):
1946         Check for nil originalString() before dereffing
1947
1948 2004-07-08  David Hyatt  <hyatt@apple.com>
1949
1950         Fix for 3721453, CSS3 initial property caused crashes because the macros were not written correctly.
1951         
1952         Reviewed by john
1953
1954         * khtml/css/cssstyleselector.cpp:
1955
1956 === Safari-151 ===
1957
1958 2004-07-07  David Hyatt  <hyatt@apple.com>
1959
1960         Fix for 3712133, crash from first-line pseudo-style use.
1961         
1962         Reviewed by kocienda
1963
1964         * khtml/css/cssstyleselector.cpp:
1965         (khtml::CSSStyleSelector::styleForElement):
1966         * khtml/css/cssstyleselector.h:
1967         * khtml/rendering/render_object.cpp:
1968         (RenderObject::getPseudoStyle):
1969
1970 2004-07-07  Ken Kocienda  <kocienda@apple.com>
1971
1972         Reviewed by Hyatt
1973
1974         Fix for this bug:
1975         
1976         <rdar://problem/3716479> calling setInnerHTML during a webViewDidChange delegate call causes a crash
1977         
1978         The fix involves some rearrangement of code in TypingCommand and TypingCommandImpl.
1979         Formerly, new TypingCommands would apply themselves (which was a no-op) and then
1980         do their action in some code a way different than other commands. This type of command
1981         application is different than for all other commands since TypingCommands can be coalesced.
1982         The crash occurred as a result of the "no-op" TypingCommand having the unconsidered
1983         consequence of causing editing delegate notifications to be sent before the command 
1984         has actually run. This change takes a small step towards making TypingCommandImpl function like
1985         other commands, where the command work is done in doApply. This makes the notification
1986         happen in the right order.
1987
1988         * khtml/editing/htmlediting.cpp:
1989         (khtml::TypingCommand::TypingCommand):
1990         (khtml::TypingCommand::insertText):
1991         (khtml::TypingCommand::insertNewline):
1992         (khtml::TypingCommand::deleteKeyPressed):
1993         * khtml/editing/htmlediting.h:
1994         (khtml::TypingCommand::):
1995         * khtml/editing/htmlediting_impl.cpp:
1996         (khtml::TypingCommandImpl::TypingCommandImpl):
1997         (khtml::TypingCommandImpl::doApply):
1998         * khtml/editing/htmlediting_impl.h:
1999
2000 2004-07-06  Ken Kocienda  <kocienda@apple.com>
2001
2002         Reviewed by me
2003
2004         * khtml/html/html_tableimpl.cpp:
2005         (HTMLTableElementImpl::addChild): Added a better comment in the
2006         code I just checked in a few minutes ago.
2007
2008 2004-07-06  Ken Kocienda  <kocienda@apple.com>
2009
2010         Reviewed by Hyatt
2011         
2012         Fix for this bug:
2013         
2014         <rdar://problem/3672377> assertion failure in AppendNodeCommandImpl::doApply 
2015         due to non-0 exception code trying to insert a DIV markup string
2016         
2017         The solution was to revert to the code that was rolled out, and removing
2018         the child checks from NodeImpl::checkAddChild. However, this time, I added
2019         code very similar to this check into the code that runs while HTML is 
2020         being parsed to build up tables. This code relies on child-add failure
2021         to ensure the proper construction of well-formed tables (as gross as that
2022         sounds), so the check needs to be retained there. No other code seems to
2023         be so affected. Layout tests are unchanged by this patch.
2024
2025         * khtml/html/html_tableimpl.cpp:
2026         (HTMLTableElementImpl::addChild):
2027         * khtml/xml/dom_nodeimpl.cpp:
2028         (NodeImpl::checkAddChild):
2029
2030 2004-07-06  Ken Kocienda  <kocienda@apple.com>
2031
2032         Reviewed by John
2033         
2034         Simple change. I switched the arguments of the appendNode helper function
2035         and the AppendNodeCommand and AppendNodeCommandImpl classes. The node to 
2036         insert now comes before the parent node in the argument list. I did this
2037         to make this function match the convention of others in the HTML editing code.
2038         This was the only one that was "different" in the way that it ordered arguments.
2039         As a result, I was always looking to see that I was passing things in the right
2040         order.
2041         
2042         * khtml/editing/htmlediting.cpp:
2043         (khtml::AppendNodeCommand::AppendNodeCommand):
2044         (khtml::AppendNodeCommand::appendChild):
2045         (khtml::AppendNodeCommand::parentNode):
2046         * khtml/editing/htmlediting.h:
2047         * khtml/editing/htmlediting_impl.cpp:
2048         (khtml::CompositeEditCommandImpl::insertNodeAfter):
2049         (khtml::CompositeEditCommandImpl::insertNodeAt):
2050         (khtml::CompositeEditCommandImpl::appendNode):
2051         (khtml::AppendNodeCommandImpl::AppendNodeCommandImpl):
2052         (khtml::AppendNodeCommandImpl::~AppendNodeCommandImpl):
2053         (khtml::AppendNodeCommandImpl::doApply):
2054         (khtml::AppendNodeCommandImpl::doUnapply):
2055         (khtml::ApplyStyleCommandImpl::surroundNodeRangeWithElement):
2056         (khtml::DeleteSelectionCommandImpl::doApply):
2057         (khtml::InputNewlineCommandImpl::insertNodeAfterPosition):
2058         (khtml::InputNewlineCommandImpl::insertNodeBeforePosition):
2059         (khtml::InputTextCommandImpl::prepareForTextInsertion):
2060         * khtml/editing/htmlediting_impl.h:
2061         (khtml::AppendNodeCommandImpl::parentNode):
2062
2063 2004-07-06  Ken Kocienda  <kocienda@apple.com>
2064
2065         Reviewed by Trey
2066
2067         Fixed several problems with traversal classes. For one, NodeIterators treat
2068         FILTER_REJECT and FILTER_SKIP the same, since it treats the DOM tree as a
2069         flat collection of nodes free of hierarchy. The code before this change did
2070         not do this correctly. It sure pays to go back and read the specs. :)
2071         
2072         Also, the code to traverse from node to node when filters were applied was
2073         not working correctly. My first attemmpt to implement this was just plain
2074         buggy, as I discovered when I tried to write tests for my WWDC talk. I have
2075         settled on an implementation which is much simpler and worked for all the
2076         tests I threw at it. 
2077
2078         * khtml/xml/dom2_traversalimpl.cpp:
2079         (DOM::NodeIteratorImpl::findNextNode):
2080         (DOM::NodeIteratorImpl::nextNode):
2081         (DOM::NodeIteratorImpl::findPreviousNode):
2082         (DOM::NodeIteratorImpl::previousNode):
2083         (DOM::TreeWalkerImpl::parentNode):
2084         (DOM::TreeWalkerImpl::firstChild):
2085         (DOM::TreeWalkerImpl::lastChild):
2086         (DOM::TreeWalkerImpl::previousSibling):
2087         (DOM::TreeWalkerImpl::nextSibling):
2088         (DOM::TreeWalkerImpl::previousNode):
2089         (DOM::TreeWalkerImpl::nextNode):
2090         (DOM::TreeWalkerImpl::ancestorRejected):
2091         * khtml/xml/dom2_traversalimpl.h:
2092
2093 2004-07-06  Vicki Murley  <vicki@apple.com>
2094
2095         Reviewed by kocienda.
2096
2097         - added backColorCommand, foreColorCommand, fontNameCommand, 
2098         and fontSizeCommand
2099   
2100         * layout-tests/editing/editing.js:
2101
2102 2004-07-06  Trey Matteson  <trey@apple.com>
2103
2104         3716053 - www.theage.com.au has extra back/forward items due to ads
2105
2106         This turned out to be easily fixed by generalizing the fix to 3438441.  We prevent
2107         addition to the b/f list not just during an onload event, but during any non-user
2108         gesture, which includes top level script executing.
2109
2110         Reviewed by Richard.
2111
2112         * kwq/KWQKHTMLPart.mm:
2113         (KWQKHTMLPart::openURL):  Only real change - prevent adding to b/f list if not
2114         a user gesture.
2115         (KWQKHTMLPart::openURLRequest):  Rename "onLoadEvent" to "userGesture", swap sense
2116         (KWQKHTMLPart::submitForm):  Ditto
2117         (KWQKHTMLPart::urlSelected): Ditto
2118         * kwq/KWQKHTMLPartBrowserExtension.mm:
2119         (KHTMLPartBrowserExtension::createNewWindow):  Ditto
2120         * kwq/WebCoreBridge.h:
2121
2122 2004-07-02  Darin Adler  <darin@apple.com>
2123
2124         Reviewed by Dave.
2125
2126         - fixed half of <rdar://problem/3709244> utf-8 meta tag not parsed when page title contains angle brackets or if </meta> tag used
2127
2128         * khtml/misc/decoder.cpp: (Decoder::decode): Allow </meta> tags without deciding we
2129         are done with the header.
2130
2131 2004-06-30  Trey Matteson  <trey@apple.com>
2132
2133         Dragging within a web view should be allowed to start when the window isn't key.
2134
2135         A few months ago, Chris made this work, but it relied on the fact that all dragging
2136         was done in WebKit.  When WebCore got involved in dragging, it was broken.  Now we
2137         have a new scheme that gets it working again that properly involves WebCore.
2138
2139         The general idea is that when AK asks us whether to accept the first mouse and do
2140         "delayed window ordering", we must consult WC to see if we might start a drag.  In
2141         addition, instead of these drags in non-active windows being started as a special
2142         case in WK, they go through the normal WK-WC drag machinery.
2143
2144         Reviewed by John.
2145
2146         * khtml/khtml_part.cpp:
2147         (KHTMLPart::shouldDragAutoNode):  New x,y args.
2148         * khtml/khtml_part.h:
2149         * khtml/rendering/render_object.cpp:
2150         (RenderObject::draggableNode):  Pass through new x,y args.
2151         * khtml/rendering/render_object.h:
2152         * kwq/KWQKHTMLPart.h:
2153         (KWQKHTMLPart::setActivationEventNumber):  New setter.
2154         * kwq/KWQKHTMLPart.mm:
2155         (KWQKHTMLPart::KWQKHTMLPart):  Init new ivar.
2156         (KWQKHTMLPart::eventMayStartDrag):  New routine that checks if we might start
2157         a drag in response to a mouseDown.
2158         (KWQKHTMLPart::khtmlMouseMoveEvent):  Pass x,y to the routine that finds a draggable
2159         node.  This eventually gets back up to WK's _mayStartDragAtEventLocation:.
2160         Delay requirement when dragging the selection now implemented here.
2161         (KWQKHTMLPart::khtmlMouseReleaseEvent):  Must avoid changing the selection if we
2162         wind up here as part of the first click in a window (because we started handling
2163         the click to possible start a drag, but that never came through).
2164         (KWQKHTMLPart::mouseDown): Save away event timestamp.
2165         (KWQKHTMLPart::shouldDragAutoNode):  Pass location up to WK instead of the
2166         most recent event we stashed.
2167         * kwq/WebCoreBridge.h:
2168         * kwq/WebCoreBridge.mm:
2169         (-[WebCoreBridge setActivationEventNumber:]):  Trivial glue.
2170         (-[WebCoreBridge eventMayStartDrag:]):  Ditto.
2171
2172 2004-06-29  Trey Matteson  <trey@apple.com>
2173
2174         Need to tighten up JS error checking for requesting drag props
2175         in the wrong cases.
2176
2177         Reviewed by John.
2178
2179         * khtml/ecma/kjs_events.cpp:
2180         (Clipboard::getValueProperty):  Assert if someone somehow set
2181         dropEffect or effectAllowed and it's a copy/paste clipboard
2182         instead of a dragging clipboard.
2183         (Clipboard::putValue):  Don't let anyone set dropEffect or
2184         effectAllowed on a copy/paste clipboard.
2185         (ClipboardProtoFunc::tryCall):  Disallow setting dragImage on
2186         a copy/paste clipboard.
2187
2188 2004-06-29  Trey Matteson  <trey@apple.com>
2189
2190         DHTML dragging - source should have access to the operation chosen
2191         by the destination.
2192
2193         Reviewed by John
2194
2195         * kwq/KWQKHTMLPart.h:
2196         * kwq/KWQKHTMLPart.mm:
2197         (KWQKHTMLPart::dragSourceEndedAt):  Set the destination's operation
2198         on the clipboard.
2199         * kwq/WebCoreBridge.mm:
2200         (-[WebCoreBridge dragExitedWithDraggingInfo:]):  For completeness
2201         we set the source op for the ondragexit event.
2202         (-[WebCoreBridge concludeDragForDraggingInfo:]):  Ditto for the
2203         drop event.
2204         (-[WebCoreBridge dragSourceEndedAt:operation:]):  Pass through of operation.
2205
2206 2004-06-24  Trey Matteson  <trey@apple.com>
2207
2208         3710422 - REGRESSION: Safari crashes trying to send onbeforecut event at about://blank
2209
2210         Simple fix - don't try to send the event to the body element if we have no body element.
2211
2212         Reviewed by John
2213
2214         * kwq/KWQKHTMLPart.mm:
2215         (KWQKHTMLPart::dispatchCPPEvent):
2216
2217 2004-06-24  Trey Matteson  <trey@apple.com>
2218
2219         3704950 drag image in DB ConfigBar has horizontal graphics turd WebCore JavaScript
2220
2221         When we generate a drag image (or a selection image too, for that matter) we
2222         translate the CTM using a CG call.  Later, WebImageRenderer adjusts the pattern
2223         phase based on the CTM of the focused view, which doesn't include our translate.
2224         So we must inform WebKit about the additional phase adjustment.
2225
2226         Reviewed by Richard
2227
2228         * kwq/KWQKHTMLPart.mm:  Tell WebKit about the phase adjustment.
2229         (KWQKHTMLPart::imageFromRect):
2230         * kwq/WebCoreGraphicsBridge.h:
2231         * kwq/WebCoreGraphicsBridge.m:
2232         (-[WebCoreGraphicsBridge setAdditionalPatternPhase:]):  New routine to receive
2233         the phase adjustment.
2234
2235 2004-06-24  Trey Matteson  <trey@apple.com>
2236
2237         3679986 - screenX and screenY are flipped and relative to the bottom left of the WebView, rather than the screen
2238         3699510 - synthesized click events have bogus screen coords
2239
2240         Reviewed by Darin.
2241
2242         * khtml/khtmlview.cpp:
2243         (KHTMLView::dispatchDragEvent):  Generate screen coords for drag events using new func.
2244         (KHTMLView::dispatchMouseEvent):   Ditto.
2245         * khtml/khtmlview.h:
2246         * khtml/xml/dom_nodeimpl.cpp:
2247         (NodeImpl::dispatchMouseEvent):  Comment tricky semantics.
2248         Calc screen coords in apple-specific way.
2249         * kwq/KWQKHTMLView.mm:
2250         (KHTMLView::viewportToGlobal):  Passthrough to window widget.
2251         * kwq/KWQScrollView.mm:
2252         * kwq/KWQWindowWidget.h:
2253         * kwq/KWQWindowWidget.mm:
2254         (KWQWindowWidget::mapToGlobal):  Call former code factored to new method below.
2255         (KWQWindowWidget::viewportToGlobal):  New method to convert "viewport" (which for us
2256         really means NSWindow coords) to screen coords.
2257
2258 2004-06-24  Trey Matteson  <trey@apple.com>
2259
2260         3693420 - onbeforecut and onbeforepaste need real implementaion
2261
2262         Reviewed by Chris.
2263
2264         * kwq/KWQKHTMLPart.h:
2265         * kwq/KWQKHTMLPart.mm:
2266         (KWQKHTMLPart::mayCut):  Dispatch event to DHTML.
2267         (KWQKHTMLPart::mayCopy):  Ditto
2268         (KWQKHTMLPart::mayPaste):  Ditto
2269         (KWQKHTMLPart::tryCut):  No more need to send fake onbefore event
2270         (KWQKHTMLPart::tryCopy):  Ditto
2271         (KWQKHTMLPart::tryPaste): Ditto
2272         * kwq/WebCoreBridge.h:
2273         * kwq/WebCoreBridge.mm:
2274         (-[WebCoreBridge mayDHTMLCut]):  Standard glue
2275         (-[WebCoreBridge mayDHTMLCopy]):  Ditto
2276         (-[WebCoreBridge mayDHTMLPaste]):  Ditto
2277
2278 2004-06-24  Darin Adler  <darin@apple.com>
2279
2280         Reviewed by John.
2281
2282         - fixed <rdar://problem/3709385> Find on page doesn't find a string at the very end of the file
2283
2284         * khtml/misc/khtml_text_operations.cpp: (khtml::findPlainText): Rearrange loop to avoid an early
2285         exit once we have all the characters we need, but are at the end of the range we are searching.
2286
2287         - fixed <rdar://problem/3102271>: (text areas have scroll bars even when they don't need them)
2288         - fixed <rdar://problem/3665430>: (horizontal scroll bar of text area does not show, even when text is wide in "no wrap" mode)
2289
2290         * kwq/KWQTextArea.mm:
2291         (-[KWQTextArea _configureTextViewForWordWrapMode]): Added. Helper method that sets up the
2292         view for a new word wrap mode.
2293         (-[KWQTextArea _createTextView]): Moved much of the code inside _configureTextViewForWordWrapMode.
2294         (-[KWQTextArea _frameSizeChanged]): Added. Method shared by setFrame: and initWithFrame: to
2295         avoid duplicate code that was there before. The old code also had redundant code to update
2296         the text container size, but NSText handles that automatically.
2297         (-[KWQTextArea initWithFrame:]): Set wrap to YES by default, which is the key to fixing bug 3665430.
2298         Call setAutohidesScrollers:YES, which fixes bug 3102271. Also call the new _frameSizeChanged method.
2299         (-[KWQTextArea setWordWrap:]): Call _configureTextViewForWordWrapMode instead of trying
2300         to do the work here. The old version did both too little and too much.
2301         (-[KWQTextArea setFrame:]): Call _frameSizeChanged instead of trying to do the work here.
2302         The old version did both too little and too much.
2303
2304 2004-06-24  John Sullivan  <sullivan@apple.com>
2305
2306         Darin made this change on my machine; I reviewed it.
2307         
2308         - fixed <rdar://problem/3698333> Find on page doesn't find a particular string 
2309         with a newline in the source
2310
2311         * khtml/misc/khtml_text_operations.cpp:
2312         (khtml::TextIterator::handleTextBox):
2313         Clear m_lastTextNodeEndedWithCollapsedSpace after taking it into account.
2314
2315 2004-06-23  Richard Williamson   <rjw@apple.com>
2316
2317         Implemented changes for latest npruntime.h.
2318
2319         Reviewed by Chris.
2320
2321         * kwq/KWQKHTMLPart.h:
2322         * kwq/KWQKHTMLPart.mm:
2323         (KWQKHTMLPart::KWQKHTMLPart):
2324         (KWQKHTMLPart::windowScriptNPObject):
2325         (KWQKHTMLPart::getEmbedInstanceForView):
2326         * kwq/WebCoreBridge.h:
2327         * kwq/WebCoreBridge.mm:
2328         (-[WebCoreBridge windowScriptObject]):
2329         (-[WebCoreBridge windowScriptNPObject]):
2330
2331 2004-06-22  Richard Williamson   <rjw@apple.com>
2332
2333         Fixed <rdar://problem/3707162>: accessing embeds[] plug-in interface may crash
2334
2335         embedInstance was uninitialized.
2336
2337         Reviewed by Chris.
2338
2339         * khtml/html/html_objectimpl.cpp:
2340         (HTMLEmbedElementImpl::HTMLEmbedElementImpl):
2341
2342 2004-06-18  John Sullivan  <sullivan@apple.com>
2343
2344         Reviewed by Darin
2345         
2346         - fixed <rdar://problem/3534851> Pop up windows not showing up within SAP's 
2347         BW Module (changing location.href on new window created by window.open)
2348
2349         * khtml/khtml_part.cpp:
2350         (KHTMLPart::scheduleRedirection):
2351         allow new redirect to win if delay <= current delay, not just <
2352
2353 === WebCore-146.1 ===
2354
2355 2004-06-18  Trey Matteson  <trey@apple.com>
2356
2357         3702053 - DHTML dragging destination can't control the cursor (by setting the drop operation)
2358
2359         Fallout from security work, but an easy fix.
2360
2361         Reviewed by Darin
2362
2363         * kwq/KWQClipboard.mm:
2364         (KWQClipboard::setDropEffect):  Allow dest side to set dropEffect.
2365
2366 2004-06-18  Darin Adler  <darin@apple.com>
2367
2368         Reviewed by John.
2369
2370         - re-fixed <rdar://problem/3701893> show expert preferences notes in xcode causes crash (in EllipsisBox code)
2371
2372         * khtml/rendering/render_block.cpp: (khtml::RenderBlock::paintEllipsisBoxes):
2373         Check !isInlineFlow rather than checking hasMarkupTruncation. Otherwise, we break
2374         plain old non-markup truncation.
2375
2376 2004-06-18  Darin Adler  <darin@apple.com>
2377
2378         Reviewed by John.
2379
2380         - fixed <rdar://problem/3701893> show expert preferences notes in xcode causes crash (in EllipsisBox code)
2381
2382         * khtml/rendering/render_block.cpp: (khtml::RenderBlock::paintEllipsisBoxes):
2383         Only walk the ellipsis list if hasMarkupTruncation is true.
2384
2385 === Safari-146 ===
2386
2387 2004-06-17  Richard Williamson   <rjw@apple.com>
2388
2389         Fixed <rdar://problem/3698867> setting the canvas or parent to display:none and updating the causes a nil-deref
2390
2391         Ensured that we have a renderer before rendering.
2392
2393         Reviewed by John.
2394
2395         * khtml/ecma/kjs_html.cpp:
2396         (KJS::Context2DFunction::tryCall):
2397
2398 2004-06-17  David Hyatt  <hyatt@apple.com>
2399
2400         Fix for 3674601, "Read More..." links should trail articles in Emerson.
2401         
2402         Reviewed by darin
2403
2404         * khtml/rendering/bidi.cpp:
2405         (khtml::RenderBlock::layoutInlineChildren):
2406         (khtml::RenderBlock::deleteEllipsisLineBoxes):
2407         (khtml::RenderBlock::checkLinesForTextOverflow):
2408         * khtml/rendering/render_block.cpp:
2409         (khtml:::RenderFlow):
2410         (khtml::RenderBlock::paintEllipsisBoxes):
2411         (khtml::RenderBlock::nodeAtPoint):
2412         (khtml::shouldCheckLines):
2413         (khtml::getLineAtIndex):
2414         (khtml::getHeightForLineCount):
2415         (khtml::RenderBlock::lineAtIndex):
2416         (khtml::RenderBlock::lineCount):
2417         (khtml::RenderBlock::heightForLineCount):
2418         (khtml::RenderBlock::clearTruncation):
2419         * khtml/rendering/render_block.h:
2420         (khtml::RenderBlock::setHasMarkupTruncation):
2421         (khtml::RenderBlock::hasMarkupTruncation):
2422         * khtml/rendering/render_flexbox.cpp:
2423         (khtml::RenderFlexibleBox::layoutVerticalBox):
2424         * khtml/rendering/render_line.cpp:
2425         (khtml::EllipsisBox::m_str):
2426         (khtml::InlineBox::adjustPosition):
2427         (khtml::InlineFlowBox::adjustPosition):
2428         (khtml::InlineFlowBox::clearTruncation):
2429         (khtml::EllipsisBox::paint):
2430         (khtml::EllipsisBox::nodeAtPoint):
2431         (khtml::RootInlineBox::clearTruncation):
2432         (khtml::RootInlineBox::placeEllipsis):
2433         (khtml::RootInlineBox::paintEllipsisBox):
2434         (khtml::RootInlineBox::hitTestEllipsisBox):
2435         (khtml::RootInlineBox::adjustPosition):
2436         (khtml::RootInlineBox::childRemoved):
2437         * khtml/rendering/render_line.h:
2438         (khtml::InlineBox::clearTruncation):
2439         * khtml/rendering/render_text.cpp:
2440         * khtml/rendering/render_text.h:
2441         (khtml::InlineTextBox::clearTruncation):
2442
2443 2004-06-17  Trey Matteson  <trey@apple.com>
2444
2445         3698514 - coordinates in ondragstart and ondrag events are wrong
2446
2447         This part fixes the ondragstart coords.  We salt away the window-based mouseDown
2448         location, since we need that when we dispatch the ondragstart event.  Previously
2449         we were errantly using a mouseDown point that had already been converted to view
2450         coords, and then the dispatch converted it again.
2451
2452         Reviewed by Maciej.
2453
2454         * kwq/KWQKHTMLPart.h:
2455         * kwq/KWQKHTMLPart.mm:
2456         (KWQKHTMLPart::khtmlMouseMoveEvent):  Use window based mouse event coords to dispatch event.
2457         (KWQKHTMLPart::mouseDown):  Save window based mouse event coords .
2458
2459 2004-06-16  David Hyatt  <hyatt@apple.com>
2460
2461         Fix for 3596620, implement a subset of CSS3 text truncation for Emerson.
2462         
2463         Reviewed by mjs
2464
2465         * khtml/rendering/bidi.cpp:
2466         (khtml::RenderBlock::checkLinesForTextOverflow):
2467         * khtml/rendering/font.cpp:
2468         (Font::checkSelectionPoint):
2469         * khtml/rendering/font.h:
2470         * khtml/rendering/render_block.cpp:
2471         (khtml::RenderBlock::paintObject):
2472         (khtml::RenderBlock::paintFloats):
2473         (khtml::RenderBlock::paintEllipsisBoxes):
2474         * khtml/rendering/render_block.h:
2475         * khtml/rendering/render_line.cpp:
2476         (InlineBox::canAccommodateEllipsis):
2477         (InlineBox::placeEllipsisBox):
2478         (InlineFlowBox::paintDecorations):
2479         (InlineFlowBox::placeEllipsisBox):
2480         (EllipsisBox::paint):
2481         (RootInlineBox::placeEllipsis):
2482         (RootInlineBox::placeEllipsisBox):
2483         * khtml/rendering/render_line.h:
2484         (khtml::EllipsisBox::m_str):
2485         (khtml::RootInlineBox::ellipsisBox):
2486         * khtml/rendering/render_text.cpp:
2487         (InlineTextBox::placeEllipsisBox):
2488         (InlineTextBox::paintDecoration):
2489         (InlineTextBox::offsetForPosition):
2490         (RenderText::positionForCoordinates):
2491         (RenderText::paint):
2492         * khtml/rendering/render_text.h:
2493         * kwq/KWQFontMetrics.h:
2494         * kwq/KWQFontMetrics.mm:
2495         (QFontMetrics::checkSelectionPoint):
2496         * kwq/WebCoreTextRenderer.h:
2497
2498 === WebCore-145.1 ===
2499
2500 2004-06-16  Maciej Stachowiak  <mjs@apple.com>
2501
2502         Reviewed by John.
2503
2504         <rdar://problem/3697602> REGRESSION (144.2-TOT) Selection highlight does not draw
2505
2506         * khtml/rendering/render_canvas.cpp:
2507         (RenderCanvas::setSelection):
2508
2509 === Safari-145 ===
2510
2511 2004-06-16  Richard Williamson   <rjw@apple.com>
2512
2513         Fixed 3695730:  Added support for embeds[], much like
2514         applets[], to allow access to a plugin's exported interface.
2515
2516         Reviewed by Chris.
2517
2518         * khtml/dom/html_document.cpp:
2519         (HTMLDocument::embeds):
2520         * khtml/dom/html_document.h:
2521         * khtml/ecma/kjs_dom.cpp:
2522         (KJS::getRuntimeObject):
2523         * khtml/ecma/kjs_html.cpp:
2524         (KJS::HTMLDocument::tryGet):
2525         (KJS::HTMLElement::tryGet):
2526         (KJS::HTMLCollection::tryGet):
2527         (KJS::HTMLCollection::getNamedItems):
2528         * khtml/ecma/kjs_html.h:
2529         (KJS::HTMLDocument::):
2530         * khtml/ecma/kjs_html.lut.h:
2531         (KJS::):
2532         * khtml/html/html_miscimpl.cpp:
2533         (HTMLCollectionImpl::calcLength):
2534         (HTMLCollectionImpl::getItem):
2535         (HTMLCollectionImpl::getNamedItem):
2536         * khtml/html/html_miscimpl.h:
2537         (DOM::HTMLCollectionImpl::):
2538         * khtml/html/html_objectimpl.cpp:
2539         (HTMLEmbedElementImpl::getEmbedInstance):
2540         * khtml/html/html_objectimpl.h:
2541         * kwq/KWQKHTMLPart.h:
2542         * kwq/KWQKHTMLPart.mm:
2543         (KWQKHTMLPart::getEmbedInstanceForView):
2544
2545 2004-06-15  Maciej Stachowiak  <mjs@apple.com>
2546
2547         Reviewed by Dave.
2548
2549         <rdar://problem/3695907>: (can't enable selection inside parent where it is disabled via CSS)
2550
2551         * khtml/css/cssparser.cpp:
2552         (CSSParser::parseValue): 
2553         * khtml/css/cssstyleselector.cpp:
2554         (khtml::CSSStyleSelector::applyProperty):
2555         * khtml/rendering/render_object.cpp:
2556         (RenderObject::shouldSelect):
2557         * khtml/rendering/render_style.h:
2558         (khtml::):
2559         (khtml::RenderStyle::userSelect):
2560         (khtml::RenderStyle::setUserSelect):
2561         (khtml::RenderStyle::initialUserSelect):
2562
2563 2004-06-15  David Hyatt  <hyatt@apple.com>
2564
2565         Initial impl of the EllipsisBox.  This code just gets the box created and gets it placed vertically.  The next
2566         stage will be to position the box horizontally as well.
2567         
2568         Reviewed by trey
2569
2570         * khtml/rendering/bidi.cpp:
2571         (khtml::RenderBlock::checkLinesForTextOverflow):
2572         * khtml/rendering/render_line.cpp:
2573         (RootInlineBox::placeEllipsis):
2574         * khtml/rendering/render_line.h:
2575         (khtml::EllipsisBox::m_str):
2576
2577 2004-06-15  David Hyatt  <hyatt@apple.com>
2578
2579         Implement canAccommodateEllipsis.  The basic idea is that everything on a line will allow an ellipsis to be
2580         drawn on top of it unless it's a replaced element.  Then, if the replaced element overlaps, the ellipsis won't
2581         be allowed.
2582         
2583         Reviewed by john
2584
2585         * khtml/rendering/bidi.cpp:
2586         (khtml::RenderBlock::checkLinesForTextOverflow):
2587         * khtml/rendering/render_line.cpp:
2588         (InlineBox::closestLeafChildForXPos):
2589         (InlineBox::canAccommodateEllipsis):
2590         (InlineFlowBox::canAccommodateEllipsis):
2591         (RootInlineBox::canAccommodateEllipsis):
2592         * khtml/rendering/render_line.h:
2593
2594 2004-06-15  Vicki Murley <vicki@apple.com>
2595
2596         - added a few layout tests, rdar://3694510
2597
2598         * layout-tests/editing/deleting/delete-image-004-expected.txt: Added.
2599         * layout-tests/editing/deleting/delete-image-004.html: Added.
2600         * layout-tests/editing/selection/extend-by-character-006-expected.txt: Added.
2601         * layout-tests/editing/selection/extend-by-character-006.html: Added.
2602
2603 2004-06-15  Trey Matteson  <trey@apple.com>
2604
2605         Dragging tweak:  We pass the mouse down coords instead of the
2606         latest mouse drag coords to the ondragstart event.  This makes it
2607         easy for the client to figure the correct drag image offset,
2608         whereas the mouse drag location is next to useless for that.
2609
2610         Reviewed by Louch
2611
2612         * kwq/KWQKHTMLPart.mm:
2613         (KWQKHTMLPart::khtmlMouseMoveEvent):
2614
2615 2004-06-15  Maciej Stachowiak  <mjs@apple.com>
2616
2617         Reviewed by Darin.
2618
2619         <rdar://problem/3685236>: (Safari does not support onselectstart event handler)
2620
2621         * khtml/ecma/kjs_dom.cpp:
2622         (DOMNode::getValueProperty):
2623         (DOMNode::putValue):
2624         * khtml/ecma/kjs_dom.h:
2625         (KJS::DOMNode::):
2626         * khtml/ecma/kjs_dom.lut.h:
2627         (KJS::):
2628         * khtml/html/html_elementimpl.cpp:
2629         (HTMLElementImpl::parseHTMLAttribute):
2630         * khtml/misc/htmlattrs.c:
2631         (hash_attr):
2632         (findAttr):
2633         * khtml/misc/htmlattrs.h:
2634         * khtml/misc/htmlattrs.in:
2635         * khtml/rendering/render_object.cpp:
2636         (RenderObject::shouldSelect):
2637         * khtml/xml/dom2_eventsimpl.cpp:
2638         (EventImpl::typeToId):
2639         (EventImpl::idToType):
2640         * khtml/xml/dom2_eventsimpl.h:
2641         (DOM::EventImpl::):
2642
2643 2004-06-15  Maciej Stachowiak  <mjs@apple.com>
2644
2645         Reviewed by Darin.
2646
2647         Fix crash with last checkin.
2648
2649         * khtml/ecma/kjs_binding.cpp:
2650         (ScriptInterpreter::domObjectsPerDocument): check the same
2651         property we want to initialize.
2652
2653 2004-06-15  Maciej Stachowiak  <mjs@apple.com>
2654
2655         Reviewed by Darin.
2656
2657         <rdar://problem/3685309>: (properties not shared for JS wrappers of same DOM object, accessed from different frames)
2658
2659         * khtml/ecma/kjs_binding.cpp:
2660         (ScriptInterpreter::domObjects):
2661         (ScriptInterpreter::domObjectsPerDocument):
2662         (ScriptInterpreter::ScriptInterpreter):
2663         (ScriptInterpreter::forgetDOMObject):
2664         (ScriptInterpreter::getDOMObjectForDocument):
2665         (ScriptInterpreter::putDOMObjectForDocument):
2666         (ScriptInterpreter::deleteDOMObjectsForDocument):
2667         (ScriptInterpreter::mark):
2668         (ScriptInterpreter::forgetDOMObjectsForDocument):
2669         (ScriptInterpreter::updateDOMObjectDocument):
2670         * khtml/ecma/kjs_binding.h:
2671         (KJS::ScriptInterpreter::getDOMObject):
2672         (KJS::ScriptInterpreter::putDOMObject):
2673         (KJS::ScriptInterpreter::deleteDOMObject):
2674
2675 2004-06-15  Darin Adler  <darin@apple.com>
2676
2677         - rolled out Ken's fix for <rdar://problem/3672377> assertion failure in AppendNodeCommandImpl::doApply due to non-0 exception code trying to insert a DIV markup string
2678           (it was making most layout tests fail)
2679
2680         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::checkAddChild): Rolled check back in.
2681
2682 2004-06-15  David Hyatt  <hyatt@apple.com>
2683
2684         Add a truncation variable to text run boxes that will eventually be used to know how to cut out some of the glyphs when
2685         rendering.
2686         
2687         Reviewed by darin
2688
2689         * khtml/rendering/render_text.cpp:
2690         (RenderText::clearTextOverflowTruncation):
2691         * khtml/rendering/render_text.h:
2692         (khtml::InlineTextBox:::InlineRunBox):
2693         (khtml::InlineTextBox::clearTruncation):
2694
2695 2004-06-14  Darin Adler  <darin@apple.com>
2696
2697         Reviewed by Maciej.
2698
2699         - fixed some things for GC that Patrick missed, or that happened after the branch
2700
2701         * kwq/DOM-CSS.mm:
2702         (-[DOMStyleSheet finalize]): Added.
2703         (-[DOMStyleSheetList finalize]): Added.
2704         (-[DOMCSSStyleSheet finalize]): Added.
2705         (-[DOMMediaList finalize]): Added.
2706         (-[DOMCSSRuleList finalize]): Added.
2707         (-[DOMCSSRule finalize]): Added.
2708         (-[DOMCSSStyleDeclaration finalize]): Added.
2709         (-[DOMCSSValue finalize]): Added.
2710         (-[DOMRGBColor finalize]): Added.
2711         (-[DOMRect finalize]): Added.
2712         (-[DOMCounter finalize]): Added.
2713         * kwq/DOM.mm:
2714         (-[DOMObject finalize]): Added.
2715         (-[DOMNode finalize]): Added.
2716         (-[DOMNamedNodeMap finalize]): Added.
2717         (-[DOMNodeList finalize]): Added.
2718         (-[DOMImplementation finalize]): Added.
2719         (-[DOMRange finalize]): Added.
2720         (-[DOMNodeFilter finalize]): Added.
2721         (-[DOMNodeIterator finalize]): Added.
2722         (-[DOMTreeWalker dealloc]): Removed unneeded nil check.
2723         (-[DOMTreeWalker finalize]): Added.
2724         * kwq/DOMHTML.mm:
2725         (-[DOMHTMLCollection finalize]): Added.
2726         (-[DOMHTMLOptionsCollection finalize]): Added.
2727         * kwq/KWQClipboard.mm:
2728         (KWQClipboard::KWQClipboard): Use KWQRetain instead of retain.
2729         (KWQClipboard::~KWQClipboard): Use KWQRelease instead of release.
2730         * kwq/KWQEditCommand.mm:
2731         (-[KWQEditCommand finalize]): Added.
2732         * kwq/KWQFont.mm:
2733         (QFont::~QFont): Use KWQRelease instead of release.
2734         * kwq/KWQKHTMLPart.mm:
2735         (KWQKHTMLPart::keyEvent): Use KWQRetain instead of retain, and KWQRelease instead of release.
2736         (KWQKHTMLPart::mouseDown): Use KWQRetain instead of retain, and KWQRelease instead of release.
2737         (KWQKHTMLPart::mouseDragged): Use KWQRetain instead of retain, and KWQRelease instead of release.
2738         (KWQKHTMLPart::mouseUp): Use KWQRetain instead of retain, and KWQRelease instead of release.
2739         (KWQKHTMLPart::mouseMoved): Use KWQRetain instead of retain, and KWQRelease instead of release.
2740         (KWQKHTMLPart::sendContextMenuEvent): Use KWQRetain instead of retain, and KWQRelease instead of release.
2741         * kwq/KWQPageState.mm:
2742         (-[KWQPageState finalize]): Added. Filed <rdar://problem/3694163> about the fact that this is not right.
2743         * kwq/KWQTimer.mm:
2744         (-[KWQSingleShotTimerTarget finalize]): Added.
2745         * kwq/WebCoreBridge.mm:
2746         (-[WebCoreBridge finalize]): Added. Filed <rdar://problem/3694165> about the fact that this is not right.
2747
2748 2004-06-15  David Hyatt  <hyatt@apple.com>
2749
2750         Initial work on text truncation.  Working top-down, I think I've made all the changes I will need to bidi.cpp
2751         and to the block code itself.  The rest of the code can be concentrated in the render_line and render_text files.
2752         
2753         Reviewed by darin
2754
2755         * khtml/rendering/bidi.cpp:
2756         (khtml::RenderBlock::layoutInlineChildren):
2757         (khtml::RenderBlock::findNextLineBreak):
2758         (khtml::RenderBlock::deleteEllipsisLineBoxes):
2759         (khtml::RenderBlock::checkLinesForTextOverflow):
2760         * khtml/rendering/render_block.h:
2761         * khtml/rendering/render_line.cpp:
2762         (RootInlineBox::detach):
2763         (RootInlineBox::detachEllipsisBox):
2764         (RootInlineBox::canAccommodateEllipsis):
2765         (RootInlineBox::placeEllipsis):
2766         * khtml/rendering/render_line.h:
2767         (khtml::RootInlineBox::RootInlineBox):
2768         * khtml/rendering/render_text.cpp:
2769         (RenderText::clearTextOverflowTruncation):
2770         * khtml/rendering/render_text.h:
2771
2772 2004-06-14  Trey Matteson  <trey@apple.com>
2773
2774         3692690 - REGRESSION: canceling drag from WebView cause link to load
2775         Just need to take extra care to cancel any click handling in
2776         all cases once we're committed to doing the drag.
2777
2778         Reviewed by Darin.
2779
2780         * kwq/KWQKHTMLPart.mm:
2781         (KWQKHTMLPart::khtmlMouseMoveEvent):  Call invalidateClick once
2782         we're past the hysteresis point, and definitely going to try
2783         to start a drag and drop.
2784
2785 2004-06-14  Darin Adler  <darin@apple.com>
2786
2787         - fixed crash on boot
2788
2789         * kwq/KWQFoundationExtras.h: (KWQRetainNSRelease):
2790         Fixed return value of this method; was uninitialized.
2791
2792 2004-06-14  Trey Matteson  <trey@apple.com>
2793
2794         Dashboard wants access to pastboard data during the drag gesture.
2795
2796         We address this need be allowing docs that are local files to access the
2797         pasteboard data during a drag, while other pages can only get at the types
2798         list until the drop happens.  This is deemed safe because local files already
2799         have such broad super powers.
2800
2801         Reviewed by Maciej.
2802
2803         * kwq/KWQKURL.h:
2804         * kwq/KWQKURL.mm:
2805         (KURL::isLocalFile):  Implement this QT method to look for the file scheme.
2806         * kwq/WebCoreBridge.mm:
2807         (-[WebCoreBridge dragOperationForDraggingInfo:]):  Use more relaxed clipboard
2808         security for local file pages.
2809         (-[WebCoreBridge dragExitedWithDraggingInfo:]):  Ditto.
2810
2811 2004-06-14  Darin Adler  <darin@apple.com>
2812
2813         Reviewed by me, code changes by Patrick Beard.
2814
2815         - fixed <rdar://problem/3671507>: (WebKit should adopt GC changes and compile with GC enabled)
2816
2817         * WebCore.pbproj/project.pbxproj: Added KWQFoundationExtras.h.
2818         * kwq/KWQFoundationExtras.h: Added.
2819         (KWQRetain): Cover for CFRetain that is tolerant of nil.
2820         (KWQRelease): Cover for CFRelease that is tolerant of nil.
2821         (KWQRetainNSRelease): Combination of a CFRetain and an -[NSObject release] that is tolerant of nil.
2822         Also includes a declaration of finalize so we can call [super finalize] without warnings on Panther.
2823
2824         * kwq/DOM.mm:
2825         (ObjCNodeFilterCondition::ObjCNodeFilterCondition): Use CFRetain instead of retain.
2826         (ObjCNodeFilterCondition::~ObjCNodeFilterCondition): Use CFRelease instead of release.
2827         * kwq/KWQComboBox.mm:
2828         (QComboBox::~QComboBox): Use KWQRelease instead of release.
2829         (QComboBox::setFont): Use KWQRelease instead of release.
2830         (QComboBox::labelFont): Use KWQRetain instead of retain.
2831         * kwq/KWQCursor.mm:
2832         (QCursor::QCursor): Use KWQRetain instead of retain.
2833         (QCursor::~QCursor): Use KWQRelease instead of release.
2834         (QCursor::operator=): More of the same.
2835         * kwq/KWQFileButton.mm:
2836         (KWQFileButton::KWQFileButton): Use KWQRetainNSRelease to retain a newly-allocated object.
2837         (KWQFileButton::~KWQFileButton): Use CFRelease instead of release.
2838         * kwq/KWQFont.mm:
2839         (QFont::QFont): Use KWQRetain instead of retain.
2840         (QFont::operator=): More of the same.
2841         (QFont::setFamily): Use KWQRelease instead of release.
2842         (QFont::setFirstFamily): Use KWQRelease instead of release.
2843         (QFont::setPixelSize): Use KWQRelease instead of release.
2844         (QFont::setWeight): Use KWQRelease instead of release.
2845         (QFont::setItalic): Use KWQRelease instead of release.
2846         (QFont::getNSFont): Use KWQRetain instead of retain.
2847         * kwq/KWQFontMetrics.mm:
2848         (QFontMetricsPrivate::~QFontMetricsPrivate): Use KWQRelease instead of release.
2849         (QFontMetricsPrivate::getRenderer): Use KWQRetain instead of retain.
2850         (QFontMetricsPrivate::setFont): Use KWQRelease instead of release.
2851         * kwq/KWQKHTMLPart.mm:
2852         (KWQKHTMLPart::~KWQKHTMLPart): Use KWQRelease instead of release.
2853         (KWQKHTMLPart::clearRecordedFormValues): Use KWQRelease instead of release.
2854         (KWQKHTMLPart::recordFormValue): Use KWQRetainNSRelease and use KWQRetain instead of retain.
2855         (KWQKHTMLPart::windowScriptObject): Use KWQRetainNSRelease.
2856         * kwq/KWQKJobClasses.mm:
2857         (KIO::TransferJobPrivate::TransferJobPrivate): Use KWQRetainNSRelease.
2858         (KIO::TransferJobPrivate::~TransferJobPrivate): Use KWQRelease instead of release.
2859         (KIO::TransferJob::setLoader): More of the same.
2860         * kwq/KWQLoader.mm:
2861         (KWQRetainResponse): Use KWQRetain instead of retain.
2862         (KWQReleaseResponse): Use KWQRelease instead of release.
2863         * kwq/KWQPainter.mm:
2864         (QPainterPrivate::~QPainterPrivate): Use KWQRelease instead of release.
2865         (QPainter::_updateRenderer): More of the same.
2866         (QPainter::initFocusRing): Use KWQRetainNSRelease.
2867         (QPainter::clearFocusRing): Use KWQRelease instead of release.
2868         * kwq/KWQPixmap.mm:
2869         (QPixmap::QPixmap): Use KWQRetain instead of retain.
2870         (QPixmap::~QPixmap): Use KWQRelease instead of release.
2871         (QPixmap::receivedData): Use KWQRetain instead of retain.
2872         (QPixmap::resize): Use KWQRetainNSRelease and use KWQRelease instead of release.
2873         (QPixmap::operator=): More of the same.
2874         * kwq/KWQRegion.mm:
2875         (QRegion::QRegion): Use KWQRetain instead of retain.
2876         (QRegion::~QRegion): Use KWQRelease instead of release.
2877         (QRegion::operator=): More of the same.
2878         * kwq/KWQTimer.mm:
2879         (QTimer::start): Use KWQRetain instead of retain.
2880         (QTimer::stop): Use KWQRelease instead of release.
2881         (QTimer::fire): Use KWQRelease instead of release.
2882         * kwq/KWQWidget.mm:
2883         (QWidget::QWidget): Use KWQRetain instead of retain.
2884         (QWidget::~QWidget): Use KWQRelease instead of release.
2885         (QWidget::setView): More of the same.
2886         * kwq/WebCoreSettings.mm: (-[WebCoreSettings finalize]):
2887         Delete the storage here, as well as in dealloc.
2888
2889 2004-06-14  Maciej Stachowiak  <mjs@apple.com>
2890
2891         Reviewed by Trey.
2892
2893         <rdar://problem/3693818>: (Safari should use CG calls for circle drawing for better performance)
2894
2895         * kwq/KWQPainter.mm:
2896         (QPainter::drawEllipse): Use CG calls instead of NS calls for faster circle drawing.
2897         (QPainter::drawArc): Ditto.
2898
2899 2004-06-14  Ken Kocienda  <kocienda@apple.com>
2900
2901         Reviewed by Vicki
2902
2903         Fix for this bug:
2904         
2905         <rdar://problem/3690115> Crash deleting text out of iChat's profile (an editable Webview)
2906
2907         * khtml/html/html_elementimpl.cpp:
2908         (HTMLElementImpl::isFocusable): Added null-check of parent node before deref'ing it.
2909
2910 2004-06-14  Trey Matteson  <trey@apple.com>
2911
2912         Two tweaks to recently added "drag" pseudo-class, as suggested by
2913         Dave.  The class is renamed to "-khtml-drag", and we update layout
2914         when using it, instead of only updating styles.
2915
2916         Reviewed by hyatt.
2917
2918         * khtml/css/css_base.cpp:
2919         (CSSSelector::extractPseudoType):
2920         * kwq/KWQKHTMLPart.mm:
2921         (KWQKHTMLPart::snapshotDragImage):
2922
2923 2004-06-13  Trey Matteson  <trey@apple.com>
2924
2925         Support for DHTML cut/copy/paste.  We now support oncut, oncopy, onpaste.  The events
2926         are sent to the first node in the selection, or else the body.  Current holes are
2927         that we do not send events for operations in text fields or text areas (because it
2928         is hard to get the right hooks into the AppKit).
2929
2930         We also send onbeforecut, onbeforecopy, onbeforepaste before the other events, which
2931         isn't really WinIE compatible, but is close.  WinIE uses these to enable cut/paste
2932         menu items in its UI.  DB doesn't need this for now.
2933
2934         Reviewed by Chris
2935
2936         * khtml/ecma/kjs_dom.cpp:
2937         (DOMNode::getValueProperty):  Boilerplate for new events
2938         (DOMNode::putValue):    Boilerplate for new events
2939         * khtml/ecma/kjs_dom.h:
2940         (KJS::DOMNode::):    Boilerplate for new events
2941         * khtml/ecma/kjs_dom.lut.h:
2942         * khtml/ecma/kjs_events.cpp:
2943         (DOMEvent::DOMEvent): "dataTransfer" and "clipboardData" properties are conditionally
2944         defined on DOMEvent, depending on if the event is a dragging or clipboard event.
2945         (DOMMouseEvent::mark):  Pass mark along to any clipboard object we have.
2946         (DOMEvent::getValueProperty):  Return "dataTransfer" or "clipboardData".
2947         (DOMMouseEvent::getValueProperty):  Returning "dataTransfer" now handled by
2948         the superclass.
2949         * khtml/ecma/kjs_events.h:
2950         (KJS::DOMEvent::):
2951         (KJS::DOMMouseEvent::DOMMouseEvent):
2952         (KJS::DOMMouseEvent::):
2953         (KJS::DOMMouseEvent::toMouseEvent):
2954         * khtml/ecma/kjs_events.lut.h:
2955         * khtml/html/html_elementimpl.cpp:
2956         (HTMLElementImpl::parseHTMLAttribute):  Boilerplate for new events
2957         * khtml/misc/htmlattrs.c:
2958         * khtml/misc/htmlattrs.h:
2959         * khtml/misc/htmlattrs.in:  Boilerplate for new events
2960         * khtml/xml/dom2_eventsimpl.cpp:
2961         (EventImpl::typeToId):  Boilerplate for new events
2962         (EventImpl::idToType):  Boilerplate for new events
2963         (EventImpl::isDragEvent):  New utility
2964         (EventImpl::isClipboardEvent):  New utility
2965         (MouseEventImpl::isDragEvent):  New utility
2966         (ClipboardEventImpl::ClipboardEventImpl):  ref optional clipboard
2967         (ClipboardEventImpl::~ClipboardEventImpl):  deref optional clipboard
2968         (ClipboardEventImpl::isClipboardEvent):  New utility
2969         * khtml/xml/dom2_eventsimpl.h:
2970         (DOM::EventImpl::):  Boilerplate for new events
2971         (DOM::ClipboardEventImpl::clipboard):
2972         * kwq/KWQClipboard.h:  Monkey business so this file is includable in C++.
2973         * kwq/KWQClipboard.mm:
2974         * kwq/KWQKHTMLPart.h:
2975         * kwq/KWQKHTMLPart.mm:
2976         (KWQKHTMLPart::dispatchCPPEvent):  Send one of the new events.
2977         (KWQKHTMLPart::tryCut):  Declare pasteboard types, send cut events.
2978         (KWQKHTMLPart::tryCopy):  Declare pasteboard types, send copy events.
2979         (KWQKHTMLPart::tryPaste):  Send paste events.
2980         * kwq/WebCoreBridge.h:
2981         * kwq/WebCoreBridge.mm:
2982         (-[WebCoreBridge tryDHTMLCut]):  Pass through to part
2983         (-[WebCoreBridge tryDHTMLCopy]):  Ditto
2984         (-[WebCoreBridge tryDHTMLPaste]):  Ditto
2985
2986 2004-06-14  Trey Matteson  <trey@apple.com>
2987
2988         A new CSS pseudo-class ".drag" is added.  Analogous to the "hover" class,
2989         this class determines styles used while an element is generating a drag
2990         image.
2991
2992         Reviewed by hyatt.
2993
2994         * khtml/css/css_base.cpp:
2995         (CSSSelector::extractPseudoType):  Boilerplate for adding new class.
2996         * khtml/css/css_base.h:  Boilerplate for adding new class.
2997         * khtml/css/cssstyleselector.cpp:
2998         (khtml::CSSStyleSelector::checkOneSelector):  Match new class against
2999         elements being dragged.
3000         * khtml/css/cssstyleselector.h:
3001         (khtml::StyleSelector::):  Boilerplate for adding new class.
3002         * khtml/rendering/render_object.cpp:
3003         (RenderObject::RenderObject):  Init new member.
3004         (RenderObject::isDragging):  Return whether this object is being dragged.
3005         (RenderObject::updateDragState):  Paint us an all children with a new dragged state.
3006         * khtml/rendering/render_object.h:
3007         * khtml/rendering/render_style.h: Boilerplate for adding new class.
3008         (khtml::RenderStyle::NonInheritedFlags::operator==):
3009         (khtml::RenderStyle::setBitDefaults):
3010         (khtml::RenderStyle::affectedByDragRules):
3011         (khtml::RenderStyle::setAffectedByDragRules):
3012         * kwq/KWQClipboard.mm:
3013         (KWQClipboard::dragNSImage):  Method rename.
3014         * kwq/KWQKHTMLPart.h:
3015         * kwq/KWQKHTMLPart.mm:
3016         (KWQKHTMLPart::snapshotDragImage):  Mark the element as being dragged before
3017         we snapshot it, so new style class will apply.
3018
3019 2004-06-14  Ken Kocienda  <kocienda@apple.com>
3020
3021         Reviewed by me
3022         
3023         Added a few more editing-related layout tests.
3024
3025         * layout-tests/editing/inserting/insert-3654864-fix-expected.txt: Added.
3026         * layout-tests/editing/inserting/insert-3654864-fix.html: Added.
3027         * layout-tests/editing/inserting/insert-3659587-fix-expected.txt: Added.
3028         * layout-tests/editing/inserting/insert-3659587-fix.html: Added.
3029         * layout-tests/editing/inserting/insert-after-delete-001-expected.txt: Added.
3030         * layout-tests/editing/inserting/insert-after-delete-001.html: Added.
3031         * layout-tests/editing/inserting/insert-br-case1-expected.txt: Added.
3032         * layout-tests/editing/inserting/insert-br-case1.html: Added.
3033         * layout-tests/editing/inserting/insert-br-case2-expected.txt: Added.
3034         * layout-tests/editing/inserting/insert-br-case2.html: Added.
3035         * layout-tests/editing/inserting/insert-br-case3-expected.txt: Added.
3036         * layout-tests/editing/inserting/insert-br-case3.html: Added.
3037
3038 2004-06-14  Ken Kocienda  <kocienda@apple.com>
3039
3040         Reviewed by me
3041
3042         Regarding the bug below, removing some tests since we have removed the execCommand("paste") 
3043         feature, at least for now.
3044
3045         <rdar://problem/3684792>: (JavaScript execCommand("paste") presents security issues)
3046
3047         * layout-tests/editing/pasteboard/copy-paste-text-001-expected.txt: Removed.
3048         * layout-tests/editing/pasteboard/copy-paste-text-001.html: Removed.
3049         * layout-tests/editing/pasteboard/cut-paste-text-002-expected.txt: Removed.
3050         * layout-tests/editing/pasteboard/cut-paste-text-002.html: Removed.
3051
3052 2004-06-14  Ken Kocienda  <kocienda@apple.com>
3053
3054         Reviewed by Darin
3055
3056         Fix for this bug:
3057         
3058         <rdar://problem/3672377> assertion failure in AppendNodeCommandImpl::doApply due to non-0 exception code trying to insert a DIV markup string
3059         
3060         * khtml/xml/dom_nodeimpl.cpp:
3061         (NodeImpl::checkAddChild): This function was being too strict in disallowing certain nodes
3062         to be added as other child nodes, applying rules we typically use for parsing. However,
3063         those parsing rules are primarily for dealing with "bad" HTML, and should not be
3064         applied to programmatic DOM operations. The fix involves removing calls to childAllowed().
3065
3066 2004-06-12  Trey Matteson  <trey@apple.com>
3067
3068         The drag image may be updated during a DHTML drag.  This includes updating
3069         from a Timer instead of a drag event handler.  In addition, an arbitrary
3070         element can be set as the one to snapshot for the drag image.
3071
3072         Reviewed by John
3073
3074         * khtml/ecma/kjs_events.cpp:
3075         (ClipboardProtoFunc::tryCall):  setDragImage accepts a node.  Previously,
3076         it had to be an Image object.
3077         * khtml/rendering/render_object.cpp:
3078         (RenderObject::paintingRootRect):  Also returns top element's rect.
3079         * khtml/rendering/render_object.h:
3080         * khtml/xml/dom2_eventsimpl.h:
3081         * kwq/KWQClipboard.h:  New security mode where image is still writable, but
3082         pasteboard is not.
3083         (KWQClipboard::):
3084         (KWQClipboard::setDragHasStarted):
3085         * kwq/KWQClipboard.mm:
3086         (KWQClipboard::KWQClipboard):    Part may be passed.  Needed in the source
3087         case to generate an image from an element.
3088         (KWQClipboard::setAccessPolicy):  New, replaces former becomeNumb method
3089         which wasn't flexible enough.
3090         (KWQClipboard::accessPolicy):  New getter.
3091         (KWQClipboard::dragImage):  No change, diff confusion.
3092         (KWQClipboard::setDragImage):  Call new helper, below.
3093         (KWQClipboard::dragImageElement):  New, return any element set.
3094         (KWQClipboard::setDragImageElement):  New, call new helper.
3095         (KWQClipboard::setDragImage):  New helper, set the image via either a
3096         pixmap or an element to snapshot, pushes the result to WebKit if we've
3097         already started the drag.
3098         (KWQClipboard::dragNSImage):  Generate an NSImage and mouse offset, no
3099         matter how the drag image was set (Image or element).
3100         * kwq/KWQKHTMLPart.h:  A single clipboard is kept over the life of a
3101         source drag instead of making one for each event.
3102         * kwq/KWQKHTMLPart.mm:
3103         (KWQKHTMLPart::KWQKHTMLPart):  Init clipboard.
3104         (KWQKHTMLPart::~KWQKHTMLPart):  Free clipboard.
3105         (KWQKHTMLPart::freeClipboard):  New helper.
3106         (KWQKHTMLPart::dispatchDragSrcEvent):  Most code moved to caller.
3107         (KWQKHTMLPart::khtmlMouseMoveEvent):  Make clipboard for this drag session.
3108         Init clipboard to make an image from the dragSource element.  Mark the
3109         drag as having started.
3110         (KWQKHTMLPart::dragSourceMovedTo):  Clipboard will update WK with any new
3111         drag image, so we don't need to.
3112         (KWQKHTMLPart::dragSourceEndedAt):  Ditto.
3113         (KWQKHTMLPart::elementImage):  Also return element rect.
3114         * kwq/WebCoreBridge.h:  Glue moved to WebCoreGraphicsBridge.
3115         * kwq/WebCoreBridge.mm:
3116         (-[WebCoreBridge dragOperationForDraggingInfo:]):  Use new method.
3117         (-[WebCoreBridge dragExitedWithDraggingInfo:]):  Ditto
3118         (-[WebCoreBridge concludeDragForDraggingInfo:]):  Ditto
3119         * kwq/WebCoreGraphicsBridge.h:
3120         * kwq/WebCoreGraphicsBridge.m:
3121         (-[WebCoreGraphicsBridge setDraggingImage:at:]):  Glue moved from WebBridge
3122
3123 2004-06-11  Chris Blumenberg  <cblu@apple.com>
3124
3125         Support for WebKit drag & drop API.
3126
3127         Reviewed by trey.
3128
3129         * kwq/WebCoreBridge.h:
3130         * kwq/WebCoreBridge.mm:
3131         (-[WebCoreBridge _positionForPoint:]): new
3132         (-[WebCoreBridge moveDragCaretToPoint:]): call _positionForPoint
3133         (-[WebCoreBridge editableDOMRangeForPoint:]): new
3134
3135 2004-06-11  Darin Adler  <darin@apple.com>
3136
3137         Reviewed by Dave.
3138
3139         - fixed <rdar://problem/3645846>: (REGRESSION: Stuck "Loading" when logging into Google's Gmail on newer versions of Safari)
3140
3141         * khtml/html/html_baseimpl.cpp: (HTMLFrameElementImpl::parseHTMLAttribute):
3142         Call through to base class for ATTR_ID so the "has ID" bit gets set.
3143         * khtml/html/html_imageimpl.cpp:
3144         (HTMLImageElementImpl::parseHTMLAttribute): Move ATTR_COMPOSITE code up and out of the way so
3145         it doesn't screw up ATTR_ID parsing.
3146         (HTMLMapElementImpl::parseHTMLAttribute): Call through to base class for ATTR_ID
3147         so the "has ID" bit gets set.
3148         * khtml/html/html_objectimpl.cpp:
3149         (HTMLAppletElementImpl::parseHTMLAttribute): Remove ATTR_ID case; not needed.
3150         (HTMLParamElementImpl::parseHTMLAttribute): Call through to base class for ATTR_ID
3151         so the "has ID" bit gets set.
3152
3153 2004-06-11  Ken Kocienda  <kocienda@apple.com>
3154
3155         Reviewed by Hyatt
3156
3157         Fix for this bug:
3158         
3159         <rdar://problem/3659587>: "when typing in Blot, bold style does not carry over to next line after pressing 'return'"
3160
3161         Did some work to improve the insert newline command. The refinement is to insert the newline
3162         at the upstream position of the caret, ensuring that the newline takes on the 
3163         appropriate style, and does not let the caret "escape" from an element that is
3164         conferring style.
3165
3166         * khtml/editing/htmlediting_impl.cpp:
3167         (khtml::InputNewlineCommandImpl::insertNodeAfterPosition): New helper. Adds smarts about adding
3168         newlines when the selection is a caret in a block.
3169         (khtml::InputNewlineCommandImpl::insertNodeBeforePosition): Ditto.
3170         (khtml::InputNewlineCommandImpl::doApply): Simplified cases. One case in the code could not
3171         happen.
3172         * khtml/editing/htmlediting_impl.h:
3173
3174         Fix for this bug:
3175     
3176         <rdar://problem/3654864>: "Pasting content at start of line places it at end of previous line"
3177
3178         (khtml::InputTextCommandImpl::prepareForTextInsertion): Simple code mistake. Content was indeed
3179         being added to the line before. Fixed to add new content after the line break.
3180
3181 2004-07-10  Trey Matteson  <trey@apple.com>
3182
3183         Prep work for latest delegate API for dragging.  In addition, I also straightened out all
3184         the cases of DHTML setting a drag image or setting pasteboard data, and how that would
3185         override WebKit's default behavior (which follows how WinIE does things).
3186
3187         Reviewed by Chris.
3188
3189         * khtml/rendering/render_object.cpp:
3190         (RenderObject::draggableNode):  Obey new params for whether a DHTML or UserAgent (i.e.,
3191         WebKit) drag source is allowed.
3192         * khtml/rendering/render_object.h:
3193         * kwq/KWQKHTMLPart.h:
3194         * kwq/KWQKHTMLPart.mm:
3195         (KWQKHTMLPart::dispatchDragSrcEvent):  Setting pasteboard data was moved out of here, now
3196         caller's responsibility.
3197         (KWQKHTMLPart::khtmlMouseMoveEvent):  Ask bridge for allowable drag actions (DHTML vs UA).
3198         Only send drag events if DHTML is allowed.  Only generate a drag image if the source is
3199         a DHTML element.  Note whether event handler set any pasteboard data, and pass that fact
3200         to WebKit.
3201         (KWQKHTMLPart::dragSourceMovedTo): Only send drag events if DHTML is allowed.  
3202         (KWQKHTMLPart::dragSourceEndedAt): Only send drag events if DHTML is allowed.  
3203         * kwq/WebCoreBridge.h:
3204
3205 2004-06-11  Ken Kocienda  <kocienda@apple.com>
3206
3207         Reviewed by Trey
3208
3209         Lay some groundwork for better testing of inserting newlines. Layout
3210         tests that use this new code will be coming soon.
3211
3212         * khtml/editing/jsediting.cpp: Add commands for bold and inserting newlines.
3213         * layout-tests/editing/editing.js: Added new insertNewline command.
3214         which calls through to TypingCommand::insertNewline. There was no way to get
3215         to this command from JS before this addition.
3216
3217 2004-06-11  Ken Kocienda  <kocienda@apple.com>
3218
3219         Reviewed by Darin
3220
3221         Javascript execCommand system wants to use case-insensitive QDict.
3222         The interface for QDict offers this feature, but it was never implemented.
3223         Now it is.
3224
3225         * kwq/KWQDictImpl.h: Declare bool to store case-sensitive bit.
3226         * kwq/KWQDictImpl.mm:
3227         (KWQDictImpl::KWQDictImpl): No longer drops caseSensitive on the floor; stores
3228         it in instance variable.
3229         (KWQDictImpl::insert): Make lowercase version of key for operation, if necessary.
3230         (KWQDictImpl::remove): Ditto.
3231         (KWQDictImpl::find): Ditto.
3232         (KWQDictIteratorImpl::currentStringKey): Whitespace cleanup.
3233
3234 === Safari-144 ===
3235
3236 2004-06-10  Ken Kocienda  <kocienda@apple.com>
3237
3238         Reviewed by Darin
3239
3240         Fix for this bug:
3241         
3242         <rdar://problem/3654850>: "Style changes do not work across blocks"
3243         
3244         Now, applying styles works across blocks. I did quite a bit
3245         of internal redsign on the member functions of this class to
3246         make this work. As a bonus, from an architectural standpoint,
3247         all style changes are now done "in place". There is no more
3248         copying of content in order to perform style changes.
3249
3250         * khtml/editing/htmlediting_impl.cpp:
3251         (khtml::ApplyStyleCommandImpl::doApply):
3252         (khtml::ApplyStyleCommandImpl::removeHTMLStyleNode):
3253         (khtml::ApplyStyleCommandImpl::removeCSSStyle):
3254         (khtml::ApplyStyleCommandImpl::removeStyle):
3255         (khtml::ApplyStyleCommandImpl::nodeFullySelected):
3256         (khtml::ApplyStyleCommandImpl::splitTextAtStartIfNeeded):
3257         (khtml::ApplyStyleCommandImpl::splitTextAtEndIfNeeded):
3258         (khtml::ApplyStyleCommandImpl::surroundNodeRangeWithElement):
3259         (khtml::ApplyStyleCommandImpl::applyStyleIfNeeded):
3260         (khtml::ApplyStyleCommandImpl::positionInsertionPoint):
3261         * khtml/editing/htmlediting_impl.h:
3262
3263 2004-06-10  Darin Adler  <darin@apple.com>
3264
3265         Reviewed by Ken.
3266
3267         - filled out execCommand a lot more
3268         - fixed <rdar://problem/3685231>: (execCommand italic is not implemented)
3269         - fixed <rdar://problem/3685232>: (execCommand bold is not implemented)
3270         - fixed <rdar://problem/3675899>: (Make queryCommandIndeterm work as specified in the Javascript execCommand Compatibility Plan)
3271         - fixed <rdar://problem/3675901>: (Make queryCommandState work as specified in the Javascript execCommand Compatibility Plan)
3272         - fixed <rdar://problem/3675904>: (Make queryCommandValue work as specified in the Javascript execCommand Compatibility Plan)
3273
3274         * khtml/editing/jsediting.cpp:
3275         (DOM::JSEditor::queryCommandIndeterm): Changed to use KHTMLPart::TriState instead of CommandState.
3276         (DOM::JSEditor::queryCommandState): Ditto.
3277         (execStyleChange): Changed to use KHTMLPart::applyStyle.
3278         (stateStyle): Used KHTMLPart::selectionHasStyle for this.
3279         (selectionStartHasStyle): Use KHTMLPart::selectionStartHasStyle for this.
3280         (valueStyle): Used KHTMLPart::selectionStartStylePropertyValue for this.
3281         (execBold): Implemented toggling, using selectionStartHasStyle.
3282         (execItalic): Implemented toggling, using selectionStartHasStyle.
3283         (execPrint): Implemented.
3284         (enabledRedo): Implemented, using canRedo.
3285         (enabledUndo): Implemented, using canUndo.
3286         (stateNone): Renamed from stateNo.
3287         (valueBackColor): Implemented, using valueStyle.
3288         (valueFontName): Implemented, using valueStyle.
3289         (valueFontSize): Implemented, using valueStyle.
3290         (valueForeColor): Implemented, using valueStyle.
3291         (valueFontSize): Implemented, using valueStyle.
3292
3293         * khtml/khtml_part.h: Added editing operations.
3294         * khtml/khtml_part.cpp:
3295         (KHTMLPart::copyToPasteboard): Added.
3296         (KHTMLPart::cutToPasteboard): Added.
3297         (KHTMLPart::redo): Added.
3298         (KHTMLPart::undo): Added.
3299         (KHTMLPart::applyStyle): Added.
3300         (updateState): Added.
3301         (KHTMLPart::selectionHasStyle): Added.
3302         (KHTMLPart::selectionStartHasStyle): Added.
3303         (KHTMLPart::selectionStartStylePropertyValue): Added.
3304         (KHTMLPart::selectionComputedStyle): Added.
3305         (KHTMLPart::print): Added.
3306
3307         * khtml/ecma/kjs_window.cpp: (WindowFunc::tryCall): Call print() on plain old part, not KWQ(part).
3308
3309         * kwq/KWQKHTMLPart.h: Removed print(), added _haveUndoRedoOperations.
3310         * kwq/KWQKHTMLPart.mm:
3311         (KHTMLPart::print): Moved from KWQKHTMLPart to KHTMLPart.
3312         (KWQKHTMLPart::registerCommandForUndo): Moved code here from bridge.
3313         (KWQKHTMLPart::registerCommandForRedo): Moved code here from bridge.
3314         (KWQKHTMLPart::clearUndoRedoOperations): Moved code here from bridge.
3315         (KWQKHTMLPart::issueUndoCommand): Moved code here from bridge.
3316         (KWQKHTMLPart::issueRedoCommand): Moved code here from bridge.
3317         (KWQKHTMLPart::issuePasteCommand): Moved code here from bridge.
3318         (KHTMLPart::canUndo): Added.
3319         (KHTMLPart::canRedo): Added.
3320
3321         * kwq/WebCoreBridge.h: Added undoManager, removed undo-related methods.
3322         * kwq/WebCoreBridge.mm: (-[WebCoreBridge applyStyle:]): Changed to call
3323         KHTMLPart::applyStyle.
3324
3325         * WebCore.pbproj/.cvsignore: Updated for new Xcode files.
3326
3327 2004-06-09  Maciej Stachowiak  <mjs@apple.com>
3328
3329         Reviewed by Dave.
3330
3331         <rdar://problem/3671555>: Blot scrolls to the top every time you type
3332         
3333         * khtml/xml/dom_selection.cpp:
3334         (DOM::Selection::getRepaintRect): If the caret position is invalid, recompute it.
3335
3336 2004-06-09  David Hyatt  <hyatt@apple.com>
3337
3338         Fix for 3607091, implement a style that prevents zoom and min font size from taking effect.
3339         The name of the new style is "-apple-text-size-adjust" with values of "none" and "auto."  The default
3340         is "auto."
3341         
3342         Reviewed by mjs
3343
3344         * khtml/css/cssparser.cpp:
3345         (CSSParser::parseValue):
3346         * khtml/css/cssproperties.c:
3347         (hash_prop):
3348         (findProp):
3349         * khtml/css/cssproperties.h:
3350         * khtml/css/cssproperties.in:
3351         * khtml/css/cssstyleselector.cpp:
3352         (khtml::CSSStyleSelector::styleForElement):
3353         (khtml::CSSStyleSelector::pseudoStyleForElement):
3354         (khtml::CSSStyleSelector::applyDeclarations):
3355         (khtml::CSSStyleSelector::applyProperty):
3356         (khtml::CSSStyleSelector::checkForTextSizeAdjust):
3357         * khtml/css/cssstyleselector.h:
3358         * khtml/rendering/render_style.cpp:
3359         (textSizeAdjust):
3360         (StyleCSS3InheritedData):
3361         (StyleCSS3InheritedData::operator==):
3362         (RenderStyle::diff):
3363         * khtml/rendering/render_style.h:
3364         (khtml::RenderStyle::lineClamp):
3365         (khtml::RenderStyle::textSizeAdjust):
3366         (khtml::RenderStyle::setTextSizeAdjust):
3367         (khtml::RenderStyle::initialTextSizeAdjust):
3368
3369 2004-06-09  David Hyatt  <hyatt@apple.com>
3370
3371         Implement parsing and setting of the text-overflow CSS3 property.
3372         
3373         Reviewed by kocienda
3374
3375         * khtml/css/cssparser.cpp:
3376         (CSSParser::parseValue):
3377         * khtml/css/cssproperties.c:
3378         (hash_prop):
3379         (findProp):
3380         * khtml/css/cssproperties.h:
3381         * khtml/css/cssproperties.in:
3382         * khtml/css/cssstyleselector.cpp:
3383         (khtml::CSSStyleSelector::applyProperty):
3384         * khtml/css/cssvalues.c:
3385         (hash_val):
3386         (findValue):
3387         * khtml/css/cssvalues.h:
3388         * khtml/css/cssvalues.in:
3389         * khtml/rendering/render_style.cpp:
3390         (textOverflow):
3391         (StyleCSS3NonInheritedData::operator==):
3392         (RenderStyle::diff):
3393         * khtml/rendering/render_style.h:
3394         (khtml::RenderStyle::textOverflow):
3395         (khtml::RenderStyle::setTextOverflow):
3396         (khtml::RenderStyle::initialTextOverflow):
3397
3398 2004-06-09  David Hyatt  <hyatt@apple.com>
3399
3400         Fix for 3678031, implement better flexing for Emerson headers.  This involved adding support for max-width: intrinsic,
3401         fixing the box layout algorithm to properly deal with max-widths, and implementing support for baseline alignment
3402         so that boxes can be aligned vertically along their interior baselines.
3403         
3404         Reviewed by kocienda
3405
3406         * khtml/css/cssparser.cpp:
3407         (CSSParser::parseValue):
3408         (CSSParser::parseShadow):
3409         * khtml/css/cssparser.h:
3410         * khtml/css/cssproperties.c:
3411         (hash_prop):
3412         (findProp):
3413         * khtml/css/cssproperties.h:
3414         * khtml/css/cssproperties.in:
3415         * khtml/css/cssstyleselector.cpp:
3416         (khtml::CSSStyleSelector::applyProperty):
3417         * khtml/css/cssvalues.c:
3418         (hash_val):
3419         (findValue):
3420         * khtml/css/cssvalues.h:
3421         * khtml/css/cssvalues.in:
3422         * khtml/misc/khtmllayout.h:
3423         (khtml::):
3424         * khtml/rendering/render_block.cpp:
3425         (khtml::RenderBlock::baselinePosition):
3426         (khtml::RenderBlock::getBaselineOfFirstLineBox):
3427         * khtml/rendering/render_block.h:
3428         * khtml/rendering/render_box.cpp:
3429         (RenderBox::RenderBox):
3430         (RenderBox::overrideWidth):
3431         (RenderBox::overrideHeight):
3432         (RenderBox::calcWidth):
3433         (RenderBox::calcHeight):
3434         * khtml/rendering/render_box.h:
3435         (khtml::RenderBox::overrideSize):
3436         (khtml::RenderBox::setOverrideSize):
3437         * khtml/rendering/render_flexbox.cpp:
3438         (khtml::RenderFlexibleBox::calcMinMaxWidth):
3439         (khtml::RenderFlexibleBox::layoutBlock):
3440         (khtml::RenderFlexibleBox::layoutHorizontalBox):
3441         (khtml::RenderFlexibleBox::layoutVerticalBox):
3442         (khtml::RenderFlexibleBox::placeChild):
3443         (khtml::RenderFlexibleBox::allowedChildFlex):
3444         * khtml/rendering/render_flexbox.h:
3445         * khtml/rendering/render_image.cpp:
3446         (RenderImage::isWidthSpecified):
3447         (RenderImage::isHeightSpecified):
3448         * khtml/rendering/render_object.h:
3449         (khtml::RenderObject::getBaselineOfFirstLineBox):
3450         (khtml::RenderObject::overrideSize):
3451         (khtml::RenderObject::overrideWidth):
3452         (khtml::RenderObject::overrideHeight):
3453         (khtml::RenderObject::setOverrideSize):
3454         * khtml/rendering/render_style.cpp:
3455         (StyleFlexibleBoxData::StyleFlexibleBoxData):
3456         (StyleFlexibleBoxData::operator==):
3457         (ShadowData::operator==):
3458         * khtml/rendering/render_style.h:
3459         (khtml::RenderStyle::boxPack):
3460         (khtml::RenderStyle::setBoxPack):
3461         * khtml/rendering/table_layout.cpp:
3462         (AutoTableLayout::layout):
3463
3464 2004-06-09  Richard Williamson   <rjw@apple.com>
3465
3466         Added support for drawing un-rasterized transformed PDFs.
3467
3468         Reviewed by John.
3469
3470         * khtml/ecma/kjs_html.cpp:
3471         (KJS::Context2DFunction::tryCall):
3472
3473 2004-06-09  Darin Adler  <darin@apple.com>
3474
3475         Reviewed by Ken.
3476
3477         - implemented still more execCommand commands
3478
3479         * khtml/editing/jsediting.cpp: Added a lot more commands, and reformatted a bit.
3480
3481 2004-06-08  Darin Adler  <darin@apple.com>
3482
3483         Reviewed by Maciej.
3484
3485         - implemented a bunch more execCommand commands
3486         - fixed <rdar://problem/3684792>: (JavaScript execCommand("paste") presents security issues)
3487         - fixed <rdar://problem/3675898>: (Make queryCommandEnabled work as specified in the Javascript execCommand Compatibility Plan)
3488         - fixed <rdar://problem/3675903>: (Make queryCommandSupported work as specified in the Javascript execCommand Compatibility Plan)
3489         - about half of <rdar://problem/3685231>: (execCommand italic is not implemented)
3490         - about half of <rdar://problem/3685232>: (execCommand bold is not implemented)
3491
3492         * khtml/editing/jsediting.h: Made constructor inline. Deleted a few unneeded member functions
3493         that are now just private functions inside jsediting.cpp.
3494
3495         * khtml/editing/jsediting.cpp:
3496         (commandImp): Changed this around, so the dictionary is a static local to this function,
3497         and initialized with C++ "first time initialization" rule.
3498         (DOM::JSEditor::execCommand): Got rid of special case for 0 for function pointer and added const.
3499         (DOM::JSEditor::queryCommandEnabled): Ditto.
3500         (DOM::JSEditor::queryCommandIndeterm): Got rid of special case for 0 for function pointer, added const,
3501         and use a common three-state state function rather than a separate "indeterm" function.
3502         (DOM::JSEditor::queryCommandState): Ditto.
3503         (DOM::JSEditor::queryCommandValue): More of the same.
3504         (execNotImplemented): Added. Used for unimplemented commands; there are only a few left.
3505         (execCopy): Renamed.
3506         (execCut): Renamed.
3507         (execDelete): Renamed.
3508         (execInsertText): Renamed.
3509         (execPaste): Renamed, and disabled.
3510         (execRedo): Renamed.
3511         (execSelectAll): Renamed.
3512         (execUndo): Renamed.
3513         (execStyleChange): Added. Helper function for commands that are style changes.
3514         (execBold): Added.
3515         (execItalic): Added.
3516         (execJustifyCenter): Added.
3517         (execJustifyFull): Added.
3518         (execJustifyLeft): Added.
3519         (execJustifyRight): Added.
3520         (execSubscript): Added.
3521         (execSuperscript): Added.
3522         (execUnselect): Added.
3523         (stateNotImplemented): Added. Used for unimplemented state queries; there are a few left.
3524         (noState): Added.
3525         (valueNotImplemented): Added. Used for unimplemented value queries; there are a few left.
3526         (nullStringValue): Added.
3527         (createCommandDictionary): Changed the initDict function into this function. Added implementations
3528         for many commands and condensed format so it's easier to work with.
3529
3530 2004-06-08  Darin Adler  <darin@apple.com>
3531
3532         Reviewed by Vicki.
3533
3534         - our part of fix to <rdar://problem/3629334>: (REGRESSION (Tiger): titles on pop-ups menus are truncated and show ellipses)
3535
3536         * kwq/KWQComboBox.mm: (QComboBox::QComboBox): Call setLineBreakMode:NSLineBreakByClipping.
3537         In the current version of Tiger I am using, this is not implemented yet.
3538
3539         - a couple of other unrelated changes
3540
3541         * khtml/rendering/render_form.cpp: (RenderTextArea::calcMinMaxWidth): Put a little more code
3542         inside the APPLE_CHANGES ifdef.
3543         * kwq/KWQTextEdit.h: Remove unused setTabStopWidth function, and make empty setTextFormat
3544         function an inline for slightly smaller code size.
3545         * kwq/KWQTextEdit.mm: Ditto.
3546         * kwq/KWQTextField.mm: Update copyright date.
3547
3548 2004-06-08  Trey Matteson  <trey@apple.com>
3549
3550         A DHTML drag source can now change the dragging image during the drag.  Currently
3551         it may only be set to a static image.
3552
3553         Reviewed by John
3554
3555         * kwq/KWQKHTMLPart.mm:
3556         (KWQKHTMLPart::dragSourceMovedTo):  If the ondrag event handler set an image,
3557         pass it to WebKit.
3558         * kwq/WebCoreBridge.h:
3559
3560 2004-06-08  Ken Kocienda  <kocienda@apple.com>
3561
3562         Reviewed by Hyatt
3563
3564         Changes to the selection state for these tests as a result of my previous
3565         checkin. The changes are minor to a couple of offsets. I looked at the
3566         changes and approve them.
3567
3568         * layout-tests/editing/deleting/delete-block-contents-001-expected.txt
3569         * layout-tests/editing/deleting/delete-block-contents-002-expected.txt
3570         * layout-tests/editing/deleting/delete-block-contents-003-expected.txt
3571
3572 2004-06-08  Ken Kocienda  <kocienda@apple.com>
3573
3574         Reviewed by Hyatt
3575
3576         Fix for this bug:
3577
3578         <rdar://problem/3654841>: "Hitting delete key with start of block selected 
3579         does not merge content with preceding block"
3580
3581         Selections that span blocks now work correctly for deleting the selection and inserting
3582         over the selection. The largest part of the change is adding a new field to the 
3583         RemoveNodeAndPruneCommand and its impl version. This was done since the starting block
3584         for a multi-block selection should always be preserved when deleting, and this was
3585         a convenient way to express this using the code structure already in place.
3586         
3587         * khtml/editing/htmlediting.cpp:
3588         (khtml::RemoveNodeAndPruneCommand::RemoveNodeAndPruneCommand): Modify this command to 
3589         take two nodes: the node to remove and a node to stop at when pruning back up the tree.
3590         (khtml::RemoveNodeAndPruneCommand::pruneNode): New accessor, replaces old node() accessor.
3591         (khtml::RemoveNodeAndPruneCommand::stopNode): New accessor for additional feature described 
3592         above.
3593         * khtml/editing/htmlediting.h:
3594         * khtml/editing/htmlediting_impl.cpp:
3595         (khtml::shouldPruneNode): blow flow renderers can now be deleted, but not if they are a 
3596         rootEditableElement.
3597         (khtml::CompositeEditCommandImpl::removeNodeAndPrune): Pass new stopNode param and change the
3598         name of the existing node argument to pruneNode to distinguish it.
3599         (khtml::DeleteSelectionCommandImpl::doApply): Pass the block containing the start of the
3600         selection to removeNodeAndPrune in each case. Also, add one little loop to move all
3601         the content from the block containing the end of the selection if that block is different
3602         than the start block.
3603         (khtml::RemoveNodeAndPruneCommandImpl::RemoveNodeAndPruneCommandImpl): Implement the
3604         pruneNode/stopNode design already described.
3605         (khtml::RemoveNodeAndPruneCommandImpl::~RemoveNodeAndPruneCommandImpl): Manage the
3606         lifecycle of stopNode.
3607         (khtml::RemoveNodeAndPruneCommandImpl::doApply): Add a check to stop at the stop
3608         node while pruning.
3609         * khtml/editing/htmlediting_impl.h:
3610         (khtml::RemoveNodeAndPruneCommandImpl::pruneNode): New accessor.
3611         (khtml::RemoveNodeAndPruneCommandImpl::stopNode): Ditto.
3612
3613 2004-06-07  Trey Matteson  <trey@apple.com>
3614
3615         Clipboard access during DHTML dragging is made secure.
3616
3617         Reviewed by John.
3618
3619         * kwq/KWQClipboard.h:
3620         (KWQClipboard::):
3621         * kwq/KWQClipboard.mm:
3622         (KWQClipboard::KWQClipboard):    Init new policy and changeCount members.
3623         (KWQClipboard::becomeNumb):  Set policy to numb.
3624         (KWQClipboard::clearData):   Check policy.
3625         (KWQClipboard::clearAllData):   Check policy.
3626         (KWQClipboard::getData):   Check policy and changeCount.
3627         (KWQClipboard::setData):   Check policy.
3628         (KWQClipboard::types):   Check policy and ChangeCount.
3629         (KWQClipboard::setDragLocation):   Check policy.
3630         (KWQClipboard::setDragImage):   Check policy.
3631         (KWQClipboard::setDropEffect):   Check policy.
3632         (KWQClipboard::setEffectAllowed):   Check policy.
3633         * kwq/KWQKHTMLPart.mm:
3634         (KWQKHTMLPart::dispatchDragSrcEvent):  Set policy when creating clipboard,
3635         and numb-ify it when we're done.
3636         * kwq/WebCoreBridge.mm:
3637         (-[WebCoreBridge dragOperationForDraggingInfo:]): Set policy when creating clipboard,
3638         and numb-ify it when we're done.
3639         (-[WebCoreBridge dragExitedWithDraggingInfo:]):  Ditto
3640         (-[WebCoreBridge concludeDragForDraggingInfo:]):  Ditto
3641
3642 2004-06-08  Ken Kocienda  <kocienda@apple.com>
3643
3644         Reviewed by me
3645
3646         * khtml/editing/jsediting.cpp:
3647         (DOM::EditorCommand::): Stray capital letter in "selectAll" command static
3648         initializer prevented the command from ever working since the command
3649         strings are lower-cased when trying to find a match, but not when they
3650         are inserted into the dictionary. This is a one character change to make
3651         the string "selectall" in the initializer.
3652
3653 2004-06-07  Trey Matteson  <trey@apple.com>
3654
3655         WebCore will now generate a default drag image when an element serves as a drag
3656         source.  The basic idea is the image contains the element and all its children.
3657
3658         As for the implementation, instead of adding a new paintAction I added a new
3659         field to the paintInfo struct, "paintingRoot".  If this field is set, painting will
3660         only paint that root's descendants.
3661
3662         Some code also moved from the bridge to the part, to be available within WebCore.
3663
3664         Reviewed by hyatt.
3665
3666         * khtml/rendering/render_block.cpp:
3667         (khtml::RenderBlock::paintObject):  Pass along paintingRoot to kids.
3668         (khtml::RenderBlock::paintFloats):  Pass along paintingRoot to kids.
3669         * khtml/rendering/render_box.cpp:
3670         (RenderBox::paintBoxDecorations):  Test paintingRoot before painting.
3671         * khtml/rendering/render_canvasimage.cpp:
3672         (RenderCanvasImage::paint):    Test paintingRoot before painting.
3673         * khtml/rendering/render_flow.cpp:
3674         (RenderFlow::paintLineBoxBackgroundBorder):    Test paintingRoot before painting.
3675         (RenderFlow::paintLineBoxDecorations):    Test paintingRoot before painting.
3676         * khtml/rendering/render_image.cpp:
3677         (RenderImage::paint):    Test paintingRoot before painting.
3678         * khtml/rendering/render_inline.cpp:
3679         (RenderInline::paint):    Pass along paintingRoot to kids.
3680         * khtml/rendering/render_layer.cpp:
3681         (RenderLayer::paint):   Pass along paintingRoot to kids.
3682         (RenderLayer:: paintLayer):  Pass along paintingRoot to kids.  Test if we are within the
3683         paintingRoot to decide whether to pass the root to our renderer.
3684         * khtml/rendering/render_layer.h:
3685         * khtml/rendering/render_object.cpp:
3686         (RenderObject::hasAncestor):  New utility.
3687         (RenderObject::absoluteBoundingBoxRect): Helper for paintingRootRect
3688         (RenderObject::addAbsoluteRectForLayer):  Helper for paintingRootRect
3689         (RenderObject::paintingRootRect):  Return rect that will be painted if we are
3690         the painting root.
3691         (RenderObject::draggableNode):  Add test to avoid rare NULL ptr crash.
3692         * khtml/rendering/render_object.h:
3693         (khtml::RenderObject::PaintInfo::PaintInfo):  Add paintingRoot field.
3694         (khtml::RenderObject::paintingRootForChildren):  New utility.  Return the current
3695         paintingRoot, or nil if we are the root (so kids draw normally).
3696         (khtml::RenderObject::shouldPaintWithinRoot):  New utility.  We can paint if we
3697         are the paintingRoot, or no root is set.
3698         * khtml/rendering/render_replaced.cpp:
3699         (RenderReplaced::shouldPaint):  Pass along paintingRoot to kids.
3700         * khtml/rendering/render_table.cpp:
3701         (RenderTable::paint):   Pass along paintingRoot to kids.
3702         * khtml/rendering/render_text.cpp:
3703         (RenderText::paint):  Test paintingRoot before painting.
3704         * kwq/KWQKHTMLPart.h:
3705         * kwq/KWQKHTMLPart.mm:
3706         (KWQKHTMLPart::KWQKHTMLPart):  Init new _elementToDraw member.
3707         (KWQKHTMLPart::paint):  Generalized to handle cases of painting selection or a
3708         given element.
3709         (KWQKHTMLPart::khtmlMouseMoveEvent):  Make a default image if dragSrc didn't
3710         provide one.
3711         (KWQKHTMLPart::selectionRect):  Moved from bridge.
3712         (KWQKHTMLPart::visibleSelectionRect):  Ditto.
3713         (KWQKHTMLPart::imageFromRect):  Newly factored code, from bridge.
3714         (KWQKHTMLPart::selectionImage):  Moved from bridge, wrapper around imageFromRect.
3715         (KWQKHTMLPart::elementImage):  New method, wrapper around imageFromRect.
3716         * kwq/WebCoreBridge.h:
3717         * kwq/WebCoreBridge.mm:
3718         (-[WebCoreBridge drawRect:withPainter:]):  Just call part to draw.
3719         (-[WebCoreBridge visibleSelectionRect]):  Guts moved to part.
3720         (-[WebCoreBridge selectionImage]):  Ditto.
3721
3722 2004-06-07  Darin Adler  <darin@apple.com>
3723
3724         Reviewed by Chris.
3725
3726         - fixed <rdar://problem/3682821>: (setTimeout fails when additional parameters are used and timeout function is a string)
3727
3728         * khtml/ecma/kjs_window.cpp: (WindowFunc::tryCall): Ignore excess arguments instead
3729         of rejecting the argument list for window.scrollBy, scroll, scrollTo, moveBy, moveTo,
3730         resizeBy, resizeTo, and setTimeout (when the timeout is a string rather than an object).
3731
3732         - did a refinement of JSEditor to be slightly more efficient, and not have to edit
3733           both the .cpp file and the .h when adding more implementation
3734
3735         * khtml/khtml_part.h: Hack so we can get to the docImpl and xmlDocImpl without being a friend.
3736         * khtml/editing/jsediting.h: Simplified a bit.
3737         * khtml/editing/jsediting.cpp: Redid to use a table, and simplified a bit.
3738
3739 2004-06-07  Ken Kocienda  <kocienda@apple.com>
3740
3741         Reviewed by Hyatt
3742
3743         Fix for this bug:
3744         
3745         <rdar://problem/3682354>: "Typing style does not work yet"
3746         
3747         Did the final hook-up of support that has landed in the tree in the
3748         recent past as part of ongoing style-application work.
3749         
3750         For the most part, this patch modifies the InputNewlineCommandImpl and
3751         InputTextCommandImpl commands to insert a styling span when there is
3752         a typing style active. 
3753
3754         * khtml/editing/htmlediting_impl.cpp:
3755         (khtml::CompositeEditCommandImpl::createTypingStyleElement): Helper
3756         shared by the two commands modified.
3757         (khtml::InputNewlineCommandImpl::doApply): Create a styling span if the
3758         part has a typing style. Maintain a nodeToInsert local variable, which is
3759         either the break to insert or a styling span containing the break. Also,
3760         remove some utterly bogus derefs. They are just plain wrong.
3761         (khtml::InputTextCommandImpl::InputTextCommandImpl): Don't need to keep
3762         m_insertedTextNode. The composite commands this command uses will keep
3763         track of that object's lifetime. We do not need to do that here.
3764         (khtml::InputTextCommandImpl::~InputTextCommandImpl): No longer need 
3765         to deref obsolete m_insertedTextNode.
3766         (khtml::InputTextCommandImpl::prepareForTextInsertion): Handle the case
3767         where a styling span needs to be added.
3768         (khtml::TypingCommandImpl::insertText): Create a new InputTextCommand when
3769         there is an active typping style.
3770         * khtml/editing/htmlediting_impl.h: Declare createTypingStyleElement helper.
3771         Remove m_insertedTextNode from InputTextCommandImpl.
3772         * kwq/WebCoreBridge.mm:
3773         (-[WebCoreBridge applyStyle:]): Swicth on the state of the selection, calling
3774         setTypingStyle when a caret and ApplyStyleCommand when a range.
3775
3776 2004-06-07  Darin Adler  <darin@apple.com>
3777
3778         Reviewed by Ken.
3779
3780         * khtml/editing/jsediting.h: Elide some unnecessary namespace prefixes.
3781         * khtml/editing/jsediting.cpp: Make typed constants instead of macros.
3782         (DOM::JSEditor::commandDict): Elide unnecessary namespace prefix.
3783         (DOM::JSEditor::execCommand): Remove xxxNotImplemented functions; just return false instead.
3784         (DOM::JSEditor::queryCommandEnabled): Ditto.
3785         (DOM::JSEditor::queryCommandIndeterm): Ditto.
3786         (DOM::JSEditor::queryCommandState): Ditto.
3787         (DOM::JSEditor::queryCommandSupported): Ditto.
3788         (DOM::JSEditor::queryCommandValue): Ditto.
3789
3790 2004-06-05  Trey Matteson  <trey@apple.com>
3791
3792         As agreed with Hyatt and Louch, do not post incoming dragging events
3793         to text nodes.
3794
3795         Reviewed by Maciej
3796
3797         * khtml/khtmlview.cpp:
3798         (KHTMLView::updateDragAndDrop):  For any drag target that is a text node,
3799         use its parent instead.
3800
3801 2004-06-03  Trey Matteson  <trey@apple.com>
3802
3803         DHTML dragging uses the Cocoa NSDragOperation on both the source and dest ends.
3804
3805         In addition, I caught a prime gaffe where I had used "dropAllowed" instead of "effectAllowed"
3806         for that particular WinIE property.  That is renamed throughout.
3807
3808         Reviewed by rjw
3809
3810         * khtml/ecma/kjs_events.cpp:
3811         (stringOrUndefined):  New little helper.
3812         (Clipboard::getValueProperty):  Return Undefined if dropEffect or effectAllowed are not set.
3813         (Clipboard::putValue):  Rename.
3814         * khtml/ecma/kjs_events.h:
3815         (KJS::Clipboard::):  Rename.
3816         * khtml/ecma/kjs_events.lut.h:
3817         * khtml/xml/dom2_eventsimpl.h:  Rename.
3818         * kwq/KWQClipboard.h: Rename, add access to Cocoa drag op.
3819         * kwq/KWQClipboard.mm:
3820         (KWQClipboard::dropEffect):   These 4 just moved in the file.
3821         (KWQClipboard::setDropEffect):
3822         (KWQClipboard::effectAllowed):
3823         (KWQClipboard::setEffectAllowed):
3824         (cocoaOpFromIEOp):  Convert from an IE operation string to a Cocoa DragOp
3825         (IEOpFromCocoaOp):  and vice-versa
3826         (KWQClipboard::sourceOperation):  Return effectAllowed, converted to a NSDragOp
3827         (KWQClipboard::destinationOperation):  Return dropEffect, converted to a NSDragOp
3828         (KWQClipboard::setSourceOperation):  Set effectAllowed, using a Cocoa value
3829         (KWQClipboard::setDestinationOperation):  Set dropEffect, using a Cocoa value
3830         * kwq/KWQKHTMLPart.h:
3831         * kwq/KWQKHTMLPart.mm:
3832         (KWQKHTMLPart::dispatchDragSrcEvent):  Return the drag op specified by the source element.
3833         (KWQKHTMLPart::khtmlMouseMoveEvent):  Pass our drag op up to WebKit.
3834         (KWQKHTMLPart::dragSourceMovedTo):  Pass NULL for new arg.
3835         (KWQKHTMLPart::dragSourceEndedAt):  Ditto
3836         * kwq/WebCoreBridge.h:
3837         * kwq/WebCoreBridge.mm:
3838         (-[WebCoreBridge dragOperationForDraggingInfo:]):  Set the incoming dragOp onto the clipboard
3839         so DHTML can access it.  In addition, validate whatever op DHTML returns so we play well
3840         with Cocoa.
3841
3842 2004-06-04  David Hyatt  <hyatt@apple.com>
3843
3844         Add support for auto values in flex transitions.  Add support for mapping the back end values to
3845         front end values.  Next it's time to actually try to use this stuff in render_flexbox.
3846         
3847         Reviewed by darin
3848
3849         * khtml/css/css_valueimpl.cpp:
3850         (length):
3851         * khtml/css/css_valueimpl.h:
3852         (DOM::FlexGroupTransitionValueImpl::isAuto):
3853         * khtml/css/cssparser.cpp:
3854         (FlexGroupTransitionParseContext::length):
3855         (FlexGroupTransitionParseContext::commitAutoValue):
3856         (FlexGroupTransitionParseContext::commitValue):
3857         (CSSParser::parseFlexGroupTransition):
3858         * khtml/css/cssstyleselector.cpp:
3859         (khtml::CSSStyleSelector::applyProperty):
3860         * khtml/rendering/render_style.cpp:
3861         (FlexGroupTransitionData::operator==):
3862         * khtml/rendering/render_style.h:
3863         (khtml::FlexGroupTransitionData::next):
3864         (khtml::FlexGroupTransitionData::isAuto):
3865
3866 === Safari-143 ===
3867
3868 2004-06-04  Kevin Decker  <kdecker@apple.com>
3869
3870         Reviewed by Dave.
3871
3872         - kwq/KWQKHTMLPart.mm: addMessagetoConsole places sourceURL in the dictionary
3873         - khtml/xml/dom_docimpl.cpp: right now, we don't have a way to get a url,
3874           so we leave this blank
3875         - khtml/ecma/kjs_window.cpp: still need to get the real line number and sourceURL
3876         - khtml/ecma/kjs_proxy.cpp: now passing the sourceURL to addMessageToConsole
3877         - khtml/ecma/kjs_events.cpp: still need to grab an accurate line number and sourceURL
3878         
3879         * khtml/ecma/kjs_events.cpp:
3880         (JSEventListener::handleEvent):
3881         (JSLazyEventListener::handleEvent):
3882         * khtml/ecma/kjs_proxy.cpp:
3883         (KJSProxyImpl::evaluate):
3884         * khtml/ecma/kjs_window.cpp: