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