Reviewed by Darin.
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2003-11-02  Maciej Stachowiak  <mjs@apple.com>
2
3         Reviewed by Darin.
4
5         - don't resolve Null href or src attributes, since the distinction
6         between empty and absent attribute is important.
7
8         * khtml/dom/html_base.cpp:
9         (HTMLIFrameElement::src):
10         * khtml/dom/html_form.cpp:
11         (HTMLInputElement::src):
12         * khtml/dom/html_head.cpp:
13         (HTMLBaseElement::href):
14         (HTMLLinkElement::href):
15         (HTMLScriptElement::src):
16         * khtml/dom/html_image.cpp:
17         (HTMLAreaElement::href):
18         (HTMLImageElement::src):
19         * khtml/dom/html_inline.cpp:
20         (HTMLAnchorElement::href):
21
22 2003-11-01  David Hyatt  <hyatt@apple.com>
23
24         Fix for 3468924, an implementation of outline-offset.  We also give :focus links a built-in offset of 
25         outline-width/2  by default for the Apple Aqua style.
26
27         Fix for 3470660, input type=image excluded from tab order.
28         
29         Reviewed by darin
30
31         * khtml/css/cssparser.cpp:
32         (CSSParser::parseValue):
33         * khtml/css/cssproperties.c:
34         (hash_prop):
35         (findProp):
36         * khtml/css/cssproperties.h:
37         * khtml/css/cssproperties.in:
38         * khtml/css/cssstyleselector.cpp:
39         (khtml::CSSStyleSelector::applyRule):
40         * khtml/css/html4.css:
41         * khtml/rendering/render_box.cpp:
42         (RenderBox::getAbsoluteRepaintRect):
43         (RenderBox::computeAbsoluteRepaintRect):
44         * khtml/rendering/render_flow.cpp:
45         (RenderFlow::getAbsoluteRepaintRect):
46         * khtml/rendering/render_inline.cpp:
47         (RenderInline::paintFocusRing):
48         (RenderInline::paintOutlines):
49         (RenderInline::paintOutline):
50         * khtml/rendering/render_object.cpp:
51         (RenderObject::paintOutline):
52         * khtml/rendering/render_style.h:
53         (khtml::OutlineValue::OutlineValue):
54         (khtml::RenderStyle::outlineSize):
55         (khtml::RenderStyle::outlineOffset):
56         (khtml::RenderStyle::setOutlineOffset):
57         * khtml/rendering/render_text.cpp:
58         (RenderText::paintObject):
59         * kwq/KWQPainter.h:
60         * kwq/KWQPainter.mm:
61         (QPainterPrivate::QPainterPrivate):
62         (QPainter::initFocusRing):
63         (QPainter::addFocusRingRect):
64
65 2003-11-01  Maciej Stachowiak  <mjs@apple.com>
66
67         Reviewed by Darin.
68
69         - fixed 3469262 - REGRESSION (110-112): logitech page is very slow to load (due to style sheet updates?)
70         
71         * khtml/xml/dom_nodeimpl.cpp:
72         (NodeImpl::dispatchGenericEvent): Don't do default handling for
73         events that don't bubble. Not 100% sure why this caused the big
74         slowdown but it was a somewhat arbitrary change in my earlier
75         patch.
76
77 2003-11-01  Darin Adler  <darin@apple.com>
78
79         Reviewed by John.
80
81         - fixed 3468870 -- REGRESSION (108-109): cannot upload files (<input type=file> is broken)
82
83         * kwq/KWQFileButton.mm: (KWQFileButton::filenameChanged): Pass the filename to
84         the textChanged signal. The one without a parameter is a different signal.
85
86 2003-11-01  Darin Adler  <darin@apple.com>
87
88         Reviewed by John.
89
90         - fixed 3466714 -- page with <object> tag with text subtype and no URL causes hang
91
92         * khtml/khtml_part.cpp: (KHTMLPart::requestObject): Added a check so that an empty
93         URL string doesn't get completed, and results in an empty KURL object. Also made the
94         change to allow empty URLs unconditional, because I don't think it's a WebCore-specific
95         thing on further reflection.
96
97 2003-10-31  David Hyatt  <hyatt@apple.com>
98
99         Fix for 3470489, I just forgot to commit a piece of my patch.  This has actually even
100         been reviewed by ken already.
101
102         Reviewed by kocienda
103         
104         * khtml/rendering/render_replaced.cpp:
105         (RenderWidget::eventFilter):
106
107 2003-10-31  Darin Adler  <darin@apple.com>
108
109         Reviewed by John.
110
111         - fixed 3457875 -- text disappears from fields in forms upon certain types of scrolling
112
113         * kwq/KWQTextField.mm: (-[KWQTextField control:textShouldBeginEditing:]):
114         Call releaseGState on the field editor and its clip view to prevent undesirable caching.
115
116 2003-10-31  Ken Kocienda  <kocienda@apple.com>
117
118         Reviewed by Darin
119
120         Fix for this bug:
121
122         <rdar://problem/3440719>: Read-only text field form controls 
123         do not keyboard focus and do not take part in tabbing
124
125         * kwq/KWQTextField.mm:
126         (-[KWQTextField acceptsFirstResponder]): We want our text fields
127         to accept first responder even if not editable.
128
129         Once this is fixed, this one comes along for free:
130
131         <rdar://problem/3440710>: Read-only textarea form controls should select all text when focused
132
133 2003-10-31  Darin Adler  <darin@apple.com>
134
135         Reviewed by Ken.
136
137         - fixed 3469383 -- REGRESSION (100-111): if one line is selected on this page, too much gets copied (plain text)
138
139         * khtml/khtml_part.cpp: (KHTMLPart::text): Range check the child node indices before using them
140         to get at a child node. We don't want to set startNode or endNode to nil in any case. If the end
141         node is set to nil, we end up copying the entire remainder of the page.
142
143 2003-10-31  David Hyatt  <hyatt@apple.com>
144
145         Fix for 3470007, links don't get focus on mouse down.  Fix the focus check on mouse down to actually
146         crawl up the content tree in order to find the nearest enclosing focusable node.  Also clean up and
147         fix checks that improperly blurred the link after it got focused.
148
149         Fix for 3450335, AppKit widgets not obeying their desired focus policies.  I renamed isSelectable to
150         isFocusable and then also added isMouseFocusable and isKeyboardFocusable methods.
151         
152         Reviewed by kocienda
153
154         * khtml/css/html4.css:
155         * khtml/html/html_baseimpl.cpp:
156         (HTMLFrameElementImpl::isFocusable):
157         * khtml/html/html_baseimpl.h:
158         * khtml/html/html_formimpl.cpp:
159         (HTMLGenericFormElementImpl::isFocusable):
160         (HTMLGenericFormElementImpl::isKeyboardFocusable):
161         (HTMLGenericFormElementImpl::isMouseFocusable):
162         * khtml/html/html_formimpl.h:
163         * khtml/html/html_inlineimpl.cpp:
164         (HTMLAnchorElementImpl::isFocusable):
165         * khtml/html/html_inlineimpl.h:
166         * khtml/khtmlview.cpp:
167         (KHTMLView::dispatchMouseEvent):
168         * khtml/xml/dom_docimpl.cpp:
169         (DocumentImpl::nextFocusNode):
170         (DocumentImpl::previousFocusNode):
171         * khtml/xml/dom_nodeimpl.cpp:
172         (NodeImpl::isFocusable):
173         (NodeImpl::isKeyboardFocusable):
174         (NodeImpl::isMouseFocusable):
175         * khtml/xml/dom_nodeimpl.h:
176         * kwq/KWQKHTMLPart.mm:
177         (KWQKHTMLPart::khtmlMousePressEvent):
178
179 2003-10-31  Ken Kocienda  <kocienda@apple.com>
180
181         Reviewed by David
182
183         Fix for this bug:
184
185         <rdar://problem/3470233>: solid outlines drawing incorrectly
186
187         The problem was that when I collected the array of line boxes for
188         render inlines, I put a QRect() at the start and the end of the list.
189         However, the border calculation code expected "invalid" rectangles
190         (rects with 0 for all four dimentions) in the first and last
191         positions, and the default constructor for QRect makes rects with 1,1
192         for width/height.
193
194         * khtml/rendering/render_inline.cpp:
195         (RenderInline::paintOutlines)
196
197 2003-10-31  Darin Adler  <darin@apple.com>
198
199         Reviewed by Dave.
200
201         - fixed 3464759 -- REGRESSION (100-107): Pressing on link loses mouse-down feedback almost instantly
202
203         * khtml/khtmlview.cpp: (KHTMLView::viewportMouseMoveEvent): Pass true for the "read-only"
204         flag in prepareMoveEvent to prevent us from updating :hover and :active while the mouse is down.
205
206 2003-10-31  Ken Kocienda  <kocienda@apple.com>
207
208         Reviewed by David
209
210         <rdar://problem/3468910>: REGRESSION: other than focus rings, outlines styles are broken
211
212         Outlines now draw like they used to.
213
214         * khtml/rendering/render_inline.cpp:
215         (RenderInline::paintObject): Now branches to call focus ring or "regular" outlines.
216         (RenderInline::paintFocusRing): Broke out drawing aqua focus rings into its
217         own function.
218         (RenderInline::paintOutlines): New function to draw "regular outlines.
219         (RenderInline::paintOutline): Removed code which special-cased aqua outlines.
220         * khtml/rendering/render_inline.h: Added paintOutlines declaration.
221
222 2003-10-31  David Hyatt  <hyatt@apple.com>
223
224         Fix for 3467419, highlighted text in "search in books" Amazon feature is obscured.  The
225         site is using the CSS3 opacity property.  The CSS3 Color module is far enough along now
226         that opacity can safely be used without the "-khtml-" in front of it.
227
228         Fix for 3466542, the minimum font size bug.  I am introducing a new minimum font size pref that
229         really is a hard override.
230         
231         Reviewed by gramps (opacity) and john (min font size)
232         
233         * khtml/css/cssparser.cpp:
234         (CSSParser::parseValue):
235         * khtml/css/cssproperties.c:
236         (hash_prop):
237         (findProp):
238         * khtml/css/cssproperties.h:
239         * khtml/css/cssproperties.in:
240         * khtml/css/cssstyleselector.cpp:
241         (khtml::CSSStyleSelector::applyRule):
242
243 2003-10-31  Ken Kocienda  <kocienda@apple.com>
244
245         Reviewed by Darin
246
247         Fix for this bug:
248
249         <rdar://problem/3469088>: focus not removed from text link 
250         when user hits cmd-L or clicks in window chrome
251
252         * kwq/WebCoreBridge.h:
253         * kwq/WebCoreBridge.mm:
254         (-[WebCoreBridge deselectAll]): Now clears the focus ring as well.
255         (-[WebCoreBridge deselectText]): Just clears text selection.
256
257 2003-10-31  David Hyatt  <hyatt@apple.com>
258
259         Three simple fixes:
260         
261         (1) Fix for 3463777, crash on CSS3 box model draft.  This was just a situation where a simple null-check
262         was needed for generated content.
263
264         (2) Added a != check when the old and new hover obj are the same to avoid a little bit of extra work.
265
266         (3) Removed the m_pressed member from DOM nodes and removed the calls to setPressed, since this code
267         is dead and not used by anyone.
268         
269         * khtml/khtmlview.cpp:
270         * khtml/rendering/render_layer.cpp:
271         (RenderLayer::addChild):
272         (RenderLayer::updateHoverActiveState):
273         * khtml/xml/dom_nodeimpl.cpp:
274         (NodeImpl::NodeImpl):
275         * khtml/xml/dom_nodeimpl.h:
276         (DOM::NodeImpl::hasStyle):
277         (DOM::NodeImpl::setHasStyle):
278
279 2003-10-30  David Hyatt  <hyatt@apple.com>
280
281         Fix for 3469330, the Marquee data in RenderStyle needs a copy constructor hack like all the other
282         objects do.
283
284         * khtml/rendering/render_style.cpp:
285         (direction):
286         * khtml/rendering/render_style.h:
287
288 2003-10-30  David Hyatt  <hyatt@apple.com>
289
290         Fix for 3469206, images didn't paint outlines any more.  They were bailing early because I forgot to
291         add a check for my new PaintAction.
292         
293         Reviewed by darin
294
295         * khtml/rendering/render_replaced.cpp:
296         (RenderReplaced::paint):
297
298 2003-10-30  David Hyatt  <hyatt@apple.com>
299
300         Fixes for 3469057, outlines not drawn on aintitcool.com and also for 3469178, objects with width/height of 0
301         incorrectly excluded from tabbing.
302         
303         Reviewed by darin
304
305         * khtml/html/html_formimpl.cpp:
306         (HTMLGenericFormElementImpl::isSelectable):
307         * khtml/html/html_inlineimpl.cpp:
308         (HTMLAnchorElementImpl::isSelectable):
309         * khtml/rendering/render_flow.cpp:
310         (RenderFlow::getAbsoluteRepaintRect):
311         * khtml/rendering/render_inline.cpp:
312         (RenderInline::addFocusRingRects):
313         (RenderInline::paintOutline):
314         * khtml/rendering/render_object.cpp:
315         (RenderObject::addFocusRingRects):
316         (RenderObject::getAbsoluteRepaintRectWithOutline):
317
318 2003-10-30  Maciej Stachowiak  <mjs@apple.com>
319
320         Reviewed by Darin.
321
322         - fixed 3426081 - empty cells HTMLCollection for <tr>
323         - fixed 3367598 - "length" attribute for table row "cells" always returns 0
324         
325         * khtml/dom/html_table.cpp:
326         (HTMLTableRowElement::cells): TR_CELLS, not TABLE_ROWS.
327
328 2003-10-30  David Hyatt  <hyatt@apple.com>
329
330         Fix for 3468916, outline needs its own paint action so that focus rings don't draw under other content.
331         
332         Reviewed by kocienda
333
334         * khtml/rendering/render_block.cpp:
335         (khtml::RenderBlock::paintObject):
336         (khtml::RenderBlock::paintFloats):
337         * khtml/rendering/render_image.cpp:
338         (RenderImage::paintObject):
339         * khtml/rendering/render_inline.cpp:
340         (RenderInline::paintObject):
341         * khtml/rendering/render_layer.cpp:
342         (RenderLayer::paintLayer):
343         * khtml/rendering/render_object.h:
344
345 2003-10-30  Maciej Stachowiak  <mjs@apple.com>
346
347         Fixed Dave's fix to my fix to my fix:
348
349         * khtml/html/html_imageimpl.cpp:
350         (HTMLImageElementImpl::width): Put back m_render check, consider
351         the case of image with no width/height attributes and display:none
352         set. We don't want to crash on that.
353         (HTMLImageElementImpl::height): Ditto.
354
355 2003-10-30  Ken Kocienda  <kocienda@apple.com>
356
357         Reviewed by Hyatt
358
359         Support for tabbing to links.
360
361         Fixes these bugs
362
363         <rdar://problem/3468395>: fix full keyboard access loop for buttons
364         <rdar://problem/3468397>: paint aqua focus rings around text links
365         <rdar://problem/3468406>: focused links do not activate by hitting
366            return key
367         <rdar://problem/3468410>: paintTextOutline in RenderText objects
368            should be done at a higher level
369         <rdar://problem/3468424>: improve function to determine if a node is
370            tab selectable
371         <rdar://problem/3468427>: add bridge function to access active
372            document view for a node
373         <rdar://problem/3468429>: links do not scroll into view when focusing
374         <rdar://problem/3468435>: when tabbing out of a frame, last focused
375            node is not cleared if it is a text link
376         <rdar://problem/3468436>: focus on text link does not clear when
377            clicking mouse in document body
378         <rdar://problem/3468440>: add setRect convenience to QRect
379         <rdar://problem/3468444>: elements paint their outlines even if they
380            are not visible
381         <rdar://problem/3468448>: setting focus on a node sets focus on all
382            its siblings
383         <rdar://problem/3468456>: cannot tab to form image input elements
384         <rdar://problem/3468461>: tab focus can seem to disappear from view on
385            pages with dhtml menus
386         <rdar://problem/3469021>: webcore bridge nextKeyView always starts 
387         from the beginning of the document
388
389         * WebCore-combined.exp: Export WebCoreGraphicsBridge class
390         * WebCore.exp: Ditto
391         * WebCore.pbproj/project.pbxproj: Add WebCoreGraphicsBridge class
392         * khtml/css/cssparser.cpp: 
393         (CSSParser::parseValue): border style check now take apple aqua
394         style into account
395         * khtml/css/cssvalues.in: Add -apple-aqua border value
396         * khtml/css/html4.css: Change focus, a:link:active, and a:visited:active
397         to use new -apple-aqua focus rings.
398         * khtml/html/html_formimpl.cpp:
399         (HTMLGenericFormElementImpl::isSelectable): Improve function so
400         that invisible elements are no longer considered selectable
401         * khtml/html/html_inlineimpl.cpp:
402         (HTMLAnchorElementImpl::isSelectable): Ditto.
403         (HTMLAnchorElementImpl::defaultEventHandler): Make return key
404         activate links as well as Enter.
405         * khtml/html/html_inlineimpl.h: Move isSelectable function into
406         implementation file.
407         * khtml/rendering/render_block.cpp: 
408         (khtml::RenderBlock::paintObject): Do not paint outlines if
409         content is invisible.
410         * khtml/rendering/render_flow.cpp:
411         (RenderFlow::getAbsoluteRepaintRect): Improve function to correctly
412         calculate repaint rects including outlines.
413         * khtml/rendering/render_image.cpp:
414         (RenderImage::paintObject): Do not paint outlines if
415         content is invisible.
416         * khtml/rendering/render_inline.cpp:
417         (RenderInline::paintObject): Ditto.
418         (RenderInline::addFocusRingRects): New function to gather up rects
419         to use for painting outlines.
420         (RenderInline::paintOutline): Added code to paint aqua focus rings.
421         * khtml/rendering/render_inline.h:
422         * khtml/rendering/render_object.cpp:
423         (RenderObject::drawBorder): Add case for apple aqua border style.
424         (RenderObject::addFocusRingRects): New function to gather up rects
425         to use for painting outlines.
426         (RenderObject::paintOutline): Added code to paint aqua focus rings.
427         (RenderObject::getAbsoluteRepaintRectWithOutline): Helper function
428         to calculate rectangle to use for repainting when an object has an
429         outline.
430         * khtml/rendering/render_object.h: Add addFocusRingRects declaration.
431         * khtml/rendering/render_style.h: Add APPLEAQUA to border enum
432         * khtml/rendering/render_text.cpp:
433         (RenderText::paintObject): Removed code to draw outlines.
434         * khtml/rendering/render_text.h: Ditto.
435         * khtml/xml/dom_elementimpl.cpp: Removed redundant isSelectable check.
436         * khtml/xml/dom_elementimpl.h: Ditto.
437         * khtml/xml/dom_nodeimpl.cpp:
438         (NodeImpl::isSelectable): Added.
439         (NodeBaseImpl::setFocus): Do not set focus on siblings.
440         * khtml/xml/dom_nodeimpl.h: Moved implementation to .cpp file.
441         * kwq/KWQButton.mm:
442         (-[KWQButton nextKeyView]): Send a blur before going to next
443         key view. This prevents focus from being lost altogether.
444         (-[KWQButton previousKeyView]): Ditto.
445         * kwq/KWQKHTMLPart.h: Added documentViewForNode function.
446         * kwq/KWQKHTMLPart.mm:
447         (KWQKHTMLPart::nextKeyViewInFrame): Add check for other focusables,
448         like text links.
449         (KWQKHTMLPart::nextKeyViewInFrameHierarchy): Remove focus when leaving
450         a view.
451         (KWQKHTMLPart::documentViewForNode): Added.
452         (KWQKHTMLPart::khtmlMousePressEvent): Remove focus when you click in
453         a non-focusable area, like the document body.
454         * kwq/KWQPainter.h: Added declarations.
455         * kwq/KWQPainter.mm:
456         (QPainterPrivate::QPainterPrivate): Modified constructor for new fields.
457         (QPainter::initFocusRing): Added.
458         (QPainter::addFocusRingRect): Added.
459         (QPainter::drawFocusRing): Added.
460         (QPainter::clearFocusRing): Added.
461         * kwq/KWQRect.h:
462         (QRect::setRect): Added.
463         * kwq/WebCoreBridge.h:
464         * kwq/WebCoreBridge.mm:
465         (-[WebCoreBridge nextKeyView]): Start from the currently-focused node,
466         if there is one, not unconditionally from the start of the document.
467         (-[WebCoreBridge previousKeyView]): Ditto
468         * kwq/WebCoreGraphicsBridge.h: Added.
469         * kwq/WebCoreGraphicsBridge.m: Added.
470         (+[WebCoreGraphicsBridge sharedBridge]): Added.
471         (-[WebCoreGraphicsBridge init]): Added.
472         (-[WebCoreGraphicsBridge setFocusRingStyle:radius:color:]): Added.
473
474 2003-10-30  Maciej Stachowiak  <mjs@apple.com>
475
476         Fix mistake in my last change that I did not mean to commit.
477
478         * khtml/html/html_imageimpl.cpp:
479         (HTMLImageElementImpl::width): Remove extraneous second attempt to
480         lay out.
481
482 2003-10-30  David Hyatt  <hyatt@apple.com>
483
484         Put paged-media changes back without the wrongful removal of the style data copy constructors (which
485         were necessary after all).
486         
487         * ChangeLog:
488         * khtml/css/cssstyleselector.cpp:
489         (khtml::CSSStyleSelector::applyRule):
490         * khtml/rendering/render_style.cpp:
491         (StyleInheritedData::StyleInheritedData):
492         (StyleInheritedData::operator==):
493         * khtml/rendering/render_style.h:
494         (khtml::):
495         (khtml::RenderStyle::NonInheritedFlags::operator==):
496         (khtml::RenderStyle::setBitDefaults):
497         (khtml::RenderStyle::widows):
498         (khtml::RenderStyle::orphans):
499         (khtml::RenderStyle::pageBreakInside):
500         (khtml::RenderStyle::pageBreakBefore):
501         (khtml::RenderStyle::pageBreakAfter):
502         (khtml::RenderStyle::setWidows):
503         (khtml::RenderStyle::setOrphans):
504         (khtml::RenderStyle::setPageBreakInside):
505         (khtml::RenderStyle::setPageBreakBefore):
506         (khtml::RenderStyle::setPageBreakAfter):
507
508 2003-10-30  Maciej Stachowiak  <mjs@apple.com>
509
510         Reviewed by Dave.
511
512         - fixed 3468129 - REGRESSION: FOUC occurs on Surfin' Safari
513         
514         * khtml/ecma/kjs_html.cpp:
515         (KJS::HTMLElement::getValueProperty): Don't force layout for image
516         width/height if you can determine it statically from the attribute.
517         * khtml/html/html_image.cpp:
518         (HTMLImageElementImpl::width):
519         (HTMLImageElementImpl::height):
520
521 === Safari-112 ===
522
523 2003-10-30  Ken Kocienda  <kocienda@apple.com>
524
525         Reviewed by me
526
527         Rolling out this code since it caused a big performance 
528         regression.
529
530         2003-10-29  David Hyatt  <hyatt@apple.com>
531
532                 Add the paged media properties to RenderStyle.  
533                 They aren't used yet, but they should now be
534                 parsed and interpreted correctly.
535
536         * khtml/css/cssstyleselector.cpp:
537         (khtml::CSSStyleSelector::applyRule):
538         * khtml/rendering/render_style.cpp:
539         (StyleSurroundData::StyleSurroundData):
540         (StyleBoxData::StyleBoxData):
541         (StyleBoxData::operator==):
542         (StyleVisualData::~StyleVisualData):
543         (StyleVisualData::StyleVisualData):
544         (StyleBackgroundData::StyleBackgroundData):
545         (StyleFlexibleBoxData::StyleFlexibleBoxData):
546         (opacity):
547         (textShadow):
548         (StyleInheritedData::StyleInheritedData):
549         (StyleInheritedData::~StyleInheritedData):
550         (StyleInheritedData::operator==):
551         * khtml/rendering/render_style.h:
552         (khtml::StyleBackgroundData::~StyleBackgroundData):
553         (khtml::StyleFlexibleBoxData::~StyleFlexibleBoxData):
554         (khtml::RenderStyle::NonInheritedFlags::operator==):
555         (khtml::RenderStyle::setBitDefaults):
556
557 2003-10-29  David Hyatt  <hyatt@apple.com>
558
559         Fix for 3466628, widgets in overflow blocks don't move when the overflow block is scrolled.  This
560         was a regression caused by my change to move widgets only during layout and not at paint time.  The
561         problem with this is that scrolling an overflow block doesn't do a layout, just a repaint.  I patched
562         the layer code to update widget positions on an overflow block scroll.
563
564         This then exposed a bug in absolutePosition, namely that the scroll offset was never factored in when
565         computing absolutePosition.  This bug also explains why text selection and cursor display were wrong
566         inside scrolled overflow blocks.
567         
568         Reviewed by mjs
569
570         * khtml/rendering/render_box.cpp:
571         (RenderBox::absolutePosition):
572         * khtml/rendering/render_layer.cpp:
573         (RenderLayer::scrollToOffset):
574         * khtml/rendering/render_object.cpp:
575         (RenderObject::absolutePosition):
576         * khtml/rendering/render_text.cpp:
577         (RenderText::cursorPos):
578         (RenderText::posOfChar):
579         * khtml/rendering/render_text.h:
580
581 2003-10-29  Maciej Stachowiak  <mjs@apple.com>
582
583         Reviewed by Dave.
584
585         - fixed 3467499 - REGRESSION: onClick handlers on links don't work (bubbling broken)
586         
587         * khtml/xml/dom2_eventsimpl.cpp:
588         (EventImpl::EventImpl): Initialize m_cancelBubble (duh).
589
590 2003-10-29  David Hyatt  <hyatt@apple.com>
591
592         Fix for 3466802.  When breaking on a newline, "pre" is determined by checking the actual object that
593         the line broke on, and not by simply checking the "pre" status of the containing block.
594         
595         Reviewed by mjs
596
597         * khtml/rendering/bidi.cpp:
598         (khtml::RenderBlock::layoutInlineChildren):
599
600 2003-10-29  David Hyatt  <hyatt@apple.com>
601
602         Add the paged media properties to RenderStyle.  They aren't used yet, but they should now be 
603         parsed and interpreted correctly.
604         
605         Reviewed by kocienda
606
607         * khtml/css/cssstyleselector.cpp:
608         (khtml::CSSStyleSelector::applyRule):
609         * khtml/rendering/render_style.cpp:
610         (StyleBoxData::operator==):
611         (StyleFlexibleBoxData::StyleFlexibleBoxData):
612         (:opacity):
613         (:textShadow):
614         (StyleInheritedData::StyleInheritedData):
615         (StyleInheritedData::operator==):
616         * khtml/rendering/render_style.h:
617         (khtml::):
618         (khtml::RenderStyle::NonInheritedFlags::operator==):
619         (khtml::RenderStyle::setBitDefaults):
620         (khtml::RenderStyle::widows):
621         (khtml::RenderStyle::orphans):
622         (khtml::RenderStyle::pageBreakInside):
623         (khtml::RenderStyle::pageBreakBefore):
624         (khtml::RenderStyle::pageBreakAfter):
625         (khtml::RenderStyle::setWidows):
626         (khtml::RenderStyle::setOrphans):
627         (khtml::RenderStyle::setPageBreakInside):
628         (khtml::RenderStyle::setPageBreakBefore):
629         (khtml::RenderStyle::setPageBreakAfter):
630
631 2003-10-29  David Hyatt  <hyatt@apple.com>
632
633         Reviewed by NOBODY (OOPS!).
634
635         * khtml/css/cssstyleselector.cpp:
636         (khtml::CSSStyleSelector::applyRule):
637         * khtml/rendering/render_style.cpp:
638         (StyleBoxData::operator==):
639         (StyleFlexibleBoxData::StyleFlexibleBoxData):
640         (:opacity):
641         (:textShadow):
642         (StyleInheritedData::StyleInheritedData):
643         (StyleInheritedData::operator==):
644         * khtml/rendering/render_style.h:
645         (khtml::):
646         (khtml::RenderStyle::NonInheritedFlags::operator==):
647         (khtml::RenderStyle::setBitDefaults):
648         (khtml::RenderStyle::widows):
649         (khtml::RenderStyle::orphans):
650         (khtml::RenderStyle::pageBreakInside):
651         (khtml::RenderStyle::pageBreakBefore):
652         (khtml::RenderStyle::pageBreakAfter):
653         (khtml::RenderStyle::setWidows):
654         (khtml::RenderStyle::setOrphans):
655         (khtml::RenderStyle::setPageBreakInside):
656         (khtml::RenderStyle::setPageBreakBefore):
657         (khtml::RenderStyle::setPageBreakAfter):
658
659 2003-10-29  David Hyatt  <hyatt@apple.com>
660
661         Refine the fix to updateLayout.
662         updateStyleSelector would get called over and over again when you queried for layout properties from
663         JS.  If no stylesheets are pending, this isn't necessary (and is quite expensive, since updateStyleSelector
664         is a slow function).
665         
666         Reviewed by darin
667
668         * khtml/xml/dom_docimpl.cpp:
669         (DocumentImpl::updateLayout):
670
671 2003-10-29  David Hyatt  <hyatt@apple.com>
672
673         Fix crasher in border collapsing code.
674         
675         Reviewed by kocienda
676
677         * khtml/rendering/render_table.cpp:
678         (RenderTable::cellRight):
679
680 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
681
682         Reviewed by Darin.
683
684         - fixed 3163842 - Citibank cardmember central DHTML menus not working right in Safari
685         
686         * khtml/ecma/kjs_html.cpp:
687         (KJS::HTMLElement::getValueProperty): update layout before fetching image properties
688         that need it.
689         * khtml/xml/dom_docimpl.cpp:
690         (DocumentImpl::DocumentImpl): Initialize m_ignorePendingStylesheets to false.
691         (DocumentImpl::updateLayout): Ignore pending stylesheets - when JS demands a
692         layout, it wants a real one now.
693         (DocumentImpl::updateStyleSelector): Go ahead with the update if we're ignoring
694         pending stylesheets.
695         * khtml/xml/dom_docimpl.h:
696         (DOM::DocumentImpl::haveStylesheetsLoaded): Pretend stylesheets have loaded if
697         we're temporarily ignoring pending stylesheets.
698
699 2003-10-29  David Hyatt  <hyatt@apple.com>
700
701         Implement support for <marquee>.  This includes support for the CSS3 specification (although modified a fair
702         bit to actually be compatible with WinIE's version and to correct obvious errors in the draft).  All of the
703         marquee behaviors (slide, scroll, and alternate) are supported.
704
705         This patch also fixes the following bugs that were discovered while testing marquee:
706         (1) An error in the computation of scrollWidth and scrollHeight.  
707         (2) The ability to ask for the leftmostPosition as well as the rightmostPosition of content and to
708         be able to ask for the positions of children (via left/right/lowest) without including the parent in the
709         computation.
710         (3) An optimization to RenderFlow's rightmost/lowestPosition functions to avoid examining text elements since
711         they are always fully accounted for by either overflow or by inline flow boxes.
712         (4) A fix for RTL rendering.  A block with direction:RTL was being placed on the right, when in reality only
713         its children should be placed on the right.
714         (5) A fix to prevent inline blocks and tables from computing auto margins (making them just like floats in this
715         regard).
716         
717         Reviewed by darin
718
719         * khtml/css/cssparser.cpp:
720         (validUnit):
721         (CSSParser::parseValue):
722         * khtml/css/cssproperties.c:
723         (hash_prop):
724         (findProp):
725         * khtml/css/cssproperties.h:
726         * khtml/css/cssproperties.in:
727         * khtml/css/cssstyleselector.cpp:
728         (khtml::convertToLength):
729         (khtml::CSSStyleSelector::applyRule):
730         * khtml/css/cssvalues.c:
731         (hash_val):
732         (findValue):
733         * khtml/css/cssvalues.h:
734         * khtml/css/cssvalues.in:
735         * khtml/css/html4.css:
736         * khtml/html/html_blockimpl.cpp:
737         (HTMLMarqueeElementImpl::HTMLMarqueeElementImpl):
738         (HTMLMarqueeElementImpl::id):
739         (HTMLMarqueeElementImpl::parseAttribute):
740         * khtml/html/html_blockimpl.h:
741         (DOM::HTMLMarqueeElementImpl::minimumDelay):
742         * khtml/html/htmlparser.cpp:
743         (KHTMLParser::getElement):
744         * khtml/misc/htmlattrs.c:
745         (hash_attr):
746         (findAttr):
747         * khtml/misc/htmlattrs.h:
748         * khtml/misc/htmlattrs.in:
749         * khtml/rendering/bidi.cpp:
750         (khtml::RenderBlock::findNextLineBreak):
751         * khtml/rendering/render_block.cpp:
752         (khtml::RenderBlock::lowestPosition):
753         (khtml::RenderBlock::rightmostPosition):
754         (khtml::RenderBlock::leftmostPosition):
755         * khtml/rendering/render_block.h:
756         * khtml/rendering/render_box.cpp:
757         (RenderBox::setStyle):
758         (RenderBox::calcWidth):
759         (RenderBox::calcHorizontalMargins):
760         (RenderBox::lowestPosition):
761         (RenderBox::rightmostPosition):
762         (RenderBox::leftmostPosition):
763         * khtml/rendering/render_box.h:
764         * khtml/rendering/render_flow.cpp:
765         (RenderFlow::lowestPosition):
766         (RenderFlow::rightmostPosition):
767         (RenderFlow::leftmostPosition):
768         * khtml/rendering/render_flow.h:
769         * khtml/rendering/render_layer.cpp:
770         (RenderLayer::RenderLayer):
771         (RenderLayer::~RenderLayer):
772         (RenderLayer::updateLayerPositions):
773         (RenderLayer::scrollToOffset):
774         (RenderLayer::computeScrollDimensions):
775         (RenderLayer::styleChanged):
776         (RenderLayer::stopMarquees):
777         (m_whiteSpace):
778         (Marquee::marqueeSpeed):
779         (Marquee::direction):
780         (Marquee::isHorizontal):
781         (Marquee::computePosition):
782         (Marquee::start):
783         (Marquee::stop):
784         (Marquee::updateMarqueePosition):
785         (Marquee::updateMarqueeStyle):
786         (Marquee::timerEvent):
787         * khtml/rendering/render_layer.h:
788         (khtml::):
789         (khtml::RenderLayer::marquee):
790         * khtml/rendering/render_object.cpp:
791         (RenderObject::isHTMLMarquee):
792         (RenderObject::sizesToMaxWidth):
793         * khtml/rendering/render_object.h:
794         (khtml::RenderObject::lowestPosition):
795         (khtml::RenderObject::rightmostPosition):
796         (khtml::RenderObject::leftmostPosition):
797         * khtml/rendering/render_style.cpp:
798         (StyleMarqueeData::StyleMarqueeData):
799         (StyleMarqueeData::operator==):
800         (opacity):
801         (marquee):
802         (StyleCSS3NonInheritedData::operator==):
803         (RenderStyle::RenderStyle):
804         * khtml/rendering/render_style.h:
805         (khtml::):
806         (khtml::StyleMarqueeData::operator!=):
807         (khtml::RenderStyle::marqueeIncrement):
808         (khtml::RenderStyle::marqueeSpeed):
809         (khtml::RenderStyle::marqueeLoopCount):
810         (khtml::RenderStyle::marqueeBehavior):
811         (khtml::RenderStyle::marqueeDirection):
812         (khtml::RenderStyle::setMarqueeIncrement):
813         (khtml::RenderStyle::setMarqueeSpeed):
814         (khtml::RenderStyle::setMarqueeDirection):
815         (khtml::RenderStyle::setMarqueeBehavior):
816         (khtml::RenderStyle::setMarqueeLoopCount):
817         * khtml/xml/dom_docimpl.cpp:
818         (DocumentImpl::createHTMLElement):
819         * kwq/KWQKHTMLPart.mm:
820         (KWQKHTMLPart::clearTimers):
821
822 2003-10-29  David Hyatt  <hyatt@apple.com>
823
824         Make <button> be an inline-block.
825         
826         * khtml/css/html4.css:
827
828 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
829
830         Reviewed by Darin.
831
832          - fixed 3465547 - REGRESSION (100-111)?: window.prompt does not work
833         
834         * kwq/KWQKHTMLPart.mm:
835         (KWQKHTMLPart::runJavaScriptPrompt): Return the result properly
836         instead of always returning false.
837
838 2003-10-28  Darin Adler  <darin@apple.com>
839
840         Reviewed by Maciej.
841
842         - fixed 3465504 -- REGRESSION (100-111): text areas with Chinese text in them are wider than ones without
843
844         * kwq/KWQTextArea.h: Add _font field.
845         * kwq/KWQTextArea.mm:
846         (-[KWQTextArea dealloc]): Release _font.
847         (-[KWQTextArea setFont:]): Store font in _font as well as setting it in the text view.
848         (-[KWQTextArea sizeWithColumns:rows:]): Use _font rather than asking the text view for the font.
849
850 2003-10-28  Darin Adler  <darin@apple.com>
851
852         Reviewed by Maciej.
853
854         - fixed 3464702 -- node.item(x) is not implemented (dynamic menus not filled out at techcu.com)
855
856         * khtml/ecma/kjs_dom.cpp: (DOMNodeProtoFunc::tryCall): Add implementation of item function.
857         * khtml/ecma/kjs_dom.h: Added Item to the enum.
858         * khtml/ecma/kjs_dom.lut.h: Regenerated.
859
860 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
861
862         Reviewed by Dave,
863
864         - fixed 3379725 - for <a> elements with both onclick and href, Web Kit's behavior does not match other browsers
865
866         The fix for this was to make cancelBubble only prevent bubbling,
867         but not stop propagation or prevent default. While I was at it, I
868         made returnValue work right too.
869         
870         * khtml/ecma/kjs_events.cpp:
871         (DOMEvent::getValueProperty): Implement cancelBubble and returnValue properties properly.
872         (DOMEvent::putValue): Ditto.
873         * khtml/dom/dom2_events.cpp:
874         (Event::setCancelBubble): Call impl.
875         (Event::setDefaultPrevented): Ditto.
876         (Event::getCancelBubble): Ditto.
877         (Event::defaultPrevented): Ditto.
878         * khtml/dom/dom2_events.h:
879         * khtml/xml/dom2_eventsimpl.h:
880         (DOM::EventImpl::propagationStopped): Made this a const method.
881         (DOM::EventImpl::defaultPrevented): Ditto.
882         (DOM::EventImpl::setCancelBubble): Implemented by setting a new field.
883         (DOM::EventImpl::getCancelBubble): Corresponding getter.
884         (DOM::EventImpl::setDefaultPrevented): Set the already existing field for this.
885         * khtml/xml/dom_nodeimpl.cpp:
886         (NodeImpl::dispatchGenericEvent): Check getCancelBubble() when bubbling. Do not
887         check bubbles() before default handling.
888
889 2003-10-28  Chris Blumenberg  <cblu@apple.com>
890
891         Fixed: <rdar://problem/3464472>: REGRESSION: New CSS cursor support breaks style="cursor:default
892
893         Reviewed by dave.
894
895         * kwq/KWQWidget.mm:
896         (QWidget::cursor): break after we hit a view that responds to documentCursor as we do in setCursor. Without breaking we were returning the cursor of the most super HTML view which is not what we want.
897
898 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
899
900         Reviewed by John.
901
902         - fixed 3421393 - window.open does not handle non-integral height/width (small window at saabusa.com)
903         
904         * khtml/ecma/kjs_window.cpp:
905         (WindowFunc::tryCall): Parse width, height, top and left as
906         floating point and then cast to int instead of parsing as int to
907         match other browsers and avoid rejecting floating point numbers.
908
909 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
910
911         Reviewed by John.
912
913         - fixed 3464528 - addEventListener does not work for buttons, text areas, or inputs
914
915         * khtml/rendering/render_form.cpp:
916         (RenderFormElement::slotClicked): Send CLICK_EVENT as well as one
917         of KHTML_CLICK_EVENT or KHTML_DOUBLE_CLICK_EVENT.
918
919 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
920
921         Fixed broken build.
922
923         * kwq/KWQKPartsPart.mm:
924         (KParts::ReadOnlyPart::setName): It's a ReadOnlyPart method, not a Part method.
925
926 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
927
928         Reviewed by John.
929
930         - fixed 3427046 - href and src attributes don't always give resolved URL
931
932         It turns out that all href and src attributes should be resolved
933         against the base, except for frame elements.
934         
935         * khtml/dom/html_base.cpp:
936         (HTMLIFrameElement::src): Resolve against base URL.
937         * khtml/dom/html_form.cpp:
938         (HTMLInputElement::src): Resolve URL even when empty. Remove
939         comment questioning resolution against base - it's definitely
940         right.
941         * khtml/dom/html_head.cpp:
942         (HTMLBaseElement::href): Resolve against base URL.
943         (HTMLLinkElement::href): Ditto.
944         (HTMLScriptElement::src): Ditto.
945         * khtml/dom/html_image.cpp:
946         (HTMLAreaElement::href): Ditto.
947         (HTMLImageElement::src): Resolve URL even when empty. Remove
948         comment questioning resolution against base - it's definitely
949         right.
950         * khtml/dom/html_inline.cpp:
951         (HTMLAnchorElement::href): Resolve against base URL.
952
953 2003-10-27  Maciej Stachowiak  <mjs@apple.com>
954
955         Reviewed by Darin.
956
957         - fixed 3083264 - frame names changed by JavaScript are not reflected in WebFrame at the WebKit level
958         
959         * kwq/KWQKHTMLPart.h:
960         * kwq/KWQKHTMLPart.mm:
961         (KWQKHTMLPart::setName): Make sure the name is unique. Then tell
962         the bridge and the superclass about it.
963         * kwq/KWQKPartsPart.h:
964         (KParts::ReadOnlyPart::setName): Made this method virtual.
965         * kwq/KWQKPartsPart.m: Added. Moved implementations of virtual methods here.
966         * kwq/WebCoreBridge.h:
967         * kwq/WebCoreBridge.mm:
968         (-[WebCoreBridge setName:]): Call the superclass method to avid
969         sending the name pointlessly back across the bridge.
970
971 2003-10-28  Darin Adler  <darin@apple.com>
972
973         Reviewed by John.
974
975         - fixed 3465063 -- REGRESSION (107-108): hang when fetching a page with an ad in a subframe (theage.com.au)
976
977         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::openURL): Follow the parent chain properly rather
978         than repeatedly getting the part's own parent!
979
980 2003-10-27  Maciej Stachowiak  <mjs@apple.com>
981
982         Reviewed by Darin.
983
984         Improved exception blocking in the following ways:
985
986         - use C++ constructors and destructors so returning or breaking out of an exception block works
987         - Remove use of volatile
988         - Collapse the caught exception case into a single function call to reduce code size.
989
990         * WebCore.pbproj/project.pbxproj:
991         * kwq/KWQButton.mm:
992         * kwq/KWQCheckBox.mm:
993         * kwq/KWQComboBox.mm:
994         * kwq/KWQExceptions.h:
995         * kwq/KWQExceptions.mm: Added.
996         * kwq/KWQFileButton.mm:
997         * kwq/KWQFont.mm:
998         * kwq/KWQFrame.mm:
999         * kwq/KWQKConfigBase.mm:
1000         * kwq/KWQKCookieJar.mm:
1001         * kwq/KWQKCursor.mm:
1002         * kwq/KWQKHTMLPart.mm:
1003         * kwq/KWQKHTMLPartBrowserExtension.mm:
1004         * kwq/KWQKHistoryProvider.mm:
1005         * kwq/KWQKJavaAppletWidget.mm:
1006         * kwq/KWQKJobClasses.mm:
1007         * kwq/KWQKLocale.mm:
1008         * kwq/KWQKPartsBrowserInterface.mm:
1009         * kwq/KWQLineEdit.mm:
1010         * kwq/KWQListBox.mm:
1011         * kwq/KWQLoader.mm:
1012         * kwq/KWQPainter.mm:
1013         * kwq/KWQPushButton.mm:
1014         * kwq/KWQRadioButton.mm:
1015         * kwq/KWQScrollBar.mm:
1016         * kwq/KWQScrollView.mm:
1017         * kwq/KWQTextEdit.mm:
1018         * kwq/KWQWidget.mm:
1019         
1020 2003-10-26  Darin Adler  <darin@apple.com>
1021
1022         * khtml/khtml_part.cpp: (findWordBoundary): Fix small mistake from NULL check-in earlier.
1023
1024 2003-10-26  Darin Adler  <darin@apple.com>
1025
1026         * kwq/KWQLoader.mm: (KWQResponseMIMEType): Removed an excess volatile.
1027
1028 2003-10-26  Darin Adler  <darin@apple.com>
1029
1030         Reviewed by Maciej.
1031
1032         - fixed 3463624 -- page at cinemakorea.com shows up blank due to kTECBufferBelowMinimumSizeErr from TEC
1033
1034         * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertOneChunkUsingTEC): To work around the bug
1035         I found in the decoder (Radar 3351093), change kTECBufferBelowMinimumSizeErr to
1036         kTECOutputBufferFullStatus in cases where bytes were actually converted.
1037
1038 2003-10-26  Darin Adler  <darin@apple.com>
1039
1040         Reviewed by Maciej.
1041
1042         - fixed 3463586 -- WebCore does not compile with new definition of NULL
1043
1044         * khtml/khtml_part.cpp: (findWordBoundary): Changed NULL to 0 and did a little code
1045         cleanup of the surrounding code.
1046         * khtml/rendering/break_lines.cpp: (khtml::isBreakable): Changed NULL to 0 and did
1047         a tiny bit of cleanup.
1048
1049         * WebCorePrefix.h: Add a definition of NULL here that takes advantage of the GNU
1050         __null feature even if the system C library doesn't.
1051
1052 2003-10-26  Darin Adler  <darin@apple.com>
1053
1054         Reviewed by Maciej.
1055
1056         - fixed 3457831 -- REGRESSION: copying particular text and pasting (plain) produces lots of extra text
1057
1058         * khtml/khtml_part.cpp: (KHTMLPart::text): Check for the end node when following a
1059         link to the parent node, not just when following a link to the next child node.
1060         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::attributedString): Ditto.
1061
1062 == Rolled over to ChangeLog-2003-10-25 ==