Fix for 3478309, make sure backgrounds paint in the border box and not just in the...
[WebKit-https.git] / WebCore / ChangeLog-2005-08-23
1 2003-11-09  David Hyatt  <hyatt@apple.com>
2
3         Fix for 3478309, make sure backgrounds paint in the border box and not just in the padding box.
4         
5         Reviewed by darin
6
7         Also making sure that <frame>s aren't transparent, since other browsers seem to only make <iframe>s/<object>s
8         be transparent.
9         
10         * khtml/rendering/render_box.cpp:
11         (RenderBox::paintRootBoxDecorations):
12         (RenderBox::paintBackgroundExtended):
13
14 2003-11-08  Darin Adler  <darin@apple.com>
15
16         Reviewed by John.
17
18         - fixed 3478025 -- links with non-Latin-1 characters in the hostname are not getting IDN-encoded
19
20         * kwq/KWQKURL.mm:
21         (KURL::parse): Changed existing code to take advantage of the fact that a NUL character
22         is classified as a path segment end character.
23         (KURL::findHostnameInHierarchicalURL): Don't treat NUL characters as terminating characters
24         for hostnames, because QChar::latin1() turns all non-Latin-1 characters into NUL characters.
25
26 2003-11-08  Darin Adler  <darin@apple.com>
27
28         Reviewed by John.
29
30         - fixed 3477509 -- REGRESSION (112-113): crash in KHTMLPart::processObjectRequest at espn.com, chosun.com
31
32         * khtml/khtml_part.cpp: (KHTMLPart::processObjectRequest): Use a dynamic_cast to check the type of the
33         part rather than assuming it's always a KHTMLPart. The crash was caused by casting a KWQPluginPart to
34         KHTMLPart.
35
36 2003-11-08  Darin Adler  <darin@apple.com>
37
38         Reviewed by Richard.
39
40         - event cleanup motivated by questions on khtml-devel
41
42         * khtml/dom/dom2_events.h: Removed eventModuleName.
43         * khtml/dom/dom2_events.cpp: Removed eventModuleName.
44
45         * khtml/xml/dom2_eventsimpl.h: Removed eventModuleName, made many trivially simple
46         functions inline, made virtual functions no longer inline. Also made some functions const.
47         (DOM::EventImpl::propagationStopped): Made this non-virtual; there was no reason for
48         it to be virtual I could see.
49         (DOM::EventImpl::defaultPrevented): Ditto.
50         (DOM::EventImpl::setDefaultHandled): Ditto.
51         (DOM::UIEventImpl::view): Made this inline.
52         (DOM::UIEventImpl::detail): Ditto.
53         (DOM::MouseEventImpl::screenX): Ditto.
54         (DOM::MouseEventImpl::screenY): Ditto.
55         (DOM::MouseEventImpl::clientX): Ditto.
56         (DOM::MouseEventImpl::clientY): Ditto.
57         (DOM::MouseEventImpl::layerX): Ditto.
58         (DOM::MouseEventImpl::layerY): Ditto.
59         (DOM::MouseEventImpl::ctrlKey): Ditto.
60         (DOM::MouseEventImpl::shiftKey): Ditto.
61         (DOM::MouseEventImpl::altKey): Ditto.
62         (DOM::MouseEventImpl::metaKey): Ditto.
63         (DOM::MouseEventImpl::button): Ditto.
64         (DOM::MouseEventImpl::relatedTarget): Ditto.
65         (DOM::MutationEventImpl::relatedNode): Ditto.
66         (DOM::MutationEventImpl::prevValue): Ditto.
67         (DOM::MutationEventImpl::newValue): Ditto.
68         (DOM::MutationEventImpl::attrName): Ditto.
69         (DOM::MutationEventImpl::attrChange): Ditto.
70
71         * khtml/ecma/kjs_events.cpp: (KJS::getDOMEvent): Changed implementation to no longer
72         require eventModuleName(), and removed some unneeded casts.
73
74         * khtml/xml/dom2_eventsimpl.cpp: Made lots of functions inline.
75         (EventImpl::isUIEvent): Since this is virtual, make it no longer inline.
76         (EventImpl::isMouseEvent): Ditto.
77         (EventImpl::isMutationEvent): Ditto.
78         (EventImpl::isKeyboardEvent): Ditto.
79         (UIEventImpl::isUIEvent): Ditto.
80         (MouseEventImpl::isMouseEvent): Ditto.
81         (KeyboardEventImpl::isKeyboardEvent): Ditto.
82         (MutationEventImpl::isMutationEvent): Ditto.
83
84 2003-11-07  Chris Blumenberg  <cblu@apple.com>
85
86         Fixed: <rdar://problem/3020196>: links with href="" don't show hand cursor when you mouse over them
87
88         Reviewed by darin.
89
90         * khtml/khtmlview.cpp:
91         (KHTMLView::viewportMouseMoveEvent): check if the URL on the event is non-NULL, not if it is non-empty
92
93 2003-11-07  Richard Williamson   <rjw@apple.com>
94
95         Fixed 3477067.  Use our case unicode conversion routines.
96
97         Reviewed by Ken.
98
99         * kwq/KWQChar.mm:
100         (QChar::lower):
101         (QChar::upper):
102
103 2003-11-06  David Hyatt  <hyatt@apple.com>
104
105         Fixes for 3476717, inline blocks should expand to encompass floats; 3476718, inline blocks should not
106         collapse margins with children; and 3476721, run-ins and compacts can flow into anonymous blocks, even
107         ones that they caused to be created by failing to run in/compact in the first place.
108         
109         Reviewed by darin (inline block fixes only).
110
111         * khtml/rendering/render_block.cpp:
112         (khtml::RenderBlock::layoutBlock):
113         (khtml::RenderBlock::layoutBlockChildren):
114
115 2003-11-06  Richard Williamson   <rjw@apple.com>
116
117         Fixed 3476563.  Remove unnecessary call to set view position after load completes.
118  
119         Reviewed by Gramps.
120
121         * khtml/khtml_part.cpp:
122         (KHTMLPart::checkCompleted):
123
124 2003-11-06  Chris Blumenberg  <cblu@apple.com>
125
126         * khtml/rendering/render_image.h:
127         (khtml::RenderImage::isDisplayingError): forgot to remove the "virtual" part of the declaration
128
129 2003-11-06  Chris Blumenberg  <cblu@apple.com>
130
131         Fixed:
132         <rdar://problem/3275118>: Dragging from missing-image link stretches missing-image icon to size of missing image
133         <rdar://problem/3476225>: assert dragging non-existant images
134
135         Reviewed by rjw.
136
137         * khtml/rendering/render_image.h:
138         (khtml::RenderImage::isDisplayingError): new method, returns true for the broken image
139         * kwq/WebCoreBridge.mm:
140         (-[WebCoreBridge elementAtPoint:]): only provide info if there is an image and the image is not broken
141
142 2003-11-06  Ken Kocienda  <kocienda@apple.com>
143
144         Reviewed by Richard
145
146         Fixes for these bugs:
147
148         <rdar://problem/3476006>: Form file input widgets do not scroll 
149         to view when focused
150
151         <rdar://problem/3476007>: Form file input widgets should only 
152         focus when full keyboard access is on
153
154         * kwq/KWQFileButton.h: Added focusPolicy declaration.
155         * kwq/KWQFileButton.mm:
156         (KWQFileButton::focusPolicy): Added. Now works like other buttons.
157         Fixes 3476007.
158         (KWQFileButton::focusChanged): Added. Code similar to text area
159         widgets. Fixes 3476006.
160
161 2003-11-06  Chris Blumenberg  <cblu@apple.com>
162
163         Fixed: <rdar://problem/3308609>: 6L60 Safari URL links with line-endings converted to hex by contextual menu
164
165         Reviewed by rjw.
166
167         * kwq/WebCoreBridge.mm:
168         (-[WebCoreBridge elementAtPoint:]): use parseURL to go from an attribute string to a URL string
169
170 === Safari-113 ===
171
172 2003-11-06  John Sullivan  <sullivan@apple.com>
173
174         - fixed broken build
175
176         * khtml/xml/dom_docimpl.cpp:
177         (DocumentImpl::completeURL):
178         removed stray character
179
180 2003-11-06  Maciej Stachowiak  <mjs@apple.com>
181
182         Reviewed by Darin.
183
184         - fixed 3475366 - 4.5% of time spent making html event listeners on slow intel page.
185
186         6% speedup on intel page, 1% speedup on cvs-base PLT.
187         
188         * khtml/ecma/kjs_events.cpp:
189         (JSEventListener::JSEventListener): Don't add self to hashtable if imp is null (which
190         can now happen in the lazy listener case).
191         (JSEventListener::~JSEventListener): Ditto on removing.
192         (JSEventListener::listenerObj): Made this virtual.
193         (JSLazyEventListener::JSLazyEventListener): New constructor.
194         (JSLazyEventListener::handleEvent): call parseCode, then
195         superclass if it appeared to succeed.
196         (JSLazyEventListener::listenerObj): call parseCode, then superclass.
197         (JSLazyEventListener::parseCode):
198         (KJS::getNodeEventListener): Check for null listenerObjImp in case of
199         lazy listener that failed to parse.
200         * khtml/ecma/kjs_dom.cpp:
201         (DOMNode::getListener): Ditto.
202         * khtml/ecma/kjs_html.cpp:
203         (Image::getValueProperty): Ditto.
204         * khtml/ecma/kjs_events.h:
205         (KJS::JSEventListener::listenerObjImp): call listenerObj() virtual
206         method and get imp from the result.
207         * khtml/ecma/kjs_proxy.cpp:
208         (KJSProxyImpl::createHTMLEventHandler): Don't parse the code here, make a lazy
209         listener.
210         * khtml/ecma/kjs_window.cpp:
211         (Window::getJSLazyEventListener): make a new JSLazyEventListener - no need
212         to check the listeners hashtable cause a brand new lazy listener won't have
213         a function anyway.
214         * khtml/ecma/kjs_window.h: Prototype new method.
215
216 2003-11-06  Maciej Stachowiak  <mjs@apple.com>
217
218         Reviewed by Darin.
219
220         - fixed 3475397 - REGRESSION: relative URLs on page load test sometimes contain garbage, leading to missing images
221         
222         * kwq/KWQKURL.mm:
223         (KURL::KURL): When constructing from NSURL, null-terminate the raw
224         bytes since KURL::parse expects a null-terminated C string. It
225         might be even better to pass a length to parse, but this fix is
226         simple and does the job.
227
228 2003-11-05  Darin Adler  <darin@apple.com>
229
230         Reviewed by Maciej.
231
232         - fixed 3475109 -- support keyboard event object properties of altkey, ctrlKey, shiftKey
233
234         We had the DOM Level 3 KeyboardEvent class already; I just had to add JavaScript bindings.
235
236         * khtml/ecma/kjs_events.h: Added DOMKeyboardEvent class.
237         * khtml/ecma/kjs_events.cpp:
238         (KJS::getDOMEvent): Added code to make a DOMKeyboardEvent if the event is a DOM::KeyboardEvent.
239         (DOMKeyboardEvent::~DOMKeyboardEvent): Added.
240         (DOMKeyboardEvent::classInfo): Added.
241         (DOMKeyboardEvent::tryGet): Added.
242         (DOMKeyboardEvent::getValueProperty): Added.
243         (DOMKeyboardEventProtoFunc::tryCall): Added.
244
245         * khtml/dom/dom2_events.cpp:
246         (KeyboardEvent::keyIdentifier): Added.
247         (KeyboardEvent::keyLocation): Added.
248
249         * khtml/ecma/kjs_events.lut.h: Regenerated.
250
251 2003-11-05  Maciej Stachowiak  <mjs@apple.com>
252
253         Reviewed by John.
254
255         - fixed 3475092 - Notifying the bridge about duplicate images takes 13% of time on intel page
256
257         Another 15% speedup on the intel page.
258
259         This also results in a 3% speedup on cvs-base PLT! (or maybe that was my last change)
260         
261         * kwq/KWQLoader.mm:
262         (KWQServeRequest): Note that we told the bridge about the load.
263         (KWQCheckCacheObjectStatus): Don't tell the bridge about the load
264         if we have alrady; if we do tell it, then note it down.
265         * kwq/KWQKHTMLPart.h:
266         * kwq/KWQKHTMLPart.mm:
267         (KWQKHTMLPart::didTellBridgeAboutLoad): Helper method for the above.
268         (KWQKHTMLPart::haveToldBridgeAboutLoad): Ditto.
269         (KWQKHTMLPart::clear): Clear our idea of what URLs we told the bridge about.
270         * khtml/khtml_part.h: make clear() virtual.
271
272 2003-11-05  Darin Adler  <darin@apple.com>
273
274         * WebCore-combined.exp: Checked in generated file.
275
276 2003-11-05  Richard Williamson   <rjw@apple.com>
277
278         Fixed 3474957.  Changed name of image rendering method to better reflect it's actual function.
279
280         - (void)beginAnimationInRect:(NSRect)ir fromRect:(NSRect)fr;
281
282         renamed to
283
284         - (void)drawImageInRect:(NSRect)ir fromRect:(NSRect)fr;
285
286         Reviewed by Chris.
287
288         * kwq/KWQPainter.mm:
289         (QPainter::drawPixmap):
290         * kwq/WebCoreImageRenderer.h:
291
292 2003-11-05  Darin Adler  <darin@apple.com>
293
294         * WebCore-tests.exp: Added missing symbol so tests will link.
295
296 2003-11-05  Maciej Stachowiak  <mjs@apple.com>
297
298         Reviewed by Ken.
299
300         - fixed 3474756 - Creating HTML event listeners takes 5% of time on particular slow intel page
301         
302         * khtml/ecma/kjs_window.h: Make jsEventListeners a hashtable keyed
303         by listener object, not a list.
304         * khtml/ecma/kjs_window.cpp:
305         (Window::getJSEventListener): Do hashtable lookup for existing listener instead of
306         walking list.
307         * khtml/ecma/kjs_events.cpp:
308         (JSEventListener::JSEventListener): Use hashtable insert instead of list append.
309         (JSEventListener::~JSEventListener): Use hashtable remove instead of list removeRef.
310
311 2003-11-05  Darin Adler  <darin@apple.com>
312
313         Reviewed by Maciej.
314
315         - fixed 3473872 -- encode domain names for IDN when creating URLs inside WebCore
316
317         * kwq/KWQKURL.h: Added KWQIntegerPair type, a number of private functions.
318         * kwq/KWQKURL.mm:
319         (isSchemeFirstChar): Make inline function from macro.
320         (isSchemeChar): Make inline function from macro.
321         (isUserInfoChar): Make inline function from macro.
322         (isHostnameChar): Make inline function from macro.
323         (isIPv6Char): Make inline function from macro.
324         (isPathSegmentEndChar): Make inline function from macro.
325         (isBadChar): Make inline function from macro.
326         (isHexDigit): Make inline function from macro.
327         (KURL::KURL): Remove unneeded initializations of m_isValid, since parse sets it.
328         Use CFURLGetBytes in one place a FIXME asked for it. Changed non-ASCII case to use
329         a separate function instead of code in line.
330         (KURL::encodeHostnames): Added. Finds host names and encodes them.
331         (KURL::findHostnameInHierarchicalURL): Added. Finds host name in a hierarchical URL.
332         (KURL::encodeHostname): Added. Encodes one host name.
333         (KURL::findHostnamesInMailToURL): Added. Finds host names in a mailto URL.
334
335         * kwq/KWQString.h: Added new overloads for startsWith.
336         * kwq/KWQString.mm:
337         (compareIgnoringCaseForASCIIOnly): Moved these functions up in the file so they can be
338         used by more methods of QString.
339         (QString::startsWith): Added new overloads.
340
341         * WebCore.pbproj/project.pbxproj: Add libicucore.A.dylib library.
342
343 2003-11-05  Maciej Stachowiak  <mjs@apple.com>
344
345         Reviewed by Darin.
346
347         - fixed 3473906 - getElementById takes about 44% of time on particular slow intel page
348
349         I fixed this by adding a per-document id --> element hash
350         table. This speeds up my local copy of the intel page by 60% (50
351         sec to 20 sec!) and does not cause any PLT slowdown.
352         
353         * khtml/xml/dom_docimpl.h: New QDict field for id to element hash table.
354         * khtml/xml/dom_docimpl.cpp:
355         (DocumentImpl::getElementById): Just look it up in the newly
356         added hash table.
357         (DocumentImpl::addElementById): New method. Add to hash table if
358         no other element is set for that key (this lets the first element
359         of several with matching ids win).
360         (DocumentImpl::removeElementById): New method. Remove from hash
361         table only if the key and value both match.
362
363         These Element changes to keep the id --> element hashtable working
364         seem needlessly tricky, due to lack of bottlenecks in attribute
365         changing.
366         
367         * khtml/xml/dom_elementimpl.cpp:
368         (ElementImpl::updateId): New method that removes element from
369         hash table for old it
370         (ElementImpl::setAttribute): If setting id, call updateId.
371         (ElementImpl::setAttributeMap): If either the old or the new map
372         includes id, call updateId.
373         (ElementImpl::attach): If we have an id, call updateId to set it
374         after attaching.
375         (ElementImpl::detach): Newly added. If we have an id, call
376         updateId to clear it before detaching.
377         (NamedAttrMapImpl::setNamedItem): If the name is id, call updateId on
378         our element.
379         (NamedAttrMapImpl::removeNamedItem): If the name is id, call updateId on
380         our element.
381         (NamedAttrMapImpl::operator=): If old or new contents include id attribute,
382         call updateId on our element.
383         * khtml/xml/dom_elementimpl.h: Prototype new methods.
384
385 2003-11-05  Ken Kocienda  <kocienda@apple.com>
386
387         Reviewed by Maciej
388
389         Fix for these bugs:
390
391         <rdar://problem/3467558>: Cannot tab to form file input widgets
392         <rdar://problem/3473631>: WebFileButton sends notifications to communicate with WebCore
393
394         Tabbing now works for these widgets. While I was in the neighborhood,
395         I improved the communication mechanism between the WebKit and WebCore
396         sides of the file button implementation, replacing notifications
397         with a callback object.
398
399         * WebCore-combined.exp: Remove no-longer used WebCoreFileButtonClicked
400         and WebCoreFileButtonFilenameChanged notofication strings.
401         * WebCore.exp: Ditto.
402         * kwq/KWQFileButton.h: Changed declarations to match changes in
403         callback functions.
404         * kwq/KWQFileButton.mm:
405         (KWQFileButton::KWQFileButton): Now sets the view after creating
406         the delegate object.
407         (KWQFileButton::filenameChanged): Now takes a QString argument
408         which indicates the filename.
409         (KWQFileButton::focusChanged): New function. Sends DOM focus and
410         blur events.
411         (-[KWQFileButtonAdapter initWithKWQFileButton:]): No longer needs
412         to register for notifications.
413         (-[KWQFileButtonAdapter dealloc]): No longer needs to remove itself
414         from the notification center.
415         (-[KWQFileButtonAdapter filenameChanged:]): No longer a notification
416         callback. Now a WebCoreFileButtonCallback callback.
417         (-[KWQFileButtonAdapter focusChanged:]): New WebCoreFileButtonCallback
418         callback.
419         (-[KWQFileButtonAdapter clicked]): No longer a notification
420         callback. Now a WebCoreFileButtonCallback callback.
421         * kwq/KWQKHTMLPart.mm:
422         (KWQKHTMLPart::nextKeyViewInFrame): Unrelated cleanup.
423         * kwq/WebCoreBridge.h: Declared new WebCoreFileButtonDelegate protocol.
424
425 2003-11-05  Maciej Stachowiak  <mjs@apple.com>
426
427         - fixed deployment build
428         
429         * kwq/KWQKHTMLPart.mm:
430         (KWQKHTMLPart::fileWrapperForElement):
431
432 2003-11-04  Maciej Stachowiak  <mjs@apple.com>
433
434         Reviewed by Ken.
435
436         * khtml/ecma/kjs_window.cpp: Don't make event read-only, some
437         sites want to set their own top-level function named "event" and
438         will hang if they can't.
439         * khtml/ecma/kjs_window.lut.h: Regenerated.
440
441 2003-11-03  David Hyatt  <hyatt@apple.com>
442
443         Fix for 3472167, for shrink-to-fit style printing, grow the width of the initial containing block
444         to be as large as the rightmost position after doing a layout to the page width.
445         
446         Reviewed by john
447
448         * kwq/KWQKHTMLPart.mm:
449         (KWQKHTMLPart::forceLayoutForPageWidth):
450
451 2003-11-04  Chris Blumenberg  <cblu@apple.com>
452
453         Fixed:
454         <rdar://problem/3472403>: RTFD of copied text and images should use original image data not tiffs
455
456         Reviewed by john.
457
458         * kwq/KWQKHTMLPart.h:
459         * kwq/KWQKHTMLPart.mm:
460         (KWQKHTMLPart::fileWrapperForElement): call [_bridge _fileWrapperForURL:] to get cached data
461         * kwq/WebCoreBridge.h: added _fileWrapperForURL: to the bridge protocol
462         * kwq/WebCoreBridge.mm:
463         (-[WebCoreBridge selectedAttributedString]): call the instance method attributedString 
464         (-[WebCoreBridge attributedStringFrom:startOffset:to:endOffset:]): call the instance method attributedString 
465
466 2003-11-04  Maciej Stachowiak  <mjs@apple.com>
467
468         Reviewed by Chris.
469
470         - fixed 3472893 - Slow intel page takes 20% of its time in CachedObject::ref
471         
472         Speeds up loading of
473         http://www.intel.com/cd/ids/developer/asmo-na/eng/index.htm by
474         19%, no slowdown on PLT.
475         
476         * khtml/misc/loader.h: Use QPtrDict for m_clients instead of QPtrList.
477         * khtml/misc/loader.cpp:
478         (CachedObjectClientWalker::CachedObjectClientWalker): Ditto.
479         (CachedObject::ref): Ditto.
480         * kwq/KWQPtrDict.h:
481         (QPtrDict::isEmpty): Implemented.
482
483 2003-11-03  Maciej Stachowiak  <mjs@apple.com>
484
485         Reviewed by Darin.
486
487         - fixed 3370085 - new frames with javascript: URLs should be populated with the result of the JavaScript code
488         
489         * ChangeLog:
490         * khtml/html/html_baseimpl.cpp:
491         (HTMLFrameElementImpl::updateForNewURL): Skip special filtering of
492         javascript:.
493         (HTMLFrameElementImpl::attach): Ditto.
494         * khtml/khtml_part.cpp:
495         (KHTMLPart::replaceContentsWithScriptResult): New method to execute
496         script and if the result is a string, set it as the new document contents.
497         (KHTMLPart::requestFrame): Removed APPLE_CHANGES around
498         javascript: handling. Use new
499         replaceContentsWithScriptResult method. This executes the
500         JS in the new child frame, not the parent frame, as in other
501         browsers.
502         * khtml/khtml_part.h: Prototype new method.
503         * kwq/KWQKHTMLPartBrowserExtension.mm:
504         (KHTMLPartBrowserExtension::openURLRequest): Use new part method.
505
506 2003-11-03  Vicki Murley  <vicki@apple.com>
507
508         Reviewed by kocienda.
509
510         - fixed <rdar://problem/3471096>: non-B&I builds should not use order files, because they cause false "regressions" in perf.
511
512         * WebCore.pbproj/project.pbxproj: added empty SECTORDER_FLAGS variables to the Development and Deployment build styles
513
514 2003-11-03  Ken Kocienda  <kocienda@apple.com>
515
516         Reviewed by Maciej
517
518         Fix for this bug:
519
520         <rdar://problem/3470338>: onclick is not executing when you hit enter on focused links
521
522         Now when we trap return or enter when a link is focused, we send
523         a click event to the node.
524
525         * khtml/html/html_inlineimpl.cpp:
526         (HTMLAnchorElementImpl::defaultEventHandler): Swallow key event when 
527         return or enter and send a mouse event.
528         (HTMLAnchorElementImpl::performClick): New function to send simulated
529         click.
530         * khtml/html/html_inlineimpl.h: Declare performClick function.
531
532 2003-11-03  Darin Adler  <darin@apple.com>
533
534         Reviewed by John.
535
536         - fixed 3392543 -- incorrect base writing direction in RTL form controls
537         - fixed baseline for list box <select> elements
538         - moved style code from updateFromElement to setStyle
539
540         * khtml/rendering/render_form.h: Added setStyle function to RenderFormElement, RenderLineEdit,
541         RenderSelect, and RenderTextArea. Removed some unused stuff.
542         * khtml/rendering/render_form.cpp:
543         (RenderFormElement::setStyle): Set the font based on the style.
544         (RenderFormElement::updateFromElement): Remove font setting code; moved to setStyle.
545         Also ifdef'd out the color-setting code, which belongs in setStyle and is irrelevant
546         for KWQ anyway.
547         (RenderSubmitButton::setStyle): Set the writing direction based on the style.
548         (RenderSubmitButton::updateFromElement): Tiny code cleanup, using a local variable.
549         (RenderLineEdit::setStyle): Set the alignment and writing direction based on the style.
550         (RenderLineEdit::updateFromElement): Remove alignment setting code; moved to setStyle.
551         (RenderFileButton::RenderFileButton): Remove code to set m_focus, a data member that was
552         never used.
553         (RenderSelect::setWidgetWritingDirection): Added. Helper function.
554         (RenderSelect::setStyle): Call setWidgetWritingDirection.
555         (RenderSelect::updateFromElement): Call setWidgetWritingDirection if a new widget is created.
556         (RenderSelect::baselinePosition): Added a FIXME comment.
557         (RenderTextArea::setStyle): Set the alignment and writing direction based on the style.
558         (RenderTextArea::updateFromElement): Remove alignment setting code; moved to setStyle.
559
560         * kwq/KWQButton.h: Added setWritingDirection function.
561         * kwq/KWQButton.mm:
562         (+[KWQButton cellClass]): Use KWQButtonCell.
563         (-[KWQButtonCell baseWritingDirection:]): Return base writing direction.
564         (-[KWQButtonCell setBaseWritingDirection:]): Store base writing direction.
565         (-[KWQButtonCell _textAttributes]): Set the base writing direction in the paragraph
566         style if it's not already right.
567         (QButton::setWritingDirection): Call setBaseWritingDirection: on the cell and do
568         setNeedsDisplay: as needed.
569
570         * kwq/KWQComboBox.h: Added setWritingDirection function.
571         * kwq/KWQComboBox.mm:
572         (QComboBox::setWritingDirection): Call setBaseWritingDirection: on the cell and do
573         setNeedsDisplay: as needed.
574         (-[KWQPopUpButtonCell setBaseWritingDirection:]): Store base writing direction.
575         (-[KWQPopUpButtonCell baseWritingDirection:]): Return base writing direction.
576         (-[KWQPopUpButtonCell _textAttributes]): Set the base writing direction in the
577         paragraph style if it's not already right.
578
579         * kwq/KWQLineEdit.h: Added setWritingDirection function.
580         * kwq/KWQLineEdit.mm:
581         (QLineEdit::setAlignment): Tweaked to match new setWritingDirection in style.
582         (QLineEdit::setWritingDirection): Call setBaseWritingDirection: on the KWQTextField.
583
584         * kwq/KWQTextField.h: Added setBaseWritingDirection method.
585         * kwq/KWQTextField.mm:
586         (-[KWQTextField setPasswordMode:]): Set the base writing direction of the secure field's
587         cell based on the base writing direction of the parent field's cell, when creating the
588         secure field.
589         (-[KWQTextField setBaseWritingDirection:]): Added. Sets the base writing direction of
590         the field's cell and the secure field's cell, if it exists, and does setNeedsDisplay
591         as needed.
592         (-[KWQTextFieldCell setBaseWritingDirection:]): Added. Stores the base writing direction.
593         (-[KWQTextFieldCell baseWritingDirection]): Added. Returns the base writing direction.
594         (-[KWQTextFieldCell _textAttributes]): Set the base writing direction in the paragraph
595         style if it's not already right.
596         (-[KWQSecureTextFieldCell setBaseWritingDirection:]): Added. Stores the base writing
597         direction.
598         (-[KWQSecureTextFieldCell _textAttributes]): Set the base writing direction in the
599         paragraph style if it's not already right.
600
601         * kwq/KWQListBox.h: Added itemIsGroupLabel and setWritingDirection functions, and made
602         the private insertItem function take a QString instead of an NSObject.
603         (QListBox::insertItem): Changed parameter from unsigned to int to match Qt, and made it
604         use an inlne to call the private insertItem function shared with insertGroupLabel.
605         (QListBox::insertGroupLabel): Changed parameter from unsigned to int and made it use an
606         inline to call the private insertItem function.
607         * kwq/KWQListBox.mm:
608         (itemFont): Added. Returns a suitable font for individual items.
609         (groupLabelFont): Added. Returns a suitable font for group labels.
610         (paragraphStyle): Added. Returns a suitable paragraph style for a given writing direction.
611         (stringAttributes): Added. Returns a string attributes dictionary for a given writing direction for
612         either individual items or group labels.
613         (QListBox::insertItem): Use an attributed string to give the item the appropriate font and
614         writing direction, calling stringAttributes to get the attributes dictionary, and getting
615         the writing direction from the table view.
616         (QListBox::endBatchInsert): Tweak for consistency with other nearby methods.
617         (QListBox::setSelected): Add an assertion and tweak a bit.
618         (QListBox::isSelected): Add an assertion and tweak a bit.
619         (QListBox::setWritingDirection): Update the styles for all the attributed strings and call
620         reloadData if the writing direction changes. Also store the direction in the table view.
621         (QListBox::itemIsGroupLabel): Added. Returns true if a given item is a group label; works
622         by checking the font in the attributed string.
623         (-[KWQTableView initWithListBox:items:]): Use itemFont() instead of computing the font.
624         (-[KWQTableView tableView:shouldSelectRow:]): Use itemIsGroupLabel function instead of
625         checking for NSString vs. NSttributedString in the items array; we now use attributed
626         strings for all the items.
627         (-[KWQTableView setBaseWritingDirection:]): Added. Stores a base writing direction.
628         (-[KWQTableView baseWritingDirection]): Added. Returns the stored base writing direction.
629
630         * kwq/KWQTextEdit.h: Added setWritingDirection function.
631         * kwq/KWQTextEdit.mm:
632         (QTextEdit::setAlignment): Removed code to set base writing direction.
633         (QTextEdit::setWritingDirection): Added. Sets base writing direction.
634
635         * kwq/KWQTextArea.mm: (-[KWQTextArea setBaseWritingDirection:]): Call setNeedsDisplay:YES.
636
637 2003-11-03  David Hyatt  <hyatt@apple.com>
638
639         Fix 3472200, media tests fail to parse correctly.  Merging a patch to handle exotic media types
640         from the KHTML trunk.
641
642         * khtml/css/parser.cpp:
643         * khtml/css/parser.y:
644
645 2003-11-03  David Hyatt  <hyatt@apple.com>
646
647         Fix for 3471314, make sure to check the outline phase before painting backgrounds of iframes.
648         
649         Reviewed by mjs
650
651         * khtml/rendering/render_replaced.cpp:
652         (RenderReplaced::paint):
653
654 2003-11-03  David Hyatt  <hyatt@apple.com>
655
656         Fix for 3470855, links with script action stay focused when clicking.
657
658         Fix for 3470858, clicking and dragging a link and then releasing doesn't clear the glow ring.
659
660         Fix for 3472090, link should not be mouse focusable.
661         
662         Reviewed by mjs
663
664         * khtml/css/html4.css:
665         * khtml/html/html_inlineimpl.h:
666         (DOM::HTMLAnchorElementImpl::isMouseFocusable):
667
668 2003-11-03  David Hyatt  <hyatt@apple.com>
669
670         Fix for 3472030, line-height not properly reset in all cases when the font shorthand is used.
671         
672         Reviewed by mjs
673
674         * khtml/css/cssparser.cpp:
675         (CSSParser::parseFont):
676
677 2003-11-03  Maciej Stachowiak  <mjs@apple.com>
678
679         Reviewed by Darin.
680
681         - fixed 3472023 - REGRESSION: assertion on layout tests
682         
683         * kwq/KWQTextCodec.mm:
684         (KWQTextDecoder::convertUTF16): Remove assert that length is not
685         0, since we can get zero length now when flushing.
686
687 2003-11-03  Ken Kocienda  <kocienda@apple.com>
688
689         Reviewed by John
690
691         Fix for this bug:
692
693         <rdar://problem/3260780>: hitting return in a text field submits 
694         form without running onclick handler for submit button
695
696         * khtml/html/html_formimpl.cpp:
697         (HTMLFormElementImpl::performSubmitClick): Refactored this function to
698         be more generic, so that text fields can use it, too.
699         (HTMLInputElementImpl::defaultEventHandler): Removed code to check
700         for a submit button, and merged this code into new performSubmitClick.
701         (HTMLSelectElementImpl::defaultEventHandler): Ditto.
702         * khtml/html/html_formimpl.h: Removed declaration for simulateButtonClickForEvent.
703         Added declaration for performSubmitClick.
704         * khtml/rendering/render_form.cpp:
705         (RenderLineEdit::slotReturnPressed): Now calls performSubmitClick rather
706         than prepareSubmit on the form. This is the key piece for the bug fix.
707
708 2003-11-03  Ken Kocienda  <kocienda@apple.com>
709
710         Reviewed by John
711
712         Fix for this bug:
713
714         <rdar://problem/3470342>: focus rings are shown for links in
715         web pages even in non-frontmost windows
716
717         * kwq/KWQKHTMLPart.h: Add setShowsFirstResponder, showsFirstResponder functions and
718         _showsFirstResponder member variable.
719         (KWQKHTMLPart::showsFirstResponder): Added.
720         * kwq/KWQKHTMLPart.mm:
721         (KWQKHTMLPart::KWQKHTMLPart): Initialize _showsFirstResponder to true
722         (KWQKHTMLPart::setShowsFirstResponder): Sets whether the painter draws focus rings.
723         * kwq/KWQPainter.h: Add _drawsFocusRing member variable.
724         (QPainter::setDrawsFocusRing): Sets whether the painter draws focus rings.
725         * kwq/KWQPainter.mm:
726         (QPainter::QPainter): Initialize _drawsFocusRing to true.
727         (QPainter::initFocusRing): Check _drawsFocusRing flag. Return if set to false.
728         (QPainter::addFocusRingRect): Ditto.
729         (QPainter::drawFocusRing): Ditto.
730         * kwq/WebCoreBridge.h: Add setShowsFirstResponder method.
731         * kwq/WebCoreBridge.mm:
732         (-[WebCoreBridge drawRect:]): Sets the value for _drawsFocusRing on the
733         painter using _showsFirstResponder value from the part.
734         (-[WebCoreBridge setShowsFirstResponder:]): Set passed in value on the part.
735         Redraw the focus ring if flag has changed.
736
737 2003-11-03  David Hyatt  <hyatt@apple.com>
738
739         Remove unneeded style property additions for form controls.  In the KHTML trunk these moved into the UA
740         sheet, but we don't even need them there, since we don't honor any of them.
741
742         * khtml/html/html_formimpl.cpp:
743         (HTMLInputElementImpl::attach):
744         (HTMLSelectElementImpl::attach):
745         (HTMLTextAreaElementImpl::attach):
746
747 2003-11-03  David Hyatt  <hyatt@apple.com>
748
749         Patch from KHTML trunk.  Move frameset positioning reset into adjustRenderStyle so as not to
750         pollute the render tree.
751
752         * khtml/css/cssstyleselector.cpp:
753         (khtml::CSSStyleSelector::adjustRenderStyle):
754         * khtml/rendering/render_box.cpp:
755         (RenderBox::setStyle):
756
757 2003-11-03  David Hyatt  <hyatt@apple.com>
758
759         Fix for 3471609, 'transparent' should be an acceptable named color value instead of a special
760         keyword used only by background/border.
761         
762         Reviewed by kocienda
763
764         * khtml/css/cssparser.cpp:
765         (CSSParser::parseValue):
766         * khtml/css/cssstyleselector.cpp:
767         (khtml::):
768         (khtml::CSSStyleSelector::applyRule):
769         * khtml/css/cssvalues.c:
770         * khtml/css/cssvalues.h:
771         * khtml/css/cssvalues.in:
772         * khtml/rendering/render_box.cpp:
773         (RenderBox::paintBackgroundExtended):
774         * khtml/rendering/render_object.cpp:
775         (RenderObject::setStyle):
776         * khtml/rendering/render_style.h:
777         (khtml::BorderValue::BorderValue):
778         (khtml::BorderValue::isTransparent):
779         (khtml::BorderValue::operator==):
780         (khtml::CollapsedBorderValue::isTransparent):
781         (khtml::RenderStyle::setBorderLeftColor):
782         (khtml::RenderStyle::setBorderRightColor):
783         (khtml::RenderStyle::setBorderTopColor):
784         (khtml::RenderStyle::setBorderBottomColor):
785
786 2003-11-02  Maciej Stachowiak  <mjs@apple.com>
787
788         Reviewed by Darin.
789
790         - fixed 3471226 - HTML document that's less than 16 bytes comes out blank
791         
792         * kwq/KWQTextCodec.mm:
793         (KWQTextDecoder::toUnicode): When flushing, don't bail out early
794         if there are no new characters!
795
796 2003-11-02  Maciej Stachowiak  <mjs@apple.com>
797
798         Reviewed by Darin.
799
800         - don't resolve Null href or src attributes, since the distinction
801         between empty and absent attribute is important.
802
803         * khtml/dom/html_base.cpp:
804         (HTMLIFrameElement::src):
805         * khtml/dom/html_form.cpp:
806         (HTMLInputElement::src):
807         * khtml/dom/html_head.cpp:
808         (HTMLBaseElement::href):
809         (HTMLLinkElement::href):
810         (HTMLScriptElement::src):
811         * khtml/dom/html_image.cpp:
812         (HTMLAreaElement::href):
813         (HTMLImageElement::src):
814         * khtml/dom/html_inline.cpp:
815         (HTMLAnchorElement::href):
816
817 2003-11-01  David Hyatt  <hyatt@apple.com>
818
819         Fix for 3468924, an implementation of outline-offset.  We also give :focus links a built-in offset of 
820         outline-width/2  by default for the Apple Aqua style.
821
822         Fix for 3470660, input type=image excluded from tab order.
823         
824         Reviewed by darin
825
826         * khtml/css/cssparser.cpp:
827         (CSSParser::parseValue):
828         * khtml/css/cssproperties.c:
829         (hash_prop):
830         (findProp):
831         * khtml/css/cssproperties.h:
832         * khtml/css/cssproperties.in:
833         * khtml/css/cssstyleselector.cpp:
834         (khtml::CSSStyleSelector::applyRule):
835         * khtml/css/html4.css:
836         * khtml/rendering/render_box.cpp:
837         (RenderBox::getAbsoluteRepaintRect):
838         (RenderBox::computeAbsoluteRepaintRect):
839         * khtml/rendering/render_flow.cpp:
840         (RenderFlow::getAbsoluteRepaintRect):
841         * khtml/rendering/render_inline.cpp:
842         (RenderInline::paintFocusRing):
843         (RenderInline::paintOutlines):
844         (RenderInline::paintOutline):
845         * khtml/rendering/render_object.cpp:
846         (RenderObject::paintOutline):
847         * khtml/rendering/render_style.h:
848         (khtml::OutlineValue::OutlineValue):
849         (khtml::RenderStyle::outlineSize):
850         (khtml::RenderStyle::outlineOffset):
851         (khtml::RenderStyle::setOutlineOffset):
852         * khtml/rendering/render_text.cpp:
853         (RenderText::paintObject):
854         * kwq/KWQPainter.h:
855         * kwq/KWQPainter.mm:
856         (QPainterPrivate::QPainterPrivate):
857         (QPainter::initFocusRing):
858         (QPainter::addFocusRingRect):
859
860 2003-11-01  Maciej Stachowiak  <mjs@apple.com>
861
862         Reviewed by Darin.
863
864         - fixed 3469262 - REGRESSION (110-112): logitech page is very slow to load (due to style sheet updates?)
865         
866         * khtml/xml/dom_nodeimpl.cpp:
867         (NodeImpl::dispatchGenericEvent): Don't do default handling for
868         events that don't bubble. Not 100% sure why this caused the big
869         slowdown but it was a somewhat arbitrary change in my earlier
870         patch.
871
872 2003-11-01  Darin Adler  <darin@apple.com>
873
874         Reviewed by John.
875
876         - fixed 3468870 -- REGRESSION (108-109): cannot upload files (<input type=file> is broken)
877
878         * kwq/KWQFileButton.mm: (KWQFileButton::filenameChanged): Pass the filename to
879         the textChanged signal. The one without a parameter is a different signal.
880
881 2003-11-01  Darin Adler  <darin@apple.com>
882
883         Reviewed by John.
884
885         - fixed 3466714 -- page with <object> tag with text subtype and no URL causes hang
886
887         * khtml/khtml_part.cpp: (KHTMLPart::requestObject): Added a check so that an empty
888         URL string doesn't get completed, and results in an empty KURL object. Also made the
889         change to allow empty URLs unconditional, because I don't think it's a WebCore-specific
890         thing on further reflection.
891
892 2003-10-31  David Hyatt  <hyatt@apple.com>
893
894         Fix for 3470489, I just forgot to commit a piece of my patch.  This has actually even
895         been reviewed by ken already.
896
897         Reviewed by kocienda
898         
899         * khtml/rendering/render_replaced.cpp:
900         (RenderWidget::eventFilter):
901
902 2003-10-31  Darin Adler  <darin@apple.com>
903
904         Reviewed by John.
905
906         - fixed 3457875 -- text disappears from fields in forms upon certain types of scrolling
907
908         * kwq/KWQTextField.mm: (-[KWQTextField control:textShouldBeginEditing:]):
909         Call releaseGState on the field editor and its clip view to prevent undesirable caching.
910
911 2003-10-31  Ken Kocienda  <kocienda@apple.com>
912
913         Reviewed by Darin
914
915         Fix for this bug:
916
917         <rdar://problem/3440719>: Read-only text field form controls 
918         do not keyboard focus and do not take part in tabbing
919
920         * kwq/KWQTextField.mm:
921         (-[KWQTextField acceptsFirstResponder]): We want our text fields
922         to accept first responder even if not editable.
923
924         Once this is fixed, this one comes along for free:
925
926         <rdar://problem/3440710>: Read-only textarea form controls should select all text when focused
927
928 2003-10-31  Darin Adler  <darin@apple.com>
929
930         Reviewed by Ken.
931
932         - fixed 3469383 -- REGRESSION (100-111): if one line is selected on this page, too much gets copied (plain text)
933
934         * khtml/khtml_part.cpp: (KHTMLPart::text): Range check the child node indices before using them
935         to get at a child node. We don't want to set startNode or endNode to nil in any case. If the end
936         node is set to nil, we end up copying the entire remainder of the page.
937
938 2003-10-31  David Hyatt  <hyatt@apple.com>
939
940         Fix for 3470007, links don't get focus on mouse down.  Fix the focus check on mouse down to actually
941         crawl up the content tree in order to find the nearest enclosing focusable node.  Also clean up and
942         fix checks that improperly blurred the link after it got focused.
943
944         Fix for 3450335, AppKit widgets not obeying their desired focus policies.  I renamed isSelectable to
945         isFocusable and then also added isMouseFocusable and isKeyboardFocusable methods.
946         
947         Reviewed by kocienda
948
949         * khtml/css/html4.css:
950         * khtml/html/html_baseimpl.cpp:
951         (HTMLFrameElementImpl::isFocusable):
952         * khtml/html/html_baseimpl.h:
953         * khtml/html/html_formimpl.cpp:
954         (HTMLGenericFormElementImpl::isFocusable):
955         (HTMLGenericFormElementImpl::isKeyboardFocusable):
956         (HTMLGenericFormElementImpl::isMouseFocusable):
957         * khtml/html/html_formimpl.h:
958         * khtml/html/html_inlineimpl.cpp:
959         (HTMLAnchorElementImpl::isFocusable):
960         * khtml/html/html_inlineimpl.h:
961         * khtml/khtmlview.cpp:
962         (KHTMLView::dispatchMouseEvent):
963         * khtml/xml/dom_docimpl.cpp:
964         (DocumentImpl::nextFocusNode):
965         (DocumentImpl::previousFocusNode):
966         * khtml/xml/dom_nodeimpl.cpp:
967         (NodeImpl::isFocusable):
968         (NodeImpl::isKeyboardFocusable):
969         (NodeImpl::isMouseFocusable):
970         * khtml/xml/dom_nodeimpl.h:
971         * kwq/KWQKHTMLPart.mm:
972         (KWQKHTMLPart::khtmlMousePressEvent):
973
974 2003-10-31  Ken Kocienda  <kocienda@apple.com>
975
976         Reviewed by David
977
978         Fix for this bug:
979
980         <rdar://problem/3470233>: solid outlines drawing incorrectly
981
982         The problem was that when I collected the array of line boxes for
983         render inlines, I put a QRect() at the start and the end of the list.
984         However, the border calculation code expected "invalid" rectangles
985         (rects with 0 for all four dimentions) in the first and last
986         positions, and the default constructor for QRect makes rects with 1,1
987         for width/height.
988
989         * khtml/rendering/render_inline.cpp:
990         (RenderInline::paintOutlines)
991
992 2003-10-31  Darin Adler  <darin@apple.com>
993
994         Reviewed by Dave.
995
996         - fixed 3464759 -- REGRESSION (100-107): Pressing on link loses mouse-down feedback almost instantly
997
998         * khtml/khtmlview.cpp: (KHTMLView::viewportMouseMoveEvent): Pass true for the "read-only"
999         flag in prepareMoveEvent to prevent us from updating :hover and :active while the mouse is down.
1000
1001 2003-10-31  Ken Kocienda  <kocienda@apple.com>
1002
1003         Reviewed by David
1004
1005         <rdar://problem/3468910>: REGRESSION: other than focus rings, outlines styles are broken
1006
1007         Outlines now draw like they used to.
1008
1009         * khtml/rendering/render_inline.cpp:
1010         (RenderInline::paintObject): Now branches to call focus ring or "regular" outlines.
1011         (RenderInline::paintFocusRing): Broke out drawing aqua focus rings into its
1012         own function.
1013         (RenderInline::paintOutlines): New function to draw "regular outlines.
1014         (RenderInline::paintOutline): Removed code which special-cased aqua outlines.
1015         * khtml/rendering/render_inline.h: Added paintOutlines declaration.
1016
1017 2003-10-31  David Hyatt  <hyatt@apple.com>
1018
1019         Fix for 3467419, highlighted text in "search in books" Amazon feature is obscured.  The
1020         site is using the CSS3 opacity property.  The CSS3 Color module is far enough along now
1021         that opacity can safely be used without the "-khtml-" in front of it.
1022
1023         Fix for 3466542, the minimum font size bug.  I am introducing a new minimum font size pref that
1024         really is a hard override.
1025         
1026         Reviewed by gramps (opacity) and john (min font size)
1027         
1028         * khtml/css/cssparser.cpp:
1029         (CSSParser::parseValue):
1030         * khtml/css/cssproperties.c:
1031         (hash_prop):
1032         (findProp):
1033         * khtml/css/cssproperties.h:
1034         * khtml/css/cssproperties.in:
1035         * khtml/css/cssstyleselector.cpp:
1036         (khtml::CSSStyleSelector::applyRule):
1037
1038 2003-10-31  Ken Kocienda  <kocienda@apple.com>
1039
1040         Reviewed by Darin
1041
1042         Fix for this bug:
1043
1044         <rdar://problem/3469088>: focus not removed from text link 
1045         when user hits cmd-L or clicks in window chrome
1046
1047         * kwq/WebCoreBridge.h:
1048         * kwq/WebCoreBridge.mm:
1049         (-[WebCoreBridge deselectAll]): Now clears the focus ring as well.
1050         (-[WebCoreBridge deselectText]): Just clears text selection.
1051
1052 2003-10-31  David Hyatt  <hyatt@apple.com>
1053
1054         Three simple fixes:
1055         
1056         (1) Fix for 3463777, crash on CSS3 box model draft.  This was just a situation where a simple null-check
1057         was needed for generated content.
1058
1059         (2) Added a != check when the old and new hover obj are the same to avoid a little bit of extra work.
1060
1061         (3) Removed the m_pressed member from DOM nodes and removed the calls to setPressed, since this code
1062         is dead and not used by anyone.
1063         
1064         * khtml/khtmlview.cpp:
1065         * khtml/rendering/render_layer.cpp:
1066         (RenderLayer::addChild):
1067         (RenderLayer::updateHoverActiveState):
1068         * khtml/xml/dom_nodeimpl.cpp:
1069         (NodeImpl::NodeImpl):
1070         * khtml/xml/dom_nodeimpl.h:
1071         (DOM::NodeImpl::hasStyle):
1072         (DOM::NodeImpl::setHasStyle):
1073
1074 2003-10-30  David Hyatt  <hyatt@apple.com>
1075
1076         Fix for 3469330, the Marquee data in RenderStyle needs a copy constructor hack like all the other
1077         objects do.
1078
1079         * khtml/rendering/render_style.cpp:
1080         (direction):
1081         * khtml/rendering/render_style.h:
1082
1083 2003-10-30  David Hyatt  <hyatt@apple.com>
1084
1085         Fix for 3469206, images didn't paint outlines any more.  They were bailing early because I forgot to
1086         add a check for my new PaintAction.
1087         
1088         Reviewed by darin
1089
1090         * khtml/rendering/render_replaced.cpp:
1091         (RenderReplaced::paint):
1092
1093 2003-10-30  David Hyatt  <hyatt@apple.com>
1094
1095         Fixes for 3469057, outlines not drawn on aintitcool.com and also for 3469178, objects with width/height of 0
1096         incorrectly excluded from tabbing.
1097         
1098         Reviewed by darin
1099
1100         * khtml/html/html_formimpl.cpp:
1101         (HTMLGenericFormElementImpl::isSelectable):
1102         * khtml/html/html_inlineimpl.cpp:
1103         (HTMLAnchorElementImpl::isSelectable):
1104         * khtml/rendering/render_flow.cpp:
1105         (RenderFlow::getAbsoluteRepaintRect):
1106         * khtml/rendering/render_inline.cpp:
1107         (RenderInline::addFocusRingRects):
1108         (RenderInline::paintOutline):
1109         * khtml/rendering/render_object.cpp:
1110         (RenderObject::addFocusRingRects):
1111         (RenderObject::getAbsoluteRepaintRectWithOutline):
1112
1113 2003-10-30  Maciej Stachowiak  <mjs@apple.com>
1114
1115         Reviewed by Darin.
1116
1117         - fixed 3426081 - empty cells HTMLCollection for <tr>
1118         - fixed 3367598 - "length" attribute for table row "cells" always returns 0
1119         
1120         * khtml/dom/html_table.cpp:
1121         (HTMLTableRowElement::cells): TR_CELLS, not TABLE_ROWS.
1122
1123 2003-10-30  David Hyatt  <hyatt@apple.com>
1124
1125         Fix for 3468916, outline needs its own paint action so that focus rings don't draw under other content.
1126         
1127         Reviewed by kocienda
1128
1129         * khtml/rendering/render_block.cpp:
1130         (khtml::RenderBlock::paintObject):
1131         (khtml::RenderBlock::paintFloats):
1132         * khtml/rendering/render_image.cpp:
1133         (RenderImage::paintObject):
1134         * khtml/rendering/render_inline.cpp:
1135         (RenderInline::paintObject):
1136         * khtml/rendering/render_layer.cpp:
1137         (RenderLayer::paintLayer):
1138         * khtml/rendering/render_object.h:
1139
1140 2003-10-30  Maciej Stachowiak  <mjs@apple.com>
1141
1142         Fixed Dave's fix to my fix to my fix:
1143
1144         * khtml/html/html_imageimpl.cpp:
1145         (HTMLImageElementImpl::width): Put back m_render check, consider
1146         the case of image with no width/height attributes and display:none
1147         set. We don't want to crash on that.
1148         (HTMLImageElementImpl::height): Ditto.
1149
1150 2003-10-30  Ken Kocienda  <kocienda@apple.com>
1151
1152         Reviewed by Hyatt
1153
1154         Support for tabbing to links.
1155
1156         Fixes these bugs
1157
1158         <rdar://problem/3468395>: fix full keyboard access loop for buttons
1159         <rdar://problem/3468397>: paint aqua focus rings around text links
1160         <rdar://problem/3468406>: focused links do not activate by hitting
1161            return key
1162         <rdar://problem/3468410>: paintTextOutline in RenderText objects
1163            should be done at a higher level
1164         <rdar://problem/3468424>: improve function to determine if a node is
1165            tab selectable
1166         <rdar://problem/3468427>: add bridge function to access active
1167            document view for a node
1168         <rdar://problem/3468429>: links do not scroll into view when focusing
1169         <rdar://problem/3468435>: when tabbing out of a frame, last focused
1170            node is not cleared if it is a text link
1171         <rdar://problem/3468436>: focus on text link does not clear when
1172            clicking mouse in document body
1173         <rdar://problem/3468440>: add setRect convenience to QRect
1174         <rdar://problem/3468444>: elements paint their outlines even if they
1175            are not visible
1176         <rdar://problem/3468448>: setting focus on a node sets focus on all
1177            its siblings
1178         <rdar://problem/3468456>: cannot tab to form image input elements
1179         <rdar://problem/3468461>: tab focus can seem to disappear from view on
1180            pages with dhtml menus
1181         <rdar://problem/3469021>: webcore bridge nextKeyView always starts 
1182         from the beginning of the document
1183
1184         * WebCore-combined.exp: Export WebCoreGraphicsBridge class
1185         * WebCore.exp: Ditto
1186         * WebCore.pbproj/project.pbxproj: Add WebCoreGraphicsBridge class
1187         * khtml/css/cssparser.cpp: 
1188         (CSSParser::parseValue): border style check now take apple aqua
1189         style into account
1190         * khtml/css/cssvalues.in: Add -apple-aqua border value
1191         * khtml/css/html4.css: Change focus, a:link:active, and a:visited:active
1192         to use new -apple-aqua focus rings.
1193         * khtml/html/html_formimpl.cpp:
1194         (HTMLGenericFormElementImpl::isSelectable): Improve function so
1195         that invisible elements are no longer considered selectable
1196         * khtml/html/html_inlineimpl.cpp:
1197         (HTMLAnchorElementImpl::isSelectable): Ditto.
1198         (HTMLAnchorElementImpl::defaultEventHandler): Make return key
1199         activate links as well as Enter.
1200         * khtml/html/html_inlineimpl.h: Move isSelectable function into
1201         implementation file.
1202         * khtml/rendering/render_block.cpp: 
1203         (khtml::RenderBlock::paintObject): Do not paint outlines if
1204         content is invisible.
1205         * khtml/rendering/render_flow.cpp:
1206         (RenderFlow::getAbsoluteRepaintRect): Improve function to correctly
1207         calculate repaint rects including outlines.
1208         * khtml/rendering/render_image.cpp:
1209         (RenderImage::paintObject): Do not paint outlines if
1210         content is invisible.
1211         * khtml/rendering/render_inline.cpp:
1212         (RenderInline::paintObject): Ditto.
1213         (RenderInline::addFocusRingRects): New function to gather up rects
1214         to use for painting outlines.
1215         (RenderInline::paintOutline): Added code to paint aqua focus rings.
1216         * khtml/rendering/render_inline.h:
1217         * khtml/rendering/render_object.cpp:
1218         (RenderObject::drawBorder): Add case for apple aqua border style.
1219         (RenderObject::addFocusRingRects): New function to gather up rects
1220         to use for painting outlines.
1221         (RenderObject::paintOutline): Added code to paint aqua focus rings.
1222         (RenderObject::getAbsoluteRepaintRectWithOutline): Helper function
1223         to calculate rectangle to use for repainting when an object has an
1224         outline.
1225         * khtml/rendering/render_object.h: Add addFocusRingRects declaration.
1226         * khtml/rendering/render_style.h: Add APPLEAQUA to border enum
1227         * khtml/rendering/render_text.cpp:
1228         (RenderText::paintObject): Removed code to draw outlines.
1229         * khtml/rendering/render_text.h: Ditto.
1230         * khtml/xml/dom_elementimpl.cpp: Removed redundant isSelectable check.
1231         * khtml/xml/dom_elementimpl.h: Ditto.
1232         * khtml/xml/dom_nodeimpl.cpp:
1233         (NodeImpl::isSelectable): Added.
1234         (NodeBaseImpl::setFocus): Do not set focus on siblings.
1235         * khtml/xml/dom_nodeimpl.h: Moved implementation to .cpp file.
1236         * kwq/KWQButton.mm:
1237         (-[KWQButton nextKeyView]): Send a blur before going to next
1238         key view. This prevents focus from being lost altogether.
1239         (-[KWQButton previousKeyView]): Ditto.
1240         * kwq/KWQKHTMLPart.h: Added documentViewForNode function.
1241         * kwq/KWQKHTMLPart.mm:
1242         (KWQKHTMLPart::nextKeyViewInFrame): Add check for other focusables,
1243         like text links.
1244         (KWQKHTMLPart::nextKeyViewInFrameHierarchy): Remove focus when leaving
1245         a view.
1246         (KWQKHTMLPart::documentViewForNode): Added.
1247         (KWQKHTMLPart::khtmlMousePressEvent): Remove focus when you click in
1248         a non-focusable area, like the document body.
1249         * kwq/KWQPainter.h: Added declarations.
1250         * kwq/KWQPainter.mm:
1251         (QPainterPrivate::QPainterPrivate): Modified constructor for new fields.
1252         (QPainter::initFocusRing): Added.
1253         (QPainter::addFocusRingRect): Added.
1254         (QPainter::drawFocusRing): Added.
1255         (QPainter::clearFocusRing): Added.
1256         * kwq/KWQRect.h:
1257         (QRect::setRect): Added.
1258         * kwq/WebCoreBridge.h:
1259         * kwq/WebCoreBridge.mm:
1260         (-[WebCoreBridge nextKeyView]): Start from the currently-focused node,
1261         if there is one, not unconditionally from the start of the document.
1262         (-[WebCoreBridge previousKeyView]): Ditto
1263         * kwq/WebCoreGraphicsBridge.h: Added.
1264         * kwq/WebCoreGraphicsBridge.m: Added.
1265         (+[WebCoreGraphicsBridge sharedBridge]): Added.
1266         (-[WebCoreGraphicsBridge init]): Added.
1267         (-[WebCoreGraphicsBridge setFocusRingStyle:radius:color:]): Added.
1268
1269 2003-10-30  Maciej Stachowiak  <mjs@apple.com>
1270
1271         Fix mistake in my last change that I did not mean to commit.
1272
1273         * khtml/html/html_imageimpl.cpp:
1274         (HTMLImageElementImpl::width): Remove extraneous second attempt to
1275         lay out.
1276
1277 2003-10-30  David Hyatt  <hyatt@apple.com>
1278
1279         Put paged-media changes back without the wrongful removal of the style data copy constructors (which
1280         were necessary after all).
1281         
1282         * ChangeLog:
1283         * khtml/css/cssstyleselector.cpp:
1284         (khtml::CSSStyleSelector::applyRule):
1285         * khtml/rendering/render_style.cpp:
1286         (StyleInheritedData::StyleInheritedData):
1287         (StyleInheritedData::operator==):
1288         * khtml/rendering/render_style.h:
1289         (khtml::):
1290         (khtml::RenderStyle::NonInheritedFlags::operator==):
1291         (khtml::RenderStyle::setBitDefaults):
1292         (khtml::RenderStyle::widows):
1293         (khtml::RenderStyle::orphans):
1294         (khtml::RenderStyle::pageBreakInside):
1295         (khtml::RenderStyle::pageBreakBefore):
1296         (khtml::RenderStyle::pageBreakAfter):
1297         (khtml::RenderStyle::setWidows):
1298         (khtml::RenderStyle::setOrphans):
1299         (khtml::RenderStyle::setPageBreakInside):
1300         (khtml::RenderStyle::setPageBreakBefore):
1301         (khtml::RenderStyle::setPageBreakAfter):
1302
1303 2003-10-30  Maciej Stachowiak  <mjs@apple.com>
1304
1305         Reviewed by Dave.
1306
1307         - fixed 3468129 - REGRESSION: FOUC occurs on Surfin' Safari
1308         
1309         * khtml/ecma/kjs_html.cpp:
1310         (KJS::HTMLElement::getValueProperty): Don't force layout for image
1311         width/height if you can determine it statically from the attribute.
1312         * khtml/html/html_image.cpp:
1313         (HTMLImageElementImpl::width):
1314         (HTMLImageElementImpl::height):
1315
1316 === Safari-112 ===
1317
1318 2003-10-30  Ken Kocienda  <kocienda@apple.com>
1319
1320         Reviewed by me
1321
1322         Rolling out this code since it caused a big performance 
1323         regression.
1324
1325         2003-10-29  David Hyatt  <hyatt@apple.com>
1326
1327                 Add the paged media properties to RenderStyle.  
1328                 They aren't used yet, but they should now be
1329                 parsed and interpreted correctly.
1330
1331         * khtml/css/cssstyleselector.cpp:
1332         (khtml::CSSStyleSelector::applyRule):
1333         * khtml/rendering/render_style.cpp:
1334         (StyleSurroundData::StyleSurroundData):
1335         (StyleBoxData::StyleBoxData):
1336         (StyleBoxData::operator==):
1337         (StyleVisualData::~StyleVisualData):
1338         (StyleVisualData::StyleVisualData):
1339         (StyleBackgroundData::StyleBackgroundData):
1340         (StyleFlexibleBoxData::StyleFlexibleBoxData):
1341         (opacity):
1342         (textShadow):
1343         (StyleInheritedData::StyleInheritedData):
1344         (StyleInheritedData::~StyleInheritedData):
1345         (StyleInheritedData::operator==):
1346         * khtml/rendering/render_style.h:
1347         (khtml::StyleBackgroundData::~StyleBackgroundData):
1348         (khtml::StyleFlexibleBoxData::~StyleFlexibleBoxData):
1349         (khtml::RenderStyle::NonInheritedFlags::operator==):
1350         (khtml::RenderStyle::setBitDefaults):
1351
1352 2003-10-29  David Hyatt  <hyatt@apple.com>
1353
1354         Fix for 3466628, widgets in overflow blocks don't move when the overflow block is scrolled.  This
1355         was a regression caused by my change to move widgets only during layout and not at paint time.  The
1356         problem with this is that scrolling an overflow block doesn't do a layout, just a repaint.  I patched
1357         the layer code to update widget positions on an overflow block scroll.
1358
1359         This then exposed a bug in absolutePosition, namely that the scroll offset was never factored in when
1360         computing absolutePosition.  This bug also explains why text selection and cursor display were wrong
1361         inside scrolled overflow blocks.
1362         
1363         Reviewed by mjs
1364
1365         * khtml/rendering/render_box.cpp:
1366         (RenderBox::absolutePosition):
1367         * khtml/rendering/render_layer.cpp:
1368         (RenderLayer::scrollToOffset):
1369         * khtml/rendering/render_object.cpp:
1370         (RenderObject::absolutePosition):
1371         * khtml/rendering/render_text.cpp:
1372         (RenderText::cursorPos):
1373         (RenderText::posOfChar):
1374         * khtml/rendering/render_text.h:
1375
1376 2003-10-29  Maciej Stachowiak  <mjs@apple.com>
1377
1378         Reviewed by Dave.
1379
1380         - fixed 3467499 - REGRESSION: onClick handlers on links don't work (bubbling broken)
1381         
1382         * khtml/xml/dom2_eventsimpl.cpp:
1383         (EventImpl::EventImpl): Initialize m_cancelBubble (duh).
1384
1385 2003-10-29  David Hyatt  <hyatt@apple.com>
1386
1387         Fix for 3466802.  When breaking on a newline, "pre" is determined by checking the actual object that
1388         the line broke on, and not by simply checking the "pre" status of the containing block.
1389         
1390         Reviewed by mjs
1391
1392         * khtml/rendering/bidi.cpp:
1393         (khtml::RenderBlock::layoutInlineChildren):
1394
1395 2003-10-29  David Hyatt  <hyatt@apple.com>
1396
1397         Add the paged media properties to RenderStyle.  They aren't used yet, but they should now be 
1398         parsed and interpreted correctly.
1399         
1400         Reviewed by kocienda
1401
1402         * khtml/css/cssstyleselector.cpp:
1403         (khtml::CSSStyleSelector::applyRule):
1404         * khtml/rendering/render_style.cpp:
1405         (StyleBoxData::operator==):
1406         (StyleFlexibleBoxData::StyleFlexibleBoxData):
1407         (:opacity):
1408         (:textShadow):
1409         (StyleInheritedData::StyleInheritedData):
1410         (StyleInheritedData::operator==):
1411         * khtml/rendering/render_style.h:
1412         (khtml::):
1413         (khtml::RenderStyle::NonInheritedFlags::operator==):
1414         (khtml::RenderStyle::setBitDefaults):
1415         (khtml::RenderStyle::widows):
1416         (khtml::RenderStyle::orphans):
1417         (khtml::RenderStyle::pageBreakInside):
1418         (khtml::RenderStyle::pageBreakBefore):
1419         (khtml::RenderStyle::pageBreakAfter):
1420         (khtml::RenderStyle::setWidows):
1421         (khtml::RenderStyle::setOrphans):
1422         (khtml::RenderStyle::setPageBreakInside):
1423         (khtml::RenderStyle::setPageBreakBefore):
1424         (khtml::RenderStyle::setPageBreakAfter):
1425
1426 2003-10-29  David Hyatt  <hyatt@apple.com>
1427
1428         Reviewed by NOBODY (OOPS!).
1429
1430         * khtml/css/cssstyleselector.cpp:
1431         (khtml::CSSStyleSelector::applyRule):
1432         * khtml/rendering/render_style.cpp:
1433         (StyleBoxData::operator==):
1434         (StyleFlexibleBoxData::StyleFlexibleBoxData):
1435         (:opacity):
1436         (:textShadow):
1437         (StyleInheritedData::StyleInheritedData):
1438         (StyleInheritedData::operator==):
1439         * khtml/rendering/render_style.h:
1440         (khtml::):
1441         (khtml::RenderStyle::NonInheritedFlags::operator==):
1442         (khtml::RenderStyle::setBitDefaults):
1443         (khtml::RenderStyle::widows):
1444         (khtml::RenderStyle::orphans):
1445         (khtml::RenderStyle::pageBreakInside):
1446         (khtml::RenderStyle::pageBreakBefore):
1447         (khtml::RenderStyle::pageBreakAfter):
1448         (khtml::RenderStyle::setWidows):
1449         (khtml::RenderStyle::setOrphans):
1450         (khtml::RenderStyle::setPageBreakInside):
1451         (khtml::RenderStyle::setPageBreakBefore):
1452         (khtml::RenderStyle::setPageBreakAfter):
1453
1454 2003-10-29  David Hyatt  <hyatt@apple.com>
1455
1456         Refine the fix to updateLayout.
1457         updateStyleSelector would get called over and over again when you queried for layout properties from
1458         JS.  If no stylesheets are pending, this isn't necessary (and is quite expensive, since updateStyleSelector
1459         is a slow function).
1460         
1461         Reviewed by darin
1462
1463         * khtml/xml/dom_docimpl.cpp:
1464         (DocumentImpl::updateLayout):
1465
1466 2003-10-29  David Hyatt  <hyatt@apple.com>
1467
1468         Fix crasher in border collapsing code.
1469         
1470         Reviewed by kocienda
1471
1472         * khtml/rendering/render_table.cpp:
1473         (RenderTable::cellRight):
1474
1475 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
1476
1477         Reviewed by Darin.
1478
1479         - fixed 3163842 - Citibank cardmember central DHTML menus not working right in Safari
1480         
1481         * khtml/ecma/kjs_html.cpp:
1482         (KJS::HTMLElement::getValueProperty): update layout before fetching image properties
1483         that need it.
1484         * khtml/xml/dom_docimpl.cpp:
1485         (DocumentImpl::DocumentImpl): Initialize m_ignorePendingStylesheets to false.
1486         (DocumentImpl::updateLayout): Ignore pending stylesheets - when JS demands a
1487         layout, it wants a real one now.
1488         (DocumentImpl::updateStyleSelector): Go ahead with the update if we're ignoring
1489         pending stylesheets.
1490         * khtml/xml/dom_docimpl.h:
1491         (DOM::DocumentImpl::haveStylesheetsLoaded): Pretend stylesheets have loaded if
1492         we're temporarily ignoring pending stylesheets.
1493
1494 2003-10-29  David Hyatt  <hyatt@apple.com>
1495
1496         Implement support for <marquee>.  This includes support for the CSS3 specification (although modified a fair
1497         bit to actually be compatible with WinIE's version and to correct obvious errors in the draft).  All of the
1498         marquee behaviors (slide, scroll, and alternate) are supported.
1499
1500         This patch also fixes the following bugs that were discovered while testing marquee:
1501         (1) An error in the computation of scrollWidth and scrollHeight.  
1502         (2) The ability to ask for the leftmostPosition as well as the rightmostPosition of content and to
1503         be able to ask for the positions of children (via left/right/lowest) without including the parent in the
1504         computation.
1505         (3) An optimization to RenderFlow's rightmost/lowestPosition functions to avoid examining text elements since
1506         they are always fully accounted for by either overflow or by inline flow boxes.
1507         (4) A fix for RTL rendering.  A block with direction:RTL was being placed on the right, when in reality only
1508         its children should be placed on the right.
1509         (5) A fix to prevent inline blocks and tables from computing auto margins (making them just like floats in this
1510         regard).
1511         
1512         Reviewed by darin
1513
1514         * khtml/css/cssparser.cpp:
1515         (validUnit):
1516         (CSSParser::parseValue):
1517         * khtml/css/cssproperties.c:
1518         (hash_prop):
1519         (findProp):
1520         * khtml/css/cssproperties.h:
1521         * khtml/css/cssproperties.in:
1522         * khtml/css/cssstyleselector.cpp:
1523         (khtml::convertToLength):
1524         (khtml::CSSStyleSelector::applyRule):
1525         * khtml/css/cssvalues.c:
1526         (hash_val):
1527         (findValue):
1528         * khtml/css/cssvalues.h:
1529         * khtml/css/cssvalues.in:
1530         * khtml/css/html4.css:
1531         * khtml/html/html_blockimpl.cpp:
1532         (HTMLMarqueeElementImpl::HTMLMarqueeElementImpl):
1533         (HTMLMarqueeElementImpl::id):
1534         (HTMLMarqueeElementImpl::parseAttribute):
1535         * khtml/html/html_blockimpl.h:
1536         (DOM::HTMLMarqueeElementImpl::minimumDelay):
1537         * khtml/html/htmlparser.cpp:
1538         (KHTMLParser::getElement):
1539         * khtml/misc/htmlattrs.c:
1540         (hash_attr):
1541         (findAttr):
1542         * khtml/misc/htmlattrs.h:
1543         * khtml/misc/htmlattrs.in:
1544         * khtml/rendering/bidi.cpp:
1545         (khtml::RenderBlock::findNextLineBreak):
1546         * khtml/rendering/render_block.cpp:
1547         (khtml::RenderBlock::lowestPosition):
1548         (khtml::RenderBlock::rightmostPosition):
1549         (khtml::RenderBlock::leftmostPosition):
1550         * khtml/rendering/render_block.h:
1551         * khtml/rendering/render_box.cpp:
1552         (RenderBox::setStyle):
1553         (RenderBox::calcWidth):
1554         (RenderBox::calcHorizontalMargins):
1555         (RenderBox::lowestPosition):
1556         (RenderBox::rightmostPosition):
1557         (RenderBox::leftmostPosition):
1558         * khtml/rendering/render_box.h:
1559         * khtml/rendering/render_flow.cpp:
1560         (RenderFlow::lowestPosition):
1561         (RenderFlow::rightmostPosition):
1562         (RenderFlow::leftmostPosition):
1563         * khtml/rendering/render_flow.h:
1564         * khtml/rendering/render_layer.cpp:
1565         (RenderLayer::RenderLayer):
1566         (RenderLayer::~RenderLayer):
1567         (RenderLayer::updateLayerPositions):
1568         (RenderLayer::scrollToOffset):
1569         (RenderLayer::computeScrollDimensions):
1570         (RenderLayer::styleChanged):
1571         (RenderLayer::stopMarquees):
1572         (m_whiteSpace):
1573         (Marquee::marqueeSpeed):
1574         (Marquee::direction):
1575         (Marquee::isHorizontal):
1576         (Marquee::computePosition):
1577         (Marquee::start):
1578         (Marquee::stop):
1579         (Marquee::updateMarqueePosition):
1580         (Marquee::updateMarqueeStyle):
1581         (Marquee::timerEvent):
1582         * khtml/rendering/render_layer.h:
1583         (khtml::):
1584         (khtml::RenderLayer::marquee):
1585         * khtml/rendering/render_object.cpp:
1586         (RenderObject::isHTMLMarquee):
1587         (RenderObject::sizesToMaxWidth):
1588         * khtml/rendering/render_object.h:
1589         (khtml::RenderObject::lowestPosition):
1590         (khtml::RenderObject::rightmostPosition):
1591         (khtml::RenderObject::leftmostPosition):
1592         * khtml/rendering/render_style.cpp:
1593         (StyleMarqueeData::StyleMarqueeData):
1594         (StyleMarqueeData::operator==):
1595         (opacity):
1596         (marquee):
1597         (StyleCSS3NonInheritedData::operator==):
1598         (RenderStyle::RenderStyle):
1599         * khtml/rendering/render_style.h:
1600         (khtml::):
1601         (khtml::StyleMarqueeData::operator!=):
1602         (khtml::RenderStyle::marqueeIncrement):
1603         (khtml::RenderStyle::marqueeSpeed):
1604         (khtml::RenderStyle::marqueeLoopCount):
1605         (khtml::RenderStyle::marqueeBehavior):
1606         (khtml::RenderStyle::marqueeDirection):
1607         (khtml::RenderStyle::setMarqueeIncrement):
1608         (khtml::RenderStyle::setMarqueeSpeed):
1609         (khtml::RenderStyle::setMarqueeDirection):
1610         (khtml::RenderStyle::setMarqueeBehavior):
1611         (khtml::RenderStyle::setMarqueeLoopCount):
1612         * khtml/xml/dom_docimpl.cpp:
1613         (DocumentImpl::createHTMLElement):
1614         * kwq/KWQKHTMLPart.mm:
1615         (KWQKHTMLPart::clearTimers):
1616
1617 2003-10-29  David Hyatt  <hyatt@apple.com>
1618
1619         Make <button> be an inline-block.
1620         
1621         * khtml/css/html4.css:
1622
1623 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
1624
1625         Reviewed by Darin.
1626
1627          - fixed 3465547 - REGRESSION (100-111)?: window.prompt does not work
1628         
1629         * kwq/KWQKHTMLPart.mm:
1630         (KWQKHTMLPart::runJavaScriptPrompt): Return the result properly
1631         instead of always returning false.
1632
1633 2003-10-28  Darin Adler  <darin@apple.com>
1634
1635         Reviewed by Maciej.
1636
1637         - fixed 3465504 -- REGRESSION (100-111): text areas with Chinese text in them are wider than ones without
1638
1639         * kwq/KWQTextArea.h: Add _font field.
1640         * kwq/KWQTextArea.mm:
1641         (-[KWQTextArea dealloc]): Release _font.
1642         (-[KWQTextArea setFont:]): Store font in _font as well as setting it in the text view.
1643         (-[KWQTextArea sizeWithColumns:rows:]): Use _font rather than asking the text view for the font.
1644
1645 2003-10-28  Darin Adler  <darin@apple.com>
1646
1647         Reviewed by Maciej.
1648
1649         - fixed 3464702 -- node.item(x) is not implemented (dynamic menus not filled out at techcu.com)
1650
1651         * khtml/ecma/kjs_dom.cpp: (DOMNodeProtoFunc::tryCall): Add implementation of item function.
1652         * khtml/ecma/kjs_dom.h: Added Item to the enum.
1653         * khtml/ecma/kjs_dom.lut.h: Regenerated.
1654
1655 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
1656
1657         Reviewed by Dave,
1658
1659         - fixed 3379725 - for <a> elements with both onclick and href, Web Kit's behavior does not match other browsers
1660
1661         The fix for this was to make cancelBubble only prevent bubbling,
1662         but not stop propagation or prevent default. While I was at it, I
1663         made returnValue work right too.
1664         
1665         * khtml/ecma/kjs_events.cpp:
1666         (DOMEvent::getValueProperty): Implement cancelBubble and returnValue properties properly.
1667         (DOMEvent::putValue): Ditto.
1668         * khtml/dom/dom2_events.cpp:
1669         (Event::setCancelBubble): Call impl.
1670         (Event::setDefaultPrevented): Ditto.
1671         (Event::getCancelBubble): Ditto.
1672         (Event::defaultPrevented): Ditto.
1673         * khtml/dom/dom2_events.h:
1674         * khtml/xml/dom2_eventsimpl.h:
1675         (DOM::EventImpl::propagationStopped): Made this a const method.
1676         (DOM::EventImpl::defaultPrevented): Ditto.
1677         (DOM::EventImpl::setCancelBubble): Implemented by setting a new field.
1678         (DOM::EventImpl::getCancelBubble): Corresponding getter.
1679         (DOM::EventImpl::setDefaultPrevented): Set the already existing field for this.
1680         * khtml/xml/dom_nodeimpl.cpp:
1681         (NodeImpl::dispatchGenericEvent): Check getCancelBubble() when bubbling. Do not
1682         check bubbles() before default handling.
1683
1684 2003-10-28  Chris Blumenberg  <cblu@apple.com>
1685
1686         Fixed: <rdar://problem/3464472>: REGRESSION: New CSS cursor support breaks style="cursor:default
1687
1688         Reviewed by dave.
1689
1690         * kwq/KWQWidget.mm:
1691         (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.
1692
1693 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
1694
1695         Reviewed by John.
1696
1697         - fixed 3421393 - window.open does not handle non-integral height/width (small window at saabusa.com)
1698         
1699         * khtml/ecma/kjs_window.cpp:
1700         (WindowFunc::tryCall): Parse width, height, top and left as
1701         floating point and then cast to int instead of parsing as int to
1702         match other browsers and avoid rejecting floating point numbers.
1703
1704 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
1705
1706         Reviewed by John.
1707
1708         - fixed 3464528 - addEventListener does not work for buttons, text areas, or inputs
1709
1710         * khtml/rendering/render_form.cpp:
1711         (RenderFormElement::slotClicked): Send CLICK_EVENT as well as one
1712         of KHTML_CLICK_EVENT or KHTML_DOUBLE_CLICK_EVENT.
1713
1714 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
1715
1716         Fixed broken build.
1717
1718         * kwq/KWQKPartsPart.mm:
1719         (KParts::ReadOnlyPart::setName): It's a ReadOnlyPart method, not a Part method.
1720
1721 2003-10-28  Maciej Stachowiak  <mjs@apple.com>
1722
1723         Reviewed by John.
1724
1725         - fixed 3427046 - href and src attributes don't always give resolved URL
1726
1727         It turns out that all href and src attributes should be resolved
1728         against the base, except for frame elements.
1729         
1730         * khtml/dom/html_base.cpp:
1731         (HTMLIFrameElement::src): Resolve against base URL.
1732         * khtml/dom/html_form.cpp:
1733         (HTMLInputElement::src): Resolve URL even when empty. Remove
1734         comment questioning resolution against base - it's definitely
1735         right.
1736         * khtml/dom/html_head.cpp:
1737         (HTMLBaseElement::href): Resolve against base URL.
1738         (HTMLLinkElement::href): Ditto.
1739         (HTMLScriptElement::src): Ditto.
1740         * khtml/dom/html_image.cpp:
1741         (HTMLAreaElement::href): Ditto.
1742         (HTMLImageElement::src): Resolve URL even when empty. Remove
1743         comment questioning resolution against base - it's definitely
1744         right.
1745         * khtml/dom/html_inline.cpp:
1746         (HTMLAnchorElement::href): Resolve against base URL.
1747
1748 2003-10-27  Maciej Stachowiak  <mjs@apple.com>
1749
1750         Reviewed by Darin.
1751
1752         - fixed 3083264 - frame names changed by JavaScript are not reflected in WebFrame at the WebKit level
1753         
1754         * kwq/KWQKHTMLPart.h:
1755         * kwq/KWQKHTMLPart.mm:
1756         (KWQKHTMLPart::setName): Make sure the name is unique. Then tell
1757         the bridge and the superclass about it.
1758         * kwq/KWQKPartsPart.h:
1759         (KParts::ReadOnlyPart::setName): Made this method virtual.
1760         * kwq/KWQKPartsPart.m: Added. Moved implementations of virtual methods here.
1761         * kwq/WebCoreBridge.h:
1762         * kwq/WebCoreBridge.mm:
1763         (-[WebCoreBridge setName:]): Call the superclass method to avid
1764         sending the name pointlessly back across the bridge.
1765
1766 2003-10-28  Darin Adler  <darin@apple.com>
1767
1768         Reviewed by John.
1769
1770         - fixed 3465063 -- REGRESSION (107-108): hang when fetching a page with an ad in a subframe (theage.com.au)
1771
1772         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::openURL): Follow the parent chain properly rather
1773         than repeatedly getting the part's own parent!
1774
1775 2003-10-27  Maciej Stachowiak  <mjs@apple.com>
1776
1777         Reviewed by Darin.
1778
1779         Improved exception blocking in the following ways:
1780
1781         - use C++ constructors and destructors so returning or breaking out of an exception block works
1782         - Remove use of volatile
1783         - Collapse the caught exception case into a single function call to reduce code size.
1784
1785         * WebCore.pbproj/project.pbxproj:
1786         * kwq/KWQButton.mm:
1787         * kwq/KWQCheckBox.mm:
1788         * kwq/KWQComboBox.mm:
1789         * kwq/KWQExceptions.h:
1790         * kwq/KWQExceptions.mm: Added.
1791         * kwq/KWQFileButton.mm:
1792         * kwq/KWQFont.mm:
1793         * kwq/KWQFrame.mm:
1794         * kwq/KWQKConfigBase.mm:
1795         * kwq/KWQKCookieJar.mm:
1796         * kwq/KWQKCursor.mm:
1797         * kwq/KWQKHTMLPart.mm:
1798         * kwq/KWQKHTMLPartBrowserExtension.mm:
1799         * kwq/KWQKHistoryProvider.mm:
1800         * kwq/KWQKJavaAppletWidget.mm:
1801         * kwq/KWQKJobClasses.mm:
1802         * kwq/KWQKLocale.mm:
1803         * kwq/KWQKPartsBrowserInterface.mm:
1804         * kwq/KWQLineEdit.mm:
1805         * kwq/KWQListBox.mm:
1806         * kwq/KWQLoader.mm:
1807         * kwq/KWQPainter.mm:
1808         * kwq/KWQPushButton.mm:
1809         * kwq/KWQRadioButton.mm:
1810         * kwq/KWQScrollBar.mm:
1811         * kwq/KWQScrollView.mm:
1812         * kwq/KWQTextEdit.mm:
1813         * kwq/KWQWidget.mm:
1814         
1815 2003-10-26  Darin Adler  <darin@apple.com>
1816
1817         * khtml/khtml_part.cpp: (findWordBoundary): Fix small mistake from NULL check-in earlier.
1818
1819 2003-10-26  Darin Adler  <darin@apple.com>
1820
1821         * kwq/KWQLoader.mm: (KWQResponseMIMEType): Removed an excess volatile.
1822
1823 2003-10-26  Darin Adler  <darin@apple.com>
1824
1825         Reviewed by Maciej.
1826
1827         - fixed 3463624 -- page at cinemakorea.com shows up blank due to kTECBufferBelowMinimumSizeErr from TEC
1828
1829         * kwq/KWQTextCodec.mm: (KWQTextDecoder::convertOneChunkUsingTEC): To work around the bug
1830         I found in the decoder (Radar 3351093), change kTECBufferBelowMinimumSizeErr to
1831         kTECOutputBufferFullStatus in cases where bytes were actually converted.
1832
1833 2003-10-26  Darin Adler  <darin@apple.com>
1834
1835         Reviewed by Maciej.
1836
1837         - fixed 3463586 -- WebCore does not compile with new definition of NULL
1838
1839         * khtml/khtml_part.cpp: (findWordBoundary): Changed NULL to 0 and did a little code
1840         cleanup of the surrounding code.
1841         * khtml/rendering/break_lines.cpp: (khtml::isBreakable): Changed NULL to 0 and did
1842         a tiny bit of cleanup.
1843
1844         * WebCorePrefix.h: Add a definition of NULL here that takes advantage of the GNU
1845         __null feature even if the system C library doesn't.
1846
1847 2003-10-26  Darin Adler  <darin@apple.com>
1848
1849         Reviewed by Maciej.
1850
1851         - fixed 3457831 -- REGRESSION: copying particular text and pasting (plain) produces lots of extra text
1852
1853         * khtml/khtml_part.cpp: (KHTMLPart::text): Check for the end node when following a
1854         link to the parent node, not just when following a link to the next child node.
1855         * kwq/KWQKHTMLPart.mm: (KWQKHTMLPart::attributedString): Ditto.
1856
1857 == Rolled over to ChangeLog-2003-10-25 ==