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