[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

kocienda kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:07:45 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit a5841eddb184b660319c0d2b501cd135e2a0adab
Author: kocienda <kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu Oct 30 23:13:10 2003 +0000

    WebCore:
    
            Reviewed by Hyatt
    
    	Support for tabbing to links.
    
    	Fixes these bugs
    
    	<rdar://problem/3468395>: fix full keyboard access loop for buttons
    	<rdar://problem/3468397>: paint aqua focus rings around text links
    	<rdar://problem/3468406>: focused links do not activate by hitting
    	   return key
    	<rdar://problem/3468410>: paintTextOutline in RenderText objects
    	   should be done at a higher level
    	<rdar://problem/3468424>: improve function to determine if a node is
    	   tab selectable
    	<rdar://problem/3468427>: add bridge function to access active
    	   document view for a node
    	<rdar://problem/3468429>: links do not scroll into view when focusing
    	<rdar://problem/3468435>: when tabbing out of a frame, last focused
    	   node is not cleared if it is a text link
    	<rdar://problem/3468436>: focus on text link does not clear when
    	   clicking mouse in document body
    	<rdar://problem/3468440>: add setRect convenience to QRect
    	<rdar://problem/3468444>: elements paint their outlines even if they
    	   are not visible
    	<rdar://problem/3468448>: setting focus on a node sets focus on all
    	   its siblings
    	<rdar://problem/3468456>: cannot tab to form image input elements
    	<rdar://problem/3468461>: tab focus can seem to disappear from view on
    	   pages with dhtml menus
    	<rdar://problem/3469021>: webcore bridge nextKeyView always starts
    	from the beginning of the document
    
            * WebCore-combined.exp: Export WebCoreGraphicsBridge class
            * WebCore.exp: Ditto
            * WebCore.pbproj/project.pbxproj: Add WebCoreGraphicsBridge class
            * khtml/css/cssparser.cpp:
            (CSSParser::parseValue): border style check now take apple aqua
    	style into account
            * khtml/css/cssvalues.in: Add -apple-aqua border value
            * khtml/css/html4.css: Change focus, a:link:active, and a:visited:active
    	to use new -apple-aqua focus rings.
            * khtml/html/html_formimpl.cpp:
            (HTMLGenericFormElementImpl::isSelectable): Improve function so
    	that invisible elements are no longer considered selectable
            * khtml/html/html_inlineimpl.cpp:
            (HTMLAnchorElementImpl::isSelectable): Ditto.
            (HTMLAnchorElementImpl::defaultEventHandler): Make return key
    	activate links as well as Enter.
            * khtml/html/html_inlineimpl.h: Move isSelectable function into
    	implementation file.
            * khtml/rendering/render_block.cpp:
            (khtml::RenderBlock::paintObject): Do not paint outlines if
    	content is invisible.
            * khtml/rendering/render_flow.cpp:
            (RenderFlow::getAbsoluteRepaintRect): Improve function to correctly
    	calculate repaint rects including outlines.
            * khtml/rendering/render_image.cpp:
            (RenderImage::paintObject): Do not paint outlines if
            content is invisible.
            * khtml/rendering/render_inline.cpp:
            (RenderInline::paintObject): Ditto.
            (RenderInline::addFocusRingRects): New function to gather up rects
    	to use for painting outlines.
            (RenderInline::paintOutline): Added code to paint aqua focus rings.
            * khtml/rendering/render_inline.h:
            * khtml/rendering/render_object.cpp:
            (RenderObject::drawBorder): Add case for apple aqua border style.
            (RenderObject::addFocusRingRects): New function to gather up rects
            to use for painting outlines.
            (RenderObject::paintOutline): Added code to paint aqua focus rings.
            (RenderObject::getAbsoluteRepaintRectWithOutline): Helper function
    	to calculate rectangle to use for repainting when an object has an
    	outline.
            * khtml/rendering/render_object.h: Add addFocusRingRects declaration.
            * khtml/rendering/render_style.h: Add APPLEAQUA to border enum
            * khtml/rendering/render_text.cpp:
            (RenderText::paintObject): Removed code to draw outlines.
            * khtml/rendering/render_text.h: Ditto.
            * khtml/xml/dom_elementimpl.cpp: Removed redundant isSelectable check.
            * khtml/xml/dom_elementimpl.h: Ditto.
            * khtml/xml/dom_nodeimpl.cpp:
            (NodeImpl::isSelectable): Added.
            (NodeBaseImpl::setFocus): Do not set focus on siblings.
            * khtml/xml/dom_nodeimpl.h: Moved implementation to .cpp file.
            * kwq/KWQButton.mm:
            (-[KWQButton nextKeyView]): Send a blur before going to next
    	key view. This prevents focus from being lost altogether.
            (-[KWQButton previousKeyView]): Ditto.
            * kwq/KWQKHTMLPart.h: Added documentViewForNode function.
            * kwq/KWQKHTMLPart.mm:
            (KWQKHTMLPart::nextKeyViewInFrame): Add check for other focusables,
    	like text links.
            (KWQKHTMLPart::nextKeyViewInFrameHierarchy): Remove focus when leaving
    	a view.
            (KWQKHTMLPart::documentViewForNode): Added.
            (KWQKHTMLPart::khtmlMousePressEvent): Remove focus when you click in
    	a non-focusable area, like the document body.
            * kwq/KWQPainter.h: Added declarations.
            * kwq/KWQPainter.mm:
            (QPainterPrivate::QPainterPrivate): Modified constructor for new fields.
            (QPainter::initFocusRing): Added.
            (QPainter::addFocusRingRect): Added.
            (QPainter::drawFocusRing): Added.
            (QPainter::clearFocusRing): Added.
            * kwq/KWQRect.h:
            (QRect::setRect): Added.
            * kwq/WebCoreBridge.h:
            * kwq/WebCoreBridge.mm:
            (-[WebCoreBridge nextKeyView]): Start from the currently-focused node,
    	if there is one, not unconditionally from the start of the document.
            (-[WebCoreBridge previousKeyView]): Ditto
            * kwq/WebCoreGraphicsBridge.h: Added.
            * kwq/WebCoreGraphicsBridge.m: Added.
            (+[WebCoreGraphicsBridge sharedBridge]): Added.
            (-[WebCoreGraphicsBridge init]): Added.
            (-[WebCoreGraphicsBridge setFocusRingStyle:radius:color:]): Added.
    
    WebKit:
    
            Reviewed by Hyatt
    
            * WebCoreSupport.subproj/WebBridge.m:
            (-[WebBridge documentView]): Added.
            * WebCoreSupport.subproj/WebGraphicsBridge.h: Added.
            * WebCoreSupport.subproj/WebGraphicsBridge.m: Added.
            (+[WebGraphicsBridge createSharedBridge]): Added.
            (-[WebGraphicsBridge setFocusRingStyle:radius:color:]): Added.
            * WebKit.pbproj/project.pbxproj:
            * WebView.subproj/WebFrameView.m: Create a WebGraphicsBridge
    	when creating a WebFrameView.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@5327 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index b582588..ab1f74a 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,122 @@
+2003-10-30  Ken Kocienda  <kocienda at apple.com>
+
+        Reviewed by Hyatt
+
+	Support for tabbing to links.
+
+	Fixes these bugs
+
+	<rdar://problem/3468395>: fix full keyboard access loop for buttons
+	<rdar://problem/3468397>: paint aqua focus rings around text links
+	<rdar://problem/3468406>: focused links do not activate by hitting
+	   return key
+	<rdar://problem/3468410>: paintTextOutline in RenderText objects
+	   should be done at a higher level
+	<rdar://problem/3468424>: improve function to determine if a node is
+	   tab selectable
+	<rdar://problem/3468427>: add bridge function to access active
+	   document view for a node
+	<rdar://problem/3468429>: links do not scroll into view when focusing
+	<rdar://problem/3468435>: when tabbing out of a frame, last focused
+	   node is not cleared if it is a text link
+	<rdar://problem/3468436>: focus on text link does not clear when
+	   clicking mouse in document body
+	<rdar://problem/3468440>: add setRect convenience to QRect
+	<rdar://problem/3468444>: elements paint their outlines even if they
+	   are not visible
+	<rdar://problem/3468448>: setting focus on a node sets focus on all
+	   its siblings
+	<rdar://problem/3468456>: cannot tab to form image input elements
+	<rdar://problem/3468461>: tab focus can seem to disappear from view on
+	   pages with dhtml menus
+	<rdar://problem/3469021>: webcore bridge nextKeyView always starts 
+	from the beginning of the document
+
+        * WebCore-combined.exp: Export WebCoreGraphicsBridge class
+        * WebCore.exp: Ditto
+        * WebCore.pbproj/project.pbxproj: Add WebCoreGraphicsBridge class
+        * khtml/css/cssparser.cpp: 
+        (CSSParser::parseValue): border style check now take apple aqua
+	style into account
+        * khtml/css/cssvalues.in: Add -apple-aqua border value
+        * khtml/css/html4.css: Change focus, a:link:active, and a:visited:active
+	to use new -apple-aqua focus rings.
+        * khtml/html/html_formimpl.cpp:
+        (HTMLGenericFormElementImpl::isSelectable): Improve function so
+	that invisible elements are no longer considered selectable
+        * khtml/html/html_inlineimpl.cpp:
+        (HTMLAnchorElementImpl::isSelectable): Ditto.
+        (HTMLAnchorElementImpl::defaultEventHandler): Make return key
+	activate links as well as Enter.
+        * khtml/html/html_inlineimpl.h: Move isSelectable function into
+	implementation file.
+        * khtml/rendering/render_block.cpp: 
+        (khtml::RenderBlock::paintObject): Do not paint outlines if
+	content is invisible.
+        * khtml/rendering/render_flow.cpp:
+        (RenderFlow::getAbsoluteRepaintRect): Improve function to correctly
+	calculate repaint rects including outlines.
+        * khtml/rendering/render_image.cpp:
+        (RenderImage::paintObject): Do not paint outlines if
+        content is invisible.
+        * khtml/rendering/render_inline.cpp:
+        (RenderInline::paintObject): Ditto.
+        (RenderInline::addFocusRingRects): New function to gather up rects
+	to use for painting outlines.
+        (RenderInline::paintOutline): Added code to paint aqua focus rings.
+        * khtml/rendering/render_inline.h:
+        * khtml/rendering/render_object.cpp:
+        (RenderObject::drawBorder): Add case for apple aqua border style.
+        (RenderObject::addFocusRingRects): New function to gather up rects
+        to use for painting outlines.
+        (RenderObject::paintOutline): Added code to paint aqua focus rings.
+        (RenderObject::getAbsoluteRepaintRectWithOutline): Helper function
+	to calculate rectangle to use for repainting when an object has an
+	outline.
+        * khtml/rendering/render_object.h: Add addFocusRingRects declaration.
+        * khtml/rendering/render_style.h: Add APPLEAQUA to border enum
+        * khtml/rendering/render_text.cpp:
+        (RenderText::paintObject): Removed code to draw outlines.
+        * khtml/rendering/render_text.h: Ditto.
+        * khtml/xml/dom_elementimpl.cpp: Removed redundant isSelectable check.
+        * khtml/xml/dom_elementimpl.h: Ditto.
+        * khtml/xml/dom_nodeimpl.cpp:
+        (NodeImpl::isSelectable): Added.
+        (NodeBaseImpl::setFocus): Do not set focus on siblings.
+        * khtml/xml/dom_nodeimpl.h: Moved implementation to .cpp file.
+        * kwq/KWQButton.mm:
+        (-[KWQButton nextKeyView]): Send a blur before going to next
+	key view. This prevents focus from being lost altogether.
+        (-[KWQButton previousKeyView]): Ditto.
+        * kwq/KWQKHTMLPart.h: Added documentViewForNode function.
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::nextKeyViewInFrame): Add check for other focusables,
+	like text links.
+        (KWQKHTMLPart::nextKeyViewInFrameHierarchy): Remove focus when leaving
+	a view.
+        (KWQKHTMLPart::documentViewForNode): Added.
+        (KWQKHTMLPart::khtmlMousePressEvent): Remove focus when you click in
+	a non-focusable area, like the document body.
+        * kwq/KWQPainter.h: Added declarations.
+        * kwq/KWQPainter.mm:
+        (QPainterPrivate::QPainterPrivate): Modified constructor for new fields.
+        (QPainter::initFocusRing): Added.
+        (QPainter::addFocusRingRect): Added.
+        (QPainter::drawFocusRing): Added.
+        (QPainter::clearFocusRing): Added.
+        * kwq/KWQRect.h:
+        (QRect::setRect): Added.
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge nextKeyView]): Start from the currently-focused node,
+	if there is one, not unconditionally from the start of the document.
+        (-[WebCoreBridge previousKeyView]): Ditto
+        * kwq/WebCoreGraphicsBridge.h: Added.
+        * kwq/WebCoreGraphicsBridge.m: Added.
+        (+[WebCoreGraphicsBridge sharedBridge]): Added.
+        (-[WebCoreGraphicsBridge init]): Added.
+        (-[WebCoreGraphicsBridge setFocusRingStyle:radius:color:]): Added.
+
 2003-10-30  Maciej Stachowiak  <mjs at apple.com>
 
 	Fix mistake in my last change that I did not mean to commit.
diff --git a/WebCore/WebCore-combined.exp b/WebCore/WebCore-combined.exp
index cf5eb63..a0df609 100644
--- a/WebCore/WebCore-combined.exp
+++ b/WebCore/WebCore-combined.exp
@@ -3,6 +3,7 @@
 .objc_class_name_WebCoreCookieAdapter
 .objc_class_name_WebCoreEncodings
 .objc_class_name_WebCoreHistory
+.objc_class_name_WebCoreGraphicsBridge
 .objc_class_name_WebCoreImageRendererFactory
 .objc_class_name_WebCoreJavaScript
 .objc_class_name_WebCoreScrollView
diff --git a/WebCore/WebCore.exp b/WebCore/WebCore.exp
index 4777f6a..42297ae 100644
--- a/WebCore/WebCore.exp
+++ b/WebCore/WebCore.exp
@@ -3,6 +3,7 @@
 .objc_class_name_WebCoreCookieAdapter
 .objc_class_name_WebCoreEncodings
 .objc_class_name_WebCoreHistory
+.objc_class_name_WebCoreGraphicsBridge
 .objc_class_name_WebCoreImageRendererFactory
 .objc_class_name_WebCoreJavaScript
 .objc_class_name_WebCoreScrollView
diff --git a/WebCore/WebCore.pbproj/project.pbxproj b/WebCore/WebCore.pbproj/project.pbxproj
index cc5ae8f..e3eb562 100644
--- a/WebCore/WebCore.pbproj/project.pbxproj
+++ b/WebCore/WebCore.pbproj/project.pbxproj
@@ -512,6 +512,7 @@
 				55998A5E052B59CC0017A6C1,
 				55998A60052B59CC0017A6C1,
 				65A640F10533BB1F0085E777,
+				BE26F15505517DE000BFA0C3,
 			);
 			isa = PBXHeadersBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -773,6 +774,7 @@
 				55998A61052B59CC0017A6C1,
 				65F80698054D9F86008BF776,
 				65732B69054EF483007B42F8,
+				BE26F15605517DE000BFA0C3,
 			);
 			isa = PBXSourcesBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -2222,6 +2224,37 @@
 //BE2
 //BE3
 //BE4
