Refine the fix to updateLayout.
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2003-10-29  David Hyatt  <hyatt@apple.com>
2
3         Refine the fix to updateLayout.
4         updateStyleSelector would get called over and over again when you queried for layout properties from
5         JS.  If no stylesheets are pending, this isn't necessary (and is quite expensive, since updateStyleSelector
6         is a slow function).
7         
8         Reviewed by darin
9
10         * khtml/xml/dom_docimpl.cpp:
11         (DocumentImpl::updateLayout):
12
13 2003-10-29  David Hyatt  <hyatt@apple.com>
14
15         Fix crasher in border collapsing code.
16         
17         Reviewed by kocienda
18
19         * khtml/rendering/render_table.cpp:
20         (RenderTable::cellRight):
21
22 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
23
24         Reviewed by Darin.
25
26         - fixed 3163842 - Citibank cardmember central DHTML menus not working right in Safari
27         
28         * khtml/ecma/kjs_html.cpp:
29         (KJS::HTMLElement::getValueProperty): update layout before fetching image properties
30         that need it.
31         * khtml/xml/dom_docimpl.cpp:
32         (DocumentImpl::DocumentImpl): Initialize m_ignorePendingStylesheets to false.
33         (DocumentImpl::updateLayout): Ignore pending stylesheets - when JS demands a
34         layout, it wants a real one now.
35         (DocumentImpl::updateStyleSelector): Go ahead with the update if we're ignoring
36         pending stylesheets.
37         * khtml/xml/dom_docimpl.h:
38         (DOM::DocumentImpl::haveStylesheetsLoaded): Pretend stylesheets have loaded if
39         we're temporarily ignoring pending stylesheets.
40
41 2003-10-29  David Hyatt  <hyatt@apple.com>
42
43         Implement support for <marquee>.  This includes support for the CSS3 specification (although modified a fair
44         bit to actually be compatible with WinIE's version and to correct obvious errors in the draft).  All of the
45         marquee behaviors (slide, scroll, and alternate) are supported.
46
47         This patch also fixes the following bugs that were discovered while testing marquee:
48         (1) An error in the computation of scrollWidth and scrollHeight.  
49         (2) The ability to ask for the leftmostPosition as well as the rightmostPosition of content and to
50         be able to ask for the positions of children (via left/right/lowest) without including the parent in the
51         computation.
52         (3) An optimization to RenderFlow's rightmost/lowestPosition functions to avoid examining text elements since
53         they are always fully accounted for by either overflow or by inline flow boxes.
54         (4) A fix for RTL rendering.  A block with direction:RTL was being placed on the right, when in reality only
55         its children should be placed on the right.
56         (5) A fix to prevent inline blocks and tables from computing auto margins (making them just like floats in this
57         regard).
58         
59         Reviewed by darin
60
61         * khtml/css/cssparser.cpp:
62         (validUnit):
63         (CSSParser::parseValue):
64         * khtml/css/cssproperties.c:
65         (hash_prop):
66         (findProp):
67         * khtml/css/cssproperties.h:
68         * khtml/css/cssproperties.in:
69         * khtml/css/cssstyleselector.cpp:
70         (khtml::convertToLength):
71         (khtml::CSSStyleSelector::applyRule):
72         * khtml/css/cssvalues.c:
73         (hash_val):
74         (findValue):
75         * khtml/css/cssvalues.h:
76         * khtml/css/cssvalues.in:
77         * khtml/css/html4.css:
78         * khtml/html/html_blockimpl.cpp:
79         (HTMLMarqueeElementImpl::HTMLMarqueeElementImpl):
80         (HTMLMarqueeElementImpl::id):
81         (HTMLMarqueeElementImpl::parseAttribute):
82         * khtml/html/html_blockimpl.h:
83         (DOM::HTMLMarqueeElementImpl::minimumDelay):
84         * khtml/html/htmlparser.cpp:
85         (KHTMLParser::getElement):
86         * khtml/misc/htmlattrs.c:
87         (hash_attr):
88         (findAttr):
89         * khtml/misc/htmlattrs.h:
90         * khtml/misc/htmlattrs.in:
91         * khtml/rendering/bidi.cpp:
92         (khtml::RenderBlock::findNextLineBreak):
93         * khtml/rendering/render_block.cpp:
94         (khtml::RenderBlock::lowestPosition):
95         (khtml::RenderBlock::rightmostPosition):
96         (khtml::RenderBlock::leftmostPosition):
97         * khtml/rendering/render_block.h:
98         * khtml/rendering/render_box.cpp:
99         (RenderBox::setStyle):
100         (RenderBox::calcWidth):
101         (RenderBox::calcHorizontalMargins):
102         (RenderBox::lowestPosition):
103         (RenderBox::rightmostPosition):
104         (RenderBox::leftmostPosition):
105         * khtml/rendering/render_box.h:
106         * khtml/rendering/render_flow.cpp:
107         (RenderFlow::lowestPosition):
108         (RenderFlow::rightmostPosition):
109         (RenderFlow::leftmostPosition):
110         * khtml/rendering/render_flow.h:
111         * khtml/rendering/render_layer.cpp:
112         (RenderLayer::RenderLayer):
113         (RenderLayer::~RenderLayer):
114         (RenderLayer::updateLayerPositions):
115         (RenderLayer::scrollToOffset):
116         (RenderLayer::computeScrollDimensions):
117         (RenderLayer::styleChanged):
118         (RenderLayer::stopMarquees):
119         (m_whiteSpace):
120         (Marquee::marqueeSpeed):
121         (Marquee::direction):
122         (Marquee::isHorizontal):
123         (Marquee::computePosition):
124         (Marquee::start):
125         (Marquee::stop):
126         (Marquee::updateMarqueePosition):
127         (Marquee::updateMarqueeStyle):
128         (Marquee::timerEvent):
129         * khtml/rendering/render_layer.h:
130         (khtml::):
131         (khtml::RenderLayer::marquee):
132         * khtml/rendering/render_object.cpp:
133         (RenderObject::isHTMLMarquee):
134         (RenderObject::sizesToMaxWidth):
135         * khtml/rendering/render_object.h:
136         (khtml::RenderObject::lowestPosition):
137         (khtml::RenderObject::rightmostPosition):
138         (khtml::RenderObject::leftmostPosition):
139         * khtml/rendering/render_style.cpp:
140         (StyleMarqueeData::StyleMarqueeData):
141         (StyleMarqueeData::operator==):
142         (opacity):
143         (marquee):
144         (StyleCSS3NonInheritedData::operator==):
145         (RenderStyle::RenderStyle):
146         * khtml/rendering/render_style.h:
147         (khtml::):
148         (khtml::StyleMarqueeData::operator!=):
149         (khtml::RenderStyle::marqueeIncrement):
150         (khtml::RenderStyle::marqueeSpeed):
151         (khtml::RenderStyle::marqueeLoopCount):
152         (khtml::RenderStyle::marqueeBehavior):
153         (khtml::RenderStyle::marqueeDirection):
154         (khtml::RenderStyle::setMarqueeIncrement):
155         (khtml::RenderStyle::setMarqueeSpeed):
156         (khtml::RenderStyle::setMarqueeDirection):
157         (khtml::RenderStyle::setMarqueeBehavior):
158         (khtml::RenderStyle::setMarqueeLoopCount):
159         * khtml/xml/dom_docimpl.cpp:
160         (DocumentImpl::createHTMLElement):
161         * kwq/KWQKHTMLPart.mm:
162         (KWQKHTMLPart::clearTimers):
163
164 2003-10-29  David Hyatt  <hyatt@apple.com>
165
166         Make <button> be an inline-block.
167         
168         * khtml/css/html4.css:
169
170 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
171
172         Reviewed by Darin.
173
174          - fixed 3465547 - REGRESSION (100-111)?: window.prompt does not work
175         
176         * kwq/KWQKHTMLPart.mm:
177         (KWQKHTMLPart::runJavaScriptPrompt): Return the result properly
178         instead of always returning false.
179
180 2003-10-28  Darin Adler  <darin@apple.com>
181
182         Reviewed by Maciej.
183
184         - fixed 3465504 -- REGRESSION (100-111): text areas with Chinese text in them are wider than ones without
185
186         * kwq/KWQTextArea.h: Add _font field.
187         * kwq/KWQTextArea.mm:
188         (-[KWQTextArea dealloc]): Release _font.
189         (-[KWQTextArea setFont:]): Store font in _font as well as setting it in the text view.
190         (-[KWQTextArea sizeWithColumns:rows:]): Use _font rather than asking the text view for the font.
191
192 2003-10-28  Darin Adler  <darin@apple.com>
193
194         Reviewed by Maciej.
195
196         - fixed 3464702 -- node.item(x) is not implemented (dynamic menus not filled out at techcu.com)
197
198         * khtml/ecma/kjs_dom.cpp: (DOMNodeProtoFunc::tryCall): Add implementation of item function.
199         * khtml/ecma/kjs_dom.h: Added Item to the enum.
200         * khtml/ecma/kjs_dom.lut.h: Regenerated.
201
202 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
203
204         Reviewed by Dave,
205
206         - fixed 3379725 - for <a> elements with both onclick and href, Web Kit's behavior does not match other browsers
207
208         The fix for this was to make cancelBubble only prevent bubbling,
209         but not stop propagation or prevent default. While I was at it, I
210         made returnValue work right too.
211         
212         * khtml/ecma/kjs_events.cpp:
213         (DOMEvent::getValueProperty): Implement cancelBubble and returnValue properties properly.
214         (DOMEvent::putValue): Ditto.
215         * khtml/dom/dom2_events.cpp:
216         (Event::setCancelBubble): Call impl.
217         (Event::setDefaultPrevented): Ditto.
218         (Event::getCancelBubble): Ditto.
219         (Event::defaultPrevented): Ditto.
220         * khtml/dom/dom2_events.h:
221         * khtml/xml/dom2_eventsimpl.h:
222         (DOM::EventImpl::propagationStopped): Made this a const method.
223         (DOM::EventImpl::defaultPrevented): Ditto.
224         (DOM::EventImpl::setCancelBubble): Implemented by setting a new field.
225         (DOM::EventImpl::getCancelBubble): Corresponding getter.
226         (DOM::EventImpl::setDefaultPrevented): Set the already existing field for this.
227         * khtml/xml/dom_nodeimpl.cpp:
228         (NodeImpl::dispatchGenericEvent): Check getCancelBubble() when bubbling. Do not
229         check bubbles() before default handling.
230
231 2003-10-28  Chris Blumenberg  <cblu@apple.com>
232
233         Fixed: <rdar://problem/3464472>: REGRESSION: New CSS cursor support breaks style="cursor:default
234
235         Reviewed by dave.
236
237         * kwq/KWQWidget.mm:
238         (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.
239
240 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
241
242         Reviewed by John.
243
244         - fixed 3421393 - window.open does not handle non-integral height/width (small window at saabusa.com)
245         
246         * khtml/ecma/kjs_window.cpp:
247         (WindowFunc::tryCall): Parse width, height, top and left as
248         floating point and then cast to int instead of parsing as int to
249         match other browsers and avoid rejecting floating point numbers.
250
251 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
252
253         Reviewed by John.
254
255         - fixed 3464528 - addEventListener does not work for buttons, text areas, or inputs
256
257         * khtml/rendering/render_form.cpp:
258         (RenderFormElement::slotClicked): Send CLICK_EVENT as well as one
259         of KHTML_CLICK_EVENT or KHTML_DOUBLE_CLICK_EVENT.
260
261 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
262
263         Fixed broken build.
264
265         * kwq/KWQKPartsPart.mm:
266         (KParts::ReadOnlyPart::setName): It's a ReadOnlyPart method, not a Part method.
267
268 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
269
270         Reviewed by John.
271
272         - fixed 3427046 - href and src attributes don't always give resolved URL
273
274         It turns out that all href and src attributes should be resolved
275         against the base, except for frame elements.
276         
277         * khtml/dom/html_base.cpp:
278         (HTMLIFrameElement::src): Resolve against base URL.
279         * khtml/dom/html_form.cpp:
280         (HTMLInputElement::src): Resolve URL even when empty. Remove
281         comment questioning resolution against base - it's definitely
282         right.
283         * khtml/dom/html_head.cpp:
284         (HTMLBaseElement::href): Resolve against base URL.
285         (HTMLLinkElement::href): Ditto.
286         (HTMLScriptElement::src): Ditto.
287         * khtml/dom/html_image.cpp:
288         (HTMLAreaElement::href): Ditto.
289         (HTMLImageElement::src): Resolve URL even when empty. Remove
290         comment questioning resolution against base - it's definitely
291         right.
292         * khtml/dom/html_inline.cpp:
293         (HTMLAnchorElement::href): Resolve against base URL.
294
295 2003-10-27  Maciej Stachowiak  <mjs@apple.com>
296
297         Reviewed by Darin.
298
299         - fixed 3083264 - frame names changed by JavaScript are not reflected in WebFrame at the WebKit level
300         
301         * kwq/KWQKHTMLPart.h:
302         * kwq/KWQKHTMLPart.mm:
303         (KWQKHTMLPart::setName): Make sure the name is unique. Then tell
304         the bridge and the superclass about it.
305         * kwq/KWQKPartsPart.h:
306         (KParts::ReadOnlyPart::setName): Made this method virtual.
307         * kwq/KWQKPartsPart.m: Added. Moved implementations of virtual methods here.
308         * kwq/WebCoreBridge.h:
309         * kwq/WebCoreBridge.mm:
310         (-[WebCoreBridge setName:]): Call the superclass method to avid
311         sending the name pointlessly back across the bridge.
312
313 2003-10-28  Darin Adler  <darin@apple.com>
314
315         Reviewed by John.
316
317         - fixed 3465063 -- REGRESSION (107-108): hang when fetching a page with an ad in a subframe (theage.com.au)
318
319         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::openURL): Follow the parent chain properly rather
320         than repeatedly getting the part's own parent!
321
322 2003-10-27  Maciej Stachowiak  <mjs@apple.com>
323
324         Reviewed by Darin.
325
326         Improved exception blocking in the following ways:
327
328         - use C++ constructors and destructors so returning or breaking out of an exception block works
329         - Remove use of volatile
330         - Collapse the caught exception case into a single function call to reduce code size.
331
332         * WebCore.pbproj/project.pbxproj:
333         * kwq/KWQButton.mm:
334         * kwq/KWQCheckBox.mm:
335         * kwq/KWQComboBox.mm:
336         * kwq/KWQExceptions.h:
337         * kwq/KWQExceptions.mm: Added.
338         * kwq/KWQFileButton.mm:
339         * kwq/KWQFont.mm:
340         * kwq/KWQFrame.mm:
341         * kwq/KWQKConfigBase.mm:
342         * kwq/KWQKCookieJar.mm:
343         * kwq/KWQKCursor.mm:
344         * kwq/KWQKHTMLPart.mm:
345         * kwq/KWQKHTMLPartBrowserExtension.mm:
346         * kwq/KWQKHistoryProvider.mm:
347         * kwq/KWQKJavaAppletWidget.mm:
348         * kwq/KWQKJobClasses.mm:
349         * kwq/KWQKLocale.mm:
350         * kwq/KWQKPartsBrowserInterface.mm:
351         * kwq/KWQLineEdit.mm:
352         * kwq/KWQListBox.mm:
353         * kwq/KWQLoader.mm:
354         * kwq/KWQPainter.mm:
355         * kwq/KWQPushButton.mm:
356         * kwq/KWQRadioButton.mm:
357         * kwq/KWQScrollBar.mm:
358         * kwq/KWQScrollView.mm:
359         * kwq/KWQTextEdit.mm:
360         * kwq/KWQWidget.mm:
361         
362 2003-10-26  Darin Adler  <darin@apple.com>
363
364         * khtml/khtml_part.cpp: (findWordBoundary): Fix small mistake from NULL check-in earlier.
365
366 2003-10-26  Darin Adler  <darin@apple.com>
367
368         * kwq/KWQLoader.mm: (KWQResponseMIMEType): Removed an excess volatile.
369
370 2003-10-26  Darin Adler  <darin@apple.com>
371
372         Reviewed by Maciej.
373
374         - fixed 3463624 -- page at cinemakorea.com shows up blank due to kTECBufferBelowMinimumSizeErr from TEC
375
376         * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertOneChunkUsingTEC): To work around the bug
377         I found in the decoder (Radar 3351093), change kTECBufferBelowMinimumSizeErr to
378         kTECOutputBufferFullStatus in cases where bytes were actually converted.
379
380 2003-10-26  Darin Adler  <darin@apple.com>
381
382         Reviewed by Maciej.
383
384         - fixed 3463586 -- WebCore does not compile with new definition of NULL
385
386         * khtml/khtml_part.cpp: (findWordBoundary): Changed NULL to 0 and did a little code
387         cleanup of the surrounding code.
388         * khtml/rendering/break_lines.cpp: (khtml::isBreakable): Changed NULL to 0 and did
389         a tiny bit of cleanup.
390
391         * WebCorePrefix.h: Add a definition of NULL here that takes advantage of the GNU
392         __null feature even if the system C library doesn't.
393
394 2003-10-26  Darin Adler  <darin@apple.com>
395
396         Reviewed by Maciej.
397
398         - fixed 3457831 -- REGRESSION: copying particular text and pasting (plain) produces lots of extra text
399
400         * khtml/khtml_part.cpp: (KHTMLPart::text): Check for the end node when following a
401         link to the parent node, not just when following a link to the next child node.
402         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::attributedString): Ditto.
403
404 == Rolled over to ChangeLog-2003-10-25 ==