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