+		BE26F15305517DE000BFA0C3 = {
+			expectedFileType = sourcecode.c.h;
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = WebCoreGraphicsBridge.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		BE26F15405517DE000BFA0C3 = {
+			expectedFileType = sourcecode.c.objc;
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = WebCoreGraphicsBridge.m;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		BE26F15505517DE000BFA0C3 = {
+			fileRef = BE26F15305517DE000BFA0C3;
+			isa = PBXBuildFile;
+			settings = {
+				ATTRIBUTES = (
+					Private,
+				);
+			};
+		};
+		BE26F15605517DE000BFA0C3 = {
+			fileRef = BE26F15405517DE000BFA0C3;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
 		BE983D95052A2E0A00892D85 = {
 			expectedFileType = sourcecode.c.h;
 			fileEncoding = 30;
@@ -7615,6 +7648,8 @@
 				F56234DF03026D7301629B47,
 				F56234E003026D7301629B47,
 				F587854C02DE375901EA4122,
+				BE26F15305517DE000BFA0C3,
+				BE26F15405517DE000BFA0C3,
 				F5517DC2031AB56301A80180,
 				F5517DC3031AB56301A80180,
 				F587854D02DE375901EA4122,
diff --git a/WebCore/khtml/css/cssparser.cpp b/WebCore/khtml/css/cssparser.cpp
index 9ba8a3b..d76f0fb 100644
--- a/WebCore/khtml/css/cssparser.cpp
+++ b/WebCore/khtml/css/cssparser.cpp
@@ -568,7 +568,7 @@ bool CSSParser::parseValue( int propId, bool important )
     case CSS_PROP_BORDER_RIGHT_STYLE:   //   Defined as:    none | hidden | dotted | dashed |
     case CSS_PROP_BORDER_BOTTOM_STYLE:  //   solid | double | groove | ridge | inset | outset
     case CSS_PROP_BORDER_LEFT_STYLE:    ////
-	if (id >= CSS_VAL_NONE && id <= CSS_VAL_DOUBLE)
+	if (id >= CSS_VAL_NONE && id <= CSS_VAL__APPLE_AQUA)
 	    valid_primitive = true;
 	break;
 
diff --git a/WebCore/khtml/css/cssvalues.c b/WebCore/khtml/css/cssvalues.c
index 6383c68..28bd2e1 100644
--- a/WebCore/khtml/css/cssvalues.c
+++ b/WebCore/khtml/css/cssvalues.c
@@ -7,7 +7,7 @@ struct css_value {
     const char *name;
     int id;
 };
-/* maximum key range = 2079, duplicates = 1 */
+/* maximum key range = 1826, duplicates = 2 */
 
 #ifdef __GNUC__
 __inline
@@ -21,32 +21,32 @@ hash_val (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079,   20, 2079, 2079,    0,    5,
-        10,   15,   20,   25,   30,   35,   40,    0, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079,    0,  100,  195,
-        44,  250,  125,   98,    4,   40,    0,  144,    0,   99,
-        94,  205,   25,   30,  160,   95,    0,  255,  134,  228,
-       119,   25,  110, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079, 2079,
-      2079, 2079, 2079, 2079, 2079, 2079
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826,   20, 1826, 1826,    0,   10,
+        15,   20,   25,   30,   35,   40,    5,    0, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826,    0,    7,    3,
+       173,  210,  210,   53,  205,   40,    0,  153,    0,   20,
+        50,  125,   60,   25,    4,  125,    0,   65,  204,   65,
+        80,  170,  105, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826, 1826,
+      1826, 1826, 1826, 1826, 1826, 1826
     };
   register int hval = 0;
 
@@ -110,16 +110,19 @@ findValue (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 252,
+      TOTAL_KEYWORDS = 253,
       MIN_WORD_LENGTH = 2,
       MAX_WORD_LENGTH = 22,
       MIN_HASH_VALUE = 0,
-      MAX_HASH_VALUE = 2078
+      MAX_HASH_VALUE = 1825
     };
 
   static const struct css_value wordlist_value[] =
     {
       {"900", CSS_VAL_900},
+      {"ltr", CSS_VAL_LTR},
+      {"rtl", CSS_VAL_RTL},
+      {"800", CSS_VAL_800},
       {"100", CSS_VAL_100},
       {"200", CSS_VAL_200},
       {"300", CSS_VAL_300},
@@ -127,486 +130,453 @@ findValue (register const char *str, register unsigned int len)
       {"500", CSS_VAL_500},
       {"600", CSS_VAL_600},
       {"700", CSS_VAL_700},
-      {"800", CSS_VAL_800},
-      {"thin", CSS_VAL_THIN},
-      {"hand", CSS_VAL_HAND},
-      {"ltr", CSS_VAL_LTR},
-      {"rtl", CSS_VAL_RTL},
+      {"italic", CSS_VAL_ITALIC},
+      {"aqua", CSS_VAL_AQUA},
+      {"wait", CSS_VAL_WAIT},
+      {"up", CSS_VAL_UP},
+      {"start", CSS_VAL_START},
+      {"mix", CSS_VAL_MIX},
       {"small", CSS_VAL_SMALL},
-      {"fast", CSS_VAL_FAST},
+      {"black", CSS_VAL_BLACK},
+      {"static", CSS_VAL_STATIC},
       {"top", CSS_VAL_TOP},
+      {"auto", CSS_VAL_AUTO},
+      {"crop", CSS_VAL_CROP},
+      {"sub", CSS_VAL_SUB},
+      {"normal", CSS_VAL_NORMAL},
       {"teal", CSS_VAL_TEAL},
-      {"navy", CSS_VAL_NAVY},
-      {"start", CSS_VAL_START},
-      {"mix", CSS_VAL_MIX},
-      {"wait", CSS_VAL_WAIT},
-      {"italic", CSS_VAL_ITALIC},
-      {"help", CSS_VAL_HELP},
-      {"up", CSS_VAL_UP},
+      {"compact", CSS_VAL_COMPACT},
+      {"table", CSS_VAL_TABLE},
+      {"icon", CSS_VAL_ICON},
       {"gray", CSS_VAL_GRAY},
-      {"aqua", CSS_VAL_AQUA},
-      {"highlight", CSS_VAL_HIGHLIGHT},
-      {"ahead", CSS_VAL_AHEAD},
-      {"right", CSS_VAL_RIGHT},
-      {"both", CSS_VAL_BOTH},
-      {"static", CSS_VAL_STATIC},
+      {"run-in", CSS_VAL_RUN_IN},
+      {"portrait", CSS_VAL_PORTRAIT},
       {"x-small", CSS_VAL_X_SMALL},
-      {"hide", CSS_VAL_HIDE},
-      {"fantasy", CSS_VAL_FANTASY},
-      {"always", CSS_VAL_ALWAYS},
-      {"bold", CSS_VAL_BOLD},
-      {"table", CSS_VAL_TABLE},
-      {"text", CSS_VAL_TEXT},
-      {"disc", CSS_VAL_DISC},
-      {"left", CSS_VAL_LEFT},
       {"blink", CSS_VAL_BLINK},
-      {"katakana", CSS_VAL_KATAKANA},
-      {"thick", CSS_VAL_THICK},
-      {"solid", CSS_VAL_SOLID},
-      {"end", CSS_VAL_END},
+      {"scroll", CSS_VAL_SCROLL},
+      {"circle", CSS_VAL_CIRCLE},
+      {"large", CSS_VAL_LARGE},
+      {"scrollbar", CSS_VAL_SCROLLBAR},
       {"lime", CSS_VAL_LIME},
-      {"hiragana", CSS_VAL_HIRAGANA},
-      {"avoid", CSS_VAL_AVOID},
-      {"slide", CSS_VAL_SLIDE},
+      {"larger", CSS_VAL_LARGER},
       {"pre", CSS_VAL_PRE},
-      {"dashed", CSS_VAL_DASHED},
-      {"black", CSS_VAL_BLACK},
-      {"sub", CSS_VAL_SUB},
-      {"xx-small", CSS_VAL_XX_SMALL},
-      {"red", CSS_VAL_RED},
-      {"auto", CSS_VAL_AUTO},
-      {"hidden", CSS_VAL_HIDDEN},
-      {"middle", CSS_VAL_MIDDLE},
-      {"inset", CSS_VAL_INSET},
-      {"loud", CSS_VAL_LOUD},
-      {"large", CSS_VAL_LARGE},
-      {"inline", CSS_VAL_INLINE},
-      {"white", CSS_VAL_WHITE},
-      {"slow", CSS_VAL_SLOW},
-      {"small-caps", CSS_VAL_SMALL_CAPS},
-      {"show", CSS_VAL_SHOW},
-      {"grey", CSS_VAL_GREY},
-      {"icon", CSS_VAL_ICON},
-      {"justify", CSS_VAL_JUSTIFY},
-      {"dotted", CSS_VAL_DOTTED},
-      {"list-item", CSS_VAL_LIST_ITEM},
-      {"lighter", CSS_VAL_LIGHTER},
-      {"higher", CSS_VAL_HIGHER},
-      {"normal", CSS_VAL_NORMAL},
+      {"bottom", CSS_VAL_BOTTOM},
       {"caption", CSS_VAL_CAPTION},
-      {"inside", CSS_VAL_INSIDE},
-      {"down", CSS_VAL_DOWN},
-      {"single", CSS_VAL_SINGLE},
-      {"fixed", CSS_VAL_FIXED},
-      {"crop", CSS_VAL_CROP},
-      {"inherit", CSS_VAL_INHERIT},
-      {"-khtml-right", CSS_VAL__KHTML_RIGHT},
-      {"portrait", CSS_VAL_PORTRAIT},
-      {"ridge", CSS_VAL_RIDGE},
-      {"smaller", CSS_VAL_SMALLER},
       {"blue", CSS_VAL_BLUE},
-      {"bottom", CSS_VAL_BOTTOM},
-      {"text-top", CSS_VAL_TEXT_TOP},
-      {"decimal", CSS_VAL_DECIMAL},
-      {"olive", CSS_VAL_OLIVE},
-      {"level", CSS_VAL_LEVEL},
-      {"none", CSS_VAL_NONE},
       {"block", CSS_VAL_BLOCK},
-      {"x-large", CSS_VAL_X_LARGE},
-      {"graytext", CSS_VAL_GRAYTEXT},
-      {"scroll", CSS_VAL_SCROLL},
-      {"-khtml-text", CSS_VAL__KHTML_TEXT},
-      {"highlighttext", CSS_VAL_HIGHLIGHTTEXT},
-      {"visible", CSS_VAL_VISIBLE},
-      {"capitalize", CSS_VAL_CAPITALIZE},
-      {"-khtml-body", CSS_VAL__KHTML_BODY},
-      {"-khtml-left", CSS_VAL__KHTML_LEFT},
-      {"run-in", CSS_VAL_RUN_IN},
-      {"larger", CSS_VAL_LARGER},
-      {"multiple", CSS_VAL_MULTIPLE},
-      {"serif", CSS_VAL_SERIF},
-      {"default", CSS_VAL_DEFAULT},
-      {"invert", CSS_VAL_INVERT},
-      {"silver", CSS_VAL_SILVER},
-      {"infinite", CSS_VAL_INFINITE},
-      {"repeat", CSS_VAL_REPEAT},
-      {"move", CSS_VAL_MOVE},
-      {"above", CSS_VAL_ABOVE},
-      {"menu", CSS_VAL_MENU},
-      {"landscape", CSS_VAL_LANDSCAPE},
-      {"stretch", CSS_VAL_STRETCH},
-      {"yellow", CSS_VAL_YELLOW},
-      {"-khtml-box", CSS_VAL__KHTML_BOX},
+      {"text", CSS_VAL_TEXT},
+      {"thin", CSS_VAL_THIN},
+      {"right", CSS_VAL_RIGHT},
       {"nowrap", CSS_VAL_NOWRAP},
-      {"fuchsia", CSS_VAL_FUCHSIA},
-      {"purple", CSS_VAL_PURPLE},
-      {"compact", CSS_VAL_COMPACT},
-      {"wider", CSS_VAL_WIDER},
+      {"bold", CSS_VAL_BOLD},
+      {"slow", CSS_VAL_SLOW},
+      {"maroon", CSS_VAL_MAROON},
+      {"xx-small", CSS_VAL_XX_SMALL},
+      {"fast", CSS_VAL_FAST},
+      {"both", CSS_VAL_BOTH},
+      {"disc", CSS_VAL_DISC},
+      {"menu", CSS_VAL_MENU},
       {"status-bar", CSS_VAL_STATUS_BAR},
-      {"repeat-y", CSS_VAL_REPEAT_Y},
+      {"hiragana", CSS_VAL_HIRAGANA},
+      {"small-caps", CSS_VAL_SMALL_CAPS},
+      {"katakana", CSS_VAL_KATAKANA},
+      {"smaller", CSS_VAL_SMALLER},
+      {"always", CSS_VAL_ALWAYS},
+      {"loud", CSS_VAL_LOUD},
+      {"x-large", CSS_VAL_X_LARGE},
       {"armenian", CSS_VAL_ARMENIAN},
-      {"embed", CSS_VAL_EMBED},
-      {"-khtml-auto", CSS_VAL__KHTML_AUTO},
       {"cross", CSS_VAL_CROSS},
-      {"alternate", CSS_VAL_ALTERNATE},
-      {"bolder", CSS_VAL_BOLDER},
-      {"maroon", CSS_VAL_MAROON},
-      {"upper-alpha", CSS_VAL_UPPER_ALPHA},
-      {"xx-large", CSS_VAL_XX_LARGE},
-      {"collapse", CSS_VAL_COLLAPSE},
-      {"small-caption", CSS_VAL_SMALL_CAPTION},
-      {"pointer", CSS_VAL_POINTER},
-      {"vertical", CSS_VAL_VERTICAL},
-      {"separate", CSS_VAL_SEPARATE},
+      {"red", CSS_VAL_RED},
+      {"inline", CSS_VAL_INLINE},
+      {"multiple", CSS_VAL_MULTIPLE},
+      {"purple", CSS_VAL_PURPLE},
+      {"thick", CSS_VAL_THICK},
+      {"lower", CSS_VAL_LOWER},
       {"below", CSS_VAL_BELOW},
-      {"super", CSS_VAL_SUPER},
-      {"medium", CSS_VAL_MEDIUM},
+      {"down", CSS_VAL_DOWN},
+      {"left", CSS_VAL_LEFT},
+      {"navy", CSS_VAL_NAVY},
+      {"inset", CSS_VAL_INSET},
+      {"hand", CSS_VAL_HAND},
       {"square", CSS_VAL_SQUARE},
-      {"inline-axis", CSS_VAL_INLINE_AXIS},
-      {"outset", CSS_VAL_OUTSET},
+      {"table-row", CSS_VAL_TABLE_ROW},
+      {"end", CSS_VAL_END},
+      {"none", CSS_VAL_NONE},
+      {"grey", CSS_VAL_GREY},
       {"orange", CSS_VAL_ORANGE},
-      {"katakana-iroha", CSS_VAL_KATAKANA_IROHA},
+      {"small-caption", CSS_VAL_SMALL_CAPTION},
+      {"decimal", CSS_VAL_DECIMAL},
+      {"xx-large", CSS_VAL_XX_LARGE},
       {"table-cell", CSS_VAL_TABLE_CELL},
-      {"horizontal", CSS_VAL_HORIZONTAL},
-      {"repeat-x", CSS_VAL_REPEAT_X},
-      {"hiragana-iroha", CSS_VAL_HIRAGANA_IROHA},
-      {"expanded", CSS_VAL_EXPANDED},
-      {"baseline", CSS_VAL_BASELINE},
-      {"infotext", CSS_VAL_INFOTEXT},
-      {"relative", CSS_VAL_RELATIVE},
+      {"list-item", CSS_VAL_LIST_ITEM},
+      {"capitalize", CSS_VAL_CAPITALIZE},
+      {"-apple-aqua", CSS_VAL__APPLE_AQUA},
+      {"vertical", CSS_VAL_VERTICAL},
+      {"narrower", CSS_VAL_NARROWER},
+      {"solid", CSS_VAL_SOLID},
+      {"super", CSS_VAL_SUPER},
+      {"oblique", CSS_VAL_OBLIQUE},
+      {"alternate", CSS_VAL_ALTERNATE},
+      {"help", CSS_VAL_HELP},
+      {"center", CSS_VAL_CENTER},
+      {"single", CSS_VAL_SINGLE},
+      {"ridge", CSS_VAL_RIDGE},
+      {"repeat", CSS_VAL_REPEAT},
+      {"pointer", CSS_VAL_POINTER},
+      {"wider", CSS_VAL_WIDER},
+      {"text-top", CSS_VAL_TEXT_TOP},
+      {"table-column", CSS_VAL_TABLE_COLUMN},
+      {"transparent", CSS_VAL_TRANSPARENT},
+      {"invert", CSS_VAL_INVERT},
+      {"upper-latin", CSS_VAL_UPPER_LATIN},
+      {"lighter", CSS_VAL_LIGHTER},
+      {"lower-latin", CSS_VAL_LOWER_LATIN},
+      {"table-caption", CSS_VAL_TABLE_CAPTION},
+      {"graytext", CSS_VAL_GRAYTEXT},
       {"window", CSS_VAL_WINDOW},
-      {"circle", CSS_VAL_CIRCLE},
-      {"lower", CSS_VAL_LOWER},
-      {"-khtml-normal", CSS_VAL__KHTML_NORMAL},
+      {"bolder", CSS_VAL_BOLDER},
+      {"white", CSS_VAL_WHITE},
+      {"show", CSS_VAL_SHOW},
+      {"collapse", CSS_VAL_COLLAPSE},
+      {"outset", CSS_VAL_OUTSET},
       {"green", CSS_VAL_GREEN},
-      {"double", CSS_VAL_DOUBLE},
-      {"upper-latin", CSS_VAL_UPPER_LATIN},
-      {"transparent", CSS_VAL_TRANSPARENT},
-      {"oblique", CSS_VAL_OBLIQUE},
-      {"inline-table", CSS_VAL_INLINE_TABLE},
-      {"outside", CSS_VAL_OUTSIDE},
-      {"lower-alpha", CSS_VAL_LOWER_ALPHA},
+      {"medium", CSS_VAL_MEDIUM},
+      {"backwards", CSS_VAL_BACKWARDS},
       {"absolute", CSS_VAL_ABSOLUTE},
-      {"scrollbar", CSS_VAL_SCROLLBAR},
+      {"marquee", CSS_VAL_MARQUEE},
+      {"georgian", CSS_VAL_GEORGIAN},
+      {"buttontext", CSS_VAL_BUTTONTEXT},
+      {"avoid", CSS_VAL_AVOID},
+      {"above", CSS_VAL_ABOVE},
+      {"stretch", CSS_VAL_STRETCH},
+      {"slide", CSS_VAL_SLIDE},
+      {"inherit", CSS_VAL_INHERIT},
       {"block-axis", CSS_VAL_BLOCK_AXIS},
+      {"fantasy", CSS_VAL_FANTASY},
+      {"move", CSS_VAL_MOVE},
       {"captiontext", CSS_VAL_CAPTIONTEXT},
-      {"table-caption", CSS_VAL_TABLE_CAPTION},
-      {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT},
-      {"georgian", CSS_VAL_GEORGIAN},
-      {"center", CSS_VAL_CENTER},
-      {"crosshair", CSS_VAL_CROSSHAIR},
-      {"table-row", CSS_VAL_TABLE_ROW},
-      {"backwards", CSS_VAL_BACKWARDS},
-      {"sans-serif", CSS_VAL_SANS_SERIF},
-      {"hebrew", CSS_VAL_HEBREW},
-      {"threedhighlight", CSS_VAL_THREEDHIGHLIGHT},
-      {"lower-latin", CSS_VAL_LOWER_LATIN},
+      {"yellow", CSS_VAL_YELLOW},
+      {"olive", CSS_VAL_OLIVE},
+      {"double", CSS_VAL_DOUBLE},
+      {"silver", CSS_VAL_SILVER},
+      {"repeat-x", CSS_VAL_REPEAT_X},
       {"text-bottom", CSS_VAL_TEXT_BOTTOM},
-      {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
-      {"no-repeat", CSS_VAL_NO_REPEAT},
-      {"forwards", CSS_VAL_FORWARDS},
-      {"n-resize", CSS_VAL_N_RESIZE},
-      {"s-resize", CSS_VAL_S_RESIZE},
-      {"buttontext", CSS_VAL_BUTTONTEXT},
-      {"marquee", CSS_VAL_MARQUEE},
-      {"groove", CSS_VAL_GROOVE},
+      {"ahead", CSS_VAL_AHEAD},
+      {"serif", CSS_VAL_SERIF},
+      {"-khtml-auto", CSS_VAL__KHTML_AUTO},
+      {"separate", CSS_VAL_SEPARATE},
+      {"justify", CSS_VAL_JUSTIFY},
+      {"middle", CSS_VAL_MIDDLE},
+      {"-khtml-normal", CSS_VAL__KHTML_NORMAL},
+      {"upper-roman", CSS_VAL_UPPER_ROMAN},
+      {"embed", CSS_VAL_EMBED},
+      {"landscape", CSS_VAL_LANDSCAPE},
+      {"lower-roman", CSS_VAL_LOWER_ROMAN},
+      {"level", CSS_VAL_LEVEL},
+      {"visible", CSS_VAL_VISIBLE},
+      {"inline-table", CSS_VAL_INLINE_TABLE},
+      {"hide", CSS_VAL_HIDE},
+      {"-khtml-box", CSS_VAL__KHTML_BOX},
+      {"crosshair", CSS_VAL_CROSSHAIR},
+      {"background", CSS_VAL_BACKGROUND},
       {"menutext", CSS_VAL_MENUTEXT},
+      {"inside", CSS_VAL_INSIDE},
+      {"infinite", CSS_VAL_INFINITE},
+      {"baseline", CSS_VAL_BASELINE},
+      {"fuchsia", CSS_VAL_FUCHSIA},
       {"cursive", CSS_VAL_CURSIVE},
-      {"line-through", CSS_VAL_LINE_THROUGH},
-      {"overline", CSS_VAL_OVERLINE},
-      {"w-resize", CSS_VAL_W_RESIZE},
+      {"horizontal", CSS_VAL_HORIZONTAL},
+      {"inline-axis", CSS_VAL_INLINE_AXIS},
+      {"default", CSS_VAL_DEFAULT},
+      {"relative", CSS_VAL_RELATIVE},
+      {"buttonface", CSS_VAL_BUTTONFACE},
+      {"repeat-y", CSS_VAL_REPEAT_Y},
+      {"no-repeat", CSS_VAL_NO_REPEAT},
+      {"dotted", CSS_VAL_DOTTED},
+      {"upper-alpha", CSS_VAL_UPPER_ALPHA},
+      {"lower-alpha", CSS_VAL_LOWER_ALPHA},
+      {"inline-block", CSS_VAL_INLINE_BLOCK},
+      {"hebrew", CSS_VAL_HEBREW},
+      {"forwards", CSS_VAL_FORWARDS},
+      {"-khtml-text", CSS_VAL__KHTML_TEXT},
+      {"fixed", CSS_VAL_FIXED},
+      {"infotext", CSS_VAL_INFOTEXT},
+      {"higher", CSS_VAL_HIGHER},
       {"monospace", CSS_VAL_MONOSPACE},
-      {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE},
-      {"e-resize", CSS_VAL_E_RESIZE},
+      {"-khtml-right", CSS_VAL__KHTML_RIGHT},
+      {"groove", CSS_VAL_GROOVE},
+      {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
       {"activecaption", CSS_VAL_ACTIVECAPTION},
-      {"inline-block", CSS_VAL_INLINE_BLOCK},
+      {"uppercase", CSS_VAL_UPPERCASE},
+      {"outside", CSS_VAL_OUTSIDE},
+      {"lowercase", CSS_VAL_LOWERCASE},
+      {"hiragana-iroha", CSS_VAL_HIRAGANA_IROHA},
+      {"katakana-iroha", CSS_VAL_KATAKANA_IROHA},
+      {"table-row-group", CSS_VAL_TABLE_ROW_GROUP},
+      {"n-resize", CSS_VAL_N_RESIZE},
+      {"w-resize", CSS_VAL_W_RESIZE},
+      {"highlight", CSS_VAL_HIGHLIGHT},
       {"underline", CSS_VAL_UNDERLINE},
       {"windowtext", CSS_VAL_WINDOWTEXT},
-      {"table-column", CSS_VAL_TABLE_COLUMN},
-      {"buttonface", CSS_VAL_BUTTONFACE},
-      {"buttonshadow", CSS_VAL_BUTTONSHADOW},
-      {"-khtml-center", CSS_VAL__KHTML_CENTER},
+      {"inactivecaption", CSS_VAL_INACTIVECAPTION},
+      {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP},
       {"nw-resize", CSS_VAL_NW_RESIZE},
+      {"-khtml-left", CSS_VAL__KHTML_LEFT},
+      {"s-resize", CSS_VAL_S_RESIZE},
+      {"overline", CSS_VAL_OVERLINE},
+      {"hidden", CSS_VAL_HIDDEN},
+      {"appworkspace", CSS_VAL_APPWORKSPACE},
+      {"dashed", CSS_VAL_DASHED},
+      {"open-quote", CSS_VAL_OPEN_QUOTE},
+      {"-khtml-body", CSS_VAL__KHTML_BODY},
+      {"-khtml-center", CSS_VAL__KHTML_CENTER},
       {"sw-resize", CSS_VAL_SW_RESIZE},
+      {"close-quote", CSS_VAL_CLOSE_QUOTE},
+      {"sans-serif", CSS_VAL_SANS_SERIF},
+      {"e-resize", CSS_VAL_E_RESIZE},
+      {"buttonshadow", CSS_VAL_BUTTONSHADOW},
+      {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE},
+      {"expanded", CSS_VAL_EXPANDED},
+      {"windowframe", CSS_VAL_WINDOWFRAME},
+      {"reverse", CSS_VAL_REVERSE},
+      {"ne-resize", CSS_VAL_NE_RESIZE},
+      {"message-box", CSS_VAL_MESSAGE_BOX},
+      {"line-through", CSS_VAL_LINE_THROUGH},
+      {"activeborder", CSS_VAL_ACTIVEBORDER},
       {"-khtml-inline-box", CSS_VAL__KHTML_INLINE_BOX},
-      {"uppercase", CSS_VAL_UPPERCASE},
-      {"narrower", CSS_VAL_NARROWER},
       {"ultra-expanded", CSS_VAL_ULTRA_EXPANDED},
-      {"ne-resize", CSS_VAL_NE_RESIZE},
+      {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT},
       {"se-resize", CSS_VAL_SE_RESIZE},
+      {"lower-greek", CSS_VAL_LOWER_GREEK},
+      {"infobackground", CSS_VAL_INFOBACKGROUND},
+      {"inactiveborder", CSS_VAL_INACTIVEBORDER},
+      {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE},
+      {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC},
+      {"highlighttext", CSS_VAL_HIGHLIGHTTEXT},
+      {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE},
+      {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT},
       {"condensed", CSS_VAL_CONDENSED},
+      {"ultra-condensed", CSS_VAL_ULTRA_CONDENSED},
       {"threedface", CSS_VAL_THREEDFACE},
-      {"threedshadow", CSS_VAL_THREEDSHADOW},
-      {"upper-roman", CSS_VAL_UPPER_ROMAN},
-      {"background", CSS_VAL_BACKGROUND},
-      {"reverse", CSS_VAL_REVERSE},
-      {"inactivecaption", CSS_VAL_INACTIVECAPTION},
-      {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
-      {"message-box", CSS_VAL_MESSAGE_BOX},
-      {"open-quote", CSS_VAL_OPEN_QUOTE},
-      {"appworkspace", CSS_VAL_APPWORKSPACE},
-      {"extra-expanded", CSS_VAL_EXTRA_EXPANDED},
-      {"lowercase", CSS_VAL_LOWERCASE},
-      {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC},
-      {"lower-roman", CSS_VAL_LOWER_ROMAN},
-      {"threedlightshadow", CSS_VAL_THREEDLIGHTSHADOW},
-      {"windowframe", CSS_VAL_WINDOWFRAME},
+      {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP},
       {"bidi-override", CSS_VAL_BIDI_OVERRIDE},
+      {"extra-expanded", CSS_VAL_EXTRA_EXPANDED},
       {"-khtml-around-floats", CSS_VAL__KHTML_AROUND_FLOATS},
-      {"close-quote", CSS_VAL_CLOSE_QUOTE},
-      {"activeborder", CSS_VAL_ACTIVEBORDER},
-      {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
-      {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW},
-      {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE},
-      {"inactiveborder", CSS_VAL_INACTIVEBORDER},
-      {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT},
-      {"ultra-condensed", CSS_VAL_ULTRA_CONDENSED},
-      {"table-row-group", CSS_VAL_TABLE_ROW_GROUP},
-      {"infobackground", CSS_VAL_INFOBACKGROUND},
-      {"lower-greek", CSS_VAL_LOWER_GREEK},
-      {"semi-condensed", CSS_VAL_SEMI_CONDENSED},
-      {"extra-condensed", CSS_VAL_EXTRA_CONDENSED},
-      {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE},
       {"table-header-group", CSS_VAL_TABLE_HEADER_GROUP},
+      {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
+      {"extra-condensed", CSS_VAL_EXTRA_CONDENSED},
       {"decimal-leading-zero", CSS_VAL_DECIMAL_LEADING_ZERO},
-      {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP},
-      {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP}
+      {"threedshadow", CSS_VAL_THREEDSHADOW},
+      {"semi-condensed", CSS_VAL_SEMI_CONDENSED},
+      {"threedhighlight", CSS_VAL_THREEDHIGHLIGHT},
+      {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
+      {"threedlightshadow", CSS_VAL_THREEDLIGHTSHADOW},
+      {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW}
     };
 
   static const short lookup[] =
     {
-         0,   -1,   -1,   -1,   -1,    1,   -1,   -1,
-        -1,   -1,    2,   -1,   -1,   -1,   -1,    3,
-        -1,   -1,   -1,   -1,    4,   -1,   -1,   -1,
-        -1,    5,   -1,   -1,   -1,   -1,    6,   -1,
-        -1,   -1,   -1,    7,   -1,   -1,   -1,   -1,
-         8,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,    9,   -1,   -1,   -1,   10,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-      -414, -241,   -2,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   13,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   14,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   15,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   16,   -1,   -1,   17,   -1,   18,
-        -1,   -1,   19,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   20,   -1,   -1,   -1,
-        -1,   -1,   -1,   21,   -1,   -1,   -1,   22,
-        23,   -1,   -1,   24,   -1,   25,   -1,   -1,
-        26,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   27,   -1,   -1,   -1,   28,   -1,
-        -1,   -1,   -1,   -1,   -1,   29,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   30,   -1,   -1,   31,   -1,   -1,
-        -1,   -1,   32,   33,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   34,   35,   36,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   37,   -1,   -1,   -1,   -1,   38,   39,
-        -1,   -1,   40,   -1,   -1,   -1,   41,   42,
-        43,   -1,   -1,   -1,   44,   45,   -1,   -1,
-        -1,   -1,   -1,   -1,   46,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   47,
-        -1,   -1,   -1,   -1,   -1,   48,   -1,   -1,
-        -1,   -1,   -1,   49,   -1,   50,   -1,   51,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   52,   -1,   53,   -1,   54,   -1,
-        -1,   -1,   -1,   -1,   55,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   56,   57,   -1,   58,
+         0,   -1,   -1,   -1, -260,    3, -252,   -2,
+        -1,   -1,    4,   -1,   -1,   -1,   -1,    5,
+        -1,   -1,   -1,   -1,    6,   -1,   -1,   -1,
+        -1,    7,   -1,   -1,   -1,   -1,    8,   -1,
+        -1,   -1,   -1,    9,   -1,   -1,   -1,   -1,
+        10,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   11,   -1,   -1,   -1,   -1,
+        -1,   -1,   12,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   13,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   14,   -1,   -1,
+        -1,   15,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   16,   -1,   -1,   -1,
+        -1,   17,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   18,   -1,   -1,   -1,   -1,
+        19,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   20,   -1,   -1,   -1,   -1,   21,   -1,
+        22,   -1,   -1,   -1,   -1,   23,   -1,   24,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   25,   26,   -1,   -1,   -1,   -1,
+        -1,   27,   28,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   29,   -1,   30,   -1,   -1,
+        -1,   31,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   32,   -1,   -1,
+        -1,   -1,   33,   -1,   -1,   -1,   -1,   -1,
+        -1,   34,   -1,   -1,   35,   -1,   -1,   -1,
+        -1,   -1,   -1,   36,   37,   -1,   38,   39,
+        -1,   -1,   40,   -1,   -1,   41,   42,   -1,
+        -1,   -1,   43,   -1,   -1,   -1,   -1,   -1,
+        44,   -1,   45,   -1,   -1,   -1,   -1,   46,
+        -1,   -1,   -1,   -1,   -1,   -1,   47,   -1,
+        48,   49,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   50,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   51,   52,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   53,
+        -1,   54,   -1,   -1,   -1,   55,   -1,   -1,
+        -1,   56,   57,   -1,   -1,   -1,   -1,   -1,
+        58,   59,   -1,   -1,   60,   -1,   -1,   61,
+        62,   -1,   -1,   63,   -1,   -1,   -1,   64,
+        -1,   -1,   -1,   -1,   -1,   -1,   65,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   66,   -1,
+        -1,   -1,   -1,   67,   -1,   -1,   68,   -1,
+        -1,   -1,   -1,   69,   -1,   -1,   -1,   70,
+        -1,   71,   -1,   -1,   72,   -1,   -1,   73,
+        -1,   -1,   -1,   -1,   -1,   74,   -1,   -1,
+        -1,   -1,   -1,   -1,   75,   -1,   -1,   -1,
+        76,   77,   -1,   -1,   78,   79,   -1,   80,
+        -1,   81,   -1,   82,   -1,   83,   -1,   -1,
+        -1,   -1,   84,   85,   -1,   -1,   86,   87,
+        -1,   -1,   88,   -1,   -1,   -1,   -1,   89,
+        -1,   -1,   90,   -1,   91,   92,   93,   94,
+        95,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        96,   -1,   97,   98,   -1,   99,  100,   -1,
+       101,   -1,   -1,   -1,  102,   -1,   -1,   -1,
+        -1,  103,   -1,   -1,  104,   -1,   -1,  105,
+        -1,   -1,   -1,   -1,  106,   -1,   -1,  107,
+        -1,   -1,   -1,   -1,  108,  109,   -1,   -1,
+       110,   -1,  111,  112,   -1,  113,  114,  115,
+      -775, -137,   -2,  118,   -1,  119,   -1,  120,
+       121,   -1,  122,   -1,  123,   -1,  124,  125,
+        -1,  126,   -1,   -1,   -1,   -1,  127,   -1,
+        -1,   -1,  128,  129,  130,  131,   -1,   -1,
+        -1,  132,   -1,  133,   -1,   -1,   -1,  134,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       135,   -1,  136,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  137,  138,   -1,   -1,  139,
+       140,   -1,   -1,  141,  142,  143,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       144,  145,  146,   -1,   -1,   -1,   -1,   -1,
+       147,  148,  149,   -1,  150,  151,   -1,  152,
+       153,   -1,  154,  155,  156,   -1,  157,  158,
+        -1,  159,   -1,  160,   -1,   -1,  161,   -1,
+       162,   -1,  163,   -1,   -1,   -1,   -1,   -1,
+       164,   -1,   -1,  165,   -1,   -1,  166,  167,
+        -1,   -1,  168,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  169,   -1,  170,   -1,
+        -1,   -1,  171,   -1,   -1,   -1,   -1,  172,
+        -1,  173,   -1,   -1,  174,   -1,   -1,   -1,
+        -1,  175,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  176,   -1,   -1,  177,   -1,   -1,
+        -1,   -1,  178,   -1,  179,   -1,   -1,   -1,
+        -1,  180,   -1,  181,   -1,  182,  183,   -1,
+       184,  185,  186,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  187,
+        -1,  188,  189,   -1,   -1,   -1,  190,   -1,
+        -1,   -1,  191,   -1,   -1,   -1,  192,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  193,   -1,
+        -1,   -1,   -1,   -1,  194,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        59,   -1,   -1,   -1,   60,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   61,   -1,
-        -1,   -1,   62,   -1,   -1,   -1,   -1,   -1,
-        63,   64,   -1,   -1,   65,   66,   67,   -1,
-        -1,   -1,   -1,   -1,   68,   -1,   -1,   69,
-        70,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        71,   -1,   -1,   -1,   72,   -1,   73,   74,
-        -1,   -1,   -1,   75,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   76,   -1,   -1,   -1,   -1,
-        -1,   77,   78,   -1,   -1,   -1,   -1,   -1,
-        -1,   79,   -1,   -1,   80,   81,   82,   -1,
-        83,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   84,   85,   -1,   -1,
-        -1,   86,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   87,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   88,   89,   -1,   -1,
-        -1,   -1,   90,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   91,   92,   -1,   -1,   93,
-        -1,   -1,   -1,   -1,   94,   -1,   -1,   95,
-        96,   97,   -1,   98,   99,  100,  101,  102,
-        -1,   -1,   -1,   -1,  103,  104,  105,   -1,
-        -1,   -1,  106,   -1,   -1,   -1,  107,  108,
-        -1,   -1,   -1,  109,   -1,  110,   -1,   -1,
-       111,  112,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  113,   -1,   -1,   -1,   -1,  114,
-       115,   -1,   -1,   -1,  116,   -1,   -1,  117,
-       118,   -1,  119,  120,   -1,   -1,   -1,  121,
-        -1,   -1,  122,   -1,   -1,  123,   -1,   -1,
-        -1,   -1,  124,   -1,   -1,   -1,   -1,   -1,
-        -1,  125,   -1,   -1,   -1,   -1,   -1,  126,
-        -1,   -1,   -1,  127,   -1,   -1,  128,   -1,
-        -1,   -1,  129,   -1,   -1,   -1,   -1,  130,
-        -1,   -1,   -1,  131,  132,   -1,  133,   -1,
-        -1,   -1,  134,   -1,   -1,  135,  136,   -1,
-        -1,   -1,   -1,  137,  138,   -1,   -1,  139,
-        -1,  140,   -1,  141,   -1,   -1,  142,   -1,
-       143,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  144,   -1,  145,
-        -1,   -1,   -1,  146,   -1,   -1,   -1,  147,
-        -1,   -1,  148,   -1,   -1,   -1,   -1,   -1,
-       149,  150,  151,   -1,   -1,  152,   -1,   -1,
-        -1,  153,  154,   -1,   -1,   -1,   -1,  155,
-       156,   -1,   -1,  157,   -1,  158,   -1,   -1,
-        -1,   -1,   -1,   -1,  159,   -1,  160,   -1,
+        -1,   -1,   -1,  195,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  161,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  162,   -1,
-       163,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       164,  165,   -1,   -1,  166,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  167,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  168,   -1,   -1,  169,   -1,
+        -1,  196,  197,   -1,   -1,   -1,   -1,   -1,
+       198,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       170,  171,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  172,   -1,
-        -1,  173,   -1,   -1,   -1,  174,   -1,   -1,
-        -1,   -1,  175,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  176,   -1,   -1,  177,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  178,   -1,
+        -1,  199,   -1,  200,   -1,  201,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  202,  203,
+        -1,   -1,   -1,  204,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  205,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  206,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       179,   -1,   -1,   -1,  180,  181,  182,  183,
-        -1,   -1,   -1,   -1,  184,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  207,   -1,
+        -1,   -1,  208,   -1,   -1,  209,   -1,  210,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  185,   -1,  186,  187,   -1,   -1,  188,
+       211,   -1,   -1,   -1,  212,  213,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  214,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  189,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  190,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  215,   -1,   -1,   -1,
+        -1,  216,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  217,   -1,   -1,   -1,
+        -1,   -1,  218,   -1,   -1,   -1,   -1,  219,
+        -1,   -1,   -1,   -1,   -1,   -1,  220,  221,
+        -1,  222,   -1,   -1,  223,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  191,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       224,   -1,   -1,   -1,   -1,  225,   -1,   -1,
+       226,  227,   -1,   -1,   -1,   -1,  228,   -1,
+        -1,   -1,  229,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  230,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  192,  193,   -1,   -1,  194,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  231,   -1,   -1,
+        -1,  232,   -1,  233,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  234,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  235,   -1,   -1,   -1,  236,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  195,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       196,   -1,   -1,   -1,  197,   -1,   -1,  198,
-        -1,   -1,  199,   -1,   -1,   -1,  200,   -1,
-        -1,   -1,   -1,  201,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       202,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  203,   -1,   -1,   -1,   -1,   -1,
-       204,   -1,   -1,   -1,   -1,   -1,  205,   -1,
-        -1,   -1,   -1,   -1,  206,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  207,
-       208,  209,   -1,   -1,   -1,   -1,   -1,  210,
-        -1,  211,   -1,   -1,   -1,  212,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  213,  214,  215,
-        -1,   -1,   -1,   -1,   -1,   -1,  216,   -1,
-        -1,   -1,   -1,   -1,  217,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  218,   -1,  219,
-        -1,   -1,   -1,  220,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       221,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  222,  223,   -1,   -1,  224,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       225,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  226,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  227,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       237,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  238,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  239,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  228,  229,   -1,   -1,
-        -1,   -1,  230,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  240,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  241,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  231,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  232,
-        -1,   -1,  233,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  234,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  242,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  235,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  243,   -1,
+        -1,   -1,   -1,  244,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  236,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  245,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       237,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  238,   -1,   -1,
+       246,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-       239,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  240,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  247,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,  241,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  242,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  248,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  243,
-        -1,   -1,   -1,   -1,   -1,  244,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  245,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,  246,   -1,   -1,   -1,
-       247,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,  248,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  249,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -614,15 +584,14 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,   -1,  249,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       250,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,  250,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
@@ -631,10 +600,11 @@ findValue (register const char *str, register unsigned int len)
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  251,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,   -1,   -1,   -1,  251
+        -1,  252
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -684,6 +654,7 @@ static const char * const valueList[] = {
 "dashed", 
 "solid", 
 "double", 
+"-apple-aqua", 
 "caption", 
 "icon", 
 "menu", 
diff --git a/WebCore/khtml/css/cssvalues.h b/WebCore/khtml/css/cssvalues.h
index 86378f6..11fee58 100644
--- a/WebCore/khtml/css/cssvalues.h
+++ b/WebCore/khtml/css/cssvalues.h
@@ -20,248 +20,249 @@ DOM::DOMString getValueName(unsigned short id);
 #define CSS_VAL_DASHED 9
 #define CSS_VAL_SOLID 10
 #define CSS_VAL_DOUBLE 11
-#define CSS_VAL_CAPTION 12
-#define CSS_VAL_ICON 13
-#define CSS_VAL_MENU 14
-#define CSS_VAL_MESSAGE_BOX 15
-#define CSS_VAL_SMALL_CAPTION 16
-#define CSS_VAL_STATUS_BAR 17
-#define CSS_VAL_ITALIC 18
-#define CSS_VAL_OBLIQUE 19
-#define CSS_VAL_SMALL_CAPS 20
-#define CSS_VAL_NORMAL 21
-#define CSS_VAL_BOLD 22
-#define CSS_VAL_BOLDER 23
-#define CSS_VAL_LIGHTER 24
-#define CSS_VAL_100 25
-#define CSS_VAL_200 26
-#define CSS_VAL_300 27
-#define CSS_VAL_400 28
-#define CSS_VAL_500 29
-#define CSS_VAL_600 30
-#define CSS_VAL_700 31
-#define CSS_VAL_800 32
-#define CSS_VAL_900 33
-#define CSS_VAL_XX_SMALL 34
-#define CSS_VAL_X_SMALL 35
-#define CSS_VAL_SMALL 36
-#define CSS_VAL_MEDIUM 37
-#define CSS_VAL_LARGE 38
-#define CSS_VAL_X_LARGE 39
-#define CSS_VAL_XX_LARGE 40
-#define CSS_VAL__KHTML_XXX_LARGE 41
-#define CSS_VAL_SMALLER 42
-#define CSS_VAL_LARGER 43
-#define CSS_VAL_WIDER 44
-#define CSS_VAL_NARROWER 45
-#define CSS_VAL_ULTRA_CONDENSED 46
-#define CSS_VAL_EXTRA_CONDENSED 47
-#define CSS_VAL_CONDENSED 48
-#define CSS_VAL_SEMI_CONDENSED 49
-#define CSS_VAL_SEMI_EXPANDED 50
-#define CSS_VAL_EXPANDED 51
-#define CSS_VAL_EXTRA_EXPANDED 52
-#define CSS_VAL_ULTRA_EXPANDED 53
-#define CSS_VAL_SERIF 54
-#define CSS_VAL_SANS_SERIF 55
-#define CSS_VAL_CURSIVE 56
-#define CSS_VAL_FANTASY 57
-#define CSS_VAL_MONOSPACE 58
-#define CSS_VAL__KHTML_BODY 59
-#define CSS_VAL_TRANSPARENT 60
-#define CSS_VAL_AQUA 61
-#define CSS_VAL_BLACK 62
-#define CSS_VAL_BLUE 63
-#define CSS_VAL_FUCHSIA 64
-#define CSS_VAL_GRAY 65
-#define CSS_VAL_GREEN 66
-#define CSS_VAL_LIME 67
-#define CSS_VAL_MAROON 68
-#define CSS_VAL_NAVY 69
-#define CSS_VAL_OLIVE 70
-#define CSS_VAL_ORANGE 71
-#define CSS_VAL_PURPLE 72
-#define CSS_VAL_RED 73
-#define CSS_VAL_SILVER 74
-#define CSS_VAL_TEAL 75
-#define CSS_VAL_WHITE 76
-#define CSS_VAL_YELLOW 77
-#define CSS_VAL_ACTIVEBORDER 78
-#define CSS_VAL_ACTIVECAPTION 79
-#define CSS_VAL_APPWORKSPACE 80
-#define CSS_VAL_BACKGROUND 81
-#define CSS_VAL_BUTTONFACE 82
-#define CSS_VAL_BUTTONHIGHLIGHT 83
-#define CSS_VAL_BUTTONSHADOW 84
-#define CSS_VAL_BUTTONTEXT 85
-#define CSS_VAL_CAPTIONTEXT 86
-#define CSS_VAL_GRAYTEXT 87
-#define CSS_VAL_HIGHLIGHT 88
-#define CSS_VAL_HIGHLIGHTTEXT 89
-#define CSS_VAL_INACTIVEBORDER 90
-#define CSS_VAL_INACTIVECAPTION 91
-#define CSS_VAL_INACTIVECAPTIONTEXT 92
-#define CSS_VAL_INFOBACKGROUND 93
-#define CSS_VAL_INFOTEXT 94
-#define CSS_VAL_MENUTEXT 95
-#define CSS_VAL_SCROLLBAR 96
-#define CSS_VAL_THREEDDARKSHADOW 97
-#define CSS_VAL_THREEDFACE 98
-#define CSS_VAL_THREEDHIGHLIGHT 99
-#define CSS_VAL_THREEDLIGHTSHADOW 100
-#define CSS_VAL_THREEDSHADOW 101
-#define CSS_VAL_WINDOW 102
-#define CSS_VAL_WINDOWFRAME 103
-#define CSS_VAL_WINDOWTEXT 104
-#define CSS_VAL_GREY 105
-#define CSS_VAL__KHTML_TEXT 106
-#define CSS_VAL_REPEAT 107
-#define CSS_VAL_REPEAT_X 108
-#define CSS_VAL_REPEAT_Y 109
-#define CSS_VAL_NO_REPEAT 110
-#define CSS_VAL_BASELINE 111
-#define CSS_VAL_MIDDLE 112
-#define CSS_VAL_SUB 113
-#define CSS_VAL_SUPER 114
-#define CSS_VAL_TEXT_TOP 115
-#define CSS_VAL_TEXT_BOTTOM 116
-#define CSS_VAL_TOP 117
-#define CSS_VAL_BOTTOM 118
-#define CSS_VAL__KHTML_BASELINE_MIDDLE 119
-#define CSS_VAL__KHTML_AUTO 120
-#define CSS_VAL_LEFT 121
-#define CSS_VAL_RIGHT 122
-#define CSS_VAL_CENTER 123
-#define CSS_VAL_JUSTIFY 124
-#define CSS_VAL__KHTML_LEFT 125
-#define CSS_VAL__KHTML_RIGHT 126
-#define CSS_VAL__KHTML_CENTER 127
-#define CSS_VAL_OUTSIDE 128
-#define CSS_VAL_INSIDE 129
-#define CSS_VAL_DISC 130
-#define CSS_VAL_CIRCLE 131
-#define CSS_VAL_SQUARE 132
-#define CSS_VAL_DECIMAL 133
-#define CSS_VAL_DECIMAL_LEADING_ZERO 134
-#define CSS_VAL_LOWER_ROMAN 135
-#define CSS_VAL_UPPER_ROMAN 136
-#define CSS_VAL_LOWER_GREEK 137
-#define CSS_VAL_LOWER_ALPHA 138
-#define CSS_VAL_LOWER_LATIN 139
-#define CSS_VAL_UPPER_ALPHA 140
-#define CSS_VAL_UPPER_LATIN 141
-#define CSS_VAL_HEBREW 142
-#define CSS_VAL_ARMENIAN 143
-#define CSS_VAL_GEORGIAN 144
-#define CSS_VAL_CJK_IDEOGRAPHIC 145
-#define CSS_VAL_HIRAGANA 146
-#define CSS_VAL_KATAKANA 147
-#define CSS_VAL_HIRAGANA_IROHA 148
-#define CSS_VAL_KATAKANA_IROHA 149
-#define CSS_VAL_INLINE 150
-#define CSS_VAL_BLOCK 151
-#define CSS_VAL_LIST_ITEM 152
-#define CSS_VAL_RUN_IN 153
-#define CSS_VAL_COMPACT 154
-#define CSS_VAL_INLINE_BLOCK 155
-#define CSS_VAL_TABLE 156
-#define CSS_VAL_INLINE_TABLE 157
-#define CSS_VAL_TABLE_ROW_GROUP 158
-#define CSS_VAL_TABLE_HEADER_GROUP 159
-#define CSS_VAL_TABLE_FOOTER_GROUP 160
-#define CSS_VAL_TABLE_ROW 161
-#define CSS_VAL_TABLE_COLUMN_GROUP 162
-#define CSS_VAL_TABLE_COLUMN 163
-#define CSS_VAL_TABLE_CELL 164
-#define CSS_VAL_TABLE_CAPTION 165
-#define CSS_VAL__KHTML_BOX 166
-#define CSS_VAL__KHTML_INLINE_BOX 167
-#define CSS_VAL_AUTO 168
-#define CSS_VAL_CROSSHAIR 169
-#define CSS_VAL_DEFAULT 170
-#define CSS_VAL_POINTER 171
-#define CSS_VAL_MOVE 172
-#define CSS_VAL_E_RESIZE 173
-#define CSS_VAL_NE_RESIZE 174
-#define CSS_VAL_NW_RESIZE 175
-#define CSS_VAL_N_RESIZE 176
-#define CSS_VAL_SE_RESIZE 177
-#define CSS_VAL_SW_RESIZE 178
-#define CSS_VAL_S_RESIZE 179
-#define CSS_VAL_W_RESIZE 180
-#define CSS_VAL_TEXT 181
-#define CSS_VAL_WAIT 182
-#define CSS_VAL_HELP 183
-#define CSS_VAL_LTR 184
-#define CSS_VAL_RTL 185
-#define CSS_VAL_CAPITALIZE 186
-#define CSS_VAL_UPPERCASE 187
-#define CSS_VAL_LOWERCASE 188
-#define CSS_VAL_VISIBLE 189
-#define CSS_VAL_COLLAPSE 190
-#define CSS_VAL_ABOVE 191
-#define CSS_VAL_ABSOLUTE 192
-#define CSS_VAL_ALWAYS 193
-#define CSS_VAL_AVOID 194
-#define CSS_VAL_BELOW 195
-#define CSS_VAL_BIDI_OVERRIDE 196
-#define CSS_VAL_BLINK 197
-#define CSS_VAL_BOTH 198
-#define CSS_VAL_CLOSE_QUOTE 199
-#define CSS_VAL_CROP 200
-#define CSS_VAL_CROSS 201
-#define CSS_VAL_EMBED 202
-#define CSS_VAL_FIXED 203
-#define CSS_VAL_HAND 204
-#define CSS_VAL_HIDE 205
-#define CSS_VAL_HIGHER 206
-#define CSS_VAL_INVERT 207
-#define CSS_VAL_LANDSCAPE 208
-#define CSS_VAL_LEVEL 209
-#define CSS_VAL_LINE_THROUGH 210
-#define CSS_VAL_LOUD 211
-#define CSS_VAL_LOWER 212
-#define CSS_VAL_MARQUEE 213
-#define CSS_VAL_MIX 214
-#define CSS_VAL_NO_CLOSE_QUOTE 215
-#define CSS_VAL_NO_OPEN_QUOTE 216
-#define CSS_VAL_NOWRAP 217
-#define CSS_VAL_OPEN_QUOTE 218
-#define CSS_VAL_OVERLINE 219
-#define CSS_VAL_PORTRAIT 220
-#define CSS_VAL_PRE 221
-#define CSS_VAL_RELATIVE 222
-#define CSS_VAL_SCROLL 223
-#define CSS_VAL_SEPARATE 224
-#define CSS_VAL_SHOW 225
-#define CSS_VAL_STATIC 226
-#define CSS_VAL_THICK 227
-#define CSS_VAL_THIN 228
-#define CSS_VAL_UNDERLINE 229
-#define CSS_VAL__KHTML_NOWRAP 230
-#define CSS_VAL__KHTML_NORMAL 231
-#define CSS_VAL__KHTML_AROUND_FLOATS 232
-#define CSS_VAL_STRETCH 233
-#define CSS_VAL_START 234
-#define CSS_VAL_END 235
-#define CSS_VAL_REVERSE 236
-#define CSS_VAL_HORIZONTAL 237
-#define CSS_VAL_VERTICAL 238
-#define CSS_VAL_INLINE_AXIS 239
-#define CSS_VAL_BLOCK_AXIS 240
-#define CSS_VAL_SINGLE 241
-#define CSS_VAL_MULTIPLE 242
-#define CSS_VAL_FORWARDS 243
-#define CSS_VAL_BACKWARDS 244
-#define CSS_VAL_AHEAD 245
-#define CSS_VAL_UP 246
-#define CSS_VAL_DOWN 247
-#define CSS_VAL_SLOW 248
-#define CSS_VAL_FAST 249
-#define CSS_VAL_INFINITE 250
-#define CSS_VAL_SLIDE 251
-#define CSS_VAL_ALTERNATE 252
+#define CSS_VAL__APPLE_AQUA 12
+#define CSS_VAL_CAPTION 13
+#define CSS_VAL_ICON 14
+#define CSS_VAL_MENU 15
+#define CSS_VAL_MESSAGE_BOX 16
+#define CSS_VAL_SMALL_CAPTION 17
+#define CSS_VAL_STATUS_BAR 18
+#define CSS_VAL_ITALIC 19
+#define CSS_VAL_OBLIQUE 20
+#define CSS_VAL_SMALL_CAPS 21
+#define CSS_VAL_NORMAL 22
+#define CSS_VAL_BOLD 23
+#define CSS_VAL_BOLDER 24
+#define CSS_VAL_LIGHTER 25
+#define CSS_VAL_100 26
+#define CSS_VAL_200 27
+#define CSS_VAL_300 28
+#define CSS_VAL_400 29
+#define CSS_VAL_500 30
+#define CSS_VAL_600 31
+#define CSS_VAL_700 32
+#define CSS_VAL_800 33
+#define CSS_VAL_900 34
+#define CSS_VAL_XX_SMALL 35
+#define CSS_VAL_X_SMALL 36
+#define CSS_VAL_SMALL 37
+#define CSS_VAL_MEDIUM 38
+#define CSS_VAL_LARGE 39
+#define CSS_VAL_X_LARGE 40
+#define CSS_VAL_XX_LARGE 41
+#define CSS_VAL__KHTML_XXX_LARGE 42
+#define CSS_VAL_SMALLER 43
+#define CSS_VAL_LARGER 44
+#define CSS_VAL_WIDER 45
+#define CSS_VAL_NARROWER 46
+#define CSS_VAL_ULTRA_CONDENSED 47
+#define CSS_VAL_EXTRA_CONDENSED 48
+#define CSS_VAL_CONDENSED 49
+#define CSS_VAL_SEMI_CONDENSED 50
+#define CSS_VAL_SEMI_EXPANDED 51
+#define CSS_VAL_EXPANDED 52
+#define CSS_VAL_EXTRA_EXPANDED 53
+#define CSS_VAL_ULTRA_EXPANDED 54
+#define CSS_VAL_SERIF 55
+#define CSS_VAL_SANS_SERIF 56
+#define CSS_VAL_CURSIVE 57
+#define CSS_VAL_FANTASY 58
+#define CSS_VAL_MONOSPACE 59
+#define CSS_VAL__KHTML_BODY 60
+#define CSS_VAL_TRANSPARENT 61
+#define CSS_VAL_AQUA 62
+#define CSS_VAL_BLACK 63
+#define CSS_VAL_BLUE 64
+#define CSS_VAL_FUCHSIA 65
+#define CSS_VAL_GRAY 66
+#define CSS_VAL_GREEN 67
+#define CSS_VAL_LIME 68
+#define CSS_VAL_MAROON 69
+#define CSS_VAL_NAVY 70
+#define CSS_VAL_OLIVE 71
+#define CSS_VAL_ORANGE 72
+#define CSS_VAL_PURPLE 73
+#define CSS_VAL_RED 74
+#define CSS_VAL_SILVER 75
+#define CSS_VAL_TEAL 76
+#define CSS_VAL_WHITE 77
+#define CSS_VAL_YELLOW 78
+#define CSS_VAL_ACTIVEBORDER 79
+#define CSS_VAL_ACTIVECAPTION 80
+#define CSS_VAL_APPWORKSPACE 81
+#define CSS_VAL_BACKGROUND 82
+#define CSS_VAL_BUTTONFACE 83
+#define CSS_VAL_BUTTONHIGHLIGHT 84
+#define CSS_VAL_BUTTONSHADOW 85
+#define CSS_VAL_BUTTONTEXT 86
+#define CSS_VAL_CAPTIONTEXT 87
+#define CSS_VAL_GRAYTEXT 88
+#define CSS_VAL_HIGHLIGHT 89
+#define CSS_VAL_HIGHLIGHTTEXT 90
+#define CSS_VAL_INACTIVEBORDER 91
+#define CSS_VAL_INACTIVECAPTION 92
+#define CSS_VAL_INACTIVECAPTIONTEXT 93
+#define CSS_VAL_INFOBACKGROUND 94
+#define CSS_VAL_INFOTEXT 95
+#define CSS_VAL_MENUTEXT 96
+#define CSS_VAL_SCROLLBAR 97
+#define CSS_VAL_THREEDDARKSHADOW 98
+#define CSS_VAL_THREEDFACE 99
+#define CSS_VAL_THREEDHIGHLIGHT 100
+#define CSS_VAL_THREEDLIGHTSHADOW 101
+#define CSS_VAL_THREEDSHADOW 102
+#define CSS_VAL_WINDOW 103
+#define CSS_VAL_WINDOWFRAME 104
+#define CSS_VAL_WINDOWTEXT 105
+#define CSS_VAL_GREY 106
+#define CSS_VAL__KHTML_TEXT 107
+#define CSS_VAL_REPEAT 108
+#define CSS_VAL_REPEAT_X 109
+#define CSS_VAL_REPEAT_Y 110
+#define CSS_VAL_NO_REPEAT 111
+#define CSS_VAL_BASELINE 112
+#define CSS_VAL_MIDDLE 113
+#define CSS_VAL_SUB 114
+#define CSS_VAL_SUPER 115
+#define CSS_VAL_TEXT_TOP 116
+#define CSS_VAL_TEXT_BOTTOM 117
+#define CSS_VAL_TOP 118
+#define CSS_VAL_BOTTOM 119
+#define CSS_VAL__KHTML_BASELINE_MIDDLE 120
+#define CSS_VAL__KHTML_AUTO 121
+#define CSS_VAL_LEFT 122
+#define CSS_VAL_RIGHT 123
+#define CSS_VAL_CENTER 124
+#define CSS_VAL_JUSTIFY 125
+#define CSS_VAL__KHTML_LEFT 126
+#define CSS_VAL__KHTML_RIGHT 127
+#define CSS_VAL__KHTML_CENTER 128
+#define CSS_VAL_OUTSIDE 129
+#define CSS_VAL_INSIDE 130
+#define CSS_VAL_DISC 131
+#define CSS_VAL_CIRCLE 132
+#define CSS_VAL_SQUARE 133
+#define CSS_VAL_DECIMAL 134
+#define CSS_VAL_DECIMAL_LEADING_ZERO 135
+#define CSS_VAL_LOWER_ROMAN 136
+#define CSS_VAL_UPPER_ROMAN 137
+#define CSS_VAL_LOWER_GREEK 138
+#define CSS_VAL_LOWER_ALPHA 139
+#define CSS_VAL_LOWER_LATIN 140
+#define CSS_VAL_UPPER_ALPHA 141
+#define CSS_VAL_UPPER_LATIN 142
+#define CSS_VAL_HEBREW 143
+#define CSS_VAL_ARMENIAN 144
+#define CSS_VAL_GEORGIAN 145
+#define CSS_VAL_CJK_IDEOGRAPHIC 146
+#define CSS_VAL_HIRAGANA 147
+#define CSS_VAL_KATAKANA 148
+#define CSS_VAL_HIRAGANA_IROHA 149
+#define CSS_VAL_KATAKANA_IROHA 150
+#define CSS_VAL_INLINE 151
+#define CSS_VAL_BLOCK 152
+#define CSS_VAL_LIST_ITEM 153
+#define CSS_VAL_RUN_IN 154
+#define CSS_VAL_COMPACT 155
+#define CSS_VAL_INLINE_BLOCK 156
+#define CSS_VAL_TABLE 157
+#define CSS_VAL_INLINE_TABLE 158
+#define CSS_VAL_TABLE_ROW_GROUP 159
+#define CSS_VAL_TABLE_HEADER_GROUP 160
+#define CSS_VAL_TABLE_FOOTER_GROUP 161
+#define CSS_VAL_TABLE_ROW 162
+#define CSS_VAL_TABLE_COLUMN_GROUP 163
+#define CSS_VAL_TABLE_COLUMN 164
+#define CSS_VAL_TABLE_CELL 165
+#define CSS_VAL_TABLE_CAPTION 166
+#define CSS_VAL__KHTML_BOX 167
+#define CSS_VAL__KHTML_INLINE_BOX 168
+#define CSS_VAL_AUTO 169
+#define CSS_VAL_CROSSHAIR 170
+#define CSS_VAL_DEFAULT 171
+#define CSS_VAL_POINTER 172
+#define CSS_VAL_MOVE 173
+#define CSS_VAL_E_RESIZE 174
+#define CSS_VAL_NE_RESIZE 175
+#define CSS_VAL_NW_RESIZE 176
+#define CSS_VAL_N_RESIZE 177
+#define CSS_VAL_SE_RESIZE 178
+#define CSS_VAL_SW_RESIZE 179
+#define CSS_VAL_S_RESIZE 180
+#define CSS_VAL_W_RESIZE 181
+#define CSS_VAL_TEXT 182
+#define CSS_VAL_WAIT 183
+#define CSS_VAL_HELP 184
+#define CSS_VAL_LTR 185
+#define CSS_VAL_RTL 186
+#define CSS_VAL_CAPITALIZE 187
+#define CSS_VAL_UPPERCASE 188
+#define CSS_VAL_LOWERCASE 189
+#define CSS_VAL_VISIBLE 190
+#define CSS_VAL_COLLAPSE 191
+#define CSS_VAL_ABOVE 192
+#define CSS_VAL_ABSOLUTE 193
+#define CSS_VAL_ALWAYS 194
+#define CSS_VAL_AVOID 195
+#define CSS_VAL_BELOW 196
+#define CSS_VAL_BIDI_OVERRIDE 197
+#define CSS_VAL_BLINK 198
+#define CSS_VAL_BOTH 199
+#define CSS_VAL_CLOSE_QUOTE 200
+#define CSS_VAL_CROP 201
+#define CSS_VAL_CROSS 202
+#define CSS_VAL_EMBED 203
+#define CSS_VAL_FIXED 204
+#define CSS_VAL_HAND 205
+#define CSS_VAL_HIDE 206
+#define CSS_VAL_HIGHER 207
+#define CSS_VAL_INVERT 208
+#define CSS_VAL_LANDSCAPE 209
+#define CSS_VAL_LEVEL 210
+#define CSS_VAL_LINE_THROUGH 211
+#define CSS_VAL_LOUD 212
+#define CSS_VAL_LOWER 213
+#define CSS_VAL_MARQUEE 214
+#define CSS_VAL_MIX 215
+#define CSS_VAL_NO_CLOSE_QUOTE 216
+#define CSS_VAL_NO_OPEN_QUOTE 217
+#define CSS_VAL_NOWRAP 218
+#define CSS_VAL_OPEN_QUOTE 219
+#define CSS_VAL_OVERLINE 220
+#define CSS_VAL_PORTRAIT 221
+#define CSS_VAL_PRE 222
+#define CSS_VAL_RELATIVE 223
+#define CSS_VAL_SCROLL 224
+#define CSS_VAL_SEPARATE 225
+#define CSS_VAL_SHOW 226
+#define CSS_VAL_STATIC 227
+#define CSS_VAL_THICK 228
+#define CSS_VAL_THIN 229
+#define CSS_VAL_UNDERLINE 230
+#define CSS_VAL__KHTML_NOWRAP 231
+#define CSS_VAL__KHTML_NORMAL 232
+#define CSS_VAL__KHTML_AROUND_FLOATS 233
+#define CSS_VAL_STRETCH 234
+#define CSS_VAL_START 235
+#define CSS_VAL_END 236
+#define CSS_VAL_REVERSE 237
+#define CSS_VAL_HORIZONTAL 238
+#define CSS_VAL_VERTICAL 239
+#define CSS_VAL_INLINE_AXIS 240
+#define CSS_VAL_BLOCK_AXIS 241
+#define CSS_VAL_SINGLE 242
+#define CSS_VAL_MULTIPLE 243
+#define CSS_VAL_FORWARDS 244
+#define CSS_VAL_BACKWARDS 245
+#define CSS_VAL_AHEAD 246
+#define CSS_VAL_UP 247
+#define CSS_VAL_DOWN 248
+#define CSS_VAL_SLOW 249
+#define CSS_VAL_FAST 250
+#define CSS_VAL_INFINITE 251
+#define CSS_VAL_SLIDE 252
+#define CSS_VAL_ALTERNATE 253
 
-#define CSS_VAL_TOTAL 253
+#define CSS_VAL_TOTAL 254
 #endif
 
diff --git a/WebCore/khtml/css/cssvalues.in b/WebCore/khtml/css/cssvalues.in
index 5fc76d8..87a5218 100644
--- a/WebCore/khtml/css/cssvalues.in
+++ b/WebCore/khtml/css/cssvalues.in
@@ -25,6 +25,7 @@ dotted
 dashed
 solid
 double
+-apple-aqua
 #
 # CSS_PROP_FONT:
 #
diff --git a/WebCore/khtml/css/html4.css b/WebCore/khtml/css/html4.css
index e1f0b90..be2178c 100644
--- a/WebCore/khtml/css/html4.css
+++ b/WebCore/khtml/css/html4.css
@@ -430,11 +430,11 @@ acronym {
 	font-style: italic;
 }
 
-:focus          { outline: 1px dotted invert }
+:focus          { outline: -apple-aqua 5px }
 a:link          { color: #0000EE; text-decoration: underline; }
-a:link:active          { color: red; outline: gray 1px dotted; }
+a:link:active          { color: red; outline: -apple-aqua 5px; }
 a:visited              { color: #551A8B; text-decoration: underline; }
-a:visited:active       { color: red; outline: gray 1px dotted; }
+a:visited:active       { color: red; outline: -apple-aqua 5px; }
 
 /* ### :before is now supported, but we haven't tried reinstating this
    ### rule that was comment out long ago.
diff --git a/WebCore/khtml/html/html_formimpl.cpp b/WebCore/khtml/html/html_formimpl.cpp
index aa576ff..f9f950c 100644
--- a/WebCore/khtml/html/html_formimpl.cpp
+++ b/WebCore/khtml/html/html_formimpl.cpp
@@ -813,12 +813,16 @@ void HTMLGenericFormElementImpl::recalcStyle( StyleChange ch )
         m_render->updateFromElement();
 }
 
-
 bool HTMLGenericFormElementImpl::isSelectable() const
 {
-    return  m_render && m_render->isWidget() &&
-        static_cast<RenderWidget*>(m_render)->widget() &&
-        static_cast<RenderWidget*>(m_render)->widget()->focusPolicy() >= QWidget::TabFocus;
+    if (!m_render || m_render->width() == 0 || m_render->height() == 0 ||
+        (m_render->style() && m_render->style()->visibility() != VISIBLE))
+        return false;
+    if (m_render->isWidget()) {
+        return static_cast<RenderWidget*>(m_render)->widget() &&
+            static_cast<RenderWidget*>(m_render)->widget()->focusPolicy() >= QWidget::TabFocus;
+    }
+    return true;
 }
 
 void HTMLGenericFormElementImpl::defaultEventHandler(EventImpl *evt)
diff --git a/WebCore/khtml/html/html_inlineimpl.cpp b/WebCore/khtml/html/html_inlineimpl.cpp
index e144f85..ead0791 100644
--- a/WebCore/khtml/html/html_inlineimpl.cpp
+++ b/WebCore/khtml/html/html_inlineimpl.cpp
@@ -53,6 +53,14 @@ HTMLAnchorElementImpl::~HTMLAnchorElementImpl()
 {
 }
 
+bool HTMLAnchorElementImpl::isSelectable() const
+{
+    return m_hasAnchor && 
+        m_render && 
+        (m_render->width() > 0 && m_render->height() > 0) && 
+        m_render->style() && m_render->style()->visibility() == VISIBLE;
+}
+
 NodeImpl::Id HTMLAnchorElementImpl::id() const
 {
     return ID_A;
@@ -82,7 +90,7 @@ void HTMLAnchorElementImpl::defaultEventHandler(EventImpl *evt)
         }
 
         if ( k ) {
-            if (k->keyIdentifier() != "Enter") {
+            if (k->keyIdentifier() != "U+00000d" && k->keyIdentifier() != "Enter") {
                 HTMLElementImpl::defaultEventHandler(evt);
                 return;
             }
diff --git a/WebCore/khtml/html/html_inlineimpl.h b/WebCore/khtml/html/html_inlineimpl.h
index b8c8e60..88eb4de 100644
--- a/WebCore/khtml/html/html_inlineimpl.h
+++ b/WebCore/khtml/html/html_inlineimpl.h
@@ -36,7 +36,7 @@ public:
     HTMLAnchorElementImpl(DocumentPtr *doc);
     ~HTMLAnchorElementImpl();
 
-    virtual bool isSelectable() const { return m_hasAnchor; }
+    virtual bool isSelectable() const;
     virtual Id id() const;
     virtual void parseAttribute(AttributeImpl *attr);
     virtual void defaultEventHandler(EventImpl *evt);
diff --git a/WebCore/khtml/rendering/render_block.cpp b/WebCore/khtml/rendering/render_block.cpp
index c1532f5..07542f2 100644
--- a/WebCore/khtml/rendering/render_block.cpp
+++ b/WebCore/khtml/rendering/render_block.cpp
@@ -1213,8 +1213,8 @@ void RenderBlock::paintObject(QPainter *p, int _x, int _y,
         paintFloats(p, _x, _y, _w, _h, scrolledX, scrolledY, paintAction == PaintActionSelection);
 
     // 4. paint outline.
-    if (!inlineFlow && paintAction == PaintActionForeground &&
-        !childrenInline() && style()->outlineWidth())
+    if (!inlineFlow && paintAction == PaintActionForeground && 
+        style()->outlineWidth() && style()->visibility() == VISIBLE)
         paintOutline(p, _tx, _ty, width(), height(), style());
 
 #ifdef BOX_DEBUG
diff --git a/WebCore/khtml/rendering/render_flow.cpp b/WebCore/khtml/rendering/render_flow.cpp
index fa3cafe..142c591 100644
--- a/WebCore/khtml/rendering/render_flow.cpp
+++ b/WebCore/khtml/rendering/render_flow.cpp
@@ -249,8 +249,24 @@ QRect RenderFlow::getAbsoluteRepaintRect()
         if (style()->position() == RELATIVE)
             relativePositionOffset(left, top);
 #endif
-        QRect r(-ow+left, -ow+top, width()+ow*2, height()+ow*2);
+        int eow = ow;
+#ifdef APPLE_CHANGES
+        // Fudge a little to make sure we don't leave artifacts.
+        // We need to do better at this.
+        if (ow && style()->outlineStyle() == APPLEAQUA)
+            eow += 2;
+#endif
+        QRect r(-eow+left, -eow+top, width()+eow*2, height()+eow*2);
         containingBlock()->computeAbsoluteRepaintRect(r);
+        if (ow) {
+            for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) {
+                if (!curr->isText()) {
+                    QRect childRect = curr->getAbsoluteRepaintRectWithOutline(ow);
+                    r = r.unite(childRect);
+                }
+            }
+        }
+
         return r;
     }
     else {
diff --git a/WebCore/khtml/rendering/render_image.cpp b/WebCore/khtml/rendering/render_image.cpp
index 583fd84..067873d 100644
--- a/WebCore/khtml/rendering/render_image.cpp
+++ b/WebCore/khtml/rendering/render_image.cpp
@@ -350,7 +350,7 @@ void RenderImage::paintObject(QPainter *p, int /*_x*/, int /*_y*/, int /*_w*/, i
 
         }
     }
-    if(style()->outlineWidth())
+    if(style()->outlineWidth() && style()->visibility() == VISIBLE)
         paintOutline(p, _tx, _ty, width(), height(), style());
 }
 
diff --git a/WebCore/khtml/rendering/render_inline.cpp b/WebCore/khtml/rendering/render_inline.cpp
index 63b2026..dae3f5b 100644
--- a/WebCore/khtml/rendering/render_inline.cpp
+++ b/WebCore/khtml/rendering/render_inline.cpp
@@ -294,6 +294,121 @@ void RenderInline::paintObject(QPainter *p, int _x, int _y,
     }
 
     paintLineBoxDecorations(p, _x, _y, _w, _h, _tx, _ty, paintAction);
+    if (style()->visibility() == VISIBLE && paintAction == PaintActionForeground) {
+        QRect r(_x, _y, _w, _h);
+        paintOutline(p, _tx, _ty, r, r, r);
+    }
+}
+
+void RenderInline::addFocusRingRects(QPainter *p, int _tx, int _ty)
+{
+    for (InlineRunBox* curr = firstLineBox(); curr; curr = curr->nextLineBox()) {
+        p->addFocusRingRect(_tx + curr->xPos(), 
+                            _ty + curr->yPos(), 
+                            curr->width(), 
+                            curr->height());
+    }
+    
+    for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) {
+        if (!curr->isText())
+            curr->addFocusRingRects(p, _tx + curr->xPos(), _ty + curr->yPos());
+    }    
+}
+
+void RenderInline::paintOutline(QPainter *p, int tx, int ty, const QRect &lastline, const QRect &thisline, const QRect &nextline)
+{
+    int ow = style()->outlineWidth();
+    if (ow == 0)
+        return;
+    
+    EBorderStyle os = style()->outlineStyle();
+    QColor oc = style()->outlineColor();
+    if (!oc.isValid())
+        oc = style()->color();
+    
+    int t = ty + thisline.top();
+    int l = tx + thisline.left();
+    int b = ty + thisline.bottom() + 1;
+    int r = tx + thisline.right() + 1;
+    
+#ifdef APPLE_CHANGES
+    if (os == APPLEAQUA) {
+        p->initFocusRing(ow, oc);
+        addFocusRingRects(p, tx, ty);
+        p->drawFocusRing();
+        p->clearFocusRing();
+        return;
+    }
+#endif
+    
+    // left edge
+    drawBorder(p,
+               l - ow,
+               t - (lastline.isEmpty() || thisline.left() < lastline.left() || lastline.right() <= thisline.left() ? ow : 0),
+               l,
+               b + (nextline.isEmpty() || thisline.left() <= nextline.left() || nextline.right() <= thisline.left() ? ow : 0),
+               BSLeft,
+               oc, style()->color(), os,
+               (lastline.isEmpty() || thisline.left() < lastline.left() || lastline.right() <= thisline.left() ? ow : -ow),
+               (nextline.isEmpty() || thisline.left() <= nextline.left() || nextline.right() <= thisline.left() ? ow : -ow),
+               true);
+    
+    // right edge
+    drawBorder(p,
+               r,
+               t - (lastline.isEmpty() || lastline.right() < thisline.right() || thisline.right() <= lastline.left() ? ow : 0),
+               r + ow,
+               b + (nextline.isEmpty() || nextline.right() <= thisline.right() || thisline.right() <= nextline.left() ? ow : 0),
+               BSRight,
+               oc, style()->color(), os,
+               (lastline.isEmpty() || lastline.right() < thisline.right() || thisline.right() <= lastline.left() ? ow : -ow),
+               (nextline.isEmpty() || nextline.right() <= thisline.right() || thisline.right() <= nextline.left() ? ow : -ow),
+               true);
+    // upper edge
+    if ( thisline.left() < lastline.left())
+        drawBorder(p,
+                   l - ow,
+                   t - ow,
+                   QMIN(r+ow, (lastline.isValid()? tx+lastline.left() : 1000000)),
+                   t ,
+                   BSTop, oc, style()->color(), os,
+                   ow,
+                   (lastline.isValid() && tx+lastline.left()+1<r+ow ? -ow : ow),
+                   true);
+    
+    if (lastline.right() < thisline.right())
+        drawBorder(p,
+                   QMAX(lastline.isValid()?tx + lastline.right() + 1:-1000000, l - ow),
+                   t - ow,
+                   r + ow,
+                   t ,
+                   BSTop, oc, style()->color(), os,
+                   (lastline.isValid() && l-ow < tx+lastline.right()+1 ? -ow : ow),
+                   ow,
+                   true);
+    
+    // lower edge
+    if ( thisline.left() < nextline.left())
+        drawBorder(p,
+                   l - ow,
+                   b,
+                   QMIN(r+ow, nextline.isValid()? tx+nextline.left()+1 : 1000000),
+                   b + ow,
+                   BSBottom, oc, style()->color(), os,
+                   ow,
+                   (nextline.isValid() && tx+nextline.left()+1<r+ow? -ow : ow),
+                   true);
+    
+    if (nextline.right() < thisline.right())
+        drawBorder(p,
+                   QMAX(nextline.isValid()?tx+nextline.right()+1:-1000000 , l-ow),
+                   b,
+                   r + ow,
+                   b + ow,
+                   BSBottom, oc, style()->color(), os,
+                   (nextline.isValid() && l-ow < tx+nextline.right()+1? -ow : ow),
+                   ow,
+                   true);
 }
 
 void RenderInline::calcMinMaxWidth()
diff --git a/WebCore/khtml/rendering/render_inline.h b/WebCore/khtml/rendering/render_inline.h
index 3e17624..87a40c0 100644
--- a/WebCore/khtml/rendering/render_inline.h
+++ b/WebCore/khtml/rendering/render_inline.h
@@ -74,8 +74,13 @@ public:
     virtual int offsetLeft() const;
     virtual int offsetTop() const;
 
+#ifdef APPLE_CHANGES
+    virtual void addFocusRingRects(QPainter *painter, int _tx, int _ty);
+#endif
+    
 protected:
     static RenderInline* cloneInline(RenderFlow* src);
+    void paintOutline(QPainter *p, int tx, int ty, const QRect &prevLine, const QRect &thisLine, const QRect &nextLine);
     
 private:
     bool m_isContinuation : 1; // Whether or not we're a continuation of an inline.
diff --git a/WebCore/khtml/rendering/render_object.cpp b/WebCore/khtml/rendering/render_object.cpp
index 772d2e7..7c219c8 100644
--- a/WebCore/khtml/rendering/render_object.cpp
+++ b/WebCore/khtml/rendering/render_object.cpp
@@ -617,6 +617,9 @@ void RenderObject::drawBorder(QPainter *p, int x1, int y1, int x2, int y2,
     {
     case BNONE:
     case BHIDDEN:
+#ifdef APPLE_CHANGES
+    case APPLEAQUA:
+#endif
         // should not happen
         if(invalidisInvert && p->rasterOp() == Qt::XorROP)
             p->setRasterOp(Qt::CopyROP);
@@ -899,13 +902,30 @@ void RenderObject::paintBorder(QPainter *p, int _tx, int _ty, int w, int h, cons
     }
 }
 
+void RenderObject::addFocusRingRects(QPainter *p, int _tx, int _ty)
+{
+    p->addFocusRingRect(_tx, _ty, width(), height());
+}
+
 void RenderObject::paintOutline(QPainter *p, int _tx, int _ty, int w, int h, const RenderStyle* style)
 {
     int ow = style->outlineWidth();
     if(!ow) return;
 
-    const QColor& oc = style->outlineColor();
     EBorderStyle os = style->outlineStyle();
+    QColor oc = style->outlineColor();
+    if (!oc.isValid())
+        oc = style->color();
+    
+#ifdef APPLE_CHANGES
+    if (os == APPLEAQUA) {
+        p->initFocusRing(ow, oc);
+        addFocusRingRects(p, _tx, _ty);
+        p->drawFocusRing();
+        p->clearFocusRing();
+        return;
+    }
+#endif
 
     drawBorder(p, _tx-ow, _ty-ow, _tx, _ty+h+ow, BSLeft,
 	       QColor(oc), style->color(),
@@ -1008,6 +1028,30 @@ void RenderObject::repaintObjectsBeforeLayout()
 
 #endif
 
+QRect RenderObject::getAbsoluteRepaintRectWithOutline(int ow)
+{
+    int eow = ow;
+#if APPLE_CHANGES
+    // Fudge a little to make sure we don't leave artifacts.
+    // We need to do better at this.
+    if (style()->outlineStyle() == APPLEAQUA)
+        eow += 2;
+#endif
+    QRect r(getAbsoluteRepaintRect());
+    r.setRect(r.x()-eow, r.y()-eow, r.width()+eow*2, r.height()+eow*2);
+
+    if (isInlineFlow()) {
+        for (RenderObject* curr = firstChild(); curr; curr = curr->nextSibling()) {
+            if (!curr->isText()) {
+                QRect childRect = curr->getAbsoluteRepaintRectWithOutline(ow);
+                r = r.unite(childRect);
+            }
+        }
+    }
+
+    return r;
+}
+
 QRect RenderObject::getAbsoluteRepaintRect()
 {
     if (parent())
diff --git a/WebCore/khtml/rendering/render_object.h b/WebCore/khtml/rendering/render_object.h
index 19e59cd..1a0a00e 100644
--- a/WebCore/khtml/rendering/render_object.h
+++ b/WebCore/khtml/rendering/render_object.h
@@ -562,6 +562,10 @@ public:
     virtual int borderLeft() const { return style()->borderLeftWidth(); }
     virtual int borderRight() const { return style()->borderRightWidth(); }
 
+#if APPLE_CHANGES
+    virtual void addFocusRingRects(QPainter *painter, int _tx, int _ty);
+#endif
+
     virtual short minWidth() const { return 0; }
     virtual short maxWidth() const { return 0; }
 
@@ -589,7 +593,7 @@ public:
 
     // Repaint a specific subrectangle within a given object.  The rect |r| is in the object's coordinate space.
     void repaintRectangle(const QRect& r, bool immediate = false);
-
+    
 #ifdef INCREMENTAL_REPAINTING
     // Repaint only if our old bounds and new bounds are different.
     virtual void repaintAfterLayoutIfNeeded(const QRect& oldBounds, const QRect& oldFullBounds);
@@ -610,6 +614,8 @@ public:
     // coordinate space.  This method deals with outlines and overflow.
     virtual QRect getAbsoluteRepaintRect();
 
+    QRect getAbsoluteRepaintRectWithOutline(int ow);
+
 #ifdef INCREMENTAL_REPAINTING
     virtual void getAbsoluteRepaintRectIncludingFloats(QRect& bounds, QRect& boundsWithChildren);
 #endif
diff --git a/WebCore/khtml/rendering/render_style.h b/WebCore/khtml/rendering/render_style.h
index 7c1a9f7..8c1a2f8 100644
--- a/WebCore/khtml/rendering/render_style.h
+++ b/WebCore/khtml/rendering/render_style.h
@@ -188,6 +188,9 @@ enum EFloat {
 // not change this order!
 enum EBorderStyle {
     BNONE, BHIDDEN, INSET, GROOVE, RIDGE, OUTSET, DOTTED, DASHED, SOLID, DOUBLE
+#ifdef APPLE_CHANGES
+    , APPLEAQUA
+#endif
 };
 
 
diff --git a/WebCore/khtml/rendering/render_text.cpp b/WebCore/khtml/rendering/render_text.cpp
index 354bc41..8f6cbe7 100644
--- a/WebCore/khtml/rendering/render_text.cpp
+++ b/WebCore/khtml/rendering/render_text.cpp
@@ -589,14 +589,6 @@ void RenderText::paintObject(QPainter *p, int /*x*/, int y, int /*w*/, int h,
         }
 
         InlineTextBox* s;
-        int minx =  1000000;
-        int maxx = -1000000;
-        int outlinebox_y = m_lines[si]->m_y;
-	QPtrList <QRect> linerects;
-        linerects.setAutoDelete(true);
-        linerects.append(new QRect());
-
-	bool renderOutline = style()->outlineWidth()!=0;
 
 	const Font *font = &style()->htmlFont();
 
@@ -770,28 +762,6 @@ void RenderText::paintObject(QPainter *p, int /*x*/, int y, int /*w*/, int h,
 
             }
 
-#if APPLE_CHANGES
-            if (drawText)
-#endif
-            if(renderOutline) {
-                if(outlinebox_y == s->m_y) {
-                    if(minx > s->m_x)  minx = s->m_x;
-                    int newmaxx = s->m_x+s->m_width;
-                    //if (parent()->isInline() && si==0) newmaxx-=paddingLeft();
-                    if (parent()->isInline() && si==int(m_lines.count())-1) newmaxx-=paddingRight();
-                    if(maxx < newmaxx) maxx = newmaxx;
-                }
-                else {
-                    QRect *curLine = new QRect(minx, outlinebox_y, maxx-minx, m_lineHeight);
-                    linerects.append(curLine);
-
-                    outlinebox_y = s->m_y;
-                    minx = s->m_x;
-                    maxx = s->m_x+s->m_width;
-                    //if (parent()->isInline() && si==0) maxx-=paddingLeft();
-                    if (parent()->isInline() && si==int(m_lines.count())-1) maxx-=paddingRight();
-                }
-            }
 #ifdef BIDI_DEBUG
             {
                 int h = lineHeight( false ) + paddingTop() + paddingBottom() + borderTop() + borderBottom();
@@ -808,14 +778,6 @@ void RenderText::paintObject(QPainter *p, int /*x*/, int y, int /*w*/, int h,
 #if APPLE_CHANGES
         } // end of for loop
 #endif
-
-        if(renderOutline)
-	  {
-	    linerects.append(new QRect(minx, outlinebox_y, maxx-minx, m_lineHeight));
-	    linerects.append(new QRect());
-	    for (unsigned int i = 1; i < linerects.count() - 1; i++)
-            paintTextOutline(p, tx, ty, *linerects.at(i-1), *linerects.at(i), *linerects.at(i+1));
-	  }
     }
 }
 
@@ -1336,87 +1298,6 @@ const Font *RenderText::htmlFont(bool firstLine) const
     return &style(firstLine)->htmlFont();
 }
 
-void RenderText::paintTextOutline(QPainter *p, int tx, int ty, const QRect &lastline, const QRect &thisline, const QRect &nextline)
-{
-  int ow = style()->outlineWidth();
-  EBorderStyle os = style()->outlineStyle();
-  QColor oc = style()->outlineColor();
-
-  int t = ty + thisline.top();
-  int l = tx + thisline.left();
-  int b = ty + thisline.bottom() + 1;
-  int r = tx + thisline.right() + 1;
-
-  // left edge
-  drawBorder(p,
-	     l - ow,
-	     t - (lastline.isEmpty() || thisline.left() < lastline.left() || lastline.right() <= thisline.left() ? ow : 0),
-	     l,
-	     b + (nextline.isEmpty() || thisline.left() <= nextline.left() || nextline.right() <= thisline.left() ? ow : 0),
-	     BSLeft,
-	     oc, style()->color(), os,
-	     (lastline.isEmpty() || thisline.left() < lastline.left() || lastline.right() <= thisline.left() ? ow : -ow),
-	     (nextline.isEmpty() || thisline.left() <= nextline.left() || nextline.right() <= thisline.left() ? ow : -ow),
-	     true);
-
-  // right edge
-  drawBorder(p,
-	     r,
-	     t - (lastline.isEmpty() || lastline.right() < thisline.right() || thisline.right() <= lastline.left() ? ow : 0),
-	     r + ow,
-	     b + (nextline.isEmpty() || nextline.right() <= thisline.right() || thisline.right() <= nextline.left() ? ow : 0),
-	     BSRight,
-	     oc, style()->color(), os,
-	     (lastline.isEmpty() || lastline.right() < thisline.right() || thisline.right() <= lastline.left() ? ow : -ow),
-	     (nextline.isEmpty() || nextline.right() <= thisline.right() || thisline.right() <= nextline.left() ? ow : -ow),
-	     true);
-  // upper edge
-  if ( thisline.left() < lastline.left())
-      drawBorder(p,
-		 l - ow,
-		 t - ow,
-		 QMIN(r+ow, (lastline.isValid()? tx+lastline.left() : 1000000)),
-		 t ,
-		 BSTop, oc, style()->color(), os,
-		 ow,
-		 (lastline.isValid() && tx+lastline.left()+1<r+ow ? -ow : ow),
-		 true);
-
-  if (lastline.right() < thisline.right())
-      drawBorder(p,
-		 QMAX(lastline.isValid()?tx + lastline.right() + 1:-1000000, l - ow),
-		 t - ow,
-		 r + ow,
-		 t ,
-		 BSTop, oc, style()->color(), os,
-		 (lastline.isValid() && l-ow < tx+lastline.right()+1 ? -ow : ow),
-		 ow,
-		 true);
-
-  // lower edge
-  if ( thisline.left() < nextline.left())
-      drawBorder(p,
-		 l - ow,
-		 b,
-		 QMIN(r+ow, nextline.isValid()? tx+nextline.left()+1 : 1000000),
-		 b + ow,
-		 BSBottom, oc, style()->color(), os,
-		 ow,
-		 (nextline.isValid() && tx+nextline.left()+1<r+ow? -ow : ow),
-		 true);
-
-  if (nextline.right() < thisline.right())
-      drawBorder(p,
-		 QMAX(nextline.isValid()?tx+nextline.right()+1:-1000000 , l-ow),
-		 b,
-		 r + ow,
-		 b + ow,
-		 BSBottom, oc, style()->color(), os,
-		 (nextline.isValid() && l-ow < tx+nextline.right()+1? -ow : ow),
-		 ow,
-		 true);
-}
-
 RenderTextFragment::RenderTextFragment(DOM::NodeImpl* _node, DOM::DOMStringImpl* _str,
                                        int startOffset, int endOffset)
 :RenderText(_node, _str->substring(startOffset, endOffset)), 
diff --git a/WebCore/khtml/rendering/render_text.h b/WebCore/khtml/rendering/render_text.h
index ea4043b..ff4eb03 100644
--- a/WebCore/khtml/rendering/render_text.h
+++ b/WebCore/khtml/rendering/render_text.h
@@ -217,9 +217,6 @@ public:
     bool allAscii() const;
 #endif
 
-protected:
-    void paintTextOutline(QPainter *p, int tx, int ty, const QRect &prevLine, const QRect &thisLine, const QRect &nextLine);
-
 #if APPLE_CHANGES
 public:
 #endif
diff --git a/WebCore/khtml/xml/dom_elementimpl.cpp b/WebCore/khtml/xml/dom_elementimpl.cpp
index 4b3d444..56304fc 100644
--- a/WebCore/khtml/xml/dom_elementimpl.cpp
+++ b/WebCore/khtml/xml/dom_elementimpl.cpp
@@ -398,11 +398,6 @@ void ElementImpl::recalcStyle( StyleChange change )
     setHasChangedChild( false );
 }
 
-bool ElementImpl::isSelectable() const
-{
-    return false;
-}
-
 // DOM Section 1.1.1
 bool ElementImpl::childAllowed( NodeImpl *newChild )
 {
diff --git a/WebCore/khtml/xml/dom_elementimpl.h b/WebCore/khtml/xml/dom_elementimpl.h
index f63b1d4..d61f2cb 100644
--- a/WebCore/khtml/xml/dom_elementimpl.h
+++ b/WebCore/khtml/xml/dom_elementimpl.h
@@ -197,7 +197,6 @@ public:
     virtual void recalcStyle( StyleChange = NoChange );
 
     virtual void mouseEventHandler( MouseEvent */*ev*/, bool /*inside*/ ) {};
-    virtual bool isSelectable() const;
     virtual bool childAllowed( NodeImpl *newChild );
     virtual bool childTypeAllowed( unsigned short type );
 
diff --git a/WebCore/khtml/xml/dom_nodeimpl.cpp b/WebCore/khtml/xml/dom_nodeimpl.cpp
index b072acb..299f484 100644
--- a/WebCore/khtml/xml/dom_nodeimpl.cpp
+++ b/WebCore/khtml/xml/dom_nodeimpl.cpp
@@ -359,6 +359,10 @@ bool NodeImpl::isInline() const
     return !isElementNode();
 }
 
+bool NodeImpl::isSelectable() const
+{
+    return false;
+}
 
 unsigned long NodeImpl::nodeIndex() const
 {
@@ -1731,8 +1735,6 @@ void NodeBaseImpl::setFocus(bool received)
     if (m_focused == received) return;
 
     NodeImpl::setFocus(received);
-    for(NodeImpl *it=_first;it;it=it->nextSibling())
-        it->setFocus(received);
 
     // note that we need to recalc the style
     setChanged();
diff --git a/WebCore/khtml/xml/dom_nodeimpl.h b/WebCore/khtml/xml/dom_nodeimpl.h
index 41072d7..0cfcddd 100644
--- a/WebCore/khtml/xml/dom_nodeimpl.h
+++ b/WebCore/khtml/xml/dom_nodeimpl.h
@@ -202,9 +202,9 @@ public:
     void setTabIndex(unsigned short _tabIndex) { m_tabIndex = _tabIndex; }
 
     /**
-     * whether this node can receive the keyboard focus.
+        * whether this node can receive the keyboard focus.
      */
-    virtual bool isSelectable() const { return false; };
+    virtual bool isSelectable() const;
 
     virtual bool isInline() const;
     virtual QString toHTML() const;
diff --git a/WebCore/kwq/KWQButton.mm b/WebCore/kwq/KWQButton.mm
index 1b17cd3..95bd347 100644
--- a/WebCore/kwq/KWQButton.mm
+++ b/WebCore/kwq/KWQButton.mm
@@ -107,16 +107,36 @@
 
 -(NSView *)nextKeyView
 {
-    return button && inNextValidKeyView
-        ? KWQKHTMLPart::nextKeyViewForWidget(button, KWQSelectingNext)
-        : [super nextKeyView];
+    NSView *view = nil;
+    if (button && inNextValidKeyView) {
+        // resign so we send a blur before setting focus on
+        // the next widget, otherwise the blur for this
+        // widget will remove focus from the widget after
+        // we tab to it
+        [self resignFirstResponder];
+        view = KWQKHTMLPart::nextKeyViewForWidget(button, KWQSelectingNext);
+    }
+    else { 
+        view = [super nextKeyView];
+    }
+    return view;
 }
 
 -(NSView *)previousKeyView
 {
-    return button && inNextValidKeyView
-        ? KWQKHTMLPart::nextKeyViewForWidget(button, KWQSelectingPrevious)
-        : [super previousKeyView];
+    NSView *view = nil;
+    if (button && inNextValidKeyView) {
+        // resign so we send a blur before setting focus on
+        // the next widget, otherwise the blur for this
+        // widget will remove focus from the widget after
+        // we tab to it
+        [self resignFirstResponder];
+        view = KWQKHTMLPart::nextKeyViewForWidget(button, KWQSelectingPrevious);
+    }
+    else { 
+        view = [super previousKeyView];
+    }
+    return view;
 }
 
 -(NSView *)nextValidKeyView
diff --git a/WebCore/kwq/KWQKHTMLPart.h b/WebCore/kwq/KWQKHTMLPart.h
index 4b8b6a0..bf59680 100644
--- a/WebCore/kwq/KWQKHTMLPart.h
+++ b/WebCore/kwq/KWQKHTMLPart.h
@@ -251,6 +251,7 @@ private:
     NSView *nextKeyViewInFrame(DOM::NodeImpl *startingPoint, KWQSelectionDirection);
     static DOM::NodeImpl *nodeForWidget(const QWidget *);
     static KWQKHTMLPart *partForNode(DOM::NodeImpl *);
+    static NSView *documentViewForNode(DOM::NodeImpl *);
     
     WebCoreBridge *_bridge;
     
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index 8ed426c..e3b7899 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -949,6 +949,21 @@ NSView *KWQKHTMLPart::nextKeyViewInFrame(NodeImpl *node, KWQSelectionDirection d
                 }
             }
         }
+        else if ([_bridge keyboardUIMode] == WebCoreFullKeyboardAccess) {
+            DocumentImpl *doc = xmlDocImpl();
+            if (!doc) {
+                return nil;
+            }
+            doc->setFocusNode(node);
+            if (view()) {
+                QRect rect = node->getRect();
+                int offset = 50; // same offset we use for jumping to anchors in a document
+                view()->ensureVisible(rect.right() + offset, rect.bottom() + offset);
+                view()->ensureVisible(rect.left() - offset, rect.top() - offset);
+            }
+            [_bridge makeFirstResponder:[_bridge documentView]];
+            return [_bridge documentView];
+        }
     }
 }
 
@@ -958,6 +973,12 @@ NSView *KWQKHTMLPart::nextKeyViewInFrameHierarchy(NodeImpl *node, KWQSelectionDi
     if (next) {
         return next;
     }
+
+    // remove focus from currently focused node
+    DocumentImpl *doc = xmlDocImpl();
+    if (doc) {
+        doc->setFocusNode(0);
+    }
     
     KWQKHTMLPart *parent = KWQ(parentPart());
     if (parent) {
@@ -1210,6 +1231,12 @@ KWQKHTMLPart *KWQKHTMLPart::partForNode(NodeImpl *node)
     return KWQ(node->getDocument()->view()->part());
 }
 
+NSView *KWQKHTMLPart::documentViewForNode(DOM::NodeImpl *node)
+{
+    WebCoreBridge *bridge = partForNode(node)->bridge();
+    return [bridge documentView];
+}
+
 NodeImpl *KWQKHTMLPart::nodeForWidget(const QWidget *widget)
 {
     ASSERT_ARG(widget, widget);
@@ -1505,6 +1532,11 @@ void KWQKHTMLPart::khtmlMousePressEvent(MousePressEvent *event)
         }
 	KWQ_UNBLOCK_EXCEPTIONS;
 
+        // remove focus from links
+        DocumentImpl *doc = xmlDocImpl();
+        if (doc)
+            doc->setFocusNode(0);
+        
         KHTMLPart::khtmlMousePressEvent(event);
     }
 }
@@ -2537,7 +2569,6 @@ NSAttributedString *KWQKHTMLPart::attributedString(NodeImpl *_start, int startOf
         }
     }
 
-    //NSLog (@"%@", result);
     return result;
 
     KWQ_UNBLOCK_EXCEPTIONS;
diff --git a/WebCore/kwq/KWQPainter.h b/WebCore/kwq/KWQPainter.h
index d93cb39..f02434d 100644
--- a/WebCore/kwq/KWQPainter.h
+++ b/WebCore/kwq/KWQPainter.h
@@ -113,6 +113,12 @@ public:
 
     void setShadow(int x, int y, int blur, const QColor& color);
     void clearShadow();
+
+    void initFocusRing(int width);
+    void initFocusRing(int width, const QColor &);
+    void addFocusRingRect(int x, int y, int width, int height);
+    void drawFocusRing();
+    void clearFocusRing();
     
 private:
     // no copying or assignment
diff --git a/WebCore/kwq/KWQPainter.mm b/WebCore/kwq/KWQPainter.mm
index c4676b6..2edfb5d 100644
--- a/WebCore/kwq/KWQPainter.mm
+++ b/WebCore/kwq/KWQPainter.mm
@@ -28,12 +28,14 @@
 #import "KWQAssertions.h"
 #import "KWQExceptions.h"
 #import "KWQFontMetrics.h"
+#import "KWQKHTMLPart.h"
 #import "KWQPaintDevice.h"
 #import "KWQPixmap.h"
 #import "KWQPointArray.h"
 #import "KWQPrinter.h"
 #import "KWQPtrStack.h"
 #import "KWQWidget.h"
+#import "WebCoreGraphicsBridge.h"
 #import "WebCoreImageRenderer.h"
 #import "WebCoreTextRenderer.h"
 #import "WebCoreTextRendererFactory.h"
@@ -52,12 +54,16 @@ struct QPState {
 };
 
 struct QPainterPrivate {
-    QPainterPrivate() : textRenderer(0) { }
-    ~QPainterPrivate() { [textRenderer release]; }
+    QPainterPrivate() : textRenderer(0), focusRingPath(0), focusRingWidth(0), hasFocusRingColor(false) { }
+    ~QPainterPrivate() { [textRenderer release]; [focusRingPath release]; }
     QPState state;
     QPtrStack<QPState> stack;
     id <WebCoreTextRenderer> textRenderer;
     QFont textRendererFont;
+    NSBezierPath *focusRingPath;
+    int focusRingWidth;
+    bool hasFocusRingColor;
+    QColor focusRingColor;
 };
 
 QPainter::QPainter() : data(new QPainterPrivate), _isForPrinting(false), _usesInactiveTextBackgroundColor(false)
@@ -668,3 +674,52 @@ void QPainter::clearShadow()
     CGContextSetShadowWithColor(context, CGSizeZero, 0, NULL);
 }
 
+void QPainter::initFocusRing(int width)
+{
+    clearFocusRing();
+    data->focusRingWidth = width;
+    data->hasFocusRingColor = false;
+    data->focusRingPath = [[NSBezierPath alloc] init];
+    [data->focusRingPath setWindingRule:NSNonZeroWindingRule];
+}
+
+void QPainter::initFocusRing(int width, const QColor &color)
+{
+    initFocusRing(width);
+    data->hasFocusRingColor = true;
+    data->focusRingColor = color;
+}
+
+void QPainter::addFocusRingRect(int x, int y, int width, int height)
+{
+    ASSERT(data->focusRingPath);
+    NSRect rect = NSMakeRect(x, y, width, height);
+    int offset = (data->focusRingWidth >> 1);
+    rect = NSInsetRect(rect, -offset, -offset);
+    [data->focusRingPath appendBezierPathWithRect:rect];
+}
+
+void QPainter::drawFocusRing()
+{
+    ASSERT(data->focusRingPath);
+    if (data->state.paintingDisabled)
+        return;
+
+    NSRect bounds = [data->focusRingPath bounds];
+    if (!NSIsEmptyRect(bounds)) {
+        int radius = (data->focusRingWidth >> 1);
+        NSColor *color = data->hasFocusRingColor ? data->focusRingColor.getNSColor() : nil;
+        [NSGraphicsContext saveGraphicsState];
+        [[WebCoreGraphicsBridge sharedBridge] setFocusRingStyle:NSFocusRingOnly radius:radius color:color];
+        [data->focusRingPath fill];
+        [NSGraphicsContext restoreGraphicsState];   
+    }
+}
+
+void QPainter::clearFocusRing()
+{
+    if (data->focusRingPath) {
+        [data->focusRingPath release];
+        data->focusRingPath = nil;
+    }
+}
diff --git a/WebCore/kwq/KWQRect.h b/WebCore/kwq/KWQRect.h
index 9591a9a..2dec95e 100644
--- a/WebCore/kwq/KWQRect.h
+++ b/WebCore/kwq/KWQRect.h
@@ -57,6 +57,7 @@ public:
     void setY(int y) { yp = y; }
     void setWidth(int width) { w = width; }
     void setHeight(int height) { h = height; }
+    void setRect(int x, int y, int width, int height) { xp = x; yp = y; w = width; h = height; }
     QRect intersect(const QRect &) const;
     bool intersects(const QRect &) const;
     QRect unite(const QRect &) const;
diff --git a/WebCore/kwq/WebCoreBridge.h b/WebCore/kwq/WebCoreBridge.h
index cd378d2..91d4f9a 100644
--- a/WebCore/kwq/WebCoreBridge.h
+++ b/WebCore/kwq/WebCoreBridge.h
@@ -240,6 +240,7 @@ typedef enum {
 /* Creates a name for an frame unnamed in the HTML.  It should produce repeatable results for loads of the same frameset. */
 - (NSString *)generateFrameName;
 - (void)frameDetached;
+- (NSView *)documentView;
 
 - (void)loadURL:(NSURL *)URL referrer:(NSString *)referrer reload:(BOOL)reload onLoadEvent:(BOOL)onLoad target:(NSString *)target triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values;
 - (void)postWithURL:(NSURL *)URL referrer:(NSString *)referrer target:(NSString *)target data:(NSData *)data contentType:(NSString *)contentType triggeringEvent:(NSEvent *)event form:(NSObject <WebDOMElement> *)form formValues:(NSDictionary *)values;
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index 0268f67..e6b4f3c 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -806,12 +806,20 @@ static HTMLFormElementImpl *formElementFromDOMElement(id <WebDOMElement>element)
 
 - (NSView *)nextKeyView
 {
-    return _part->nextKeyView(0, KWQSelectingNext);
+    DocumentImpl *doc = _part->xmlDocImpl();
+    if (!doc) {
+        return nil;
+    }
+    return _part->nextKeyView(doc->focusNode(), KWQSelectingNext);
 }
 
 - (NSView *)previousKeyView
 {
-    return _part->nextKeyView(0, KWQSelectingPrevious);
+    DocumentImpl *doc = _part->xmlDocImpl();
+    if (!doc) {
+        return nil;
+    }
+    return _part->nextKeyView(doc->focusNode(), KWQSelectingPrevious);
 }
 
 - (NSView *)nextKeyViewInsideWebFrameViews
diff --git a/WebCore/kwq/KWQNSViewExtras.h b/WebCore/kwq/WebCoreGraphicsBridge.h
similarity index 75%
copy from WebCore/kwq/KWQNSViewExtras.h
copy to WebCore/kwq/WebCoreGraphicsBridge.h
index 5261c00..feac082 100644
--- a/WebCore/kwq/KWQNSViewExtras.h
+++ b/WebCore/kwq/WebCoreGraphicsBridge.h
@@ -16,8 +16,8 @@
  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+                                        * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+                                        * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
@@ -25,10 +25,9 @@
 
 #import <Cocoa/Cocoa.h>
 
- at interface NSView (KWQNSViewExtras)
+ at interface WebCoreGraphicsBridge : NSObject
 
-- (void)_KWQ_scrollFrameToVisible;
-- (void)_KWQ_scrollRectToVisible:(NSRect)rect;
-- (void)_KWQ_scrollRectToVisible:(NSRect)rect inView:(NSView *)view;
++ (WebCoreGraphicsBridge *)sharedBridge;
+- (void)setFocusRingStyle:(NSFocusRingPlacement)placement radius:(int)radius color:(NSColor *)color;
 
 @end
diff --git a/WebCore/kwq/KWQAccObject.h b/WebCore/kwq/WebCoreGraphicsBridge.m
similarity index 74%
copy from WebCore/kwq/KWQAccObject.h
copy to WebCore/kwq/WebCoreGraphicsBridge.m
index dbfe510..89254f1 100644
--- a/WebCore/kwq/KWQAccObject.h
+++ b/WebCore/kwq/WebCoreGraphicsBridge.m
@@ -20,38 +20,34 @@
                                         * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
-#import <Foundation/Foundation.h>
+#import "WebCoreGraphicsBridge.h"
 
-namespace khtml {
-    class RenderObject;
-}
+#import "KWQAssertions.h"
 
- at interface KWQAccObject : NSObject
-{
-    khtml::RenderObject* m_renderer;
-    id m_data;
-}
+ at implementation WebCoreGraphicsBridge
 
--(id)initWithRenderer:(khtml::RenderObject*)renderer;
+static WebCoreGraphicsBridge *sharedBridge;
 
--(long)x;
--(long)y;
--(long)width;
--(long)height;
-
--(BOOL)detached;
--(void)detach;
++ (WebCoreGraphicsBridge *)sharedBridge
+{
+    return sharedBridge;
+}
 
--(id)data;
--(void)setData:(id)data;
+- (id)init
+{
+    [super init];
+    
+    ASSERT(!sharedBridge);
+    sharedBridge = [self retain];
+    
+    return self;
+}
 
--(KWQAccObject*)firstChild;
--(KWQAccObject*)lastChild;
--(KWQAccObject*)previousSibling;
--(KWQAccObject*)nextSibling;
--(KWQAccObject*)parentObject;
+- (void)setFocusRingStyle:(NSFocusRingPlacement)placement radius:(int)radius color:(NSColor *)color
+{
+}
 
 @end
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index d13ab62..1a818c7 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,17 @@
+2003-10-30  Ken Kocienda  <kocienda at apple.com>
+
+        Reviewed by Hyatt
+
+        * WebCoreSupport.subproj/WebBridge.m:
+        (-[WebBridge documentView]): Added.
+        * WebCoreSupport.subproj/WebGraphicsBridge.h: Added.
+        * WebCoreSupport.subproj/WebGraphicsBridge.m: Added.
+        (+[WebGraphicsBridge createSharedBridge]): Added.
+        (-[WebGraphicsBridge setFocusRingStyle:radius:color:]): Added.
+        * WebKit.pbproj/project.pbxproj:
+        * WebView.subproj/WebFrameView.m: Create a WebGraphicsBridge
+	when creating a WebFrameView.
+
 === Safari-112 ===
 
 2003-10-29  Maciej Stachowiak  <mjs at apple.com>
diff --git a/WebKit/WebCoreSupport.subproj/WebBridge.m b/WebKit/WebCoreSupport.subproj/WebBridge.m
index 35d2738..842524d 100644
--- a/WebKit/WebCoreSupport.subproj/WebBridge.m
+++ b/WebKit/WebCoreSupport.subproj/WebBridge.m
@@ -125,6 +125,12 @@
     return [[_frame findFrameNamed:name] _bridge];
 }
 
+- (NSView *)documentView
+{
+    ASSERT(_frame != nil);
+    return [[_frame frameView] documentView];
+}
+
 - (WebCoreBridge *)createWindowWithURL:(NSURL *)URL frameName:(NSString *)name
 {
     ASSERT(_frame != nil);
diff --git a/WebCore/kwq/KWQDummyView.h b/WebKit/WebCoreSupport.subproj/WebGraphicsBridge.h
similarity index 76%
copy from WebCore/kwq/KWQDummyView.h
copy to WebKit/WebCoreSupport.subproj/WebGraphicsBridge.h
index aca3fd2..1110d2b 100644
--- a/WebCore/kwq/KWQDummyView.h
+++ b/WebKit/WebCoreSupport.subproj/WebGraphicsBridge.h
@@ -16,18 +16,21 @@
  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+                                        * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+                                        * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
  */
 
 #import <Cocoa/Cocoa.h>
+#import <WebCore/WebCoreGraphicsBridge.h>
 
- at interface KWQDummyView : NSView
+ at interface WebGraphicsBridge : WebCoreGraphicsBridge
 {
-    NSWindow *_hardCodedWindow;
 }
-- (id)initWithWindow:(NSWindow *)window;
+
++ (void)createSharedBridge;
++ (WebGraphicsBridge *)sharedBridge;
+
 @end
diff --git a/WebKit/WebCoreSupport.subproj/WebGraphicsBridge.m b/WebKit/WebCoreSupport.subproj/WebGraphicsBridge.m
new file mode 100644
index 0000000..8e9d55d
--- /dev/null
+++ b/WebKit/WebCoreSupport.subproj/WebGraphicsBridge.m
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2003 Apple Computer, Inc.  All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ *    notice, this list of conditions and the following disclaimer in the
+ *    documentation and/or other materials provided with the distribution.
+ *
+ * THIS SOFTWARE IS PROVIDED BY APPLE COMPUTER, INC. ``AS IS'' AND ANY
+ * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+ * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
+ * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+ * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+                                        * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+                                        * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
+ * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+ * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+ * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
+ */
+
+#import "WebGraphicsBridge.h"
+
+#import "WebAssertions.h"
+
+#ifndef USE_APPEARANCE
+#define USE_APPEARANCE 1
+#endif
+#import <AppKit/NSInterfaceStyle_Private.h>
+#import <AppKit/NSWindow_Private.h>
+#import <AppKit/NSView_Private.h>
+#import <CoreGraphics/CGContextGState.h>
+#import <CoreGraphics/CGStyle.h>
+
+ at interface NSView (AppKitSecretsWebGraphicsBridgeKnowsAbout)
+- (NSView *)_clipViewAncestor;
+ at end
+
+ at implementation WebGraphicsBridge
+
++ (void)createSharedBridge
+{
+    if (![self sharedBridge]) {
+        [[[self alloc] init] release];
+    }
+    ASSERT([[self sharedBridge] isKindOfClass:self]);
+}
+
++ (WebGraphicsBridge *)sharedBridge;
+{
+    return (WebGraphicsBridge *)[super sharedBridge];
+}
+
+- (void)setFocusRingStyle:(NSFocusRingPlacement)placement radius:(int)radius color:(NSColor *)color
+{
+    // get clip bounds
+    NSView *clipView = [[NSView focusView] _clipViewAncestor];
+    NSRect clipRect = [clipView convertRect:[clipView _focusRingVisibleRect] toView:nil];
+    
+#if SCALE
+    if (__NSHasDisplayScaleFactor(NULL)) {
+        float scaleFactor = [[view window] _scaleFactor];
+        clipRect.size.width *= scaleFactor;
+        clipRect.size.height *= scaleFactor;
+    }
+#endif
+    
+    // put together the style
+    CGFocusRingStyle focusRingStyle;
+    CGStyleRef focusRingStyleRef;
+    focusRingStyle.version    = 0;
+    focusRingStyle.ordering   = (CGFocusRingOrdering)placement;
+    focusRingStyle.alpha      = .5;
+    focusRingStyle.radius     = radius ? radius : kCGFocusRingRadiusDefault;
+    focusRingStyle.threshold  = kCGFocusRingThresholdDefault;
+    focusRingStyle.bounds     = *(CGRect*)&clipRect;
+    focusRingStyle.accumulate = 0;
+    focusRingStyle.tint = _NSDefaultControlTint() == NSBlueControlTint ? kCGFocusRingTintBlue : kCGFocusRingTintGraphite;
+    
+    NSColor *ringColor = [color colorUsingColorSpaceName:NSCalibratedRGBColorSpace];
+    if (ringColor) {
+        float c[4];
+        [ringColor getRed:&c[0] green:&c[1] blue:&c[2] alpha:&c[3]];
+        CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
+        CGColorRef colorRef = CGColorCreate(colorSpace, c);
+        CGColorSpaceRelease(colorSpace);
+        focusRingStyleRef = CGStyleCreateFocusRingWithColor(&focusRingStyle, colorRef);
+        CGColorRelease(colorRef);
+    }
+    else {
+        focusRingStyleRef = CGStyleCreateFocusRing(&focusRingStyle);
+    }
+    CGContextSetStyle([[NSGraphicsContext currentContext] graphicsPort], focusRingStyleRef);
+    CGStyleRelease(focusRingStyleRef);
+}
+
+ at end
diff --git a/WebKit/WebKit.pbproj/project.pbxproj b/WebKit/WebKit.pbproj/project.pbxproj
index bfc8036..71736eb 100644
--- a/WebKit/WebKit.pbproj/project.pbxproj
+++ b/WebKit/WebKit.pbproj/project.pbxproj
@@ -320,6 +320,7 @@
 				BE6DC39B04C62C4E004D0EF6,
 				ED21B9820528F7AA003299AC,
 				833987820543012D00EE146E,
+				BE26F18F05517E0800BFA0C3,
 			);
 			isa = PBXHeadersBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -432,6 +433,7 @@
 				BE07CEB2047538F000CA289C,
 				BE6DC39C04C62C4E004D0EF6,
 				65DA2609052CC18700A97B31,
+				BE26F19005517E0800BFA0C3,
 			);
 			isa = PBXSourcesBuildPhase;
 			runOnlyForDeploymentPostprocessing = 0;
@@ -2718,6 +2720,34 @@
 			settings = {
 			};
 		};
+		BE26F18D05517E0800BFA0C3 = {
+			expectedFileType = sourcecode.c.h;
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = WebGraphicsBridge.h;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		BE26F18E05517E0800BFA0C3 = {
+			expectedFileType = sourcecode.c.objc;
+			fileEncoding = 30;
+			isa = PBXFileReference;
+			path = WebGraphicsBridge.m;
+			refType = 4;
+			sourceTree = "<group>";
+		};
+		BE26F18F05517E0800BFA0C3 = {
+			fileRef = BE26F18D05517E0800BFA0C3;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
+		BE26F19005517E0800BFA0C3 = {
+			fileRef = BE26F18E05517E0800BFA0C3;
+			isa = PBXBuildFile;
+			settings = {
+			};
+		};
 		BE6DC39904C62C4E004D0EF6 = {
 			expectedFileType = sourcecode.c.h;
 			fileEncoding = 30;
@@ -3547,6 +3577,8 @@
 				9311022903667CF1008635CE,
 				F5E7B24503025CE801A80180,
 				F5E7B24603025CE801A80180,
+				BE26F18D05517E0800BFA0C3,
+				BE26F18E05517E0800BFA0C3,
 				9CE1F8A002A5C6F30ECA2ACD,
 				9CE1F8A102A5C6F30ECA2ACD,
 				9CE1F8A202A5C6F30ECA2ACD,
diff --git a/WebKit/WebView.subproj/WebFrameView.m b/WebKit/WebView.subproj/WebFrameView.m
index 648b41a..8ddca8e 100644
--- a/WebKit/WebView.subproj/WebFrameView.m
+++ b/WebKit/WebView.subproj/WebFrameView.m
@@ -13,6 +13,7 @@
 #import <WebKit/WebFrame.h>
 #import <WebKit/WebFrameViewPrivate.h>
 #import <WebKit/WebHTMLViewPrivate.h>
+#import <WebKit/WebGraphicsBridge.h>
 #import <WebKit/WebImageRenderer.h>
 #import <WebKit/WebImageRendererFactory.h>
 #import <WebKit/WebImageView.h>
@@ -411,6 +412,7 @@ static NSMutableDictionary *viewTypes;
     [WebTextRendererFactory createSharedFactory];
     [WebImageRendererFactory createSharedFactory];
     [WebCookieAdapter createSharedAdapter];
+    [WebGraphicsBridge createSharedBridge];
     
     _private = [[WebFrameViewPrivate alloc] init];
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list