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