7bb08c70c3c2239ed769a43e8c60a9dd3337bfef
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2005-02-06  Darin Adler  <darin@apple.com>
2
3         Reviewed by Maciej.
4
5         - fixed <rdar://problem/3993722> need oncut and onpaste handlers implemented for <textarea> (needed for widgets)
6
7         * kwq/KWQTextArea.mm:
8         (-[KWQTextAreaTextView dispatchHTMLEvent:]): Added.
9         (-[KWQTextAreaTextView cut:]): Dispatch "before cut" and "cut" events.
10         (-[KWQTextAreaTextView copy:]): Dispatch "before copy" and "copy" events.
11         (-[KWQTextAreaTextView paste:]): Dispatch "before paste" and "paste" events.
12         (-[KWQTextAreaTextView pasteAsPlainText:]): Ditto.
13         (-[KWQTextAreaTextView pasteAsRichText:]): Ditto.
14
15 2005-02-06  Darin Adler  <darin@apple.com>
16
17         Reviewed by Maciej.
18
19         - fixed <rdar://problem/3943038> <input type=search> that is focused in onload handler doesn't have a visible editor
20
21         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::setFocusNode): Always update layout before giving focus to a widget.
22         This prevents the bad case where we give a widget focus before it has been positioned or sized, causing us to
23         exercise edge cases AppKit doesn't handle well.
24
25         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Remove workaround code I added
26         to fix bug 3943049. Updating the layout fixes the same problem in a cleaner, safer way, and solves another problem,
27         with the way the clip view is set up.
28
29 2005-02-06  Darin Adler  <darin@apple.com>
30
31         Reviewed by Maciej.
32
33         - fixed <rdar://problem/3425232> textarea won't trigger onchange action when clicking to new field
34
35         * khtml/rendering/render_form.h: Added new m_dirty data member.
36         * khtml/rendering/render_form.cpp:
37         (RenderTextArea::RenderTextArea): Initialize m_dirty to false.
38         (RenderTextArea::detach): Call value() on the DOM element to cause it to fetch the value from this object.
39         (RenderTextArea::handleFocusOut): Ditto. Also send the onchange event based only on the m_dirty flag.
40         (RenderTextArea::updateFromElement): Clear the m_dirty flag if the edited value is blown away by a value
41         that comes from the DOM element. Remove code to clear the element's m_dirtyvalue flag; that's an unnecessary
42         optimization, and ideally we'll stop having code in the render object that knows about that flag later.
43         (RenderTextArea::slotTextChanged): Set the m_dirty flag.
44
45 2005-02-06  Darin Adler  <darin@apple.com>
46
47         Reviewed by Maciej.
48
49         - re-fixed <rdar://problem/3760910> please add support for custom tag names in HTML
50
51         * khtml/xml/dom_docimpl.cpp:
52         (DocumentImpl::tagId): Use ID_LAST_TAG + 1 for the ID of the first assigned tag ID. Before we'd use ID_LAST_TAG,
53         which resulted in the same number being used for ID_COMMENT and the first custom tag.
54         (DocumentImpl::tagName): Use ID_LAST_TAG + 1, as above.
55         (DocumentImpl::namespaceURI): Change a < ID_LAST_TAG to <= ID_LAST_TAG in the same spirit as above.
56
57 2005-02-06  Darin Adler  <darin@apple.com>
58
59         Reviewed by Maciej.
60
61         - fixed <rdar://problem/3986639> Crash occurs after choosing Undo Typing from the Edit menu
62
63         * kwq/KWQTextArea.mm: (-[KWQTextArea viewWillMoveToWindow:]): Remove actions from undo manager when the view is
64         removed from the window. Unfortunately, to do this the code has to know that the target of NSTextView actions
65         will be the text storage object, but given the NSText architecture, that's pretty clear.
66
67 2005-02-05  Chris Blumenberg  <cblu@apple.com>
68
69         Fixed: <rdar://problem/3991974> REGRESSION: www.jabra.com world location screen does not work
70
71         Reviewed by hyatt.
72
73         * kwq/KWQKJavaAppletWidget.mm:
74         (KJavaAppletWidget::KJavaAppletWidget): fallback to the document's base URL if there is no baseURL attribute
75         * kwq/WebCoreBridge.h:
76         * kwq/WebCoreBridge.mm:
77         (-[WebCoreBridge baseURL]): new
78
79 2005-02-04  David Harrison  <harrison@apple.com>
80
81         Reviewed by Darin.
82
83         Rolled out Ken's accidental checkin when committing <rdar://problem/3986155> fix yesterday.
84         
85         * khtml/editing/selection.cpp:
86         (khtml::Selection::validate):
87
88 2005-02-04  Adele Amchan  <adele@apple.com>
89
90         Reviewed by Darin.
91
92         Fix for <rdar://problem/3758785> Safari no longer works at BankOfAmerica online banking for military users
93   
94         When closing the document, if a body doesn't exist we now create one.  This bug was preventing the onload handler from
95         firing in cases where there wasn't a body.  In the BankOfAmerica case, the page was just a bit of script where the onload
96         handler redirected to the correct page.
97
98         * khtml/xml/dom_docimpl.cpp: (DocumentImpl::close):
99
100 2005-02-03  Ken Kocienda  <kocienda@apple.com>
101
102         Reviewed by Chris
103
104         Fix for this bug:
105         
106         <rdar://problem/3986155> Insertion point goes to beginning of doc after deleting
107
108         * khtml/editing/htmlediting.cpp:
109         (khtml::DeleteSelectionCommand::setStartNode): New convenience to handle reference counting when setting.
110         (khtml::DeleteSelectionCommand::handleGeneralDelete): This contains the crux of the bug fix. Improve tests
111         that detect when a selected node needs to be retained, rather than deleted, to preserve the intent of the user.
112         This has the side effect of causing the insertion point placement code to succeed rather than fail. Before
113         this fix, the failure of the insertion point placement code caused the insertion point to jump to the start
114         of the document, which is the symptom that can be perceived by users when editing.
115         * khtml/editing/htmlediting.h: Add setStartNode declaration.
116         * khtml/editing/visible_units.cpp:
117         (khtml::startOfBlock): This function had a stubbed-in non-tested implementation. Implement and 
118         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001-expected.txt: Added.
119         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-001.html: Added.
120         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002-expected.txt: Added.
121         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-002.html: Added.
122         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003-expected.txt: Added.
123         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-003.html: Added.
124         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004-expected.txt: Added.
125         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-004.html: Added.
126         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005-expected.txt: Added.
127         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-005.html: Added.
128         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006-expected.txt: Added.
129         * layout-tests/editing/deleting/delete-at-paragraph-boundaries-006.html: Added.
130
131 === Safari-183 ===
132
133 2005-02-03  Richard Williamson   <rjw@apple.com>
134
135         Fixed <rdar://problem/3987419> Stocks and Weather leak what appears to XMLHTTPRequest results
136
137         XMLHTTPRequests were causing massive leaks.  _webcore_initWithHeaderString: did funky things with
138         self replacement.  Re-wrote to use more traditional factory constructor avoiding self replacement.
139         
140         Reviewed by David Harrison.
141
142         * kwq/KWQLoader.mm:
143         (+[NSDictionary _webcore_dictionaryWithHeaderString:]):
144         (KWQServeRequest):
145         (KWQServeSynchronousRequest):
146
147 2005-02-03  Chris Blumenberg  <cblu@apple.com>
148
149         Fixed: <rdar://problem/3938763> Cannot view Windows Media Player videos (soundtrack is played twice with delay)
150
151         Reviewed by hyatt.
152
153         * khtml/html/html_objectimpl.cpp:
154         (HTMLObjectElementImpl::attach): set needWidgetUpdate to false right after calling updateWidget because dispatchHTMLEvent can end up calling this method again
155         (HTMLObjectElementImpl::recalcStyle): ditto
156
157 2005-02-02  John Sullivan  <sullivan@apple.com>
158
159         Reviewed by Chris.
160
161         - WebCore part of fix for <rdar://problem/3980651> REGRESSION (125-180): Huge number of pages printed from certain page, 
162         iFrame involved
163         
164         This also fixes the problems with printing from GMail, yay!
165
166         * khtml/rendering/render_flow.cpp:
167         (RenderFlow::paintLines):
168         If the current line is taller than the entire page height (e.g. tall iFrame), don't try
169         to avoid splitting it across pages.
170         
171         * kwq/WebCoreBridge.mm:
172         (-[WebCoreBridge computePageRectsWithPrintWidthScaleFactor:printHeight:]):
173         Handle error cases in a more obvious manner; this will cause future problems like this
174         to print a blank page and complain to the console on debug builds, rather than print a 
175         zillionty mostly-blank pages.
176
177 2005-02-02  Chris Blumenberg  <cblu@apple.com>
178
179         Fixed: <rdar://problem/3960304> can't load a particular applet (at www.escape.de) unless it's the first applet to be loaded
180
181         Reviewed by hyatt.
182
183         * khtml/rendering/render_frames.cpp:
184         (RenderPartObject::updateWidget): when getting the MIME type from the PARAM tag, make sure the MIME type is the text from the left of the semi-colon if there is one. We do this elsewhere as well.
185
186 2005-02-02  Chris Blumenberg  <cblu@apple.com>
187
188         Fixed: <rdar://problem/3983628> control-click on WebView is not selecting the word under the cursor (Mail, non-editable WebView)
189
190         Reviewed by rjw.
191
192         * kwq/KWQKHTMLPart.mm:
193         (KWQKHTMLPart::sendContextMenuEvent): check if SPI to always enable selecting closest word is enabled
194         * kwq/WebCoreBridge.h:
195
196 2005-02-02  Ken Kocienda  <kocienda@apple.com>
197
198         Reviewed by me
199
200         * khtml/editing/markup.cpp:
201         (khtml::createMarkup): Removed debug spam I committed earlier in error.
202
203 2005-02-02  Ken Kocienda  <kocienda@apple.com>
204
205         Reviewed by Darin
206
207         Fix for this bug:
208         
209         <rdar://problem/3823109> WebKit should support -toggleBaseWritingDirection: (bidi editing support)
210
211         Since base writing direction is a paragraph-level property in AppKit, and we use the CSS direction
212         property in WebCore, which can be applied to inline elements as well as blocks, a new notion has
213         been added to the WebCore apply style logic. It is now possible to force all properties in a 
214         style declaration to be applied as though they were block properties.
215
216         * khtml/editing/htmlediting.cpp:
217         (khtml::ApplyStyleCommand::ApplyStyleCommand): Add an enum and a flag to this command that controls whether to force all
218         properties in the style to be applied as block styles. Default is "no", retaining previous behavior.
219         (khtml::ApplyStyleCommand::doApply): Switch on new flag to apply styles as before, or force all preoperties to be applied
220         as block styles.
221         * khtml/editing/htmlediting.h:
222         (khtml::ApplyStyleCommand::): Add an enum and a flag, as above.
223         * khtml/khtml_part.cpp:
224         (KHTMLPart::applyParagraphStyle): New method to force application of all style properties as block styles.
225         * khtml/khtml_part.h: Update header declarations.
226         * kwq/KWQKHTMLPart.h: Update header declarations.
227         * kwq/KWQKHTMLPart.mm:
228         (KWQKHTMLPart::baseWritingDirectionForSelectionStart): Accessor to help WebKit do a toggle operation on 
229         writing direction.
230         * kwq/WebCoreBridge.h: Update header declarations.
231         * kwq/WebCoreBridge.mm:
232         (-[WebCoreBridge applyParagraphStyle:withUndoAction:]): New method to force application of all style properties as block styles.
233         (-[WebCoreBridge baseWritingDirectionForSelectionStart]): Accessor to help WebKit do a toggle operation on 
234         writing direction.
235
236         Fix for this bug:
237         
238         <rdar://problem/3985035> REGRESSION (Mail): Text copied from wrapped line contains extra character when pasted
239
240         * khtml/editing/markup.cpp:
241         (khtml::renderedText): Add an enum and a flag to this command that controls whether to force all
242         This is the result of an error in the code that computes the rendered text that is selected 
243         when copying. Since spaces collapse at the end of lines, and these spaces need to be copied 
244         when the selection spans line endings, code runs to compute this text. However, this code 
245         was also running incorrectly in cases where lines wrapped. I have now added the missing 
246         test to check that the selection does indeed extend to the end of the line.
247
248
249 2005-02-02  Ken Kocienda  <kocienda@apple.com>
250
251         Reviewed by Darin
252
253         Fix for these bugs:
254         
255         <rdar://problem/3984894> REGRESSION (Mail): Command-right-arrow in reply does the wrong thing (two ways)
256         <rdar://problem/3985130> REGRESSION (Mail): command-right-arrow in pasted RTF selects only up to tab
257
258         * khtml/editing/visible_units.cpp:
259         (khtml::endOfLine): Two separate problems in this new function recently added to take the place of
260         selectionForLine. In the first, endOfLine did not stop at BR elements, and returned the position
261         beyond them. In the second, the VisiblePosition constructor gives the wrong answer in certain cases.
262         Darin is going to work on a solution for that problem. In the meantime, I can fix the symptom of this
263         bug by going down to the last leaf child of the root line box; a one line change we will roll out when
264         Darin's fix is in.
265
266 2005-02-01  Richard Williamson   <rjw@apple.com>
267
268         Fixed <rdar://problem/3985535> QT Plug-in JavaScript support now fails in <embed> tag only case
269
270         Reviewed by Maciej.
271
272         * khtml/ecma/kjs_html.cpp:
273         (KJS::HTMLDocument::tryGet):
274
275 2005-02-01  John Sullivan  <sullivan@apple.com>
276
277         Written by Darin, reviewed and tested by me
278         
279         - fixed <rdar://problem/3969684> Panther-only: extra blank lines between 
280         pasted content from Blot
281
282         * kwq/KWQKHTMLPart.mm:
283         (KWQKHTMLPart::attributedString):
284         don't emit paragraph breaks if the margins are tiny; matches what
285         we do for plain-text conversion
286
287 === Safari-182 ===
288
289 2005-02-01  Ken Kocienda  <kocienda@apple.com>
290
291         Reviewed by John
292
293         Fix for this bug:
294         
295         <rdar://problem/3985160> Deficiencies in pasting architecture blocking progress on other bugs
296
297         * khtml/editing/html_interchange.h: Move style span text used to mark element added to 
298         add style to this header.
299         * khtml/editing/htmlediting.cpp:
300         (khtml::styleSpanClassString): Change to use constant moved to html_interchange.h.
301         (khtml::isStyleSpan): New helper function. Checks if this is a span we added to apply style.
302         (khtml::CompositeEditCommand::insertNodeBefore): Added an assert to check that the node
303         we are inserting before is not the body.
304         (khtml::CompositeEditCommand::insertNodeAfter): Ditto, but check is for after.
305         (khtml::ReplacementFragment::ReplacementFragment): Added code to process the "default style"
306         that is added by the copy code.
307         (khtml::ReplaceSelectionCommand::ReplaceSelectionCommand): first and last nodes inserted are
308         now member variables instead of function locals. Initialize them here.
309         (khtml::ReplaceSelectionCommand::~ReplaceSelectionCommand): Deref first and last nodes inserted
310         if necessary.
311         (khtml::ReplaceSelectionCommand::doApply): Change design to fix the bug. Major change is to
312         separate out the code that inserts nodes into the tree so additional styling checks can
313         be done in a centralized way. Also got rid of the notion of "merging into the end block." That
314         concept was just wrong.
315         (khtml::ReplaceSelectionCommand::completeHTMLReplacement): Tweak interface now that first and 
316         last nodes inserted are member variables.
317         (khtml::ReplaceSelectionCommand::insertNodeAfterAndUpdateNodesInserted): New helper used
318         by replace code to do the stated DOM operation and update state internal to the command.
319         This will also be a catch point to handle the kinds of additional style checks needed to
320         make paste work right.
321         (khtml::ReplaceSelectionCommand::insertNodeAtAndUpdateNodesInserted): Ditto.
322         (khtml::ReplaceSelectionCommand::insertNodeBeforeAndUpdateNodesInserted): Ditto.
323         (khtml::ReplaceSelectionCommand::updateNodesInserted): Ditto.
324         * khtml/editing/htmlediting.h: Update declarations as needed.
325         * khtml/editing/markup.cpp:
326         (khtml::createMarkup): Adds a "default style" span to the content written to the pasteboard.
327         This will help us to fix some of the bugs blocked by the bug above.
328         * khtml/xml/dom_nodeimpl.cpp:
329         (NodeImpl::lastDescendent): New helper.
330         * khtml/xml/dom_nodeimpl.h: Ditto.
331         * khtml/xml/dom_position.cpp:
332         (DOM::Position::upstream): Fixed a bug which would allow the upstream position returned to be
333         in unrendered content.
334         (DOM::Position::downstream): Ditto.
335
336         * layout-tests/editing/deleting/delete-3775172-fix-expected.txt: Ending positions tweaked due to 
337         changes in upstream() and downstream() functions.
338         * layout-tests/editing/inserting/insert-3851164-fix-expected.txt: Ditto
339         * layout-tests/editing/inserting/insert-3907422-fix-expected.txt: Ditto
340         * layout-tests/editing/selection/extend-by-character-006-expected.txt: Ditto
341
342         * layout-tests/editing/pasteboard/paste-text-003-expected.txt: Changed what we expect, given
343         new behavior of paste code.
344
345 2005-01-31  John Sullivan  <sullivan@apple.com>
346
347         Reviewed by Dave Hyatt.
348         
349         - fixed <rdar://problem/3983097> Tabbing on RSS pages gets stuck in search field 
350         with "full keyboard navigation" off
351
352         * kwq/KWQSlider.h:
353         * kwq/KWQSlider.mm:
354         (QSlider::focusPolicy):
355         Implemented this method for KWQSlider. It is needed for our widget subclasses that
356         can become focused in some situations. I missed this when fixing 3949203 because
357         it only comes into play when tab-to-controls is on, and because the other relevant
358         methods are objective-C methods.
359
360 2005-01-31  David Harrison  <harrison@apple.com>
361
362         Reviewed by Darin.
363
364         <rdar://problem/3964164> AXWebArea needs to unregister on going invisible
365
366         * khtml/xml/dom_docimpl.cpp:
367         (DocumentImpl::detach):
368         Detach the AX UIElement for the AXWebArea.
369
370 2005-01-31  David Harrison  <harrison@apple.com>
371
372         Reviewed by Darin
373
374         <rdar://problem/3850876> AX: button exposed as only an AXImage at http://appleseed.apple.com/ site (<input type=image>)
375
376         * khtml/rendering/render_form.h:
377         (khtml::RenderImageButton::isImageButton):
378         New.
379         * khtml/rendering/render_image.h:
380         (khtml::RenderImage::isImageButton):
381         New.
382         * kwq/KWQAccObject.mm:
383         (-[KWQAccObject isImageButton]):
384         (-[KWQAccObject actionElement]):
385         (-[KWQAccObject role]):
386         (-[KWQAccObject accessibilityActionNames]):
387         (-[KWQAccObject accessibilityPerformAction:]):
388         Represent RenderImageButton elements as buttons instead of images.
389
390 2005-01-31  David Harrison  <harrison@apple.com>
391
392         Prevent nil dereference in debug code.
393
394         * khtml/xml/dom_nodeimpl.cpp:
395         (NodeImpl::displayTree):
396         Stop when parent is 0, too.
397
398 2005-01-31  John Sullivan  <sullivan@apple.com>
399
400         Reviewed by Dave Hyatt.
401         
402         - fixed <rdar://problem/3949203> cannot tab to, within, or out of the RSS sidebar
403
404         * kwq/KWQSlider.mm:
405         (-[KWQSlider becomeFirstResponder]):
406         (-[KWQSlider resignFirstResponder]):
407         (-[KWQSlider nextKeyView]):
408         (-[KWQSlider previousKeyView]):
409         (-[KWQSlider canBecomeKeyView]):
410         (-[KWQSlider nextValidKeyView]):
411         (-[KWQSlider previousValidKeyView]):
412         Copied these methods from KWQButton. The lack of special handling for first-responder-ness
413         here was causing the focus to get "stuck" on the RSS page's slider widget. Added FIXME
414         about how it would be nice to share more of this code rather than replicating it in each
415         KWQ widget subclass.
416
417 2005-01-31  Darin Adler  <darin@apple.com>
418
419         Reviewed by Harrison.
420
421         - fixed <rdar://problem/3980066> Double-click on single character moves insertion point to previous line
422
423         * khtml/khtml_part.cpp:
424         (KHTMLPart::selectClosestWordFromMouseEvent): Set affinity too.
425         (KHTMLPart::handleMousePressEventTripleClick): Ditto.
426         (KHTMLPart::handleMouseMoveEventSelection): Ditto.
427         (KHTMLPart::khtmlMouseReleaseEvent): Ditto.
428
429         * khtml/editing/selection.cpp:
430         (khtml::Selection::modifyExtendingRightForward): Use endOfLine and endOfDocument.
431         (khtml::Selection::modifyMovingRightForward): Ditto.
432         (khtml::Selection::modifyExtendingLeftBackward): Use startOfLine and startOfDocument.
433         (khtml::Selection::modifyMovingLeftBackward): Ditto.
434         (khtml::Selection::validate): Rewrote the section that handles double-click. Two main fixes: 1) use isStartOfLine to
435         check for another case where we want to select the word to the right, and 2) use isEndOfParagraph, which seems
436         to work correctly in cases where isLastVisiblePositionInParagraph is giving the wrong answer. Also changed the line
437         code to use startOfLine/endOfLine and the document code to use startOfDocument/endOfDocument.
438
439 2005-01-31  Darin Adler  <darin@apple.com>
440
441         Reviewed by Harrison.
442
443         - fixed <rdar://problem/3935275> unexpected quit scrolling over link; last.fm (works in IE and Firefox)
444
445         * kwq/WebCoreBridge.mm: (-[WebCoreBridge elementAtPoint:]): By using the correct document, fix the crash reported here.
446         The page still crashes when you close the browser window, but it's not trivial to fix so I'll file a new bug after that.
447
448 2005-01-31  Darin Adler  <darin@apple.com>
449
450         Reviewed by Ken and Harrison.
451
452         - fixed <rdar://problem/3947901> REGRESSION (Mail): Pasting paragraph of rich text leaves insertion point before pasted text
453         - fixed <rdar://problem/3949790> hitting return after underlined line results in too much or too little underlined
454         - fixed <rdar://problem/3981759> nil-deref and crash when pasting just a paragraph break
455         - fixed a couple problems I discovered while working with bug 3949790
456
457         * khtml/editing/htmlediting.cpp:
458         (khtml::ApplyStyleCommand::applyInlineStyle): Pass StayInBlock to upstream. Without this, we end up going too far
459         upstream in the test case in bug 3949790.
460         (khtml::ApplyStyleCommand::removeInlineStyle): Pass StayInBlock to upstream and downstream. Same reason as above.
461         (khtml::ReplaceSelectionCommand::doApply): Update endPos if inserting a new node and endPos is using that node's
462         parent and an offset past the node being inserted. That change fixes a problem with the position of the insertion point
463         after pasting into the top level of a document (from test cases in 3947901 and 3949790). When setting insertionPos, use
464         code that works when lastNodeInserted is a block rather than a text node. That change fixes a problem where a newline is
465         not added when pasting an entire paragraph into the end of a document (from test case in 3949790). Added nil check before
466         checking if lastNodeInserted is a <br> element, which fixes the crash when pasting just a paragraph break.
467
468         * khtml/editing/visible_units.h: Filled out the set of calls to add some boolean checks for lines (needed for the
469         bug fix), and calls for blocks (not yet implemented), and documents. The document checks may need refinement to
470         properly handle documents with a mix of editable and non-editable content, but for now they just refactor code
471         and make things a little clearer. Also removed the "include line break" parameter from endOfSentence.
472         * khtml/editing/visible_units.cpp:
473         (khtml::rootBoxForLine): Added.
474         (khtml::startOfLine): Added. Algorithm taken from selectionForLine in selection.cpp.
475         (khtml::endOfLine): Ditto.
476         (khtml::inSameLine): Added.
477         (khtml::isStartOfLine): Added.
478         (khtml::isEndOfLine): Added.
479         (khtml::endOfSentence): Removed "include line break" parameter.
480         (khtml::inSameParagraph): Added a null check.
481         (khtml::isStartOfParagraph): Ditto.
482         (khtml::isEndOfParagraph): Ditto.
483         (khtml::startOfBlock): Added.
484         (khtml::endOfBlock): Added.
485         (khtml::inSameBlock): Added.
486         (khtml::isStartOfBlock): Added.
487         (khtml::isEndOfBlock): Added.
488         (khtml::startOfDocument): Added.
489         (khtml::endOfDocument): Added.
490         (khtml::inSameDocument): Added.
491         (khtml::isStartOfDocument): Added.
492         (khtml::isEndOfDocument): Added.
493
494 2005-01-30  Darin Adler  <darin@apple.com>
495
496         Reviewed by John.
497
498         - fixed <rdar://problem/3977000> form data set posted for <input type="image" ...> omits name/value pair
499
500         * khtml/html/html_formimpl.cpp:
501         (DOM::HTMLInputElementImpl::appendFormData): Append a name/value pair for type IMAGE in addition to the X/Y
502         coordinates.
503
504 2005-01-30  Darin Adler  <darin@apple.com>
505
506         Reviewed by John.
507
508         - fixed <rdar://problem/3974246> REGRESSION (125-180): popup menus are missing item text on Harmony Remote web site
509
510         * khtml/html/html_formimpl.cpp: (DOM::HTMLOptionElementImpl::text): Change this function to traverse the entire tree
511         and gather all the text rather than just looking at immediate children.
512
513         * khtml/xml/dom_nodeimpl.h: Added const.
514         * khtml/xml/dom_nodeimpl.cpp:
515         (NodeImpl::traverseNextNode): Added const.
516         (NodeImpl::traverseNextSibling): Ditto.
517         (NodeImpl::traversePreviousNodePostOrder): Ditto.
518         (NodeImpl::detach): Add a missing nil check.
519
520 2005-01-30  Darin Adler  <darin@apple.com>
521
522         Reviewed by John.
523
524         - fixed <rdar://problem/3864536> crash copying text from other apps and pasting in a sticky in dashboard
525
526         * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Added missing ref/deref of newly created element.
527
528 2005-01-28  Darin Adler  <darin@apple.com>
529
530         * khtml/css/cssproperties.c: Regenerated with newer gperf.
531
532 2005-01-28  David Harrison  <harrison@apple.com>
533
534         Reviewed by John Sullivan.
535
536         <rdar://problem/3968144> AX need to be able to focus an AXLink by setting AXFocused to true
537         
538         * kwq/KWQAccObject.mm:
539         (-[KWQAccObject accessibilityPerformAction:]):
540         (-[KWQAccObject accessibilityIsAttributeSettable:]):
541         Add AXFocused for AXLinks.
542
543 2005-01-28  David Harrison  <harrison@apple.com>
544
545         Reviewed by Darin.
546
547         <rdar://problem/3584942> AX: Safari Accessibility parent-child mismatch
548
549         Use AppKit SPI _accessibilityParentForSubview to return KWQAccObject parent of AppKit AX object.
550         
551         * kwq/KWQAccObject.mm:
552         (-[KWQAccObject _accessibilityParentForSubview:]):
553         New.
554
555 2005-01-27  Adele Amchan  <adele@apple.com>
556
557         fixed by Darin, reviewed by me.
558
559         <rdar://problem/3976314> REGRESSION (180-TOT): submitting password fields fail on Panther
560
561         * kwq/KWQTextField.mm: (-[KWQTextFieldController string]): on panther, the secure text field's editor 
562         does not contain the real string, so now we just call stringValue on the field in that case.
563
564 2005-01-26  Maciej Stachowiak  <mjs@apple.com>
565
566         Reviewed by Darin, Hyatt and Ken.
567
568         <rdar://problem/3790449> REGRESSION (Mail): underline behavior is flaky because of how CSS handles text-decoration
569         
570         * khtml/css/css_computedstyle.cpp:
571         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): Add support
572         for -khtml-text-decorations-in-effect property. This works like text-docration
573         but follows proper inline semantics, that is, if a parent is causing text
574         decoration then -khtml-text-decorations-in-effect on this element will reflect that.
575         * khtml/css/cssproperties.in: Add -khtml-text-decorations-in-effect property.
576         * khtml/css/cssproperties.h: regenerated
577         * khtml/css/cssvalues.c: regenerated
578         * khtml/css/cssparser.cpp: regenerated
579         * khtml/css/cssproperties.c: regenerated
580
581         * khtml/css/css_valueimpl.h: Made copyPropertiesInSet public.
582
583         * khtml/editing/htmlediting.cpp:
584         (khtml::StyleChange::init): Handle -khtml-text-decorations-in-effect
585         specially, translate to text-decoration
586         (khtml::ApplyStyleCommand::applyInlineStyle): Fix a comment.
587         (khtml::ApplyStyleCommand::removeInlineStyle): Add new way of pushing down
588         text-decoration styles around the edges of the selected range.
589         (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAroundNode): Helper for this.
590         (khtml::ApplyStyleCommand::pushDownTextDecorationStyleAtBoundaries): ditto
591         (khtml::ApplyStyleCommand::nodeFullyUnselected): ditto
592         (khtml::hasTextDecorationProperty): ditto
593         (khtml::highestAncestorWithTextDecoration): ditto
594         (khtml::ApplyStyleCommand::extractTextDecorationStyle): ditto
595         (khtml::ApplyStyleCommand::extractAndNegateTextDecorationStyle): ditto
596         (khtml::ApplyStyleCommand::applyTextDecorationStyle): ditto
597         * khtml/editing/htmlediting.h: Prototype new methods.
598         * khtml/editing/jsediting.cpp: Make underline execCommand use the new CSS property.
599
600         - as a necessary part of the fix, fixed the longstanding problem
601         that mutating an element's inlineStyleDecl would not property
602         update its style attribute. now it does.
603         
604         * khtml/css/css_valueimpl.cpp:
605         (DOM::CSSMutableStyleDeclarationImpl::setChanged): If this is an inline style
606         declaration, tell the element it's style attribute needs updating.
607         * khtml/html/html_elementimpl.cpp:
608         (HTMLElementImpl::invalidateStyleAttribute): New method, just calls down
609         to the dom element.
610         (HTMLElementImpl::updateStyleAttribute): Regenerate style attribute from
611         inline style declaration.
612         * khtml/html/html_elementimpl.h: Prototype new stuff.
613         * khtml/xml/dom_elementimpl.cpp:
614         (ElementImpl::ElementImpl): Initialize new attribute.
615         (ElementImpl::updateStyleAttributeIfNeeded): New method to check if the style
616         is dirty and this is an html element, and if so call the html element to
617         regenerate the style attribute.
618         (ElementImpl::attributes): update style if needed
619         (ElementImpl::getAttribute): ditto
620         (ElementImpl::hasAttributes): ditto
621         (ElementImpl::dump): ditto
622         (XMLElementImpl::cloneNode): ditto
623         * khtml/xml/dom_elementimpl.h:
624         (DOM::ElementImpl::isStyleAttributeValid): new method to manage style attr
625         dirty bit
626         (DOM::ElementImpl::setStyleAttributeValid): ditto
627
628         - added new layout tests for underlining:
629         
630         * layout-tests/editing/editing.js:
631         * layout-tests/editing/style/remove-underline-across-paragraph-expected.txt: Added.
632         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold-expected.txt: Added.
633         * layout-tests/editing/style/remove-underline-across-paragraph-in-bold.html: Added.
634         * layout-tests/editing/style/remove-underline-across-paragraph.html: Added.
635         * layout-tests/editing/style/remove-underline-after-paragraph-expected.txt: Added.
636         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold-expected.txt: Added.
637         * layout-tests/editing/style/remove-underline-after-paragraph-in-bold.html: Added.
638         * layout-tests/editing/style/remove-underline-after-paragraph.html: Added.
639         * layout-tests/editing/style/remove-underline-expected.txt: Added.
640         * layout-tests/editing/style/remove-underline-from-stylesheet-expected.txt: Added.
641         * layout-tests/editing/style/remove-underline-from-stylesheet.html: Added.
642         * layout-tests/editing/style/remove-underline-in-bold-expected.txt: Added.
643         * layout-tests/editing/style/remove-underline-in-bold.html: Added.
644         * layout-tests/editing/style/remove-underline.html: Added.
645         * layout-tests/editing/style/underline-expected.txt: Added.
646         * layout-tests/editing/style/underline.html: Added.
647
648 2005-01-27  David Hyatt  <hyatt@apple.com>
649
650         Fix for 3875199, search field needs to be able to  show a magnifying  glass without a dropdown menu.
651         
652         Reviewed by kocienda
653
654         * khtml/html/html_formimpl.cpp:
655         (DOM::HTMLInputElementImpl::HTMLInputElementImpl):
656         (DOM::HTMLInputElementImpl::parseHTMLAttribute):
657         * kwq/KWQLineEdit.mm:
658         (QLineEdit::setMaxResults):
659
660 2005-01-27  Ken Kocienda  <kocienda@apple.com>
661
662         Reviewed by Maciej
663
664         Fix for this bug:
665         
666         <rdar://problem/3973254> Deletions of ranges does not coalesce correctly with subsequent typing
667
668         * khtml/editing/htmlediting.cpp:
669         (khtml::InsertTextCommand::deleteCharacter): Remove this dead code.
670         (khtml::ReplaceSelectionCommand::editingAction): Moved this code to a better place in the file. 
671         It was in with unrelated functions.
672         (khtml::TypingCommand::TypingCommand): Reorganize initialization list so it is easier to read.
673         (khtml::TypingCommand::issueCommandForDeleteKey): Remove dead code. Roll in remaining code into deleteKeyPressed.
674         (khtml::TypingCommand::deleteKeyPressed): Add in support for carrying along smart delete flag.
675         (khtml::TypingCommand::forwardDeleteKeyPressed): New function. Makes forward delete work like
676         "regular" delete in terms of coalescing typing.
677         (khtml::TypingCommand::doApply): Add case for ForwardDeleteKey.
678         (khtml::TypingCommand::preservesTypingStyle): Ditto.
679         * khtml/editing/htmlediting.h:
680         (khtml::TypingCommand::): Add ForwardDeleteKey constant. Remove a couple declarations for now-dead code.
681         (khtml::TypingCommand::smartDelete): New accessor.
682         (khtml::TypingCommand::setSmartDelete): Ditto.
683         * kwq/WebCoreBridge.h:
684         * kwq/WebCoreBridge.mm:
685         (-[WebCoreBridge deleteKeyPressedWithSmartDelete:]): Add smart delete flag.
686         (-[WebCoreBridge forwardDeleteKeyPressedWithSmartDelete:]): New method.
687         * khtml/editing/jsediting.cpp: Add supprt for ForwardDelete command
688         * layout-tests/editing/editing.js: Ditto.
689         * layout-tests/editing/deleting/delete-and-undo-expected.txt: Added.
690         * layout-tests/editing/deleting/delete-and-undo.html: Added.
691         * layout-tests/editing/deleting/forward-delete-expected.txt: Added.
692         * layout-tests/editing/deleting/forward-delete.html: Added.
693
694 === Safari-181 ===
695
696 2005-01-27  David Harrison  <harrison@apple.com>
697
698         Reviewed by Ken.
699
700         <rdar://problem/3962214> AX: AXLeftLineTextMarkerRangeForTextMarker returns incorrect range
701
702         * kwq/KWQAccObject.mm:
703         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
704         Allowed for selection to end of line including the linebreak.
705         
706 2005-01-27  David Harrison  <harrison@apple.com>
707
708         Reviewed by Darin, Ken.
709
710         <rdar://problem/3964470> AX: Include attachments in AXAttributedStringForTextMarkerRange
711
712         * kwq/KWQAccObject.mm:
713         (-[KWQAccObject isAttachment]):
714         (-[KWQAccObject attachmentView]):
715         (-[KWQAccObject role]):
716         (-[KWQAccObject subrole]):
717         (-[KWQAccObject roleDescription]):
718         (-[KWQAccObject value]):
719         (-[KWQAccObject title]):
720         (-[KWQAccObject accessibilityDescription]):
721         (-[KWQAccObject accessibilityIsIgnored]):
722         (-[KWQAccObject accessibilityAttributeNames]):
723         (-[KWQAccObject accessibilityAttributeValue:]):
724         Make attachments accessible.
725         
726         (CreateCGColorIfDifferent):
727         (AXAttributeStringSetColor):
728         (AXAttributeStringSetNumber):
729         (AXAttributeStringSetFont):
730         (AXAttributeStringSetStyle):
731         (AXAttributeStringSetElement):
732         (AXLinkElementForNode):
733         (AXAttributedStringAppendText):
734         (AXAttributedStringAppendReplaced):
735         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
736         Add attachments and more text attributes to AXAttributedStringForTextMarkerRange.
737
738 2005-01-27  Darin Adler  <darin@apple.com>
739
740         Reviewed by John.
741
742         - fixed <rdar://problem/3807935> DOM CSS computed style line-height is wrong in two ways
743
744         * khtml/css/css_computedstyle.cpp: (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue):
745         Use specified size rather than computed size when dealing with a percentage for line height.
746
747 2005-01-27  Darin Adler  <darin@apple.com>
748
749         Reviewed by John.
750
751         - fixed <rdar://problem/3971372> SWB: template function DOM_cast() won't compile with gcc 4.0
752         - fixed other gcc 4.0 compiling problems Patrick Beard pointed out on the phone
753
754         * kwq/DOMInternal.h: (DOM_cast): Change the "failToCompile()" trick to use a dependent name.
755         Nowadays, if a name is not dependent, it is checked at template definition time. But we want
756         a failure only at template instantiation time.
757
758         * ForwardingHeaders/editing/text_granularity.h: Added. Needed but a bug in the 3.3 compiler made
759         it compile anyway without this.
760
761         - other changes
762
763         * khtml/html/html_miscimpl.h: For clarity, mark these functions virtual too. They are automatically
764         virtual because the base class ones are virtual, but it's ugly to leave it this way.
765
766 2005-01-26  Ken Kocienda  <kocienda@apple.com>
767
768         Reviewed by Hyatt
769
770         Fix for this bug:
771         
772         <rdar://problem/3971609> REGRESSION (Mail): up/down arrow navigation broken after rewrapping text by resizing window
773         <rdar://problem/3975661> REGRESSION (Mail): left/right arrow navigation can place insertion point after last character on line
774
775         * khtml/editing/selection.cpp:
776         (khtml::Selection::modifyAffinity): PARAGRAPH and LINE movements should not alter affinity. This was
777         just a mistake before when it reset to upstream in some cases.
778         * khtml/rendering/render_line.cpp:
779         (khtml::RootInlineBox::closestLeafChildForXPos): Move this function down from InlineBox, and 
780         rework the implementation. This fixes 3971609.
781         * khtml/rendering/render_line.h:
782         * khtml/rendering/render_text.cpp:
783         (RenderText::caretRect): Rework the algorithm to fix 3975661. This regressed when we began placing
784         the spaces on the end of lines in text boxes when lines wrap.
785
786 2005-01-26  Richard Williamson   <rjw@apple.com>
787
788         Fixed <rdar://problem/3972522> (179-180) 40% slowdown on iBench JavaScript test
789
790         I added a member variable to ObjectImp.  This changed it's size and consequently
791         hampered the optimizations built into the garbage collector.  Objects no longer
792         fit within the allocators cell size, and thus allocation fell back to a slower
793         allocator.
794
795         As a result of this fix I also dramatically cleaned up how runtime objects are
796         accessed.  The path mostly *removes* code.
797         
798         Reviewed by Chris.
799
800         * khtml/ecma/kjs_dom.cpp:
801         (DOMDocumentProtoFunc::tryCall):
802         (DOMElementProtoFunc::tryCall):
803         (KJS::getRuntimeObject):
804         * khtml/ecma/kjs_dom.h:
805         * khtml/ecma/kjs_html.cpp:
806         (KJS::HTMLDocument::tryGet):
807         (KJS::HTMLElement::tryGet):
808         (KJS::HTMLElement::implementsCall):
809         (KJS::HTMLElement::call):
810         (KJS::HTMLElement::tryPut):
811         (KJS::HTMLCollection::tryGet):
812         (KJS::HTMLCollection::getNamedItems):
813         * khtml/ecma/kjs_html.h:
814         * khtml/ecma/kjs_window.cpp:
815         (Window::get):
816
817 2005-01-26  Richard Williamson   <rjw@apple.com>
818
819         Fixed <rdar://problem/3757712> REGRESSION (Mail): WebCore does not allow Devanagari ligature input
820
821         For now we are using ICU UBreakIterator to determine grapheme boundaries for
822         cursor and deletion.  This does not match what Cocoa does exactly, but does match
823         what Carbon does.  The areas are difference are obscure, but, according to
824         Deborah Goldsmith, using the UBreakIterator is the reasonable approach.
825
826         Reviewed by Ken.
827
828         * khtml/rendering/render_text.cpp:
829         (RenderText::previousOffset):
830         (RenderText::nextOffset):
831
832 2005-01-25  David Harrison  <harrison@apple.com>
833
834         Reviewed by Maciej and Richard.
835
836         <rdar://problem/3963731> AX VO: Changing window sizes causes a crash using with Voice Over - KWQPtrDictImpl::clear
837
838         * khtml/html/html_miscimpl.cpp:
839         (HTMLCollectionImpl::HTMLCollectionImpl):
840         Ensure that isHTMLDocument before calling HTMLDocument-only method.
841
842 2005-01-25  Richard Williamson   <rjw@apple.com>
843
844         Part one of fix for <rdar://problem/3757712> REGRESSION (Mail): WebCore does not allow Devanagari ligature input
845
846         This patch changes the semantics of next() and previous() on
847         VisiblePosition to move a grapheme (character cluster) at a
848         time.  This means that cursor navigation with correctly move
849         over an entire cluster.
850
851         However, the expected behavior for deleting a grapheme is to
852         delete individual code points, thus decomposing the grapheme
853         into it constituent parts.  That will be addressed in the next
854         part of the fix.
855
856         Reviewed by Ken.
857
858         * khtml/editing/visible_position.cpp:
859         (khtml::VisiblePosition::previousPosition):
860         (khtml::VisiblePosition::nextPosition):
861         * khtml/editing/visible_position.h:
862         * khtml/rendering/render_object.cpp:
863         (RenderObject::previousOffset):
864         (RenderObject::nextOffset):
865         * khtml/rendering/render_object.h:
866         * khtml/rendering/render_text.cpp:
867         (RenderText::previousOffset):
868         (RenderText::nextOffset):
869         (RenderText::findNextInlineTextBox):
870         * khtml/rendering/render_text.h:
871         * khtml/xml/dom_nodeimpl.cpp:
872         (NodeImpl::previousOffset):
873         (NodeImpl::nextOffset):
874         * khtml/xml/dom_nodeimpl.h:
875
876 2005-01-25  David Harrison  <harrison@apple.com>
877
878         Reviewed by Maciej.
879
880         <rdar://problem/3973067> AXWebArea for http://apple.netscape.com/ has an empty AXLinkUIElements
881
882         * kwq/KWQAccObject.mm:
883         (-[KWQAccObject accessibilityAttributeValue:]):
884         Omit ignored AXLinks from AXLinkUIElements result
885
886 2005-01-25  Ken Kocienda  <kocienda@apple.com>
887
888         Reviewed by John
889
890         Fix for this bug:
891         
892         <rdar://problem/3972851> REGRESSION (179-180+): Repro crash in ApplyStyleCommand::cleanUpEmptyStyleSpans
893
894         * khtml/editing/htmlediting.cpp:
895         (khtml::ApplyStyleCommand::cleanUpEmptyStyleSpans): Added two null checks.
896
897 2005-01-25  Ken Kocienda  <kocienda@apple.com>
898
899         Reviewed by John
900
901         Fix for this bug:
902         
903         <rdar://problem/3954710> Mail crashed while editing signatures - NodeImpl::isBlockFlow
904
905         The fix is more general than for this one bug, and may work to fix many crashers. The problem
906         is that the ReplaceSelectionCommand never checked whether its starting selection is empty. If
907         it is, then we need to bail before doing the work of the command, which we need to deref the
908         start and end points of the selection in order to do its work. I think you can see the crash
909         potential.
910
911         * khtml/editing/htmlediting.cpp:
912         (khtml::ReplaceSelectionCommand::doApply): Assert selection is not empty.
913         * kwq/WebCoreBridge.mm:
914         (partHasSelection): New helper function to test that bridge has a part with a selection.
915         
916         Use new helper function to test part and selection; return from these function if this test fails.
917         
918         (-[WebCoreBridge rangeByExpandingSelectionWithGranularity:])
919         (-[WebCoreBridge rangeByAlteringCurrentSelection:direction:granularity:])
920         (-[WebCoreBridge alterCurrentSelection:direction:granularity:])
921         (-[WebCoreBridge rangeByAlteringCurrentSelection:verticalDistance:])
922         (-[WebCoreBridge alterCurrentSelection:verticalDistance:])
923         (-[WebCoreBridge documentFragmentWithText:])
924         (-[WebCoreBridge replaceSelectionWithFragment:selectReplacement:smartReplace:])
925         (-[WebCoreBridge insertLineBreak])
926         (-[WebCoreBridge insertParagraphSeparator])
927         (-[WebCoreBridge insertParagraphSeparatorInQuotedContent])
928         (-[WebCoreBridge insertText:selectInsertedText:])
929         (-[WebCoreBridge deleteSelectionWithSmartDelete:])
930         (-[WebCoreBridge ensureSelectionVisible])
931
932 2005-01-24  Kevin Decker  <kdecker@apple.com>
933
934         Reviewed by Darin.
935
936         Fixed <rdar://problem/3932374> REGRESSION: 'ReferenceError - Can't find variable' JavaScript error at webxpress.fidelity.com
937
938         * khtml/html/html_miscimpl.h: Missing virtual identifiers for namedItem() and nextNamedItem() exposed a flaw that prevented finding variables in form [HTMLFormCollectionImpl] scopes.
939         
940
941 2005-01-24  Vicki Murley <vicki@apple.com>
942
943         Reviewed by kocienda.
944
945         - fix <rdar://problem/3810661> computed style not handled for Apple extensions
946  
947         * khtml/css/css_computedstyle.cpp: (DOM::):
948         (DOM::CSSComputedStyleDeclarationImpl::getPropertyCSSValue): add -apple-line-clamp and -apple-text-size-adjust
949
950 2005-01-24  Darin Adler  <darin@apple.com>
951
952         Reviewed by Kevin.
953
954         - fixed <rdar://problem/3969884> REGRESSION (179-180): Typing password not echoed as "bullets" at paypal.com when field is first focused
955
956         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]):
957         Sizing up the form editor, which fixes things for normal fields and search fields,
958         screws things up for password fields. Eventually, I'll need to figure out why this is
959         and file a bug so that the AppKit team fixes it. In the mean time, just check for the
960         case of the secure text field, and don't size up in that case.
961
962 2005-01-24  Ken Kocienda  <kocienda@apple.com>
963
964         Reviewed by Hyatt
965
966         Fix for this bug:
967         
968         <rdar://problem/3963560> 8A354: Inserting Japanese text to the line head causes line break
969
970         * khtml/editing/htmlediting.cpp:
971         (khtml::ReplaceSelectionCommand::doApply): Add one more case where we merge content into the
972         existing line. This covers the situation see using the steps to reproduce this bug.
973
974 2005-01-21  Maciej Stachowiak  <mjs@apple.com>
975
976         Reviewed by Darin.
977
978         <rdar://problem/3967572> Editing should split elements before removing style
979         
980         * khtml/editing/htmlediting.cpp:
981         (khtml::CompositeEditCommand::splitElement):
982         (khtml::CompositeEditCommand::mergeIdenticalElements):
983         (khtml::CompositeEditCommand::wrapContentsInDummySpan):
984         (khtml::CompositeEditCommand::splitTextNodeContainingElement):
985         (khtml::ApplyStyleCommand::applyInlineStyle):
986         (khtml::ApplyStyleCommand::splitTextAtStartIfNeeded):
987         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded):
988         (khtml::ApplyStyleCommand::splitTextElementAtStartIfNeeded):
989         (khtml::ApplyStyleCommand::splitTextElementAtEndIfNeeded):
990         (khtml::areIdenticalElements):
991         (khtml::ApplyStyleCommand::mergeStartWithPreviousIfIdentical):
992         (khtml::ApplyStyleCommand::mergeEndWithNextIfIdentical):
993         (khtml::ApplyStyleCommand::cleanUpEmptyStyleSpans):
994         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded):
995         (khtml::InsertParagraphSeparatorCommand::doApply):
996         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply):
997         (khtml::InsertTextCommand::prepareForTextInsertion):
998         (khtml::SplitTextNodeCommand::doUnapply):
999         (khtml::SplitElementCommand::SplitElementCommand):
1000         (khtml::SplitElementCommand::~SplitElementCommand):
1001         (khtml::SplitElementCommand::doApply):
1002         (khtml::SplitElementCommand::doUnapply):
1003         (khtml::MergeIdenticalElementsCommand::MergeIdenticalElementsCommand):
1004         (khtml::MergeIdenticalElementsCommand::~MergeIdenticalElementsCommand):
1005         (khtml::MergeIdenticalElementsCommand::doApply):
1006         (khtml::MergeIdenticalElementsCommand::doUnapply):
1007         (khtml::WrapContentsInDummySpanCommand::WrapContentsInDummySpanCommand):
1008         (khtml::WrapContentsInDummySpanCommand::~WrapContentsInDummySpanCommand):
1009         (khtml::WrapContentsInDummySpanCommand::doApply):
1010         (khtml::WrapContentsInDummySpanCommand::doUnapply):
1011         (khtml::SplitTextNodeContainingElementCommand::SplitTextNodeContainingElementCommand):
1012         (khtml::SplitTextNodeContainingElementCommand::~SplitTextNodeContainingElementCommand):
1013         (khtml::SplitTextNodeContainingElementCommand::doApply):
1014         * khtml/editing/htmlediting.h:
1015
1016         New layout test that shows the side benefit of this.
1017         
1018         * layout-tests/editing/style/unbold-in-bold-expected.txt: Added.
1019         * layout-tests/editing/style/unbold-in-bold.html: Added.
1020
1021 2005-01-24  Darin Adler  <darin@apple.com>
1022
1023         Reviewed by John.
1024
1025         - fixed <rdar://problem/3933435> -[DOMRange cloneContents] sometimes alters the original DOMRange
1026
1027         * khtml/xml/dom2_rangeimpl.cpp: (DOM::RangeImpl::processContents): Fixed code that was collapsing
1028         the range after processing the contents. That's right for extract and delete, but not clone.
1029
1030         - fixed <rdar://problem/3714184> inline input works incorrectly when I type Korean slowly in textfield in form on www.google.co.kr
1031         - fixed <rdar://problem/3193848> Can't enter SSN to sign up for Chase visa online account (changing focus inside key press handler)
1032         - fixed <rdar://problem/3874683> REGRESSION (161-162): Crash after typing command-Z to undo after pasting text with newline in it into a text field <input type=text>
1033
1034         * kwq/KWQLineEdit.mm:
1035         (QLineEdit::text): Changed to call a new string method on the controller instead of calling
1036         stringValue, since stringValue has a bad side effect of ending inline input.
1037         (QLineEdit::selectAll): Changed to only call selectText: when the field is already selected.
1038         When you are giving the field focus, it automatically gets all selected, and this change
1039         is required in the case where we defer the focus change.
1040
1041         * kwq/KWQTextField.h: Added a new string method to the controller.
1042         * kwq/KWQTextField.mm:
1043         (-[KWQTextFieldController setMaximumLength:]): Call the new string method instead of using stringValue.
1044         (-[KWQTextFieldController controlTextDidChange:]): Removed the code to truncate at the first CR or LF.
1045         That's now handled in the shouldChangeTextInRange method instead.
1046         (-[KWQTextFieldController textView:shouldHandleEvent:]): Add new logic to defer responder changes until
1047         after the event is handled. This makes sure the key gets into the field that's already handling it at
1048         rather than ending up in the newly-focused field if the key press handler focuses a different element.
1049         (-[KWQTextFieldController textView:didHandleEvent:]): Turn off deferral here, now that the key press
1050         has been handled.
1051         (-[KWQTextFieldController string]): Added. Calls stringValue only if there's no editor. If there is
1052         an editor, calls string on that instead.
1053         (-[KWQTextFieldController textView:shouldChangeTextInRange:replacementString:]): Added. Called by
1054         the three field subclasses. Truncates incoming strings at the first CR or LF character. This works
1055         properly with Undo, and the old technique did not.
1056         (-[KWQTextFieldController preprocessString:]): Added. Helper used for all the setStringValue methods
1057         so they all truncate at the first CR or LF as well as truncating to the appropriate length.
1058         (-[KWQTextField setStringValue:]): Changed to call the controller.
1059         (-[KWQTextField textView:shouldChangeTextInRange:replacementString:]): Added. Calls the controller.
1060         (-[KWQSecureTextField setStringValue:]): More of the same.
1061         (-[KWQSecureTextField textView:shouldChangeTextInRange:replacementString:]): Ditto.
1062         (-[KWQSearchField setStringValue:]): Ditto.
1063         (-[KWQSearchField textView:shouldChangeTextInRange:replacementString:]): Ditto.
1064
1065         * kwq/KWQWidget.h: Added the new setDeferFirstResponderChanges function.
1066         * kwq/KWQWidget.mm:
1067         (QWidget::~QWidget): Clear out the deferredFirstResponder global just in case we are destroyed
1068         while we "have the ball".
1069         (QWidget::hasFocus): If we are in the deferred mode, use the global to decide who to say is focused.
1070         (QWidget::setFocus): If we are in the deferred mode, set the global instead of making something be
1071         the first responder.
1072         (QWidget::setDeferFirstResponderChanges): Set the boolean. If the boolean is being cleared, then
1073         get the deferred first responder and call setFocus on it again, which will do the work we didn't
1074         want to do earlier.
1075
1076 2005-01-24  Ken Kocienda  <kocienda@apple.com>
1077
1078         Reviewed by John
1079
1080         Fix for this bug:
1081         
1082         <rdar://problem/3964350> Deleting all content and typing in a message gets one letter, then beeps
1083
1084         This is a problem with the way we turn key events, when a user starts typing, into editing commands. 
1085         Right now, that initial delete key in an empty window is turned into an editing command, and much 
1086         editing code runs that need not run. What's more, this is confusing the selection machinery. The
1087         solution is to detect the "delete in an empty window" case and don't turn this into an editing
1088         command at all.
1089
1090         * khtml/editing/htmlediting.cpp:
1091         (khtml::TypingCommand::deleteKeyPressed)
1092
1093 2005-01-23  Adele Amchan  <adele@apple.com>
1094
1095         Fixed <rdar://problem/3964286> REGRESSION (178-179): menus and "go to old site" link at Ameritrade's new site don't work
1096
1097         Removed check for document from checkCompleted.  In this case, WebCore never knew that a WebImageView was complete because 
1098         it fell into this document check case in checkCompleted.  
1099         Added check for document to tokenizerProcessedData (see <rdar://problem/3807144>)
1100
1101         Reviewed by Darin.
1102
1103         * khtml/khtml_part.cpp:
1104         (KHTMLPart::stop):
1105         (KHTMLPart::checkCompleted):
1106         * khtml/khtml_part.h:
1107         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::tokenizerProcessedData):
1108
1109 2005-01-21  Richard Williamson   <rjw@apple.com>
1110
1111         Fixed <rdar://problem/3759399> Javascript / Liveconnect problems ((event handler):Undefined value)
1112
1113         Java applets specified with <object> or <embed> weren't scriptable.  Now they are.
1114
1115         Reviewed by Chris.
1116
1117         * khtml/html/html_objectimpl.cpp:
1118         (HTMLEmbedElementImpl::getEmbedInstance):
1119         (HTMLObjectElementImpl::getObjectInstance):
1120
1121 2005-01-21  Ken Kocienda  <kocienda@apple.com>
1122
1123         Reviewed by John
1124
1125         Fix for this bug:
1126         
1127         <rdar://problem/3959464> REGRESSION (Mail): Insertion point goes back to beginning of document after deleting
1128
1129         * khtml/editing/htmlediting.cpp:
1130         (khtml::DeleteSelectionCommand::handleGeneralDelete): Add special case to handle retaining a fully-selected block.
1131         This fixes the bug.
1132         * layout-tests/editing/deleting/delete-3959464-fix-expected.txt: Added.
1133         * layout-tests/editing/deleting/delete-3959464-fix.html: Added.
1134
1135 2005-01-21  Richard Williamson   <rjw@apple.com>
1136
1137         Fixed <rdar://problem/3966998> REGRESSION(179-TOT) clicking on gmail message brings me to blank screen
1138
1139         getElementById() sometimes returns Undefined() instead of Null().
1140
1141         Reviewed by Hyatt.
1142
1143         * khtml/ecma/kjs_dom.cpp:
1144         (DOMDocumentProtoFunc::tryCall):
1145
1146 2005-01-21  David Hyatt  <hyatt@apple.com>
1147
1148         Fix for 3773809, make sure that overflow regions never end up at an invalid scroll offset because of a layout change.
1149         
1150         Reviewed by kocienda
1151
1152         * khtml/rendering/render_layer.cpp:
1153         (RenderLayer::updateScrollInfoAfterLayout):
1154
1155 2005-01-21  David Hyatt  <hyatt@apple.com>
1156
1157         Fix for 3966349, hang loading page.  Make sure that loops using popOneBlock properly check for a null
1158         blockStack to avoid an infinite loop.
1159         
1160         Reviewed by kocienda
1161
1162         * khtml/html/htmlparser.cpp:
1163         (KHTMLParser::parseToken):
1164         (KHTMLParser::insertNode):
1165         (KHTMLParser::popInlineBlocks):
1166
1167 2005-01-21  Ken Kocienda  <kocienda@apple.com>
1168
1169         Reviewed by John
1170
1171         Fix for this bug:
1172         
1173         <rdar://problem/3957204> Mail crashed when sending a message in ~InsertParagraphSeparatorInQuotedContentCommand
1174
1175         * khtml/editing/htmlediting.cpp:
1176         (khtml::InsertParagraphSeparatorInQuotedContentCommand::InsertParagraphSeparatorInQuotedContentCommand):
1177         InsertParagraphSeparatorInQuotedContentCommand has this member variable: DOM::ElementImpl *m_breakNode;
1178         I failed to initialize this variable to null in the constructor, and there is an uncommonly-traveled 
1179         code path which does not set this variable to something good. In the destructor, we check for null, 
1180         and deref if non-null. Obvious "BOOM" potential. Fixed.
1181
1182 2005-01-21  Ken Kocienda  <kocienda@apple.com>
1183
1184         Reviewed by John
1185
1186         Fix for this bug:
1187         
1188         <rdar://problem/3966311> REGRESSION (Mail): Hitting return makes space character disappear
1189
1190         * khtml/editing/htmlediting.cpp:
1191         (khtml::InsertParagraphSeparatorCommand::doApply): When writing the code to insert a block
1192         in response to the return key, I did not write code to cover the case described in the bug.
1193         Now I have.
1194         * layout-tests/editing/inserting/insert-div-025-expected.txt: Added.
1195         * layout-tests/editing/inserting/insert-div-025.html: Added.
1196
1197 2005-01-20  Maciej Stachowiak  <mjs@apple.com>
1198
1199         Reviewed by Ken.
1200
1201         <rdar://problem/3965196> security fix for javascript: exploit missed one case (already fixed in updates)
1202         
1203         * khtml/ecma/kjs_window.cpp:
1204         (WindowFunc::tryCall): correct mistake in earlier fix for the following bug, caught by Adele:
1205
1206 2005-01-20  Maciej Stachowiak  <mjs@apple.com>
1207
1208         Reviewed by Ken.
1209
1210         <rdar://problem/3965466> editing needs to insert text before applying typing style
1211         
1212         * khtml/editing/htmlediting.cpp:
1213         (khtml::ApplyStyleCommand::addInlineStyleIfNeeded): Remove a FIXME comment.
1214         (khtml::InsertLineBreakCommand::doApply): Apply style to the BR
1215         node after inserting it.
1216         (khtml::InsertTextCommand::prepareForTextInsertion): Don't try to
1217         apply style to any new nodes created before inserting.
1218         (khtml::InsertTextCommand::input): Apply style to the inserted range
1219         after doing the text insert.
1220         * khtml/editing/htmlediting.h:
1221
1222         This change leads to improved results on one of the layout tests:
1223         
1224         * layout-tests/editing/inserting/insert-div-024-expected.txt:
1225
1226 === Safari-180 ===
1227
1228 2005-01-20  Ken Kocienda  <kocienda@apple.com>
1229
1230         Reviewed by John
1231
1232         Fix for this bug:
1233         
1234         <rdar://problem/3964646> REGRESSION (179-180): Typing space at end of line makes following paragraph disappear
1235
1236         * khtml/editing/htmlediting.cpp:
1237         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Recent change to block placeholder removal code 
1238         caused this regression. The code became too aggressive in removing block placeholders, and would remove them
1239         from blocks other than the block containing the selection.
1240         * layout-tests/editing/inserting/insert-div-023-expected.txt: This file had a spurious BR element in it that
1241         I did not notice earlier.
1242         * layout-tests/editing/inserting/insert-div-024-expected.txt: Ditto.
1243
1244 2005-01-20  David Hyatt  <hyatt@apple.com>
1245
1246         Fix for oddness on albertsons.com.  Make sure not to crash when setting/removing style properties on a node
1247         with no document.  The bug # is 3813900.
1248         
1249         Reviewed by john
1250
1251 2005-01-20  David Harrison  <harrison@apple.com>
1252
1253         Reviewed by Darin.
1254
1255         PARTIAL fix for following bug.  Create attributed string with fonts and links.  Still need to add attachments.
1256         <rdar://problem/3942606> AX: Support kAXAttributedStringForTextMarkerRangeParameterizedAttribute
1257         
1258         * kwq/KWQAccObject.mm:
1259         (-[KWQAccObject textUnderElement]):
1260         Touched up previous checkin to match code review comments.
1261         
1262         (-[KWQAccObject value]):
1263         Use plainText for this one instead of obsolete attributedString.
1264         
1265         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
1266         Advertise AXAttributedStringForTextMarkerRange.
1267         
1268         (AXAttributeStringAddFont):
1269         (AXAttributeStringAddElement):
1270         (-[KWQAccObject linkUIElementForNode:]):
1271         (-[KWQAccObject _addAttachmentForElement:URL:needsParagraph:usePlaceholder:]):
1272         (-[KWQAccObject accessibilityAttributedStringForRange:]):
1273         New routines to support AXAttributedStringForTextMarkerRange.
1274         
1275         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
1276         Use new routines instead of obsolete attributedString.
1277
1278 2005-01-20  David Harrison  <harrison@apple.com>
1279
1280         Reviewed by Darin.
1281
1282         <rdar://problem/3960196> AX Crash in DOM::Range::setStartBefore
1283
1284         * khtml/xml/dom_docimpl.cpp:
1285         (DocumentImpl::getAccObjectCache):
1286         Adjust when detecting cache in non-top level WebArea.
1287         * kwq/KWQAccObject.mm:
1288         (-[KWQAccObject textUnderElement]):
1289         (-[KWQAccObject accessibilityAttributeValue:]):
1290         Make sure the elements document is the current one for the part.
1291
1292 2005-01-20  Darin Adler  <darin@apple.com>
1293
1294         Reviewed by John.
1295
1296         - fixed <rdar://problem/3922980> Mail not crashing, just quitting itself suddenly in -[WebHTMLView(MailExtras) findString:options:]
1297
1298         * khtml/dom/dom2_range.cpp: (DOM::operator==): Handle null and detached ranges without raising exceptions.
1299         The uncaught exception would make the entire program terminate.
1300
1301         - fixed <rdar://problem/3885729> attempting to modify a computed style does nothing, but should raise a DOM exception
1302
1303         * kwq/DOM-CSS.mm: (-[DOMCSSStyleDeclaration setProperty:::]): Uncommented this code which I had to disable
1304         back in November because Mail was stumbling over it.
1305
1306         - fixed <rdar://problem/3943049> focus() called during onload handler results in square text field on <input type=search>        
1307
1308         * kwq/KWQLineEdit.mm: (QLineEdit::baselinePosition): Change computation so it will work even for fields
1309         that position their text in a way that depends on vertical size. In the case of a search field, the text
1310         is centered, so the old logic was broken.
1311         * kwq/KWQTextField.mm: (-[KWQTextFieldController initWithTextField:QLineEdit:]): Set the frame size to
1312         something large enough to accomodate the field editor. If we start the frame at size 0,0 we run into
1313         AppKit trouble when it insets the frame to figure out the frame for the field editor. In the case of this
1314         bug this happens because we become first responder before being sized and positioned by the HTML layout code.
1315
1316         - improved debugging output when using "po" from gdb with Objective-C DOM
1317
1318         * kwq/DOM.mm:
1319         (-[DOMNode description]): Added. Includes node name ("<tr>") and node value (e.g., string for text node).
1320         (-[DOMRange description]): Tweaked format.
1321
1322 2005-01-19  Richard Williamson   <rjw@apple.com>
1323
1324         After further discussion with Real we have decided to NOT include the
1325         additional CLSID for the real plugin.  See 3958601.
1326
1327         Reviewed by Darin.
1328
1329         * khtml/rendering/render_frames.cpp:
1330         (RenderPartObject::updateWidget):
1331
1332 2005-01-19  David Harrison  <harrison@apple.com>
1333
1334         Reviewed by Maciej.
1335
1336         <rdar://problem/3949429> AX: word marker routines returns incorrect data for empty line
1337
1338         Previous checkin for this bug was missing some of the patch.  Editing snafu with multiple changes in tree.
1339         
1340         * kwq/KWQAccObject.mm:
1341         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
1342         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
1343         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
1344         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
1345         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
1346         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
1347         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
1348
1349 2005-01-19  Ken Kocienda  <kocienda@apple.com>
1350
1351         Reviewed by John
1352
1353         * khtml/editing/htmlediting.cpp:
1354         (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Small, cosmetic change John and I decided
1355         to do on my last checkin, but I forgot to do before landing.
1356
1357 2005-01-19  Ken Kocienda  <kocienda@apple.com>
1358
1359         Reviewed by John
1360
1361         Fix for this bug:
1362         
1363         <rdar://problem/3959727> REGRESSION (Mail): Style not preserved on blank lines
1364
1365         * khtml/editing/htmlediting.cpp:
1366         (khtml::CompositeEditCommand::applyStyle):
1367         (khtml::CompositeEditCommand::insertBlockPlaceholder): New function that unconditionally adds a block placeholder.
1368         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Now returns bool based on whether
1369         placeholder was added or not.
1370         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Now searches all the descendents of a block
1371         looking for a placeholder. The old code, which just looked at the last child of a node, started missing
1372         once block placeholders became styled (which started happening with this patch).
1373         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Now handles applying typing style
1374         to a block placeholder at call time, rather than setting the typing style as a latent style that
1375         might be applied later. This is an important part of the bug fix.
1376         (khtml::DeleteSelectionCommand::doApply): Now uses bool return value from insertBlockPlaceholderIfNeeded()
1377         and passes it along to calculateStyleBeforeInsertion, so the case where a block placeholder needs to
1378         be styled can be detected.
1379         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Changed the way this class
1380         managed style. Before it would calculate and set typing style for the block added. This is not
1381         sufficient. Added blocks need to styled immediately. Some name changes to instance variables in 
1382         this class due to the change to accommodate this change.
1383         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Name changes, as above.
1384         (khtml::InsertParagraphSeparatorCommand::calculateStyleBeforeInsertion): Ditto.
1385         (khtml::InsertParagraphSeparatorCommand::applyStyleAfterInsertion): Ditto.
1386         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
1387         (khtml::ReplaceSelectionCommand::doApply): Improve check for testing when a placeholder
1388         block can be removed in its entirety after the insertion.
1389         * khtml/editing/htmlediting.h: Update header accordingly.
1390         * khtml/khtml_part.cpp:
1391         (KHTMLPart::selectionComputedStyle): Move position for computed style check downstream before
1392         doing check when the position is in an empty block (this makes sure any style on any block
1393         placeholder is accounted for).
1394
1395         New layout tests to check bug fix.
1396
1397         * layout-tests/editing/style/block-style-004-expected.txt: Added.
1398         * layout-tests/editing/style/block-style-004.html: Added.
1399         * layout-tests/editing/style/block-style-005-expected.txt: Added.
1400         * layout-tests/editing/style/block-style-005.html: Added.
1401         * layout-tests/editing/style/block-style-006-expected.txt: Added.
1402         * layout-tests/editing/style/block-style-006.html: Added.
1403
1404         Results updated to reflect new block placeholder code.
1405
1406         * layout-tests/editing/inserting/insert-div-004-expected.txt 
1407         * layout-tests/editing/inserting/insert-div-005-expected.txt
1408         * layout-tests/editing/inserting/insert-div-006-expected.txt
1409         * layout-tests/editing/inserting/insert-div-008-expected.txt
1410         * layout-tests/editing/inserting/insert-div-011-expected.txt
1411         * layout-tests/editing/inserting/insert-div-012-expected.txt
1412         * layout-tests/editing/inserting/insert-div-013-expected.txt
1413         * layout-tests/editing/inserting/insert-div-014-expected.txt
1414         * layout-tests/editing/inserting/insert-div-015-expected.txt
1415         * layout-tests/editing/inserting/insert-div-016-expected.txt
1416         * layout-tests/editing/inserting/insert-div-017-expected.txt
1417         * layout-tests/editing/inserting/insert-div-018-expected.txt
1418         * layout-tests/editing/inserting/insert-div-019-expected.txt
1419         * layout-tests/editing/inserting/insert-div-021-expected.txt
1420         * layout-tests/editing/inserting/insert-div-022-expected.txt
1421         * layout-tests/editing/inserting/insert-div-023-expected.txt
1422         * layout-tests/editing/inserting/insert-div-024-expected.txt
1423
1424 2005-01-19  David Hyatt  <hyatt@apple.com>
1425
1426         Dont null-check the renderer before submitting, since a script can set it to display:none and still expect the
1427         submission to occur.  Fixes bug #3477282.
1428         
1429         Reviewed by kdecker
1430
1431         (DOM::HTMLInputElementImpl::defaultEventHandler):
1432
1433 2005-01-18  Richard Williamson   <rjw@apple.com>
1434         
1435         Fixed several issues all arising from analysis of plugin detection code at ifilm.com:
1436
1437         Fixed <rdar://problem/3958592> can't script plug-ins if plug-in is invoked with <object> element instead of <embed>
1438         Fixed <rdar://problem/3958597> <object> elements with IDs do not show up as named properties of the document
1439         Fixed <rdar://problem/3960973> DOM objects for plugin elements are not accessible
1440         Fixed <rdar://problem/3958601> need an additional class ID in WebCore for the Real plug-in
1441
1442         We now support accessing scriptable plugin objects that are specified with <applet>, <embed>, or <object>
1443         tags.  Also, if any of these elements are named they can be accessed from the document or window objects.
1444         Finally, DOM methods are properties will be forwarded appropriately for the plugin's root scriptable object.
1445
1446         Reviewed by Chris.
1447
1448         * khtml/dom/html_document.cpp:
1449         (HTMLDocument::objects):
1450         * khtml/dom/html_document.h:
1451         * khtml/ecma/kjs_dom.cpp:
1452         (DOMDocumentProtoFunc::tryCall):
1453         (DOMElementProtoFunc::tryCall):
1454         (KJS::getRuntimeObject):
1455         * khtml/ecma/kjs_dom.h:
1456         * khtml/ecma/kjs_html.cpp:
1457         (KJS::HTMLDocument::tryGet):
1458         (KJS::HTMLElement::tryGet):
1459         (KJS::HTMLCollection::tryGet):
1460         (KJS::HTMLCollection::getNamedItems):
1461         * khtml/ecma/kjs_window.cpp:
1462         (Window::get):
1463         * khtml/html/html_miscimpl.cpp:
1464         (HTMLCollectionImpl::traverseNextItem):
1465         * khtml/html/html_miscimpl.h:
1466         (DOM::HTMLCollectionImpl::):
1467         * khtml/html/html_objectimpl.cpp:
1468         (HTMLAppletElementImpl::getAppletInstance):
1469         (HTMLObjectElementImpl::HTMLObjectElementImpl):
1470         (HTMLObjectElementImpl::getObjectInstance):
1471         * khtml/html/html_objectimpl.h:
1472         * khtml/rendering/render_frames.cpp:
1473         (RenderPartObject::updateWidget):
1474         * kwq/KWQKHTMLPart.h:
1475         * kwq/KWQKHTMLPart.mm:
1476         (KWQKHTMLPart::getObjectInstanceForView):
1477
1478 2005-01-18  David Hyatt  <hyatt@apple.com>
1479
1480         Fix for 3948123, rolling over link erases nearby text.  The repaint rect check for lines was wrong whenever
1481         two lines overlapped.
1482         
1483         Reviewed by kocienda
1484
1485         * khtml/rendering/render_flow.cpp:
1486         (RenderFlow::paintLines):
1487
1488 2005-01-18  Ken Kocienda  <kocienda@apple.com>
1489
1490         Reviewed by Hyatt
1491         
1492         Fix for this bug:
1493         
1494         <rdar://problem/3960116> Focus rings paint incorrectly for contenteditable blocks in web pages
1495
1496         * khtml/rendering/render_flow.cpp:
1497         (RenderFlow::addFocusRingRects): Fix painting of focus rings so that ring only paints around
1498         outermost contenteditable elements.
1499
1500 2005-01-18  David Harrison  <harrison@apple.com>
1501
1502         Reviewed by Darin.
1503
1504         <rdar://problem/3959668> accessibilityFocusedUIElement sometimes returns an ignored element; it must not
1505
1506         * kwq/KWQAccObject.mm:
1507         (-[KWQAccObject accessibilityFocusedUIElement]):
1508         Return parentObjectUnignored if focused object is ignored.
1509
1510 2005-01-18  Ken Kocienda  <kocienda@apple.com>
1511
1512         Reviewed by John
1513
1514         Fix for this bug:
1515         
1516         <rdar://problem/3952877> REGRESSION (Mail): Command-left/right-arrows don't work with file attachment
1517
1518         * khtml/editing/selection.cpp:
1519         (khtml::nodeForInlineBox): New helper function used in reimplementation of function below.
1520         (khtml::selectionForLine): Reimplemented using line box smarts. I originally wrote this code when
1521         I had a less than full understanding of line layout. I can do better now, and my new version no
1522         longer fails to notice attachments when doing the kind of navigation mentioned in the bug.
1523
1524 2005-01-17  David Harrison  <harrison@apple.com>
1525
1526         Reviewed by John Sullivan.
1527
1528         <rdar://problem/3949429> AX: word marker routines returns incorrect data for empty line
1529         <rdar://problem/3949848> AX: paragraph marker routines do not work when given a paragraph end marker
1530
1531         Also fixed sentence support in the same way.
1532         
1533         * kwq/KWQAccObject.mm:
1534         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
1535         (-[KWQAccObject doAXNextSentenceEndTextMarkerForTextMarker:]):
1536         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
1537         (-[KWQAccObject doAXNextParagraphEndTextMarkerForTextMarker:]):
1538         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
1539         Move one position in desired direction before calling visible_units.cpp code.
1540
1541 2005-01-17  David Harrison  <harrison@apple.com>
1542
1543         Updated expected test results.
1544         
1545         <rdar://problem/3945880> line-ending space seems not to be present
1546
1547         * layout-tests/editing/deleting/delete-ws-fixup-001-expected.txt:
1548         * layout-tests/editing/deleting/delete-ws-fixup-002-expected.txt:
1549         * layout-tests/editing/inserting/insert-div-020-expected.txt:
1550         * layout-tests/editing/inserting/insert-div-021-expected.txt:
1551         * layout-tests/editing/inserting/insert-div-022-expected.txt:
1552         * layout-tests/editing/inserting/insert-div-023-expected.txt:
1553         * layout-tests/editing/inserting/insert-div-024-expected.txt:
1554
1555 2005-01-17  David Harrison  <harrison@apple.com>
1556
1557         Reviewed by Dave Hyatt (bidi.cpp) and Darin Adler (selection.cpp).
1558
1559         <rdar://problem/3945880> line-ending space seems not to be present
1560
1561         * khtml/editing/selection.cpp:
1562         (khtml::Selection::validate):
1563         Extend AFTER_WHITE_SPACE code to support white spac in the middle of paragraphs, not just the end.
1564         * khtml/rendering/bidi.cpp:
1565         (khtml::RenderBlock::findNextLineBreak):
1566         Pick left/rightness of word selection based on being at the end of paragraph (i.e. after a hard line break).
1567
1568 2005-01-17  Darin Adler  <darin@apple.com>
1569
1570         Reviewed by John Louch.
1571
1572         - fixed <rdar://problem/3958503> need screenX and screenY to use WebKit windowFrame delegate
1573
1574         * khtml/ecma/kjs_window.cpp: (Window::get): Change screenX and screenY to use frameGeometry instead
1575         of using mapToGlobal and screen in a complicated way.
1576         * kwq/KWQKHTMLView.mm: Removed unused mapToGlobal function.
1577         * kwq/KWQWindowWidget.h: Ditto.
1578         * kwq/KWQWindowWidget.mm: Ditto.
1579
1580 2005-01-17  David Hyatt  <hyatt@apple.com>
1581
1582         Fix a screwup in rightmost/lowets position computation.  3955207.  Make sure floats with layers are still checked.
1583
1584         Reviewed by kocienda
1585         
1586         * khtml/rendering/render_block.cpp
1587
1588 2005-01-17  Ken Kocienda  <kocienda@apple.com>
1589
1590         Reviewed by John
1591
1592         <rdar://problem/3953366> Problems with typing attributes in HTML compose
1593
1594         * khtml/editing/htmlediting.cpp:
1595         (khtml::DeleteSelectionCommand::calculateTypingStyleAfterDelete): Remove misguided "optimization"
1596         that tried to sense when typing style could be cleared without actually doing a style diff between
1597         before-delete and after-delete positions. Removing this extra check and running the 
1598         general-purpose code fixes the bug.
1599
1600 2005-01-17  Richard Williamson   <rjw@apple.com>
1601
1602         Fixed <rdar://problem/3753030> Need to ensure same origin for plugin binding invocations (origin security rules)
1603
1604         Keep track of originating execution context and target execution
1605         context for native JS object wrappers, and perform appropriate
1606         security checks.
1607
1608         Reviewed by David Harrison.
1609
1610         * khtml/ecma/kjs_binding.cpp:
1611         (ScriptInterpreter::isGlobalObject):
1612         (ScriptInterpreter::isSafeScript):
1613         (ScriptInterpreter::interpreterForGlobalObject):
1614         * khtml/ecma/kjs_binding.h:
1615         * khtml/ecma/kjs_window.cpp:
1616         (Window::interpreter):
1617         (Window::isSafeScript):
1618         * khtml/ecma/kjs_window.h:
1619         * kwq/DOMInternal.mm:
1620         (-[WebScriptObject _initializeScriptDOMNodeImp]):
1621         * kwq/KWQKHTMLPart.mm:
1622         (KWQKHTMLPart::windowScriptObject):
1623         (KWQKHTMLPart::windowScriptNPObject):
1624         * kwq/WebCoreBridge.mm:
1625         (rootForView):
1626         (-[WebCoreBridge init]):
1627
1628 2005-01-17  Ken Kocienda  <kocienda@apple.com>
1629
1630         Reviewed by John
1631
1632         Fix for this bug:
1633         
1634         <rdar://problem/3786659> REGRESSION (Mail): editable WebViews don't work with 
1635         "size up" and "size down" NSFontManager changes
1636
1637         * khtml/css/cssparser.cpp:
1638         (CSSParser::parseValue): Add support for parsing new font size delta property.
1639         * khtml/css/cssproperties.c: Generated file.
1640         * khtml/css/cssproperties.h: Ditto.
1641         * khtml/css/cssproperties.in: Add support for parsing new font size delta property.
1642         * khtml/editing/htmlediting.cpp:
1643         (khtml::isEmptyStyleSpan): New helper function. Code existed before, but now factored out for convenient use.
1644         (khtml::CompositeEditCommand::removeNodeAttribute): Does check on value to see it exists before creating
1645         and running command to do the removal.
1646         (khtml::ApplyStyleCommand::doApply): Now calls new applyRelativeFontStyleChange() function as part of its work.
1647         (khtml::ApplyStyleCommand::applyRelativeFontStyleChange): New function that does the "heavy lifting" to handle 
1648         relative font size changes.
1649         (khtml::ApplyStyleCommand::applyInlineStyle): Range check the start and end positions to make sure the start is
1650         before or equal to the end. Swap them if not true. I ran into this problem in some similar code in 
1651         applyRelativeFontStyleChange(). Moving that goodness here too.
1652         (khtml::ApplyStyleCommand::splitTextAtEndIfNeeded): Uses a local variable to save a value used often.
1653         Code is the same, but reads better now. Function now returns bool as well, just like splitTextAtStartIfNeeded.
1654         I use the bool return value now (I obviously did not need it before).
1655         (khtml::ApplyStyleCommand::computedFontSize): New helper function.
1656         (khtml::ApplyStyleCommand::joinChildTextNodes): Ditto.
1657         (khtml::createStyleSpanElement): Ditto.
1658         * khtml/editing/htmlediting.h: Update header accordingly.
1659         * khtml/editing/jsediting.cpp: Add new command string to enable relative font size changes.
1660         * kwq/DOM-CSS.mm:
1661         (-[DOMCSSStyleDeclaration _fontSizeDelta]): New convenience.
1662         (-[DOMCSSStyleDeclaration _setFontSizeDelta:]): Ditto.
1663         * kwq/DOMPrivate.h: Declare new conveniences.
1664         * layout-tests/editing/editing.js: Add new JS to enable relative font size changes, as well as explicit font size setting.
1665         * layout-tests/editing/style/relative-font-size-change-001-expected.txt: Added.
1666         * layout-tests/editing/style/relative-font-size-change-001.html: Added.
1667         * layout-tests/editing/style/relative-font-size-change-002-expected.txt: Added.
1668         * layout-tests/editing/style/relative-font-size-change-002.html: Added.
1669         * layout-tests/editing/style/relative-font-size-change-003-expected.txt: Added.
1670         * layout-tests/editing/style/relative-font-size-change-003.html: Added.
1671         * layout-tests/editing/style/relative-font-size-change-004-expected.txt: Added.
1672         * layout-tests/editing/style/relative-font-size-change-004.html: Added.
1673
1674 2005-01-14  Darin Adler  <darin@apple.com>
1675
1676         * khtml/css/cssproperties.c: Regenerated with gperf 3.0.1.
1677         * khtml/css/cssvalues.c: Regenerated with gperf 3.0.1.
1678         * khtml/misc/htmlattrs.c: Regenerated with gperf 3.0.1.
1679         * khtml/misc/htmltags.c: Regenerated with gperf 3.0.1.
1680
1681 2005-01-14  Chris Blumenberg  <cblu@apple.com>
1682
1683         Fixed: <rdar://problem/3886415> arrow keys don't work when the user hits Back to return to RSS page
1684
1685         Reviewed by hyatt.
1686
1687         (KWQKHTMLPart::openURLFromPageCache): restore mousePressNode
1688         (KWQKHTMLPart::mousePressNode): new
1689         * kwq/KWQPageState.h:
1690         * kwq/KWQPageState.mm:
1691         (-[KWQPageState initWithDocument:URL:windowProperties:locationProperties:interpreterBuiltins:]): save the mousePressNode
1692         (-[KWQPageState clear]): clear the mousePressNode
1693         (-[KWQPageState dealloc]): deref the mousePressNode
1694         (-[KWQPageState mousePressNode]): new
1695
1696 === Safari-179 ===
1697
1698 2005-01-13  Vicki Murley <vicki@apple.com>
1699
1700         Reviewed by Adele.
1701
1702         - fix <rdar://problem/3946836> Safari about box lists 2004 instead of 2005
1703
1704         * WebCore.pbproj/project.pbxproj: bump "2004" to "2005"
1705
1706 2005-01-13  David Harrison  <harrison@apple.com>
1707
1708         Reviewed by Ken Kocienda.
1709         
1710         Better fix for 3905066.
1711         
1712         * khtml/editing/htmlediting.cpp:
1713         (khtml::InsertParagraphSeparatorCommand::doApply):
1714
1715 2005-01-10  Maciej Stachowiak  <mjs@apple.com>
1716
1717         Reviewed by Darin.
1718
1719         <rdar://problem/3758033> REGRESSION (Mail): Support attributes in marked text (International input)
1720         
1721         * khtml/rendering/render_text.cpp:
1722         (InlineTextBox::paint): Support painting custom underline markers for
1723         marked text in place of generic yellow.
1724         (InlineTextBox::paintMarkedTextUnderline): New method that handles this.
1725         * khtml/rendering/render_text.h:
1726         * kwq/KWQKHTMLPart.h: Declare new methods and structs.
1727         * kwq/KWQKHTMLPart.mm:
1728         (KWQKHTMLPart::clear): Clear marked test underlines.
1729         (KWQKHTMLPart::setMarkedTextRange): Takes attributes and ranges now.
1730         (convertAttributesToUnderlines): Converts NSAttributedString attributes
1731         to simplified and C++-friendly form.
1732         (KWQKHTMLPart::markedTextUsesUnderlines): New method.
1733         (KWQKHTMLPart::markedTextUnderlines): New method.
1734         * kwq/KWQPainter.mm:
1735         (QPainter::drawLineForText): Handle pen width.
1736         * kwq/WebCoreBridge.h:
1737         * kwq/WebCoreBridge.mm:
1738         (-[WebCoreBridge setMarkedTextDOMRange:customAttributes:ranges:]): Take attributes
1739         and ranges.
1740         * kwq/WebCoreTextRenderer.h:
1741
1742 2005-01-12  David Harrison  <harrison@apple.com>
1743
1744         Reviewed by Dave Hyatt.
1745
1746         <rdar://problem/3888973> AX: Parent AXWebArea of nested AXWebAreas is messed up
1747         
1748         * kwq/KWQAccObject.mm:
1749         (-[KWQAccObject addChildrenToArray:]):
1750         Use the widget's outer view.
1751
1752 2005-01-12  David Harrison  <harrison@apple.com>
1753
1754         Reviewed by Darin Adler.
1755
1756         <rdar://problem/3949908> Crash when asking for the kAXLengthForTextMarkerRangeParameterizedAttribute
1757         
1758         * khtml/xml/dom_nodeimpl.cpp:
1759         (NodeImpl::displayNode):
1760         Add quotes around text node content.
1761         (NodeBaseImpl::childNode):
1762         Add nil check to return nil rather than crash when child node not found.
1763         * kwq/KWQAccObject.mm:
1764         (-[KWQAccObject doAXStringForTextMarkerRange:]):
1765         Pass range compliant positions to TextIterator.
1766
1767 2005-01-12  David Hyatt  <hyatt@apple.com>
1768
1769         Fix for 3951203, CSS border style incorrectly clipped on inline elements.  Make sure the repaint rect set during
1770         line layout is smarter about including the overflow for both old states and new states.
1771         
1772         Reviewed by john
1773
1774         * khtml/rendering/bidi.cpp:
1775         (khtml::RenderBlock::layoutInlineChildren):
1776
1777 2005-01-12  David Hyatt  <hyatt@apple.com>
1778
1779         Fix for bug 3937608, versiontracker.com flashes and displays the right column below content.  Make sure to move
1780         tables/overflows that dont fit within a block only in strict mode.
1781
1782         Fix for bug 3931049, characters dont show up when typing.  Make sure to dirty the right lines when this specific
1783         case in editing is hit.
1784         
1785         Reviewed by darin (first one), kocienda (second one)
1786
1787         * khtml/rendering/render_block.cpp:
1788         (khtml::RenderBlock::getClearDelta):
1789         * khtml/rendering/render_flow.cpp:
1790         (RenderFlow::dirtyLinesFromChangedChild):
1791         * khtml/rendering/render_line.cpp:
1792         (khtml::InlineFlowBox::verticallyAlignBoxes):
1793
1794 2005-01-12  Ken Kocienda  <kocienda@apple.com>
1795
1796         Reviewed by John
1797
1798         Fix for this bug:
1799         
1800         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
1801
1802         * khtml/editing/htmlediting.cpp:
1803         (khtml::DeleteSelectionCommand::initializePositionData): Change test that will prevent block
1804         merging. End-of-line test was just wrong. Call new start-of and end-of paragraph functions
1805         added to visible_position files.
1806         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Add tests for BR elements, which makes
1807         tests to determine when to stop moving nodes more complete and correct. Also improved comments.
1808         * khtml/editing/visible_position.cpp:
1809         (khtml::isFirstVisiblePositionInParagraph): New function.
1810         (khtml::isLastVisiblePositionInParagraph): New function.
1811         * khtml/editing/visible_position.h: Update header accordingly.
1812         * layout-tests/editing/deleting/delete-block-merge-contents-002-expected.txt: New results, slightly different from former
1813         results but still correct.
1814         * layout-tests/editing/deleting/delete-block-merge-contents-007-expected.txt: Ditto.
1815         * layout-tests/editing/deleting/delete-block-merge-contents-018-expected.txt: Added.
1816         * layout-tests/editing/deleting/delete-block-merge-contents-018.html: Added.
1817         * layout-tests/editing/deleting/delete-block-merge-contents-019-expected.txt: Added.
1818         * layout-tests/editing/deleting/delete-block-merge-contents-019.html: Added.
1819         * layout-tests/editing/deleting/delete-block-merge-contents-020-expected.txt: Added.
1820         * layout-tests/editing/deleting/delete-block-merge-contents-020.html: Added.
1821         * layout-tests/editing/deleting/delete-block-merge-contents-021-expected.txt: Added.
1822         * layout-tests/editing/deleting/delete-block-merge-contents-021.html: Added.
1823         * layout-tests/editing/deleting/delete-line-014-expected.txt: These new results are actually better, and fix a bug.
1824
1825 2005-01-11  Richard Williamson   <rjw@apple.com>
1826
1827         Fixed 3922875.  Fall back to DOM object is EMBED element
1828         has no associated runtime object.
1829
1830         Reviewed by Chris.
1831
1832         * khtml/ecma/kjs_dom.cpp:
1833         (KJS::getRuntimeObject):
1834         * khtml/ecma/kjs_html.cpp:
1835         (KJS::HTMLDocument::tryGet):
1836         (KJS::HTMLElement::tryGet):
1837         (KJS::HTMLCollection::tryGet):
1838         (KJS::HTMLCollection::getNamedItems):
1839
1840 2005-01-11  David Hyatt  <hyatt@apple.com>
1841
1842         Fix for 3882299, missing content on gibson.com.  Change our handling of " and ' in certain states of the parser to match
1843         other browsers.
1844         
1845         Reviewed by Maciej
1846
1847         * khtml/html/htmltokenizer.cpp:
1848         (khtml::HTMLTokenizer::parseTag):
1849
1850 2005-01-11  Chris Blumenberg  <cblu@apple.com>
1851
1852         Fixed: <rdar://problem/3930733> Mail prints second page of email blank
1853
1854         Reviewed by dave.
1855
1856         * khtml/rendering/render_canvas.cpp:
1857         (RenderCanvas::paint): cache the print rect since the dirty rect can get changed during printing
1858         * khtml/rendering/render_flow.cpp:
1859         (RenderFlow::paintLines): removed null check since the print rect should never be null
1860         * khtml/rendering/render_list.cpp:
1861         (RenderListMarker::paint): ditto
1862         * kwq/KWQKHTMLPart.mm:
1863         (KWQKHTMLPart::adjustPageHeight): don't set the print rect here since this method is not called for the last page
1864
1865 2005-01-10  Ken Kocienda  <kocienda@apple.com>
1866
1867         Reviewed by Hyatt
1868
1869         Fix for this bug:
1870         
1871         <rdar://problem/3943648> extra line is inserted after pressing return within quoted text of reply
1872
1873         * khtml/editing/htmlediting.cpp:
1874         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): This bug was the result of a 
1875         simple coding mistake. A local variable was erroneously redefined in a deeper scope, and so the 
1876         result calculated in that deeper scope was not available when tested.
1877
1878 2005-01-10  Ken Kocienda  <kocienda@apple.com>
1879
1880         Reviewed by John
1881
1882         Fix for this bug:
1883         
1884         <rdar://problem/3946852> Option-e goes to next line
1885
1886         * khtml/editing/htmlediting.cpp:
1887         (khtml::ReplaceSelectionCommand::doApply): Tweak case used to determine when merging content
1888         into the start line is done. We plan to change pretty substantially soon to better handle
1889         the problem described in <rdar://problem/3937352> Quote level not maintained when copied 
1890         and pasted within a Mail message. In the meantime, this change does no harm, and fixes the bug.
1891
1892 2005-01-10  Ken Kocienda  <kocienda@apple.com>
1893
1894         Reviewed by Darin
1895
1896         Fix for this bug:
1897         
1898         <rdar://problem/3907005> Applying block styles to a line of text can unexpectedly affect other lines
1899
1900         * khtml/editing/htmlediting.cpp:
1901         (khtml::CompositeEditCommand::moveParagraphContentsToNewBlockIfNecessary): New function which moves "paragraphs"
1902         to their own blocks if needed so that a block style can be applied.
1903         (khtml::CompositeEditCommand::isMailBlockquote): Moved this function to base class so it can be used more generally.
1904         (khtml::ApplyStyleCommand::applyBlockStyle): Pass a node instead of a block to addBlockStyleIfNeeded().
1905         (khtml::ApplyStyleCommand::addBlockStyleIfNeeded): Now accepts a node instead of a block for styling.
1906         This function also now calls moveParagraphContentsToNewBlockIfNecessary() to make sure that only the current
1907         paragraph is styled.
1908         (khtml::SetNodeAttributeCommand::doUnapply): Should not assert on undo if old value of attribute was null.
1909         Should remove attributue instead.
1910         * khtml/editing/htmlediting.h: Touch function declarations accordingly.
1911         * layout-tests/editing/style/create-block-for-style-001-expected.txt: Added.
1912         * layout-tests/editing/style/create-block-for-style-001.html: Added.
1913         * layout-tests/editing/style/create-block-for-style-002-expected.txt: Added.
1914         * layout-tests/editing/style/create-block-for-style-002.html: Added.
1915         * layout-tests/editing/style/create-block-for-style-003-expected.txt: Added.
1916         * layout-tests/editing/style/create-block-for-style-003.html: Added.
1917         * layout-tests/editing/style/create-block-for-style-004-expected.txt: Added.
1918         * layout-tests/editing/style/create-block-for-style-004.html: Added.
1919         * layout-tests/editing/style/create-block-for-style-005-expected.txt: Added.
1920         * layout-tests/editing/style/create-block-for-style-005.html: Added.
1921         * layout-tests/editing/style/create-block-for-style-006-expected.txt: Added.
1922         * layout-tests/editing/style/create-block-for-style-006.html: Added.
1923         * layout-tests/editing/style/create-block-for-style-007-expected.txt: Added.
1924         * layout-tests/editing/style/create-block-for-style-007.html: Added.
1925         * layout-tests/editing/style/create-block-for-style-008-expected.txt: Added.
1926         * layout-tests/editing/style/create-block-for-style-008.html: Added.
1927         * layout-tests/editing/style/create-block-for-style-009-expected.txt: Added.
1928         * layout-tests/editing/style/create-block-for-style-009.html: Added.
1929         * layout-tests/editing/style/create-block-for-style-010-expected.txt: Added.
1930         * layout-tests/editing/style/create-block-for-style-010.html: Added.
1931         * layout-tests/editing/style/create-block-for-style-011-expected.txt: Added.
1932         * layout-tests/editing/style/create-block-for-style-011.html: Added.
1933         * layout-tests/editing/style/create-block-for-style-012-expected.txt: Added.
1934         * layout-tests/editing/style/create-block-for-style-012.html: Added.
1935         * layout-tests/editing/style/create-block-for-style-013-expected.txt: Added.
1936         * layout-tests/editing/style/create-block-for-style-013.html: Added.
1937
1938         Unrelated updates to these expected results.
1939         * layout-tests/editing/inserting/insert-div-007-expected.txt
1940         * layout-tests/editing/pasteboard/paste-text-013-expected.txt
1941
1942 2005-01-10  Chris Blumenberg  <cblu@apple.com>
1943
1944         Fixed: <rdar://problem/3936844> Mail: Messages with rich text do not print
1945
1946         Reviewed by john.
1947
1948         * khtml/rendering/render_flow.cpp:
1949         (RenderFlow::paintLines): don't do pagination work if printRect is not set
1950         * khtml/rendering/render_list.cpp:
1951         (RenderListMarker::paint): ditto
1952
1953 2005-01-10  David Harrison  <harrison@apple.com>
1954
1955         Reviewed by Darin.
1956
1957         * kwq/KWQTextUtilities.mm:
1958         (currentTextBreakLocaleID):
1959         Return empty string (AKA root locale) if locale pref can not be canonicalized.
1960
1961 2005-01-10  John Sullivan  <sullivan@apple.com>
1962
1963         Fixed broken Panther build.
1964
1965         * kwq/KWQTextUtilities.mm:
1966         (currentTextBreakLocaleID):
1967         This recently-added function was using code copy/pasted from CarbonCore UnicodeUtilities.
1968         That code used a Tiger-only function, CFLocaleCreateCanonicalLanguageIdentifierFromString.
1969         To fix the build, I added a BUILDING_ON_PANTHER #ifdef that avoids the call to the Tiger
1970         function. However, the Tiger-only code was wrong; the string generated using 
1971         CFLocaleCreateCanonicalLanguageIdentifierFromString was not used at all, so I fixed that
1972         as well.
1973
1974 2005-01-09  David Harrison  <harrison@apple.com>
1975
1976         Reviewed by Ken Kocienda.
1977
1978         <rdar://problem/3786362> REGRESSION (Mail): pasted text loses one newline
1979         
1980         * khtml/editing/htmlediting.cpp:
1981         (khtml::ReplaceSelectionCommand::doApply):
1982         Tune check for need for insertParagraphSeparator when hasInterchangeNewline.
1983
1984 2005-01-09  Darin Adler  <darin@apple.com>
1985
1986         Reviewed by Harrison.
1987
1988         - fixed <rdar://problem/3939176> select() method does not work on <input type=search>
1989
1990         * khtml/html/html_formimpl.cpp: (DOM::HTMLInputElementImpl::select): Changed if statement
1991         to a switch statement. Added SEARCH to the set of types that treat the renderer as a
1992         RenderLineEdit.
1993
1994 2005-01-09  David Harrison  <harrison@apple.com>
1995
1996         Reviewed by Ken Kocienda.
1997
1998         <rdar://problem/3905066> REGRESSION (Mail): Hitting return key with caret in front of space causes space to become lost (resize fixes)
1999
2000         Problem was that InsertParagraphSeparatorCommand::doApply() was not collapsing
2001         whitespace to a single non-breaking space when splitting a text node.
2002
2003         * khtml/editing/htmlediting.cpp:
2004         (khtml::InsertParagraphSeparatorCommand::doApply):
2005
2006 2005-01-08  Kevin Decker  <kdecker@apple.com>
2007
2008         Reviewed by Ken.
2009
2010         Fixed: <rdar://problem/3924219> Calling setOuterHTML: on a DOMHTMLHtmlElement can crash a program
2011
2012         * khtml/html/html_elementimpl.cpp:
2013         (HTMLElementImpl::setOuterHTML): Added a nil check for fragments who don't have parents.
2014
2015 2005-01-07  Maciej Stachowiak  <mjs@apple.com>
2016
2017         Reviewed by Darin.
2018         
2019         <rdar://problem/3807144> REGRESSION (125-TOT): my bank's website doesn't work (Societe Generale, socgen.com)
2020
2021         * Khtml/khtml_part.cpp:
2022         (KHTMLPart::checkCompleted): If the document is NULL, assume this frame has
2023         not started loading yet so it could not possibly be finishing here...
2024         (KHTMLPart::stop): ...unless the part is explicitly stopped and there is still
2025         no document, in this case we must have hit an error or been loading a non-HTML
2026         frame.
2027         * khtml/khtml_part.h:
2028
2029 2005-01-08  David Harrison  <harrison@apple.com>
2030
2031         Reviewed by Maciej.
2032
2033         <rdar://problem/3943415> REGRESSION (Mail): double-clicking past word selects previous word instead of only blank space
2034         
2035         * khtml/editing/selection.cpp:
2036         (khtml::Selection::validate):
2037         Tune word selections left/right choice to use right if on empty last line.
2038
2039 2005-01-07  David Harrison  <harrison@apple.com>
2040
2041         Reviewed by Darin.
2042
2043         <rdar://problem/3942619> AX: Support sentence ax attributes
2044
2045         Needed to use the unicode utilities properly.  Twas lame before.
2046
2047         * khtml/editing/visible_units.cpp:
2048         (khtml::previousBoundary):
2049         (khtml::nextBoundary):
2050         (khtml::startOfWord):
2051         (khtml::endOfWord):
2052         (khtml::previousWordPosition):
2053         (khtml::nextWordPosition):
2054         (khtml::startOfSentence):
2055         (khtml::endOfSentence):
2056         (khtml::previousSentencePosition):
2057         (khtml::nextSentencePosition):
2058         * kwq/KWQAccObject.mm:
2059         (-[KWQAccObject accessibilityAttributeNames]):
2060         (-[KWQAccObject accessibilityAttributeValue:]):
2061         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2062         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
2063         * kwq/KWQTextUtilities.mm:
2064         (currentTextBreakLocaleID):
2065         (KWQFindSentenceBoundary):
2066         (KWQFindNextSentenceFromIndex):
2067
2068 2005-01-07  Ken Kocienda  <kocienda@apple.com>
2069
2070         Reviewed by Kevin
2071
2072         Fix for these bugs:
2073         
2074         <rdar://problem/3939523> in some cases, text does not retain style info after pressing return twice
2075         <rdar://problem/3944492> after pressing return twice, text is bold when it shouldn't be
2076
2077         * khtml/editing/htmlediting.cpp:
2078         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion):
2079         Merge the typing style with the computed style for the current position. Fixes both bugs.
2080         * khtml/editing/htmlediting.h:
2081         * layout-tests/editing/inserting/insert-div-023-expected.txt: Added.
2082         * layout-tests/editing/inserting/insert-div-023.html: Added.
2083         * layout-tests/editing/inserting/insert-div-024-expected.txt: Added.
2084         * layout-tests/editing/inserting/insert-div-024.html: Added.
2085
2086 2005-01-07  David Hyatt  <hyatt@apple.com>
2087
2088         Fix for 3941364, make sure tables reset overflowWidth/Height when they lay out again.  Fixes the odd scrolling
2089         behavior on worldofwarcraft.com.
2090         
2091         Reviewed by kevin
2092
2093         * khtml/rendering/render_table.cpp:
2094         (RenderTable::layout):
2095
2096 2005-01-06  David Hyatt  <hyatt@apple.com>
2097
2098         Fix for 3932418 and 3920998, assertion failures caused by stray inline content inside tables.  Bulletproof the hit testing to
2099         ignore inline flows in this case.
2100         
2101         Reviewed by kevin
2102
2103         * khtml/rendering/render_block.cpp:
2104         (khtml::RenderBlock::nodeAtPoint):
2105
2106 2005-01-07  Ken Kocienda  <kocienda@apple.com>
2107
2108         Reviewed by Hyatt
2109
2110         Fix for this bug:
2111         
2112         <rdar://problem/3848412> for forwarded message, tabbing to message view scrolls to bottom of view
2113
2114         * kwq/KWQKHTMLPart.mm:
2115         (KWQKHTMLPart::nextKeyViewInFrame): Don't scroll the focus node to visible if it is not
2116         in the document, or if it is not a descendent of the document element. In the case of the bug,
2117         since the selection has not yet been set up, the focus node passed here is the HTML element, and
2118         that does not yield a rect that is useful to us here. So now, in the case the bug mentions, we do nothing.
2119
2120 2005-01-06  Kevin Decker  <kdecker@apple.com>
2121
2122         Reviewed by mjs.
2123
2124         Fixed: <rdar://problem/3932215> REGRESSION (125-177): iFrame example at developer.apple.com fails in Safari
2125
2126         * khtml/khtml_part.cpp:
2127         (KHTMLPart::processObjectRequest): m_bComplete was never true for frames generated by Javascript due to our synchronous loading and as a result, scheduled redirects wouldn't fire in KHTMLPart::scheduleLocationChange().  By virtue of being an empty document, a document is complete.  In this special case it's safe at this point to call checkCompleted() which sets m_bComplete true. 
2128
2129 === Safari-178 ===
2130
2131 2005-01-06  David Harrison  <harrison@apple.com>
2132
2133         Reviewed by Chris.
2134
2135         (addendum to previous checkin for this bug) 
2136         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
2137
2138         Fix line navigation.  Add AXUIElementForTextMarker.
2139
2140         * kwq/KWQAccObject.mm:
2141         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2142         (-[KWQAccObject doAXUIElementForTextMarker:]):
2143         (-[KWQAccObject doAXLineForTextMarker:]):
2144         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2145         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2146         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2147         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
2148         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
2149
2150 2005-01-06  Darin Adler  <darin@apple.com>
2151
2152         Reviewed by Ken.
2153
2154         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
2155
2156         (turns out the PLT regression was a false alarm)
2157
2158         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
2159         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
2160         much larger number.
2161         * khtml/html/htmlparser.cpp:
2162         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
2163         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
2164         to eliminate code that used ID_CLOSE_TAG for an array size.
2165         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
2166         that manages isindex to use deref instead of delete.
2167         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
2168         mistake of using ID_CLOSE_TAG for the array size too.
2169         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
2170         there and it would prevent custom tags from working. Added range check before using the forbidden
2171         tag array with the token ID since custom tags will use index values past the end of the array.
2172         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
2173         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
2174         createElement call is still here. Last time I left out a few form element types from this switch;
2175         fixed now.
2176         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
2177         document if getTagID fails; this creates a unique per-document ID.
2178
2179         * khtml/misc/htmltags.c: Regenerated.
2180         * khtml/misc/htmltags.h: Regenerated.
2181
2182         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
2183         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
2184         Also rewrote getTagName to work with the new scheme.
2185
2186 2005-01-06  David Harrison  <harrison@apple.com>
2187         
2188         Fixed Panther build.  Also, do not advertize sentence support since it is incomplete.
2189         
2190         * kwq/KWQAccObject.mm:
2191         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
2192         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2193         (-[KWQAccObject accessibilityIsAttributeSettable:]):
2194
2195 2005-01-06  David Harrison  <harrison@apple.com>
2196
2197         Reviewed by Dave Hyatt.
2198
2199         <rdar://problem/3776056> AX: Editable HTML should not be viewed as AXStaticText
2200         <rdar://problem/3588548> AX: tabbing does not work correctly with the screen reader and a focused link; need AXFocusedUIElement to work
2201         
2202         Many more AX attributes supported.  Numerous fixes to previous AX work.
2203         
2204         * khtml/editing/visible_units.cpp:
2205         (khtml::startSentenceBoundary):
2206         (khtml::startOfSentence):
2207         (khtml::endSentenceBoundary):
2208         (khtml::endOfSentence):
2209         (khtml::previousSentencePositionBoundary):
2210         (khtml::previousSentencePosition):
2211         (khtml::nextSentencePositionBoundary):
2212         (khtml::nextSentencePosition):
2213         * khtml/editing/visible_units.h:
2214         * khtml/khtmlview.cpp:
2215         (KHTMLView::layout):
2216         * khtml/misc/helper.cpp:
2217         (khtml::findSentenceBoundary):
2218         (khtml::nextSentenceFromIndex):
2219         * khtml/misc/helper.h:
2220         * khtml/misc/htmltags.c:
2221         (hash_tag):
2222         (findTag):
2223         * khtml/rendering/render_container.cpp:
2224         (RenderContainer::removeChildNode):
2225         (RenderContainer::appendChildNode):
2226         (RenderContainer::insertChildNode):
2227         * khtml/rendering/render_object.cpp:
2228         (RenderObject::remove):
2229         * khtml/xml/dom_docimpl.cpp:
2230         (DocumentImpl::getAccObjectCache):
2231         (DocumentImpl::updateSelection):
2232         (DocumentImpl::close):
2233         (DocumentImpl::setFocusNode):
2234         (DocumentImpl::parentDocument):
2235         (DocumentImpl::topDocument):
2236         * khtml/xml/dom_docimpl.h:
2237         * kwq/KWQAccObject.mm:
2238         (-[KWQAccObject accessibilityShouldUseUniqueId]):
2239         (-[KWQAccObject detach]):
2240         (-[KWQAccObject anchorElement]):
2241         (-[KWQAccObject firstChild]):
2242         (-[KWQAccObject lastChild]):
2243         (-[KWQAccObject previousSibling]):
2244         (-[KWQAccObject nextSibling]):
2245         (-[KWQAccObject parentObject]):
2246         (-[KWQAccObject value]):
2247         (-[KWQAccObject accessibilityAttributeNames]):
2248         (-[KWQAccObject accessibilityPerformAction:]):
2249         (-[KWQAccObject textMarkerForVisiblePosition:]):
2250         (-[KWQAccObject visiblePositionForTextMarker:]):
2251         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
2252         (-[KWQAccObject topDocument]):
2253         (-[KWQAccObject topRenderer]):
2254         (-[KWQAccObject topView]):
2255         (-[KWQAccObject accessibilityAttributeValue:]):
2256         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2257         (-[KWQAccObject doAXLineForTextMarker:]):
2258         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2259         (-[KWQAccObject doAXStringForTextMarkerRange:]):
2260         (-[KWQAccObject doAXTextMarkerForPosition:]):
2261         (-[KWQAccObject doAXBoundsForTextMarkerRange:]):
2262         (-[KWQAccObject doAXAttributedStringForTextMarkerRange:]):
2263         (-[KWQAccObject doAXTextMarkerRangeForUnorderedTextMarkers:]):
2264         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
2265         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
2266         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
2267         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
2268         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
2269         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2270         (-[KWQAccObject doAXSentenceTextMarkerRangeForTextMarker:]):
2271         (-[KWQAccObject doAXParagraphTextMarkerRangeForTextMarker:]):
2272         (-[KWQAccObject doAXNextWordEndTextMarkerForTextMarker:]):
2273         (-[KWQAccObject doAXPreviousWordStartTextMarkerForTextMarker:]):
2274         (-[KWQAccObject doAXNextLineEndTextMarkerForTextMarker:]):
2275         (-[KWQAccObject doAXPreviousLineStartTextMarkerForTextMarker:]):
2276         (-[KWQAccObject doAXNextSentenceEndTextMarkerForTextMarker:]):
2277         (-[KWQAccObject doAXPreviousSentenceStartTextMarkerForTextMarker:]):
2278         (-[KWQAccObject doAXNextParagraphEndTextMarkerForTextMarker:]):
2279         (-[KWQAccObject doAXPreviousParagraphStartTextMarkerForTextMarker:]):
2280         (-[KWQAccObject doAXLengthForTextMarkerRange:]):
2281         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
2282         (-[KWQAccObject accessibilityHitTest:]):
2283         (-[KWQAccObject accessibilityFocusedUIElement]):
2284         (-[KWQAccObject accessibilityIsAttributeSettable:]):
2285         (-[KWQAccObject doSetAXSelectedTextMarkerRange:]):
2286         (-[KWQAccObject setAccObjectID:]):
2287         (-[KWQAccObject removeAccObjectID]):
2288         * kwq/KWQAccObjectCache.h:
2289         * kwq/KWQAccObjectCache.mm:
2290         (KWQAccObjectCache::setAccObject):
2291         (KWQAccObjectCache::removeAccObject):
2292         (KWQAccObjectCache::visiblePositionForTextMarker):
2293         (KWQAccObjectCache::postNotificationToTopWebArea):
2294         (KWQAccObjectCache::postNotification):
2295         (KWQAccObjectCache::handleFocusedUIElementChanged):
2296         * kwq/KWQKHTMLPart.mm:
2297         (KWQKHTMLPart::respondToChangedContents):
2298         * kwq/KWQTextUtilities.h:
2299         * kwq/KWQTextUtilities.mm:
2300         (KWQFindNextWordFromIndex):
2301         (KWQFindSentenceBoundary):
2302         (KWQFindNextSentenceFromIndex):
2303         * kwq/WebCoreBridge.mm:
2304         (-[WebCoreBridge accessibilityTree]):
2305
2306 2005-01-05  Darin Adler  <darin@apple.com>
2307
2308         Reviewed by Ken.
2309
2310         - re-landing a subset of my custom tag change that does not fix the bug, but also does
2311           not introduce a performance regression
2312
2313         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
2314         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
2315
2316         * khtml/editing/htmlediting.cpp:
2317         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
2318         per-document tags and is just better all around for things like the document.
2319         (khtml::debugNode): Ditto.
2320         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
2321         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
2322         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
2323         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
2324
2325         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
2326         non-HTML elements to be nested as desired.
2327
2328         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
2329         * khtml/misc/htmlhashes.cpp:
2330         (khtml::getTagID): Changed return type to unsigned short.
2331         (khtml::getAttrID): Ditto.
2332
2333         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
2334         * khtml/xml/dom_docimpl.cpp:
2335         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
2336         Also updated for a few tags that the parser handled but this did not.
2337
2338         * kwq/KWQRenderTreeDebug.cpp:
2339         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
2340         the tag ID directly, which only works for standard nodes.
2341         (operator<<): Update to call getTagName.
2342         (nodePositionRelativeToRoot): Ditto.
2343         (writeSelection): Ditto.
2344
2345 2005-01-05  Ken Kocienda  <kocienda@apple.com>
2346
2347         Reviewed by Hyatt
2348
2349         Fix for this bug:
2350         
2351         <rdar://problem/3941203> REGRESSION (Mail): Paste inserts content in wrong place
2352
2353         * khtml/editing/htmlediting.cpp:
2354         (khtml::ReplaceSelectionCommand::doApply): Some cleanup and refinement of the concepts used to make
2355         this operation work correctly, particularly in the logic to figure out whether to merge content, and
2356         also performing merges.
2357         * khtml/editing/visible_position.cpp:
2358         (khtml::isFirstVisiblePositionInBlock): Simplification of test used to make this determination.
2359         * khtml/editing/visible_units.cpp:
2360         (khtml::isStartOfParagraph): New helper, used in khtml::ReplaceSelectionCommand::doApply().
2361         (khtml::isEndOfParagraph): Ditto.
2362         * khtml/editing/visible_units.h: Declare new functions.
2363
2364 2005-01-04  Ken Kocienda  <kocienda@apple.com>
2365
2366         Reviewed by John
2367
2368         Fix for this bug:
2369         
2370         <rdar://problem/3926522> Pressing return in a quoted block inserts too many newlines
2371
2372         * khtml/editing/htmlediting.cpp:
2373         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Call to insertBlockPlaceholderIfNeeded()
2374         for the block we are adding was being done at the wrong time, which led to the placeholder remaining
2375         in the document when it was not needed. This resulted in the extra space reported in the bug.
2376
2377 2005-01-04  Kevin Decker  <kdecker@apple.com>
2378
2379         Reviewed by Hyatt.
2380
2381         Fixed: <rdar://problem/3936879> nil-deref, crash in InlineFlowBox::nodeAtPoint closing DHTML menus at hrweb.apple.com
2382
2383         * khtml/rendering/render_block.cpp:
2384         (khtml::RenderBlock::fillInlineSelectionGaps): Added a nil check. If there is no selection, don't try to get the selection's containing block. If we do, we'll crash. 
2385
2386 2005-01-04  David Hyatt  <hyatt@apple.com>
2387
2388         Fix for 3937203, force an update of the dashboard regions when scrollbars are added/removed.
2389         
2390         Reviewed by kevin
2391
2392         * khtml/rendering/render_layer.cpp:
2393         (RenderLayer::updateScrollInfoAfterLayout):
2394
2395 2005-01-04  Ken Kocienda  <kocienda@apple.com>
2396
2397         Reviewed by John
2398
2399         Fix for these two bugs:
2400         
2401         <rdar://problem/3938935> REGRESSION (Mail): Pasting into an empty document mangles content
2402         <rdar://problem/3939148> REGRESSION (Mail): Pasting mistakenly reverses lines
2403
2404         * khtml/editing/htmlediting.cpp:
2405         (khtml::ReplaceSelectionCommand::doApply): For 3938935, add one more case to handle an empty document; merge
2406         neither start nor end. For 3939148, improve the code which adjusts the insertion point during 
2407         the process of pasting. It formerly handled only one of the possible cases.
2408         * layout-tests/editing/pasteboard/paste-text-015-expected.txt: Added.
2409         * layout-tests/editing/pasteboard/paste-text-015.html: Added.
2410
2411 2005-01-04  David Hyatt  <hyatt@apple.com>
2412
2413         Fix for 3936571, placeholder attribute should work for normal inputs for Dashboard.
2414         
2415         Reviewed by john
2416
2417         * khtml/rendering/render_form.cpp:
2418         (RenderLineEdit::updateFromElement):
2419         * kwq/KWQLineEdit.mm:
2420         (QLineEdit::setPlaceholderString):
2421
2422 2005-01-04  David Hyatt  <hyatt@apple.com>
2423
2424         Fix for 3830936, hang on changeforamerica.com.  Make sure to ignore the style not yet available option when
2425         returning pseudo-styles.
2426         
2427         Reviewed by john
2428
2429         * khtml/css/cssstyleselector.cpp:
2430         (khtml::CSSStyleSelector::matchRulesForList):
2431         (khtml::CSSStyleSelector::pseudoStyleForElement):
2432         * khtml/rendering/render_style.cpp:
2433         (RenderStyle::addPseudoStyle):
2434
2435 2005-01-04  Darin Adler  <darin@apple.com>
2436
2437         - rolled out my custom tag name change again -- it caused a 1 ms PLT regression
2438
2439         * khtml/css/cssstyleselector.cpp:
2440         * khtml/editing/htmlediting.cpp:
2441         * khtml/editing/selection.cpp:
2442         * khtml/editing/visible_position.cpp:
2443         * khtml/html/dtd.cpp:
2444         * khtml/html/htmlparser.cpp:
2445         * khtml/html/htmlparser.h:
2446         * khtml/html/htmltokenizer.cpp:
2447         * khtml/misc/htmlhashes.cpp:
2448         * khtml/misc/htmlhashes.h:
2449         * khtml/misc/htmltags.c:
2450         * khtml/misc/htmltags.h:
2451         * khtml/misc/maketags:
2452         * khtml/xml/dom_docimpl.cpp:
2453         * khtml/xml/dom_docimpl.h:
2454         * khtml/xml/dom_nodeimpl.cpp:
2455         * khtml/xml/dom_position.cpp:
2456         * kwq/KWQRenderTreeDebug.cpp:
2457
2458 2005-01-04  Ken Kocienda  <kocienda@apple.com>
2459
2460         Reviewed by John
2461
2462         Fix for this bug:
2463         
2464         <rdar://problem/3927554> Style info applied to remainder of document after a newline is entered
2465
2466         * khtml/editing/htmlediting.cpp:
2467         (khtml::InsertParagraphSeparatorCommand::doApply): Clean up and simplification in code that inserts
2468         a paragraph separator. The bug was all about applying styles to the new paragraph that did not need
2469         to be applied. Now the code will detect when at the end of a style run and will not move and apply 
2470         that ending style to the new paragraph, though it will place that style into the typing style. This
2471         seems to match NSText behavior.
2472         * layout-tests/editing/inserting/insert-div-021-expected.txt: This test result exhibited the bug fixed 
2473         here. The only reason it was not noticed is that the erroneously copied inline was a span, and so did
2474         not have any visible effect on the document.
2475         * layout-tests/editing/inserting/insert-div-022-expected.txt: Added.
2476         * layout-tests/editing/inserting/insert-div-022.html: Added.
2477
2478 2005-01-04  David Hyatt  <hyatt@apple.com>
2479
2480         Fix for 3904562, make sure to clear the outline dictionary when drawing so that random focus rings dont get drawn
2481         all over the place.
2482         
2483         Reviewed by john
2484
2485         * khtml/rendering/render_flow.cpp:
2486         (RenderFlow::paintLines):
2487
2488 2005-01-03  David Hyatt  <hyatt@apple.com>
2489
2490         Fix for float painting regressions 3932524, 3931664, and 3933068.  Make the noPaint flag setting more
2491         robust and make it work regardless of which objects get a layout or not.
2492         
2493         Reviewed by mjs
2494
2495         * khtml/rendering/render_block.cpp:
2496         (khtml::RenderBlock::insertFloatingObject):
2497         (khtml::RenderBlock::addOverhangingFloats):
2498         (khtml::RenderBlock::addIntrudingFloats):
2499         * khtml/rendering/render_block.h:
2500         (khtml::RenderBlock::FloatingObject::FloatingObject):
2501
2502 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
2503
2504         Reviewed by Kevin.
2505
2506         <rdar://problem/3935390> Tiger 8A341: nil deref crash in DOM::NodeImpl::traverseNextNode
2507         
2508         * khtml/html/html_miscimpl.cpp:
2509         (HTMLCollectionImpl::traverseNextItem): Assert that the starting point is not nil,
2510         it should not ever be (now).
2511         (HTMLCollectionImpl::item): When traversing items stop when we hit
2512         nil, meaning the end to avoid triggering above assert (formerly crash).
2513
2514 2005-01-03  Maciej Stachowiak  <mjs@apple.com>
2515
2516         Reviewed by John and Kevin.
2517
2518         <rdar://problem/3870317> REGRESSION(125.9-125.11) broken behavior at test.profoundlearning.com - used to
2519         
2520         * khtml/ecma/kjs_window.cpp:
2521         (Window::get): Look up frame names before buitin window properties
2522         to match other browsers. This regressed because we added a builtin
2523         "toolbar" property but this site had a frame with that name.
2524
2525 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
2526
2527         Reviewed by Darin.
2528
2529         <rdar://problem/3888931> frame naming allows malicious site to bring up a window when you click on a link in another
2530         
2531         Added opener bridge method to help WebKit implement security check
2532         for named frame visibility.
2533         
2534         * khtml/khtml_part.h:
2535         * kwq/WebCoreBridge.h:
2536         * kwq/WebCoreBridge.mm:
2537         (-[WebCoreBridge opener]):
2538
2539 2005-01-03  Ken Kocienda  <kocienda@apple.com>
2540
2541         Reviewed by John
2542
2543         Fix for this bug:
2544         
2545         <rdar://problem/3933926> Tiger8A341: Mail crashes while forwarding embedded HTML message in -[WebCoreBridge ensureSelectionVisible]
2546
2547         * kwq/WebCoreBridge.mm:
2548         (-[WebCoreBridge ensureSelectionVisible]): Put in some null checks to prevent crash experienced in bug.
2549
2550 2005-01-03  David Hyatt  <hyatt@apple.com>
2551
2552         Fix for 3936881, make sure positioned objects prooperly update y-position.
2553         
2554         Reviewed by john
2555
2556         * khtml/rendering/render_block.cpp:
2557         (khtml::RenderBlock::layoutPositionedObjects):
2558
2559 2005-01-03  Ken Kocienda  <kocienda@apple.com>
2560
2561         Reviewed by Harrison
2562         
2563         Fix for this bug:
2564         
2565         <rdar://problem/3928250> REGRESSION (Mail): Typing style lost after hitting return key
2566
2567         * khtml/editing/htmlediting.cpp:
2568         (khtml::InsertLineBreakCommand::preservesTypingStyle): Now implemented, returning yes for this command.
2569         (khtml::InsertParagraphSeparatorCommand::InsertParagraphSeparatorCommand): Initialize new typing style member variable.
2570         (khtml::InsertParagraphSeparatorCommand::~InsertParagraphSeparatorCommand): Deref new typing style member variable.
2571         (khtml::InsertParagraphSeparatorCommand::preservesTypingStyle): Now implemented, returning yes for this command.
2572         (khtml::InsertParagraphSeparatorCommand::setFullTypingStyleBeforeInsertion): New function to set the typing style
2573         (khtml::InsertParagraphSeparatorCommand::calculateAndSetTypingStyleAfterInsertion): Function called after the <p>
2574         insertion is done. This function diffs the style created in setFullTypingStyleBeforeInsertion() with the style
2575         of the new <p> and only sets those styles needed to preserve the style in effect before the insertion.
2576         (khtml::InsertParagraphSeparatorCommand::doApply): Call new functions.
2577         (khtml::TypingCommand::preservesTypingStyle): Now yes for inserting line breaks and paragraphs.
2578          * khtml/editing/htmlediting.h: Declare new functions.
2579
2580 2004-12-25  Kevin Decker  <kdecker@apple.com>
2581
2582         Reviewed by Hyatt.
2583
2584         Fixed: <rdar://problem/3505072> hang in KHTMLParser::parseToken (consulting.soroos.net)
2585         
2586         * khtml/html/dtd.cpp: <label> needed a much higher priority such that it will close block elements.  Malformed HTML (ugh) is the only reason why we need to do this. 
2587
2588 2004-12-23  Darin Adler  <darin@apple.com>
2589
2590         Reviewed by Ken.
2591
2592         - re-fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
2593
2594         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
2595         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
2596
2597         * khtml/editing/htmlediting.cpp:
2598         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
2599         per-document tags and is just better all around for things like the document.
2600         (khtml::debugNode): Ditto.
2601         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
2602         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
2603         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
2604         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
2605
2606         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
2607         non-HTML elements to be nested as desired.
2608
2609         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
2610         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
2611         much larger number.
2612         * khtml/html/htmlparser.cpp:
2613         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
2614         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
2615         to eliminate code that used ID_CLOSE_TAG for an array size.
2616         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
2617         that manages isindex to use deref instead of delete.
2618         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
2619         mistake of using ID_CLOSE_TAG for the array size too.
2620         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
2621         there and it would prevent custom tags from working. Added range check before using the forbidden
2622         tag array with the token ID since custom tags will use index values past the end of the array.
2623         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
2624         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
2625         createElement call is still here. Last time I left out a few form element types from this switch;
2626         fixed now.
2627         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
2628         document if getTagID fails; this creates a unique per-document ID.
2629
2630         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
2631         * khtml/misc/htmlhashes.cpp:
2632         (khtml::getTagID): Changed return type to unsigned short.
2633         (khtml::getAttrID): Ditto.
2634
2635         * khtml/misc/htmltags.c: Regenerated.
2636         * khtml/misc/htmltags.h: Regenerated.
2637
2638         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
2639         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
2640         Also rewrote getTagName to work with the new scheme.
2641
2642         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
2643         * khtml/xml/dom_docimpl.cpp:
2644         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
2645         Also updated for a few tags that the parser handled but this did not.
2646
2647         * kwq/KWQRenderTreeDebug.cpp:
2648         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
2649         the tag ID directly, which only works for standard nodes.
2650         (operator<<): Update to call getTagName.
2651         (nodePositionRelativeToRoot): Ditto.
2652         (writeSelection): Ditto.
2653
2654 === Safari-177 ===
2655
2656 2004-12-22  Darin Adler  <darin@apple.com>
2657
2658         - rolled out my custom tag name change -- it broke amazon.com
2659
2660         * khtml/css/cssstyleselector.cpp:
2661         * khtml/editing/htmlediting.cpp:
2662         * khtml/editing/selection.cpp:
2663         * khtml/editing/visible_position.cpp:
2664         * khtml/html/dtd.cpp:
2665         * khtml/html/htmlparser.cpp:
2666         * khtml/html/htmlparser.h:
2667         * khtml/html/htmltokenizer.cpp:
2668         * khtml/misc/htmlhashes.cpp:
2669         * khtml/misc/htmlhashes.h:
2670         * khtml/misc/htmltags.c:
2671         * khtml/misc/htmltags.h:
2672         * khtml/misc/maketags:
2673         * khtml/xml/dom_docimpl.cpp:
2674         * khtml/xml/dom_docimpl.h:
2675         * khtml/xml/dom_nodeimpl.cpp:
2676         * khtml/xml/dom_position.cpp:
2677         * kwq/KWQRenderTreeDebug.cpp:
2678
2679 2004-12-22  David Harrison  <harrison@apple.com>
2680
2681         Reviewed by Darin Adler.
2682
2683         * khtml/editing/selection.cpp:
2684         (khtml::Selection::validate):
2685         The selecting/deselecting bad behavior is because the Selection code that expands by words
2686         had an inaccurate test for being at the end of the document (where double-clicking needs
2687         to select the last word).  Fixed that check.
2688
2689 2004-12-22  Adele Amchan  <adele@apple.com>
2690
2691         Reviewed by Chris.
2692
2693         Fix for <rdar://problem/3911650> tabs at safeway.com stop working after a while
2694
2695         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::scrollToAnchor): removed call to cancelRedirection 
2696           so that we match Firefox and WinIE behavior.
2697
2698 2004-12-22  Darin Adler  <darin@apple.com>
2699
2700         Reviewed by Ken.
2701
2702         - fixed <rdar://problem/3760910> Request to include support for custom tag names in HTML (they already work in XML)
2703
2704         * khtml/css/cssstyleselector.cpp: (khtml::CSSStyleSelector::checkOneSelector): Changed
2705         some code that used ID_LAST_TAG in a slightly wrong, but harmless, way.
2706
2707         * khtml/editing/htmlediting.cpp:
2708         (khtml::debugPosition): Use nodeName rather than getTagName, since the latter works for
2709         per-document tags and is just better all around for things like the document.
2710         (khtml::debugNode): Ditto.
2711         * khtml/editing/selection.cpp: (khtml::Selection::debugPosition): Ditto.
2712         * khtml/editing/visible_position.cpp: (khtml::VisiblePosition::debugPosition): Ditto.
2713         * khtml/xml/dom_nodeimpl.cpp: (NodeImpl::displayNode): Ditto.
2714         * khtml/xml/dom_position.cpp: (DOM::Position::debugPosition): Ditto.
2715
2716         * khtml/html/dtd.cpp: (DOM::checkChild): Use ID_LAST_TAG rather than 1000 for the check that allows
2717         non-HTML elements to be nested as desired.
2718
2719         * khtml/html/htmlparser.h: Change forbidden tag array to be allocated in the object rather than on
2720         the heap. Also use ID_LAST_TAG for the array size; the old code used ID_CLOSE_TAG which is now a
2721         much larger number.
2722         * khtml/html/htmlparser.cpp:
2723         (KHTMLParser::KHTMLParser): Remove code that creates the forbidden tag array on the heap; makes more
2724         sense to just have the array be a member so we don't have to use new and delete on it. Also needed
2725         to eliminate code that used ID_CLOSE_TAG for an array size.
2726         (KHTMLParser::~KHTMLParser): Remove code that deletes the forbidden tag array. Also changed the code
2727         that manages isindex to use deref instead of delete.
2728         (KHTMLParser::reset): Use safer sizeof for clearing the forbidden tag array. Old code had the
2729         mistake of using ID_CLOSE_TAG for the array size too.
2730         (KHTMLParser::parseToken): Removed code that checks for bogus tags; it's not clear why it was ever
2731         there and it would prevent custom tags from working. Added range check before using the forbidden
2732         tag array with the token ID since custom tags will use index values past the end of the array.
2733         (KHTMLParser::getElement): Removed most of the code that makes an element by ID; now the work is done
2734         inside the DocumentImpl createHTMLElement. Any code that needs to be different than a dynamic
2735         createElement call is still here.
2736         * khtml/html/htmltokenizer.cpp: (khtml::HTMLTokenizer::parseTag): Call the tagId function in the
2737         document if getTagID fails; this creates a unique per-document ID.
2738
2739         * khtml/misc/htmlhashes.h: Changed return types to unsigned short.
2740         * khtml/misc/htmlhashes.cpp:
2741         (khtml::getTagID): Changed return type to unsigned short.
2742         (khtml::getAttrID): Ditto.
2743
2744         * khtml/misc/htmltags.c: Regenerated.
2745         * khtml/misc/htmltags.h: Regenerated.
2746
2747         * khtml/misc/maketags: Changed the generated constants to use "const unsigned short" instead of "#define".
2748         Changed ID_CLOSE_TAG to be a fixed value of 32000 rather than being just past the IDs of the HTML tags.
2749         Also rewrote getTagName to work with the new scheme.
2750
2751         * khtml/xml/dom_docimpl.h: Added overload of createHTMLElement, made it non-virtual since it's not overriden.
2752         * khtml/xml/dom_docimpl.cpp:
2753         (DocumentImpl::createHTMLElement): Refactored into two separate functions, one that takes the tag ID.
2754         Also updated for a few tags that the parser handled but this did not.
2755
2756         * kwq/KWQRenderTreeDebug.cpp:
2757         (getTagName): Added. Works for custom nodes, because it calls nodeName rather than using getTagName on
2758         the tag ID directly, which only works for standard nodes.
2759         (operator<<): Update to call getTagName.
2760         (nodePositionRelativeToRoot): Ditto.
2761         (writeSelection): Ditto.
2762
2763 2004-12-21  David Harrison  <harrison@apple.com>
2764
2765         Reviewed by Ken Kocienda.
2766
2767         <rdar://problem/3924934> REGRESSION: double click at end of line selects start of next line
2768
2769         Problem was the TextIterator was not handling exitNode() from a P block properly.
2770         
2771         * khtml/editing/visible_text.cpp:
2772         (khtml::TextIterator::TextIterator):
2773         Add new param that specifies whether the iterator is for content or for searching.
2774         Search iterators do not prevent newlines at the beginning.
2775         (khtml::TextIterator::advance):
2776         Added some comments.
2777         (khtml::TextIterator::handleTextNode):
2778         Added some comments.
2779         (khtml::TextIterator::exitNode):
2780         Emit newline for P (and other) blocks with position following the block, instead of the m_lastTextNode.
2781         (khtml::TextIterator::emitCharacter):
2782         Added some comments.
2783         (khtml::TextIterator::range):
2784         Added some comments.
2785         (khtml::CharacterIterator::CharacterIterator):
2786         Specify search type TextIterator.
2787         (khtml::CharacterIterator::advance):
2788         * khtml/editing/visible_text.h:
2789         (khtml::):
2790         Add new TextIterator::TextIterator param that specifies whether the iterator is for content or for searching.
2791         * khtml/editing/visible_units.cpp:
2792         (khtml::nextWordBoundary):
2793         Specify search type TextIterator.
2794
2795 2004-12-21  David Harrison  <harrison@apple.com>
2796
2797         Reviewed by Ken Kocienda.
2798
2799         <rdar://problem/3924695> REGRESSION (Mail): double-clicking past end of line shows no selection, should select to EOL
2800         
2801         Problem was that RenderText::setSelectionState did not handle the SelectionStart case where start and end are the end of the line.
2802         Fixed by pretending the start == end-1 in that situation, as long as end > 0.
2803         
2804         * khtml/rendering/render_text.cpp:
2805         (RenderText::setSelectionState)
2806
2807 2004-12-21  Maciej Stachowiak  <mjs@apple.com>
2808
2809         Reviewed by John.
2810
2811         <rdar://problem/3929187> WebKit needs to restrict access to certain window operations by domain
2812         
2813         * khtml/ecma/kjs_window.cpp:
2814         (Window::get): Change most window functions to be restricted by
2815         XSS domain check.
2816
2817 2004-12-21  Ken Kocienda  <kocienda@apple.com>
2818
2819         Reviewed by John
2820
2821         Fix for this bug:
2822         
2823         <rdar://problem/3928305> selecting an entire line and typing over causes new inserted text at top of document
2824
2825         * khtml/editing/htmlediting.cpp:
2826         (khtml::DeleteSelectionCommand::insertPlaceholderForAncestorBlockContent): New function to detect case
2827         formerly undetected and unhandled. This is the crux of the bug fix.
2828         (khtml::DeleteSelectionCommand::doApply): Call insertPlaceholderForAncestorBlockContent() during
2829         execution of command.
2830         * khtml/editing/htmlediting.h: Declare new function.
2831         * layout-tests/editing/deleting/delete-3928305-fix-expected.txt: Added.
2832         * layout-tests/editing/deleting/delete-3928305-fix.html: Added.
2833
2834 2004-12-21  Ken Kocienda  <kocienda@apple.com>
2835
2836         Reviewed by me
2837
2838         * khtml/editing/htmlediting.cpp:
2839         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Note to self: Must compile code before
2840         checking in (aka must return false from function returning bool).
2841
2842 2004-12-21  Ken Kocienda  <kocienda@apple.com>
2843
2844         Reviewed by John
2845         
2846         Fix for this bug:
2847         
2848         <rdar://problem/3927752> Crash in khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded(DOM::NodeImpl*)
2849
2850         * khtml/editing/htmlediting.cpp:
2851         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Added some null checks.
2852         (khtml::CompositeEditCommand::removeBlockPlaceholderIfNeeded): Ditto.
2853
2854 2004-12-21  Ken Kocienda  <kocienda@apple.com>
2855
2856         Reviewed by Darin
2857
2858         * khtml/editing/htmlediting.cpp:
2859         (khtml::ReplacementFragment::mergeStartNode): Refine concept of how this node is found based on
2860         further experiements.
2861         (khtml::ReplaceSelectionCommand::doApply): Add a special case for determining merges that need to
2862         be done if the insertion point is in an empty block.
2863         * layout-tests/editing/pasteboard/paste-text-012-expected.txt: Added.
2864         * layout-tests/editing/pasteboard/paste-text-012.html: Added.
2865         * layout-tests/editing/pasteboard/paste-text-013-expected.txt: Added.
2866         * layout-tests/editing/pasteboard/paste-text-013.html: Added.
2867         * layout-tests/editing/pasteboard/paste-text-014-expected.txt: Added.
2868         * layout-tests/editing/pasteboard/paste-text-014.html: Added.
2869
2870 2004-12-21  Darin Adler  <darin@apple.com>
2871
2872         Reviewed by Ken.
2873
2874         - fixed <rdar://problem/3899133> text search in a Safari window takes a very long time on Tiger updates page (and some other pages)
2875
2876         * khtml/editing/visible_text.h: Add an "offset base node" parameter to emitCharacter, and also
2877         add a field to track it. Must make a few things mutable so we can update them in the range accessor.
2878         * khtml/editing/visible_text.cpp:
2879         (khtml::TextIterator::advance): Pass in base node and offsets rather than computing actual offsets
2880         using the node's index. We only compute the node index if actually asked for the range.
2881         (khtml::TextIterator::handleTextNode): Pass 0 for base node and set base node to 0 when setting
2882         up the offsets.
2883         (khtml::TextIterator::handleTextBox): Ditto.
2884         (khtml::TextIterator::handleReplacedElement): Pass base node and set base node instead of calling
2885         nodeIndex.
2886         (khtml::TextIterator::handleNonTextNode): Pass 0 for offset.
2887         (khtml::TextIterator::exitNode): More of the same.
2888         (khtml::TextIterator::emitCharacter): Ditto.
2889         (khtml::TextIterator::range): If an offset base node is stored, then get its node index, and then
2890         add that in to the offsets. Doing the work here guarantees it's done only once when doing a text search.
2891
2892         - another small fix
2893
2894         * khtml/khtml_part.cpp: Removed SPEED_DEBUG define. Not sure why it was on.
2895
2896 === Safari-176 ===
2897
2898 2004-12-20  Ken Kocienda  <kocienda@apple.com>
2899
2900         Reviewed by Darin
2901
2902         * khtml/editing/htmlediting.cpp:
2903         (khtml::DeleteSelectionCommand::moveNodesAfterNode): My one-liner for this bug introduced layout test
2904         regressions: <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
2905         Rolling out until I can develop a real fix.
2906
2907 2004-12-20  David Harrison  <harrison@apple.com>
2908
2909         Reviewed by Dave Hyatt.
2910         
2911         Initial checkin of AXTextMarkerRef support.
2912
2913         * khtml/xml/dom_docimpl.cpp:
2914         (DocumentImpl::updateSelection):
2915         (DocumentImpl::setFocusNode):
2916         * kwq/KWQAccObject.h:
2917         * kwq/KWQAccObject.mm:
2918         (-[KWQAccObject detach]):
2919         (-[KWQAccObject anchorElement]):
2920         (-[KWQAccObject addChildrenToArray:]):
2921         (-[KWQAccObject accessibilityAttributeNames]):
2922         (-[KWQAccObject accessibilityActionDescription:]):
2923         (-[KWQAccObject accessibilityPerformAction:]):
2924         (-[KWQAccObject textMarkerRangeFromMarkers:andEndMarker:]):
2925         (-[KWQAccObject textMarkerForVisiblePosition:]):
2926         (-[KWQAccObject visiblePositionForTextMarker:]):
2927         (-[KWQAccObject AXTextMarkerRangeCopyStartMarkerWrapper:]):
2928         (-[KWQAccObject AXTextMarkerRangeCopyEndMarkerWrapper:]):
2929         (-[KWQAccObject visiblePositionForStartOfTextMarkerRange:]):
2930         (-[KWQAccObject visiblePositionForEndOfTextMarkerRange:]):
2931         (-[KWQAccObject accessibilityAttributeValue:]):
2932         (-[KWQAccObject accessibilityParameterizedAttributeNames]):
2933         (-[KWQAccObject textMarkerRangeFromVisiblePositions:andEndPos:]):
2934         (-[KWQAccObject getSelectedTextMarkerRange]):
2935         (-[KWQAccObject doAXLineForTextMarker:]):
2936         (-[KWQAccObject doAXTextMarkerRangeForLine:]):
2937         (-[KWQAccObject doAXStringForTextMarkerRange:]):
2938         (-[KWQAccObject doAXNextTextMarkerForTextMarker:]):
2939         (-[KWQAccObject doAXPreviousTextMarkerForTextMarker:]):
2940         (-[KWQAccObject doAXLeftWordTextMarkerRangeForTextMarker:]):
2941         (-[KWQAccObject doAXRightWordTextMarkerRangeForTextMarker:]):
2942         (-[KWQAccObject doAXLeftLineTextMarkerRangeForTextMarker:]):
2943         (-[KWQAccObject doAXRightLineTextMarkerRangeForTextMarker:]):
2944         (-[KWQAccObject accessibilityAttributeValue:forParameter:]):
2945         (-[KWQAccObject accessibilityFocusedUIElement]):
2946         (-[KWQAccObject clearChildren]):
2947         (-[KWQAccObject accObjectID]):
2948         (-[KWQAccObject setAccObjectID:]):
2949         (-[KWQAccObject removeAccObjectID]):
2950         * kwq/KWQAccObjectCache.h:
2951         * kwq/KWQAccObjectCache.mm:
2952         (KWQAccObjectCache::KWQAccObjectCache):
2953         (KWQAccObjectCache::~KWQAccObjectCache):
2954         (KWQAccObjectCache::getAccObjectID):
2955         (KWQAccObjectCache::removeAccObjectID):
2956         (KWQAccObjectCache::textMarkerForVisiblePosition):
2957         (KWQAccObjectCache::visiblePositionForTextMarker):
2958
2959 2004-12-19  Darin Adler  <darin@apple.com>
2960
2961         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added nil check.
2962
2963 2004-12-19  Darin Adler  <darin@apple.com>
2964
2965         Reviewed by Kevin.
2966
2967         - a garbage collection fix
2968
2969         * kwq/KWQFoundationExtras.h: (KWQCFAutorelease): Added a more-extensive comment and fixed the BUILDING_ON_PANTHER
2970         #ifndef to use #if (in practice, either is OK).
2971         * kwq/KWQKURL.mm: (KURL::getNSURL): Use KWQCFAutorelease instead of autorelease.
2972
2973 2004-12-17  David Hyatt  <hyatt@apple.com>
2974
2975         Fix for 3923255, specified percentage heights of divs with overflow auto inside tables not honored.
2976         
2977         Reviewed by kocienda
2978
2979         * khtml/rendering/render_box.cpp:
2980         (RenderBox::calcPercentageHeight):
2981         * khtml/rendering/render_table.cpp:
2982         (RenderTableSection::layoutRows):
2983
2984 2004-12-17  David Harrison  <harrison@apple.com>
2985
2986         Reviewed by Ken Kocienda.
2987
2988         <rdar://problem/3924930> REGRESSION: triple click does not select to end of line
2989         
2990         * khtml/editing/visible_units.cpp:
2991         (khtml::endOfParagraph):
2992         When includeLineBreak is true, allow traversal to next node after enclosingBlockFlowElement.
2993
2994 2004-12-17  Ken Kocienda  <kocienda@apple.com>
2995
2996         Reviewed by Vicki
2997
2998         * khtml/editing/htmlediting.cpp:
2999         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Missed deleting some now-obsolete expcetion
3000         codes when I added the createBreakElement() function.
3001
3002 2004-12-17  Richard Williamson   <rjw@apple.com>
3003
3004         Set the floor of max cacheable object size to 40K.  This restores
3005         the long standing floor.  Lower floor deleteriously impacts the PLT.
3006         Reviewed by Hyatt.
3007
3008         * khtml/khtml_part.cpp:
3009         (KHTMLPart::checkCompleted):
3010         * khtml/misc/loader.cpp:
3011         (Cache::setSize):
3012
3013 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3014
3015         Reviewed by Hyatt
3016
3017         Fix for this bug:
3018         
3019         <rdar://problem/3926142> REGRESSION (Mail): Deleting text decreases quote level
3020
3021         * khtml/editing/htmlediting.cpp:
3022         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Stop merging nodes when a <br> is hit.
3023         Formerly checked only for block boundary.
3024
3025 2004-12-17  David Harrison  <harrison@apple.com>
3026
3027         Reviewed by Darin.
3028
3029                 Add KWQCFAutorelease for autoreleasing CF objects.
3030         * kwq/KWQFoundationExtras.h:
3031         (KWQCFAutorelease):
3032         New.
3033
3034 2004-12-17  David Harrison  <harrison@apple.com>
3035
3036         Reviewed by Darin.
3037
3038                 Fix GC compatibility in getNSString.
3039
3040         * kwq/KWQString.mm:
3041         (QString::getNSString):
3042                 Use NSString allocator instead of CFString, so that autorelease works under GC.
3043
3044 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3045
3046         Reviewed by Hyatt
3047
3048         Fix for this bug:
3049         
3050         <rdar://problem/3890973> REGRESSION (Mail): Deleting reorders remaining text
3051
3052         * khtml/editing/htmlediting.cpp:
3053         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Added check to ensure that moving content will not
3054         move it after the <body> element.
3055
3056 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3057
3058         Reviewed by me
3059         
3060         Added new layout tests covering cases from recent bug fixes.
3061
3062         * layout-tests/editing/inserting/insert-div-018-expected.txt: Added.
3063         * layout-tests/editing/inserting/insert-div-018.html: Added.
3064         * layout-tests/editing/inserting/insert-div-019-expected.txt: Added.
3065         * layout-tests/editing/inserting/insert-div-019.html: Added.
3066         * layout-tests/editing/inserting/insert-div-020-expected.txt: Added.
3067         * layout-tests/editing/inserting/insert-div-020.html: Added.
3068         * layout-tests/editing/inserting/insert-div-021-expected.txt: Added.
3069         * layout-tests/editing/inserting/insert-div-021.html: Added.
3070
3071 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3072
3073         Reviewed by me
3074
3075         Changes in layout resulting from giving <p> elements no margin rather than 0.1em margin.
3076
3077         * layout-tests/editing/inserting/insert-div-013-expected.txt
3078         * layout-tests/editing/inserting/insert-div-014-expected.txt
3079
3080 2004-12-17  Ken Kocienda  <kocienda@apple.com>
3081
3082         Reviewed by John
3083
3084         Fix for this bug:
3085         
3086         <rdar://problem/3925317> Increase quote in email and with cursor below the quote the new line appears above the quote
3087
3088         * khtml/editing/htmlediting.cpp:
3089         (khtml::InsertParagraphSeparatorCommand::doApply):
3090         * khtml/editing/visible_position.cpp: Refine rules for whether to use the starting node or the starting
3091         block as the reference node for the insertion of the new block.
3092         (khtml::isLastVisiblePositionInBlock): Tweak rules again. Descendants of following blocks should answer true.
3093         I worked this all out on the whiteboard this time. This should be the last tweak.
3094
3095 2004-12-17  Kevin Decker  <kdecker@apple.com>
3096
3097         Reviewed by Ken.
3098
3099         Fixed <rdar://problem/3824438> Need a clean way for Dashboard to detect when an XML parsing error occurs
3100
3101         * khtml/xml/xml_tokenizer.cpp:
3102         (khtml::XMLTokenizer::insertErrorMessageBlock): In the xml error report, instead of a generic <div>, use <parsererror> to match Mozilla.
3103
3104 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3105
3106         Reviewed by Chris
3107
3108         Fix for this bug:
3109         
3110         <rdar://problem/3924888> REGRESSION (Mail): Hitting return key at end of line does not insert visible newline
3111
3112         * khtml/editing/htmlediting.cpp:
3113         (khtml::InsertParagraphSeparatorCommand::doApply): Tweaked code I added just before to fix 3924486, so that
3114         it checks the downstream node for the starting position.
3115
3116 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3117
3118         Reviewed by Chris
3119
3120         Added new createBreakElement() function that makes creating a <br> element a one-liner.
3121         Converted all the code that used to call the DocumentImpl, and dealt with the exceptionCode,
3122         over to this new helper.
3123
3124         * khtml/editing/htmlediting.cpp:
3125         (khtml::DeleteSelectionCommand::moveNodesAfterNode): Now uses new helper function.
3126         (khtml::InsertLineBreakCommand::doApply): Ditto.
3127         (khtml::InsertParagraphSeparatorCommand::doApply): Ditto.
3128         (khtml::InsertParagraphSeparatorInQuotedContentCommand::doApply): Ditto.
3129         (khtml::ReplaceSelectionCommand::doApply): Ditto.
3130         (khtml::createBreakElement): New helper.
3131         * khtml/editing/htmlediting.h: Ditto.
3132
3133 2004-12-16  David Hyatt  <hyatt@apple.com>
3134
3135         Fix a bug where vertical-align values that depended on their parent's value went crazy if the parent was
3136         vertical-align top or bottom.  The bug is 3771007, bankofamerica's ebills page.
3137         
3138         Reviewed by kocienda
3139
3140         * khtml/rendering/render_object.cpp:
3141         (RenderObject::getVerticalPosition):
3142
3143 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3144
3145         Reviewed by John
3146
3147         Fix for these bugs:
3148         
3149         <rdar://problem/3924486> REGRESSION (Mail): Hitting return key does not insert visible newline
3150         <rdar://problem/3924579> REGRESSION (Mail): After deleting, hitting return key does not insert visible newline
3151
3152         * khtml/editing/htmlediting.cpp:
3153         (khtml::InsertParagraphSeparatorCommand::doApply): For the first bug, detect when inserting a <p> will
3154         make a visible <br> collapse. For the second bug, move the code that inserts the new <p> after
3155         a check which may move the node used as the reference node for the insertion. Also change this code to
3156         insert the <p> after the last sibling of the starting position, to move it past the nodes we're going
3157         to want to shift into the new <p>.
3158
3159 2004-12-16  Darin Adler  <darin@apple.com>
3160
3161         Reviewed by Ken.
3162
3163         - use <p> elements rather than <br> when pasting plain text; also use margin of 0 rather than 0.1 em
3164           after talking this over with Dave and Ken
3165
3166         * khtml/editing/htmlediting.h: Added createDefaultParagraphElement and createBlockPlaceholderElement.
3167         * khtml/editing/htmlediting.cpp:
3168         (khtml::CompositeEditCommand::insertBlockPlaceholderIfNeeded): Use new createBlockPlaceholderElement
3169         helper so this can share code with the plain-text conversion code.
3170         (khtml::InsertParagraphSeparatorCommand::createParagraphElement): Use new createDefaultParagraphElement
3171         helper so this can share code with the plain-text conversion code.
3172         (khtml::createDefaultParagraphElement): Added.
3173         (khtml::createBlockPlaceholderElement): Added.
3174
3175         * khtml/editing/markup.cpp: (khtml::createFragmentFromText): Use paragraphs rather than
3176         <br> elements for pasting plain text.
3177
3178         - regenerated these files with the newer gperf
3179
3180         * khtml/css/cssproperties.c: Regenerated.
3181         * khtml/css/cssvalues.c: Regenerated.
3182         * khtml/misc/htmlattrs.c: Regenerated.
3183         * khtml/misc/htmltags.c: Regenerated.
3184
3185 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3186
3187         Reviewed by Hyatt
3188
3189         Fix for this bug:
3190         
3191         <rdar://problem/3924291> REGRESSION (Mail): Crash deleting content following a <p> element
3192
3193         * khtml/xml/dom_nodeimpl.cpp:
3194         (NodeImpl::enclosingInlineElement): Fixed problem in this function where recursive search for
3195         parent that is not an inline would skip past previous siblings of nodes which were blocks. Now
3196         it stops looking in this situation. This problem eventually caused the delete code to try to 
3197         merge a node under a descendent.
3198
3199 2004-12-16  Adele Amchan  <adele@apple.com>
3200
3201         Change by Richard, reviewed by me.
3202
3203         Fix for: <rdar://problem/3923983> background image decoding prevents page with 0Kb image from finishing to load
3204
3205         * khtml/misc/loader.cpp: (CachedImage::data): Added call to notifyFinished so the 0Kb image case finishes loading.
3206
3207 2004-12-16  Adele Amchan  <adele@apple.com>
3208
3209         Reviewed by Chris.
3210
3211         Fix for: <rdar://problem/3534824> VIP: some navigation links on safeway.com don't work due to a JavaScript quirk
3212
3213         Added a call to ObjectImp::get before Window::get just returns Undefined.  
3214         This was preventing us from getting the toString function from a Window object.
3215
3216         * khtml/ecma/kjs_window.cpp: (Window::get):
3217
3218 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3219
3220         Reviewed by John
3221         
3222         Fix for this bug:
3223         
3224         <rdar://problem/3918351> REGRESSION (Mail, 173-175+): Return before first char of line leaves insertion point in wrong place
3225         
3226         * khtml/editing/htmlediting.cpp:
3227         (khtml::InsertParagraphSeparatorCommand::doApply): Basically, did a rewrite of this function
3228         to do a better job than it was doing before. Added several test cases to prove I am on a 
3229         better track.
3230         * khtml/editing/visible_position.cpp:
3231         (khtml::isFirstVisiblePositionInBlock): Tweaked the rules a bit to fix an issue very similar to the
3232         leaving-the-bar-node case problem I just fixed in a recent checkin (relevant markup: <p>foo</p>bar).
3233         This function was returning true for the first position in "bar". Wrong. Also tightened up other 
3234         rule: Should not report true when relationship between blocks cannot be determined.
3235         (khtml::isLastVisiblePositionInBlock): Tightened up rule as above: Should not report true 
3236         when relationship between blocks cannot be determined.
3237         * layout-tests/editing/inserting/insert-div-010-expected.txt: Added.
3238         * layout-tests/editing/inserting/insert-div-010.html: Added.
3239         * layout-tests/editing/inserting/insert-div-011-expected.txt: Added.
3240         * layout-tests/editing/inserting/insert-div-011.html: Added.
3241         * layout-tests/editing/inserting/insert-div-012-expected.txt: Added.
3242         * layout-tests/editing/inserting/insert-div-012.html: Added.
3243         * layout-tests/editing/inserting/insert-div-013-expected.txt: Added.
3244         * layout-tests/editing/inserting/insert-div-013.html: Added.
3245         * layout-tests/editing/inserting/insert-div-014-expected.txt: Added.
3246         * layout-tests/editing/inserting/insert-div-014.html: Added.
3247         * layout-tests/editing/inserting/insert-div-015-expected.txt: Added.
3248         * layout-tests/editing/inserting/insert-div-015.html: Added.
3249         * layout-tests/editing/inserting/insert-div-016-expected.txt: Added.
3250         * layout-tests/editing/inserting/insert-div-016.html: Added.
3251         * layout-tests/editing/inserting/insert-div-017-expected.txt: Added.
3252         * layout-tests/editing/inserting/insert-div-017.html: Added.
3253             
3254 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3255
3256         Reviewed by me
3257         
3258         Added a layout test based on my last checkin.
3259
3260         * layout-tests/editing/selection/move-by-word-001-expected.txt: Added.
3261         * layout-tests/editing/selection/move-by-word-001.html: Added.
3262
3263 2004-12-16  Ken Kocienda  <kocienda@apple.com>
3264
3265         Reviewed by John
3266
3267         Fix for this bug:
3268         
3269         <rdar://problem/3917929> REGRESSION (Mail): Command-left-arrow leaves insertion point too high after specific steps
3270
3271         * khtml/editing/visible_text.cpp:
3272         (khtml::SimplifiedBackwardsTextIterator::advance): Add new check for leaving a text node and iterating
3273         backwards into a different block that is an descendent of the block containing the text node (as in leaving 
3274         the "bar" node in this example: <p>foo</p>bar).
3275         (khtml::SimplifiedBackwardsTextIterator::handleNonTextNode): Call new emitNewlineForBROrText helper.
3276         (khtml::SimplifiedBackwardsTextIterator::emitNewlineForBROrText): Factor out code from handleNonTextNode, since
3277         it is called from there, and now also from advance().
3278
3279 2004-12-15  Darin Adler  <darin@apple.com>
3280
3281         Reviewed by Ken.
3282         
3283         - fixed problem where plain-text would put a blank line between each <p> even when they have no margins
3284
3285         * khtml/editing/visible_text.cpp: (khtml::TextIterator::exitNode): Add more checks and only set the
3286         "add one more newline" flag if the margin is sufficient. A more complete fix would ignore the node
3287         type altogether and use the render tree instead.
3288
3289 2004-12-14  John Sullivan  <sullivan@apple.com>
3290
3291         Reviewed by Ken.
3292         
3293         - rest of WebCore fix for <rdar://problem/3790011> undoable operations all say "Undo" 
3294         in the menu, no specific action names
3295
3296         * khtml/editing/edit_actions.h: new header, contains EditAction enum
3297         (renamed from HTMLEditAction, formerly in htmlediting.h)
3298
3299         * ForwardingHeaders/editing/edit_actions.h: new forwarding header
3300         
3301         * khtml/editing/htmlediting.h:
3302         removed HTMLEditAction enum in favor of including edit_actions.h; added khtml::
3303         namespace to EditAction usages; added m_editingAction ivar to ApplyStyleCommand
3304
3305         * khtml/editing/htmlediting.cpp:
3306         (khtml::EditCommandPtr::editingAction):
3307         update for enum name change
3308         (khtml::EditCommand::editingAction):
3309         ditto
3310         (khtml::ApplyStyleCommand::ApplyStyleCommand):
3311         added editingAction parameter to this constructor
3312         (khtml::ApplyStyleCommand::editingAction):
3313         return new ivar
3314         (khtml::DeleteSelectionCommand::editingAction):
3315         update for enum name change