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