Fix for 3481134, shorthand parsing in CSS does not fill in omitted values. The...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 12 Nov 2003 08:48:16 +0000 (08:48 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Wed, 12 Nov 2003 08:48:16 +0000 (08:48 +0000)
the CSS3 'initial' value for all properties (covered by 3481323), and then to fill in the omitted
values with the 'initial' value.

This patch also fixes two bugs in the style system: 3481324, collapsed borders with border-style: none
should always return a width of 0, and 3481322, 'clip' not inheriting properly in CSS when explicit
inheritance is used.

        Reviewed by mjs

        * khtml/css/css_valueimpl.cpp:
        (CSSInitialValueImpl::cssText):
        * khtml/css/css_valueimpl.h:
        (DOM::CSSInitialValueImpl::cssValueType):
        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        (CSSParser::parseShortHand):
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyRule):
        * khtml/css/cssvalues.c:
        (hash_val):
        (findValue):
        * khtml/css/cssvalues.h:
        * khtml/css/cssvalues.in:
        * khtml/dom/css_value.h:
        (DOM::CSSValue::):
        * khtml/rendering/render_style.cpp:
        (StyleBoxData::StyleBoxData):
        (StyleVisualData::StyleVisualData):
        (StyleBackgroundData::StyleBackgroundData):
        (StyleMarqueeData::StyleMarqueeData):
        (StyleFlexibleBoxData::StyleFlexibleBoxData):
        (opacity):
        (StyleInheritedData::StyleInheritedData):
        (RenderStyle::diff):
        * khtml/rendering/render_style.h:
        (khtml::BorderValue::BorderValue):
        (khtml::CollapsedBorderValue::width):
        (khtml::RenderStyle::InheritedFlags::operator==):
        (khtml::RenderStyle::setBitDefaults):
        (khtml::RenderStyle::resetBorderTop):
        (khtml::RenderStyle::resetBorderRight):
        (khtml::RenderStyle::resetBorderBottom):
        (khtml::RenderStyle::resetBorderLeft):
        (khtml::RenderStyle::resetOutline):
        (khtml::RenderStyle::setHasClip):
        (khtml::RenderStyle::resetMargin):
        (khtml::RenderStyle::resetPadding):
        (khtml::RenderStyle::setCursor):

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@5461 268f45cc-cd09-0410-ab3c-d52691b4dbfc

20 files changed:
LayoutTests/css1/units/urls-expected.txt
LayoutTests/fast/block/margin-collapse/021-expected.txt
LayoutTests/fast/block/margin-collapse/022-expected.txt
LayoutTests/fast/block/margin-collapse/024-expected.txt
LayoutTests/fast/block/margin-collapse/025-expected.txt
LayoutTests/fast/block/margin-collapse/032-expected.txt
LayoutTests/fast/block/margin-collapse/033-expected.txt
LayoutTests/fast/block/margin-collapse/034-expected.txt
LayoutTests/fast/block/margin-collapse/042-expected.txt
WebCore/ChangeLog-2005-08-23
WebCore/khtml/css/css_valueimpl.cpp
WebCore/khtml/css/css_valueimpl.h
WebCore/khtml/css/cssparser.cpp
WebCore/khtml/css/cssstyleselector.cpp
WebCore/khtml/css/cssvalues.c
WebCore/khtml/css/cssvalues.h
WebCore/khtml/css/cssvalues.in
WebCore/khtml/dom/css_value.h
WebCore/khtml/rendering/render_style.cpp
WebCore/khtml/rendering/render_style.h

index c50f019..bc77bcf 100644 (file)
@@ -2,17 +2,17 @@ layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
 layer at (0,0) size 800x509
   RenderBlock {HTML} at (0,0) size 800x509
-    RenderBody {BODY} at (8,8) size 784x493 [bgcolor=#CCCCCC]
-      RenderBlock {P} at (0,0) size 784x18 [bgcolor=#000000]
+    RenderBody {BODY} at (8,8) size 784x493
+      RenderBlock {P} at (0,0) size 784x18
         RenderText {TEXT} at (0,0) size 355x18
           text run at (0,0) width 355: "The style declarations which apply to the text below are:"
-      RenderBlock {PRE} at (0,34) size 784x60 [bgcolor=#000000]
+      RenderBlock {PRE} at (0,34) size 784x60
         RenderText {TEXT} at (0,0) size 648x45
           text run at (0,0) width 648: "<LINK rel=\"stylesheet\" type=\"text/css\" media=\"screen\" href=\"../resources/bg.gif\">"
           text run at (0,15) width 296: "@import url(../resources/sec642.css);"
           text run at (0,30) width 352: "BODY {background: url(../resources/bg.gif);}"
-      RenderBlock {HR} at (0,107) size 784x2 [bgcolor=#000000]
-      RenderBlock {P} at (0,125) size 784x18 [bgcolor=#000000]
+      RenderBlock {HR} at (0,107) size 784x2
+      RenderBlock {P} at (0,125) size 784x18
         RenderText {TEXT} at (0,0) size 386x18
           text run at (0,0) width 386: "This page should have a green grid pattern as its background."
       RenderBlock {P} at (0,159) size 784x54 [bgcolor=#FFFFFF]
@@ -27,7 +27,7 @@ layer at (0,0) size 800x509
           text run at (620,0) width 159: "If an image, in this case a"
           text run at (0,18) width 756: "red square-- or, indeed, any red at all-- is seen there, then the browser has incorrectly interpreted a URL in relation to the"
           text run at (0,36) width 274: "document's URL, not the stylesheet's URL."
-      RenderTable {TABLE} at (0,299) size 784x194 [bgcolor=#000000]
+      RenderTable {TABLE} at (0,299) size 784x194
         RenderTableSection {TBODY} at (1,1) size 0x192
           RenderTableRow {TR} at (0,0) size 0x0
             RenderTableCell {TD} at (0,0) size 782x26 [bgcolor=#C0C0C0] [r=0 c=0 rs=1 cs=2]
index 8557e80..5561d35 100644 (file)
@@ -1,22 +1,22 @@
 layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
-layer at (0,0) size 800x218
-  RenderBlock {HTML} at (0,0) size 800x218
-    RenderBody {BODY} at (8,16) size 784x194
+layer at (0,0) size 800x224
+  RenderBlock {HTML} at (0,0) size 800x224
+    RenderBody {BODY} at (8,16) size 784x200
       RenderBlock {P} at (0,0) size 784x18
         RenderText {TEXT} at (0,0) size 295x18
           text run at (0,0) width 295: "The following two squares should be identical."
-      RenderTable {TABLE} at (0,34) size 304x160
-        RenderTableSection {TBODY} at (0,0) size 0x160
+      RenderTable {TABLE} at (0,34) size 316x166
+        RenderTableSection {TBODY} at (0,0) size 0x166
           RenderTableRow {TR} at (0,0) size 0x0
-            RenderTableCell {TD} at (16,16) size 128x128 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x128 [bgcolor=#00FF00]
+            RenderTableCell {TD} at (16,16) size 134x134 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x128 [bgcolor=#00FF00]
                 RenderBlock (floating) {DIV} at (0,0) size 64x64 [bgcolor=#00FFFF]
                 RenderBlock (anonymous) at (0,0) size 128x0 [bgcolor=#000000]
                   RenderText {TEXT} at (0,0) size 0x0 [bgcolor=#00FF00]
                 RenderBlock {DIV} at (0,64) size 128x64 [bgcolor=#000000]
-            RenderTableCell {TD} at (160,16) size 128x128 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
-              RenderTable {TABLE} at (0,0) size 128x128 [bgcolor=#000000]
+            RenderTableCell {TD} at (166,16) size 134x134 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderTable {TABLE} at (3,3) size 128x128 [bgcolor=#000000]
                 RenderTableSection {TBODY} at (0,0) size 0x128
                   RenderTableRow {TR} at (0,0) size 0x0
                     RenderTableCell {TD} at (0,32) size 64x0 [bgcolor=#00FFFF] [r=0 c=0 rs=1 cs=1]
index 8557e80..5561d35 100644 (file)
@@ -1,22 +1,22 @@
 layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
-layer at (0,0) size 800x218
-  RenderBlock {HTML} at (0,0) size 800x218
-    RenderBody {BODY} at (8,16) size 784x194
+layer at (0,0) size 800x224
+  RenderBlock {HTML} at (0,0) size 800x224
+    RenderBody {BODY} at (8,16) size 784x200
       RenderBlock {P} at (0,0) size 784x18
         RenderText {TEXT} at (0,0) size 295x18
           text run at (0,0) width 295: "The following two squares should be identical."
-      RenderTable {TABLE} at (0,34) size 304x160
-        RenderTableSection {TBODY} at (0,0) size 0x160
+      RenderTable {TABLE} at (0,34) size 316x166
+        RenderTableSection {TBODY} at (0,0) size 0x166
           RenderTableRow {TR} at (0,0) size 0x0
-            RenderTableCell {TD} at (16,16) size 128x128 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x128 [bgcolor=#00FF00]
+            RenderTableCell {TD} at (16,16) size 134x134 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x128 [bgcolor=#00FF00]
                 RenderBlock (floating) {DIV} at (0,0) size 64x64 [bgcolor=#00FFFF]
                 RenderBlock (anonymous) at (0,0) size 128x0 [bgcolor=#000000]
                   RenderText {TEXT} at (0,0) size 0x0 [bgcolor=#00FF00]
                 RenderBlock {DIV} at (0,64) size 128x64 [bgcolor=#000000]
-            RenderTableCell {TD} at (160,16) size 128x128 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
-              RenderTable {TABLE} at (0,0) size 128x128 [bgcolor=#000000]
+            RenderTableCell {TD} at (166,16) size 134x134 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderTable {TABLE} at (3,3) size 128x128 [bgcolor=#000000]
                 RenderTableSection {TBODY} at (0,0) size 0x128
                   RenderTableRow {TR} at (0,0) size 0x0
                     RenderTableCell {TD} at (0,32) size 64x0 [bgcolor=#00FFFF] [r=0 c=0 rs=1 cs=1]
index b9ba1be..6cecf1c 100644 (file)
@@ -1,23 +1,23 @@
 layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
-layer at (0,0) size 800x218
-  RenderBlock {HTML} at (0,0) size 800x218
-    RenderBody {BODY} at (8,16) size 784x194
+layer at (0,0) size 800x224
+  RenderBlock {HTML} at (0,0) size 800x224
+    RenderBody {BODY} at (8,16) size 784x200
       RenderBlock {P} at (0,0) size 784x18
         RenderText {TEXT} at (0,0) size 295x18
           text run at (0,0) width 295: "The following two squares should be identical."
-      RenderTable {TABLE} at (0,34) size 304x160
-        RenderTableSection {TBODY} at (0,0) size 0x160
+      RenderTable {TABLE} at (0,34) size 316x166
+        RenderTableSection {TBODY} at (0,0) size 0x166
           RenderTableRow {TR} at (0,0) size 0x0
-            RenderTableCell {TD} at (16,16) size 128x128 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x128 [bgcolor=#00FF00]
+            RenderTableCell {TD} at (16,16) size 134x134 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x128 [bgcolor=#00FF00]
                 RenderBlock (floating) {DIV} at (0,0) size 64x64 [bgcolor=#00FFFF]
                 RenderBlock (anonymous) at (0,0) size 128x0 [bgcolor=#000000]
                   RenderText {TEXT} at (0,0) size 0x0 [bgcolor=#00FF00]
                 RenderBlock {DIV} at (0,64) size 128x0 [bgcolor=#FF0000]
                 RenderBlock {DIV} at (0,64) size 128x64 [bgcolor=#000000]
-            RenderTableCell {TD} at (160,16) size 128x128 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
-              RenderTable {TABLE} at (0,0) size 128x128 [bgcolor=#000000]
+            RenderTableCell {TD} at (166,16) size 134x134 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderTable {TABLE} at (3,3) size 128x128 [bgcolor=#000000]
                 RenderTableSection {TBODY} at (0,0) size 0x128
                   RenderTableRow {TR} at (0,0) size 0x0
                     RenderTableCell {TD} at (0,32) size 64x0 [bgcolor=#00FFFF] [r=0 c=0 rs=1 cs=1]
index b9ba1be..6cecf1c 100644 (file)
@@ -1,23 +1,23 @@
 layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
-layer at (0,0) size 800x218
-  RenderBlock {HTML} at (0,0) size 800x218
-    RenderBody {BODY} at (8,16) size 784x194
+layer at (0,0) size 800x224
+  RenderBlock {HTML} at (0,0) size 800x224
+    RenderBody {BODY} at (8,16) size 784x200
       RenderBlock {P} at (0,0) size 784x18
         RenderText {TEXT} at (0,0) size 295x18
           text run at (0,0) width 295: "The following two squares should be identical."
-      RenderTable {TABLE} at (0,34) size 304x160
-        RenderTableSection {TBODY} at (0,0) size 0x160
+      RenderTable {TABLE} at (0,34) size 316x166
+        RenderTableSection {TBODY} at (0,0) size 0x166
           RenderTableRow {TR} at (0,0) size 0x0
-            RenderTableCell {TD} at (16,16) size 128x128 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x128 [bgcolor=#00FF00]
+            RenderTableCell {TD} at (16,16) size 134x134 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x128 [bgcolor=#00FF00]
                 RenderBlock (floating) {DIV} at (0,0) size 64x64 [bgcolor=#00FFFF]
                 RenderBlock (anonymous) at (0,0) size 128x0 [bgcolor=#000000]
                   RenderText {TEXT} at (0,0) size 0x0 [bgcolor=#00FF00]
                 RenderBlock {DIV} at (0,64) size 128x0 [bgcolor=#FF0000]
                 RenderBlock {DIV} at (0,64) size 128x64 [bgcolor=#000000]
-            RenderTableCell {TD} at (160,16) size 128x128 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
-              RenderTable {TABLE} at (0,0) size 128x128 [bgcolor=#000000]
+            RenderTableCell {TD} at (166,16) size 134x134 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderTable {TABLE} at (3,3) size 128x128 [bgcolor=#000000]
                 RenderTableSection {TBODY} at (0,0) size 0x128
                   RenderTableRow {TR} at (0,0) size 0x0
                     RenderTableCell {TD} at (0,32) size 64x0 [bgcolor=#00FFFF] [r=0 c=0 rs=1 cs=1]
index 4e42f6c..7ef3756 100644 (file)
@@ -1,20 +1,20 @@
 layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
-layer at (0,0) size 800x138
-  RenderBlock {HTML} at (0,0) size 800x138
-    RenderBody {BODY} at (8,16) size 784x114
+layer at (0,0) size 800x144
+  RenderBlock {HTML} at (0,0) size 800x144
+    RenderBody {BODY} at (8,16) size 784x120
       RenderBlock {P} at (0,0) size 784x18
         RenderText {TEXT} at (0,0) size 295x18
           text run at (0,0) width 295: "The following two squares should be identical."
-      RenderTable {TABLE} at (0,34) size 304x80
-        RenderTableSection {TBODY} at (0,0) size 0x80
+      RenderTable {TABLE} at (0,34) size 316x86
+        RenderTableSection {TBODY} at (0,0) size 0x86
           RenderTableRow {TR} at (0,0) size 0x0
-            RenderTableCell {TD} at (16,16) size 128x48 [bgcolor=#00FF00] [r=0 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,32) size 128x16 [bgcolor=#FF0000]
+            RenderTableCell {TD} at (16,16) size 134x54 [bgcolor=#00FF00] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,35) size 128x16 [bgcolor=#FF0000]
                 RenderBlock (floating) {DIV} at (0,0) size 128x16 [bgcolor=#FFFF00]
                 RenderBlock (anonymous) at (0,0) size 128x0 [bgcolor=#000000]
                   RenderText {TEXT} at (0,0) size 0x0 [bgcolor=#FF0000]
                 RenderBlock {DIV} at (0,0) size 128x16
-            RenderTableCell {TD} at (160,16) size 128x48 [bgcolor=#00FF00] [r=0 c=1 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x32 [bgcolor=#000000]
-              RenderBlock {DIV} at (0,32) size 128x16 [bgcolor=#000000]
+            RenderTableCell {TD} at (166,16) size 134x54 [bgcolor=#00FF00] [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x32 [bgcolor=#000000]
+              RenderBlock {DIV} at (3,35) size 128x16 [bgcolor=#000000]
index e2e1411..0cc3dba 100644 (file)
@@ -1,22 +1,22 @@
 layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
-layer at (0,0) size 800x154
-  RenderBlock {HTML} at (0,0) size 800x154
-    RenderBody {BODY} at (8,16) size 784x130
+layer at (0,0) size 800x160
+  RenderBlock {HTML} at (0,0) size 800x160
+    RenderBody {BODY} at (8,16) size 784x136
       RenderBlock {P} at (0,0) size 784x18
         RenderText {TEXT} at (0,0) size 295x18
           text run at (0,0) width 295: "The following two squares should be identical."
-      RenderTable {TABLE} at (0,34) size 304x96
-        RenderTableSection {TBODY} at (0,0) size 0x96
+      RenderTable {TABLE} at (0,34) size 316x102
+        RenderTableSection {TBODY} at (0,0) size 0x102
           RenderTableRow {TR} at (0,0) size 0x0
-            RenderTableCell {TD} at (16,16) size 128x64 [bgcolor=#00FF00] [r=0 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x16 [bgcolor=#FFFF00]
-              RenderBlock {DIV} at (0,48) size 128x16 [bgcolor=#FF0000]
+            RenderTableCell {TD} at (16,16) size 134x70 [bgcolor=#00FF00] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x16 [bgcolor=#FFFF00]
+              RenderBlock {DIV} at (3,51) size 128x16 [bgcolor=#FF0000]
                 RenderBlock (floating) {DIV} at (0,0) size 128x16 [bgcolor=#FFFF00]
                 RenderBlock (anonymous) at (0,0) size 128x0 [bgcolor=#000000]
                   RenderText {TEXT} at (0,0) size 0x0 [bgcolor=#FF0000]
                 RenderBlock {DIV} at (0,0) size 128x16
-            RenderTableCell {TD} at (160,16) size 128x64 [bgcolor=#00FF00] [r=0 c=1 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x16 [bgcolor=#000000]
-              RenderBlock {DIV} at (0,16) size 128x32 [bgcolor=#000000]
-              RenderBlock {DIV} at (0,48) size 128x16 [bgcolor=#000000]
+            RenderTableCell {TD} at (166,16) size 134x70 [bgcolor=#00FF00] [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x16 [bgcolor=#000000]
+              RenderBlock {DIV} at (3,19) size 128x32 [bgcolor=#000000]
+              RenderBlock {DIV} at (3,51) size 128x16 [bgcolor=#000000]
index f0b2df7..bfa4da0 100644 (file)
@@ -1,25 +1,25 @@
 layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
-layer at (0,0) size 800x202
-  RenderBlock {HTML} at (0,0) size 800x202
-    RenderBody {BODY} at (8,16) size 784x178
+layer at (0,0) size 800x214
+  RenderBlock {HTML} at (0,0) size 800x214
+    RenderBody {BODY} at (8,16) size 784x190
       RenderBlock {P} at (0,0) size 784x18
         RenderText {TEXT} at (0,0) size 447x18
           text run at (0,0) width 447: "The following three rectangles should be identical, with no red present."
-      RenderTable {TABLE} at (0,34) size 304x144
-        RenderTableSection {TBODY} at (0,0) size 0x144
+      RenderTable {TABLE} at (0,34) size 316x156
+        RenderTableSection {TBODY} at (0,0) size 0x156
           RenderTableRow {TR} at (0,0) size 0x0
-            RenderTableCell {TD} at (16,16) size 128x48 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x48 [bgcolor=#FFFF00]
+            RenderTableCell {TD} at (16,16) size 134x54 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x48 [bgcolor=#FFFF00]
                 RenderBlock {DIV} at (0,0) size 128x16 [bgcolor=#000000]
                 RenderBlock {DIV} at (0,32) size 128x16 [bgcolor=#000000]
-            RenderTableCell {TD} at (160,16) size 128x48 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x16 [bgcolor=#00FF00]
-              RenderBlock {DIV} at (0,16) size 128x16 [bgcolor=#FFFF00]
-              RenderBlock {DIV} at (0,32) size 128x16 [bgcolor=#008000]
+            RenderTableCell {TD} at (166,16) size 134x54 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x16 [bgcolor=#00FF00]
+              RenderBlock {DIV} at (3,19) size 128x16 [bgcolor=#FFFF00]
+              RenderBlock {DIV} at (3,35) size 128x16 [bgcolor=#008000]
           RenderTableRow {TR} at (0,0) size 0x0
-            RenderTableCell {TD} at (16,80) size 128x48 [bgcolor=#FF0000] [r=1 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x16 [bgcolor=#00FF00]
-              RenderBlock {DIV} at (0,16) size 128x16 [bgcolor=#FFFF00]
-              RenderBlock {DIV} at (0,32) size 128x16 [bgcolor=#008000]
-            RenderTableCell {TD} at (160,104) size 128x0 [r=1 c=1 rs=1 cs=1]
+            RenderTableCell {TD} at (16,86) size 134x54 [bgcolor=#FF0000] [r=1 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x16 [bgcolor=#00FF00]
+              RenderBlock {DIV} at (3,19) size 128x16 [bgcolor=#FFFF00]
+              RenderBlock {DIV} at (3,35) size 128x16 [bgcolor=#008000]
+            RenderTableCell {TD} at (166,113) size 134x0 [r=1 c=1 rs=1 cs=1]
index 7e98677..50bb707 100644 (file)
@@ -1,23 +1,23 @@
 layer at (0,0) size 800x600
   RenderCanvas at (0,0) size 800x600
-layer at (0,0) size 800x346
-  RenderBlock {HTML} at (0,0) size 800x346
-    RenderBody {BODY} at (8,16) size 784x322
+layer at (0,0) size 800x352
+  RenderBlock {HTML} at (0,0) size 800x352
+    RenderBody {BODY} at (8,16) size 784x328
       RenderBlock {P} at (0,0) size 784x18
         RenderText {TEXT} at (0,0) size 295x18
           text run at (0,0) width 295: "The following two squares should be identical."
-      RenderTable {TABLE} at (0,34) size 304x288
-        RenderTableSection {TBODY} at (0,0) size 0x288
+      RenderTable {TABLE} at (0,34) size 316x294
+        RenderTableSection {TBODY} at (0,0) size 0x294
           RenderTableRow {TR} at (0,0) size 0x0
-            RenderTableCell {TD} at (16,16) size 128x256 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
-              RenderBlock {DIV} at (0,0) size 128x256 [bgcolor=#00FF00]
+            RenderTableCell {TD} at (16,16) size 134x262 [bgcolor=#FF0000] [r=0 c=0 rs=1 cs=1]
+              RenderBlock {DIV} at (3,3) size 128x256 [bgcolor=#00FF00]
                 RenderBlock (floating) {DIV} at (0,0) size 64x64 [bgcolor=#00FFFF]
                 RenderBlock (anonymous) at (0,0) size 128x0 [bgcolor=#000000]
                   RenderText {TEXT} at (0,0) size 0x0 [bgcolor=#00FF00]
                 RenderBlock {DIV} at (0,64) size 128x64 [bgcolor=#FFFF00]
                 RenderBlock {DIV} at (0,192) size 128x64 [bgcolor=#000000]
-            RenderTableCell {TD} at (160,16) size 128x256 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
-              RenderTable {TABLE} at (0,0) size 128x256 [bgcolor=#000000]
+            RenderTableCell {TD} at (166,16) size 134x262 [bgcolor=#FF0000] [r=0 c=1 rs=1 cs=1]
+              RenderTable {TABLE} at (3,3) size 128x256 [bgcolor=#000000]
                 RenderTableSection {TBODY} at (0,0) size 0x256
                   RenderTableRow {TR} at (0,0) size 0x0
                     RenderTableCell {TD} at (0,32) size 64x0 [bgcolor=#00FFFF] [r=0 c=0 rs=1 cs=1]
index 89d20a0..50a379b 100644 (file)
@@ -1,3 +1,55 @@
+2003-11-11  David Hyatt  <hyatt@apple.com>
+
+       Fix for 3481134, shorthand parsing in CSS does not fill in omitted values.  The fix is to implement
+       the CSS3 'initial' value for all properties (covered by 3481323), and then to fill in the omitted 
+       values with the 'initial' value.
+
+       This patch also fixes two bugs in the style system: 3481324, collapsed borders with border-style: none
+       should always return a width of 0, and 3481322, 'clip' not inheriting properly in CSS when explicit
+       inheritance is used.
+       
+        Reviewed by mjs
+
+        * khtml/css/css_valueimpl.cpp:
+        (CSSInitialValueImpl::cssText):
+        * khtml/css/css_valueimpl.h:
+        (DOM::CSSInitialValueImpl::cssValueType):
+        * khtml/css/cssparser.cpp:
+        (CSSParser::parseValue):
+        (CSSParser::parseShortHand):
+        * khtml/css/cssstyleselector.cpp:
+        (khtml::CSSStyleSelector::applyRule):
+        * khtml/css/cssvalues.c:
+        (hash_val):
+        (findValue):
+        * khtml/css/cssvalues.h:
+        * khtml/css/cssvalues.in:
+        * khtml/dom/css_value.h:
+        (DOM::CSSValue::):
+        * khtml/rendering/render_style.cpp:
+        (StyleBoxData::StyleBoxData):
+        (StyleVisualData::StyleVisualData):
+        (StyleBackgroundData::StyleBackgroundData):
+        (StyleMarqueeData::StyleMarqueeData):
+        (StyleFlexibleBoxData::StyleFlexibleBoxData):
+        (opacity):
+        (StyleInheritedData::StyleInheritedData):
+        (RenderStyle::diff):
+        * khtml/rendering/render_style.h:
+        (khtml::BorderValue::BorderValue):
+        (khtml::CollapsedBorderValue::width):
+        (khtml::RenderStyle::InheritedFlags::operator==):
+        (khtml::RenderStyle::setBitDefaults):
+        (khtml::RenderStyle::resetBorderTop):
+        (khtml::RenderStyle::resetBorderRight):
+        (khtml::RenderStyle::resetBorderBottom):
+        (khtml::RenderStyle::resetBorderLeft):
+        (khtml::RenderStyle::resetOutline):
+        (khtml::RenderStyle::setHasClip):
+        (khtml::RenderStyle::resetMargin):
+        (khtml::RenderStyle::resetPadding):
+        (khtml::RenderStyle::setCursor):
+
 2003-11-11  Maciej Stachowiak  <mjs@apple.com>
 
         Reviewed by John.
index 0917b1a..a292b7e 100644 (file)
@@ -388,10 +388,26 @@ void CSSValueImpl::setCssText(DOM::DOMString /*str*/)
     // ###
 }
 
+unsigned short CSSInheritedValueImpl::cssValueType() const
+{
+    return CSSValue::CSS_INHERIT;
+}
+
 DOM::DOMString CSSInheritedValueImpl::cssText() const
 {
     return DOMString("inherited");
 }
+
+unsigned short CSSInitialValueImpl::cssValueType() const
+{ 
+    return CSSValue::CSS_INITIAL; 
+}
+
+DOM::DOMString CSSInitialValueImpl::cssText() const
+{
+    return DOMString("initial");
+}
+
 // ----------------------------------------------------------------------------------------
 
 CSSValueListImpl::CSSValueListImpl()
index e48ac68..327228d 100644 (file)
@@ -116,10 +116,16 @@ public:
     CSSInheritedValueImpl() : CSSValueImpl() {}
     virtual ~CSSInheritedValueImpl() {}
 
-    virtual unsigned short cssValueType() const { return CSSValue::CSS_INHERIT; }
+    virtual unsigned short cssValueType() const;
     virtual DOM::DOMString cssText() const;
 };
 
+class CSSInitialValueImpl : public CSSValueImpl
+{
+public:
+    virtual unsigned short cssValueType() const;
+    virtual DOM::DOMString cssText() const;
+};
 
 class CSSValueListImpl : public CSSValueImpl
 {
index ff7dcd7..5213726 100644 (file)
@@ -406,10 +406,14 @@ bool CSSParser::parseValue( int propId, bool important )
     int id = 0;
     id = value->id;
 
-    if ( id == CSS_VAL_INHERIT ) {
-       addProperty( propId, new CSSInheritedValueImpl(), important );
+    if (id == CSS_VAL_INHERIT) {
+       addProperty(propId, new CSSInheritedValueImpl(), important);
        return true;
     }
+    else if (id == CSS_VAL_INITIAL) {
+        addProperty(propId, new CSSInitialValueImpl(), important);
+        return true;
+    }
 
     bool valid_primitive = false;
     CSSValueImpl *parsedValue = 0;
@@ -1233,6 +1237,13 @@ bool CSSParser::parseShortHand( const int *properties, int numProperties, bool i
            return false;
        }
     }
+    
+    // Fill in any remaining properties with the initial value.
+    for (int i = 0; i < numProperties; ++i) {
+        if (!fnd[i])
+            addProperty(properties[i], new CSSInitialValueImpl(), important);
+    }
+    
     inParseShortHand = false;
 #ifdef CSS_DEBUG
     kdDebug( 6080 ) << "parsed shorthand" << endl;
index 46ac15d..3b10533 100644 (file)
@@ -68,21 +68,43 @@ using namespace DOM;
 #include <stdlib.h>
 
 #define HANDLE_INHERIT(prop, Prop) \
-if (value->cssValueType() == CSSValue::CSS_INHERIT) \
+if (isInherit) \
 {\
-    if (!parentNode) return;\
     style->set##Prop(parentStyle->prop());\
     return;\
 }
 
+#define HANDLE_INHERIT_AND_INITIAL(prop, Prop) \
+HANDLE_INHERIT(prop, Prop) \
+else if (isInitial) \
+    style->set##Prop(RenderStyle::initial##Prop());
+
+#define HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(prop, Prop, Value) \
+HANDLE_INHERIT(prop, Prop) \
+else if (isInitial) \
+    style->set##Prop(RenderStyle::initial##Value());
+
 #define HANDLE_INHERIT_COND(propID, prop, Prop) \
 if (id == propID) \
 {\
-    if (!parentNode) return;\
     style->set##Prop(parentStyle->prop());\
     return;\
 }
 
+#define HANDLE_INITIAL_COND(propID, Prop) \
+if (id == propID) \
+{\
+    style->set##Prop(RenderStyle::initial##Prop());\
+    return;\
+}
+
+#define HANDLE_INITIAL_COND_WITH_VALUE(propID, Prop, Value) \
+if (id == propID) \
+{\
+    style->set##Prop(RenderStyle::initial##Value());\
+    return;\
+}
+
 namespace khtml {
 
 CSSStyleSelectorList *CSSStyleSelector::defaultStyle = 0;
@@ -1622,13 +1644,18 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     Length l;
     bool apply = false;
 
-    // here follows a long list, defining how to aplly certain properties to the style object.
-    // rather boring stuff...
+    bool isInherit = (parentNode && value->cssValueType() == CSSValue::CSS_INHERIT);
+    bool isInitial = (value->cssValueType() == CSSValue::CSS_INITIAL) ||
+                     (!parentNode && value->cssValueType() == CSSValue::CSS_INHERIT);
+
+    // What follows is a list that maps the CSS properties into their corresponding front-end
+    // RenderStyle values.  Shorthands (e.g. border, background) occur in this list as well and
+    // are only hit when mapping "inherit" or "initial" into front-end values.
     switch(id)
     {
 // ident only properties
     case CSS_PROP_BACKGROUND_ATTACHMENT:
-        HANDLE_INHERIT(backgroundAttachment, BackgroundAttachment)
+        HANDLE_INHERIT_AND_INITIAL(backgroundAttachment, BackgroundAttachment)
         if(!primitiveValue) break;
         switch(primitiveValue->getIdent())
         {
@@ -1648,7 +1675,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         }
     case CSS_PROP_BACKGROUND_REPEAT:
     {
-        HANDLE_INHERIT(backgroundRepeat, BackgroundRepeat)
+        HANDLE_INHERIT_AND_INITIAL(backgroundRepeat, BackgroundRepeat)
         if(!primitiveValue) return;
        switch(primitiveValue->getIdent())
        {
@@ -1669,7 +1696,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
        }
     }
     case CSS_PROP_BORDER_COLLAPSE:
-        HANDLE_INHERIT(borderCollapse, BorderCollapse)
+        HANDLE_INHERIT_AND_INITIAL(borderCollapse, BorderCollapse)
         if(!primitiveValue) break;
         switch(primitiveValue->getIdent())
         {
@@ -1685,35 +1712,35 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
         
     case CSS_PROP_BORDER_TOP_STYLE:
-        HANDLE_INHERIT(borderTopStyle, BorderTopStyle)
+        HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(borderTopStyle, BorderTopStyle, BorderStyle)
         if (!primitiveValue) return;
         style->setBorderTopStyle((EBorderStyle)(primitiveValue->getIdent() - CSS_VAL_NONE));
         break;
     case CSS_PROP_BORDER_RIGHT_STYLE:
-        HANDLE_INHERIT(borderRightStyle, BorderRightStyle)
+        HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(borderRightStyle, BorderRightStyle, BorderStyle)
         if (!primitiveValue) return;
         style->setBorderRightStyle((EBorderStyle)(primitiveValue->getIdent() - CSS_VAL_NONE));
         break;
     case CSS_PROP_BORDER_BOTTOM_STYLE:
-        HANDLE_INHERIT(borderBottomStyle, BorderBottomStyle)
+        HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(borderBottomStyle, BorderBottomStyle, BorderStyle)
         if (!primitiveValue) return;
         style->setBorderBottomStyle((EBorderStyle)(primitiveValue->getIdent() - CSS_VAL_NONE));
         break;
     case CSS_PROP_BORDER_LEFT_STYLE:
-        HANDLE_INHERIT(borderLeftStyle, BorderLeftStyle)
+        HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(borderLeftStyle, BorderLeftStyle, BorderStyle)
         if (!primitiveValue) return;
         style->setBorderLeftStyle((EBorderStyle)(primitiveValue->getIdent() - CSS_VAL_NONE));
         break;
     case CSS_PROP_OUTLINE_STYLE:
-        HANDLE_INHERIT(outlineStyle, OutlineStyle)
+        HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(outlineStyle, OutlineStyle, BorderStyle)
         if (!primitiveValue) return;
         style->setOutlineStyle((EBorderStyle)(primitiveValue->getIdent() - CSS_VAL_NONE));
         break;
     case CSS_PROP_CAPTION_SIDE:
     {
-        HANDLE_INHERIT(captionSide, CaptionSide)
+        HANDLE_INHERIT_AND_INITIAL(captionSide, CaptionSide)
         if(!primitiveValue) break;
-        ECaptionSide c = CAPTOP;
+        ECaptionSide c = RenderStyle::initialCaptionSide();
         switch(primitiveValue->getIdent())
         {
         case CSS_VAL_LEFT:
@@ -1732,7 +1759,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     }
     case CSS_PROP_CLEAR:
     {
-        HANDLE_INHERIT(clear, Clear)
+        HANDLE_INHERIT_AND_INITIAL(clear, Clear)
         if(!primitiveValue) break;
         EClear c = CNONE;
         switch(primitiveValue->getIdent())
@@ -1751,14 +1778,14 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     }
     case CSS_PROP_DIRECTION:
     {
-        HANDLE_INHERIT(direction, Direction)
+        HANDLE_INHERIT_AND_INITIAL(direction, Direction)
         if(!primitiveValue) break;
         style->setDirection( (EDirection) (primitiveValue->getIdent() - CSS_VAL_LTR) );
         return;
     }
     case CSS_PROP_DISPLAY:
     {
-        HANDLE_INHERIT(display, Display)
+        HANDLE_INHERIT_AND_INITIAL(display, Display)
         if(!primitiveValue) break;
        int id = primitiveValue->getIdent();
        EDisplay d;
@@ -1775,7 +1802,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 
     case CSS_PROP_EMPTY_CELLS:
     {
-        HANDLE_INHERIT(emptyCells, EmptyCells)
+        HANDLE_INHERIT_AND_INITIAL(emptyCells, EmptyCells)
         if (!primitiveValue) break;
         int id = primitiveValue->getIdent();
         if (id == CSS_VAL_SHOW)
@@ -1786,7 +1813,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     }
     case CSS_PROP_FLOAT:
     {
-        HANDLE_INHERIT(floating, Floating)
+        HANDLE_INHERIT_AND_INITIAL(floating, Floating)
         if(!primitiveValue) return;
         EFloat f;
         switch(primitiveValue->getIdent())
@@ -1813,10 +1840,11 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     case CSS_PROP_FONT_STYLE:
     {
         FontDef fontDef = style->htmlFont().fontDef;
-        if(value->cssValueType() == CSSValue::CSS_INHERIT) {
-            if(!parentNode) return;
+        if (isInherit)
             fontDef.italic = parentStyle->htmlFont().fontDef.italic;
-       } else {
+       else if (isInitial)
+            fontDef.italic = false;
+        else {
            if(!primitiveValue) return;
            switch(primitiveValue->getIdent()) {
                case CSS_VAL_OBLIQUE:
@@ -1840,10 +1868,11 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     case CSS_PROP_FONT_VARIANT:
     {
         FontDef fontDef = style->htmlFont().fontDef;
-        if(value->cssValueType() == CSSValue::CSS_INHERIT) {
-            if(!parentNode) return;
+        if (isInherit) 
             fontDef.smallCaps = parentStyle->htmlFont().fontDef.smallCaps;
-        } else {
+        else if (isInitial)
+            fontDef.smallCaps = false;
+        else {
             if(!primitiveValue) return;
             int id = primitiveValue->getIdent();
             if ( id == CSS_VAL_NORMAL )
@@ -1861,10 +1890,11 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     case CSS_PROP_FONT_WEIGHT:
     {
         FontDef fontDef = style->htmlFont().fontDef;
-        if(value->cssValueType() == CSSValue::CSS_INHERIT) {
-            if(!parentNode) return;
+        if (isInherit)
             fontDef.weight = parentStyle->htmlFont().fontDef.weight;
-        } else {
+        else if (isInitial)
+            fontDef.weight = QFont::Normal;
+        else {
             if(!primitiveValue) return;
             if(primitiveValue->getIdent())
             {
@@ -1904,7 +1934,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         
     case CSS_PROP_LIST_STYLE_POSITION:
     {
-        HANDLE_INHERIT(listStylePosition, ListStylePosition)
+        HANDLE_INHERIT_AND_INITIAL(listStylePosition, ListStylePosition)
         if (!primitiveValue) return;
         if (primitiveValue->getIdent())
             style->setListStylePosition( (EListStylePosition) (primitiveValue->getIdent() - CSS_VAL_OUTSIDE) );
@@ -1913,7 +1943,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 
     case CSS_PROP_LIST_STYLE_TYPE:
     {
-        HANDLE_INHERIT(listStyleType, ListStyleType)
+        HANDLE_INHERIT_AND_INITIAL(listStyleType, ListStyleType)
         if (!primitiveValue) return;
         if (primitiveValue->getIdent())
         {
@@ -1931,7 +1961,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 
     case CSS_PROP_OVERFLOW:
     {
-        HANDLE_INHERIT(overflow, Overflow)
+        HANDLE_INHERIT_AND_INITIAL(overflow, Overflow)
         if (!primitiveValue) return;
         EOverflow o;
         switch(primitiveValue->getIdent())
@@ -1955,7 +1985,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 
     case CSS_PROP_PAGE_BREAK_BEFORE:
     {
-        HANDLE_INHERIT(pageBreakBefore, PageBreakBefore)
+        HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(pageBreakBefore, PageBreakBefore, PageBreak)
         if (!primitiveValue) return;
         switch (primitiveValue->getIdent()) {
             case CSS_VAL_AUTO:
@@ -1975,7 +2005,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 
     case CSS_PROP_PAGE_BREAK_AFTER:
     {
-        HANDLE_INHERIT(pageBreakAfter, PageBreakAfter)
+        HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(pageBreakAfter, PageBreakAfter, PageBreak)
         if (!primitiveValue) return;
         switch (primitiveValue->getIdent()) {
             case CSS_VAL_AUTO:
@@ -1994,7 +2024,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     }
 
     case CSS_PROP_PAGE_BREAK_INSIDE: {
-        HANDLE_INHERIT(pageBreakInside, PageBreakInside)
+        HANDLE_INHERIT_AND_INITIAL_WITH_VALUE(pageBreakInside, PageBreakInside, PageBreak)
         if (!primitiveValue) return;
         if (primitiveValue->getIdent() == CSS_VAL_AUTO)
             style->setPageBreakInside(PBAUTO);
@@ -2008,7 +2038,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 
     case CSS_PROP_POSITION:
     {
-        HANDLE_INHERIT(position, Position)
+        HANDLE_INHERIT_AND_INITIAL(position, Position)
         if(!primitiveValue) return;
         EPosition p;
         switch(primitiveValue->getIdent())
@@ -2033,12 +2063,12 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     }
 
     case CSS_PROP_TABLE_LAYOUT: {
-        HANDLE_INHERIT(tableLayout, TableLayout)
+        HANDLE_INHERIT_AND_INITIAL(tableLayout, TableLayout)
 
         if ( !primitiveValue->getIdent() )
             return;
 
-        ETableLayout l = TAUTO;
+        ETableLayout l = RenderStyle::initialTableLayout();
         switch( primitiveValue->getIdent() ) {
             case CSS_VAL_FIXED:
                 l = TFIXED;
@@ -2052,7 +2082,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     }
         
     case CSS_PROP_UNICODE_BIDI: {
-        HANDLE_INHERIT(unicodeBidi, UnicodeBidi)
+        HANDLE_INHERIT_AND_INITIAL(unicodeBidi, UnicodeBidi)
         switch (primitiveValue->getIdent()) {
             case CSS_VAL_NORMAL:
                 style->setUnicodeBidi(UBNormal); 
@@ -2069,7 +2099,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
        break;
     }
     case CSS_PROP_TEXT_TRANSFORM: {
-        HANDLE_INHERIT(textTransform, TextTransform)
+        HANDLE_INHERIT_AND_INITIAL(textTransform, TextTransform)
         
         if(!primitiveValue->getIdent()) return;
 
@@ -2087,7 +2117,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 
     case CSS_PROP_VISIBILITY:
     {
-        HANDLE_INHERIT(visibility, Visibility)
+        HANDLE_INHERIT_AND_INITIAL(visibility, Visibility)
 
         switch( primitiveValue->getIdent() ) {
         case CSS_VAL_HIDDEN:
@@ -2104,7 +2134,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
     }
     case CSS_PROP_WHITE_SPACE:
-        HANDLE_INHERIT(whiteSpace, WhiteSpace)
+        HANDLE_INHERIT_AND_INITIAL(whiteSpace, WhiteSpace)
 
         if(!primitiveValue->getIdent()) return;
 
@@ -2128,12 +2158,17 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
 
     case CSS_PROP_BACKGROUND_POSITION:
-        if(value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setBackgroundXPosition(parentStyle->backgroundXPosition());
-        style->setBackgroundYPosition(parentStyle->backgroundYPosition());
+        if (isInherit) {
+            style->setBackgroundXPosition(parentStyle->backgroundXPosition());
+            style->setBackgroundYPosition(parentStyle->backgroundYPosition());
+        }
+        else if (isInitial) {
+            style->setBackgroundXPosition(RenderStyle::initialBackgroundXPosition());
+            style->setBackgroundYPosition(RenderStyle::initialBackgroundYPosition());
+        }
         break;
     case CSS_PROP_BACKGROUND_POSITION_X: {
-        HANDLE_INHERIT(backgroundXPosition, BackgroundXPosition)
+        HANDLE_INHERIT_AND_INITIAL(backgroundXPosition, BackgroundXPosition)
         if(!primitiveValue) break;
         Length l;
         int type = primitiveValue->primitiveType();
@@ -2147,7 +2182,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
     }
     case CSS_PROP_BACKGROUND_POSITION_Y: {
-        HANDLE_INHERIT(backgroundYPosition, BackgroundYPosition)
+        HANDLE_INHERIT_AND_INITIAL(backgroundYPosition, BackgroundYPosition)
         if(!primitiveValue) break;
         Length l;
         int type = primitiveValue->primitiveType();
@@ -2167,21 +2202,21 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
     }
     case CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING: {
-        HANDLE_INHERIT(horizontalBorderSpacing, HorizontalBorderSpacing)
+        HANDLE_INHERIT_AND_INITIAL(horizontalBorderSpacing, HorizontalBorderSpacing)
         if (!primitiveValue) break;
         short spacing =  primitiveValue->computeLength(style, paintDeviceMetrics);
         style->setHorizontalBorderSpacing(spacing);
         break;
     }
     case CSS_PROP__KHTML_BORDER_VERTICAL_SPACING: {
-        HANDLE_INHERIT(verticalBorderSpacing, VerticalBorderSpacing)
+        HANDLE_INHERIT_AND_INITIAL(verticalBorderSpacing, VerticalBorderSpacing)
         if (!primitiveValue) break;
         short spacing =  primitiveValue->computeLength(style, paintDeviceMetrics);
         style->setVerticalBorderSpacing(spacing);
         break;
     }
     case CSS_PROP_CURSOR:
-        HANDLE_INHERIT(cursor, Cursor)
+        HANDLE_INHERIT_AND_INITIAL(cursor, Cursor)
         if (primitiveValue)
             style->setCursor( (ECursor) (primitiveValue->getIdent() - CSS_VAL_AUTO) );
         break;        
@@ -2205,7 +2240,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 #endif
     {
         QColor col;
-        if (value->cssValueType() == CSSValue::CSS_INHERIT) {
+        if (isInherit) {
             HANDLE_INHERIT_COND(CSS_PROP_BACKGROUND_COLOR, backgroundColor, BackgroundColor)
             HANDLE_INHERIT_COND(CSS_PROP_BORDER_TOP_COLOR, borderTopColor, BorderTopColor)
             HANDLE_INHERIT_COND(CSS_PROP_BORDER_BOTTOM_COLOR, borderBottomColor, BorderBottomColor)
@@ -2215,6 +2250,13 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
             HANDLE_INHERIT_COND(CSS_PROP_OUTLINE_COLOR, outlineColor, OutlineColor)
             return;
         }
+        else if (isInitial) {
+            // The border/outline colors will just map to the invalid color |col| above.  This will have the
+            // effect of forcing the use of the currentColor when it comes time to draw the borders (and of
+            // not painting the background since the color won't be valid).
+            if (id == CSS_PROP_COLOR)
+                col = RenderStyle::initialColor();
+        }
         else {
             if(!primitiveValue )
                 return;
@@ -2288,7 +2330,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 // uri || inherit
     case CSS_PROP_BACKGROUND_IMAGE:
     {
-        HANDLE_INHERIT(backgroundImage, BackgroundImage)
+        HANDLE_INHERIT_AND_INITIAL(backgroundImage, BackgroundImage)
        if (!primitiveValue) return;
        style->setBackgroundImage(static_cast<CSSImageValueImpl *>(primitiveValue)->image());
         //kdDebug( 6080 ) << "setting image in style to " << image->image() << endl;
@@ -2296,9 +2338,8 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     }
     case CSS_PROP_LIST_STYLE_IMAGE:
     {
-        HANDLE_INHERIT(listStyleImage, ListStyleImage)
+        HANDLE_INHERIT_AND_INITIAL(listStyleImage, ListStyleImage)
         if (!primitiveValue) return;
-       if(!primitiveValue) return;
        style->setListStyleImage(static_cast<CSSImageValueImpl *>(primitiveValue)->image());
         //kdDebug( 6080 ) << "setting image in list to " << image->image() << endl;
         break;
@@ -2311,7 +2352,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     case CSS_PROP_BORDER_LEFT_WIDTH:
     case CSS_PROP_OUTLINE_WIDTH:
     {
-       if (value->cssValueType() == CSSValue::CSS_INHERIT) {
+       if (isInherit) {
             HANDLE_INHERIT_COND(CSS_PROP_BORDER_TOP_WIDTH, borderTopWidth, BorderTopWidth)
             HANDLE_INHERIT_COND(CSS_PROP_BORDER_RIGHT_WIDTH, borderRightWidth, BorderRightWidth)
             HANDLE_INHERIT_COND(CSS_PROP_BORDER_BOTTOM_WIDTH, borderBottomWidth, BorderBottomWidth)
@@ -2319,6 +2360,14 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
             HANDLE_INHERIT_COND(CSS_PROP_OUTLINE_WIDTH, outlineWidth, OutlineWidth)
             return;
         }
+        else if (isInitial) {
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_BORDER_TOP_WIDTH, BorderTopWidth, BorderWidth)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_BORDER_RIGHT_WIDTH, BorderRightWidth, BorderWidth)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_BORDER_BOTTOM_WIDTH, BorderBottomWidth, BorderWidth)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_BORDER_LEFT_WIDTH, BorderLeftWidth, BorderWidth)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_OUTLINE_WIDTH, OutlineWidth, BorderWidth)
+            return;
+        }
 
         if(!primitiveValue) break;
         short width = 3;
@@ -2368,11 +2417,16 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     case CSS_PROP_WORD_SPACING:
     {
        
-        if (value->cssValueType() == CSSValue::CSS_INHERIT) {
+        if (isInherit) {
             HANDLE_INHERIT_COND(CSS_PROP_LETTER_SPACING, letterSpacing, LetterSpacing)
             HANDLE_INHERIT_COND(CSS_PROP_WORD_SPACING, wordSpacing, WordSpacing)
             return;
         }
+        else if (isInitial) {
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_LETTER_SPACING, LetterSpacing, LetterWordSpacing)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_WORD_SPACING, WordSpacing, LetterWordSpacing)
+            return;
+        }
         
         int width = 0;
         if (primitiveValue && primitiveValue->getIdent() == CSS_VAL_NORMAL){
@@ -2424,7 +2478,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     case CSS_PROP_TEXT_INDENT:
         // +inherit
     {
-        if (value->cssValueType() == CSSValue::CSS_INHERIT) {
+        if (isInherit) {
             HANDLE_INHERIT_COND(CSS_PROP_MAX_WIDTH, maxWidth, MaxWidth)
             HANDLE_INHERIT_COND(CSS_PROP_BOTTOM, bottom, Bottom)
             HANDLE_INHERIT_COND(CSS_PROP_TOP, top, Top)
@@ -2442,9 +2496,28 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
             HANDLE_INHERIT_COND(CSS_PROP_MARGIN_LEFT, marginLeft, MarginLeft)
             HANDLE_INHERIT_COND(CSS_PROP_TEXT_INDENT, textIndent, TextIndent)
             return;
+        }
+        else if (isInitial) {
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_MAX_WIDTH, MaxWidth, MaxSize)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_BOTTOM, Bottom, Offset)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_TOP, Top, Offset)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_LEFT, Left, Offset)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_RIGHT, Right, Offset)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_WIDTH, Width, Size)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_MIN_WIDTH, MinWidth, MinSize)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_PADDING_TOP, PaddingTop, Padding)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_PADDING_RIGHT, PaddingRight, Padding)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_PADDING_BOTTOM, PaddingBottom, Padding)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_PADDING_LEFT, PaddingLeft, Padding)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_MARGIN_TOP, MarginTop, Margin)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_MARGIN_RIGHT, MarginRight, Margin)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_MARGIN_BOTTOM, MarginBottom, Margin)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_MARGIN_LEFT, MarginLeft, Margin)
+            HANDLE_INITIAL_COND(CSS_PROP_TEXT_INDENT, TextIndent)
+            return;
         } 
-        
-        if(primitiveValue && !apply) {
+
+        if (primitiveValue && !apply) {
             int type = primitiveValue->primitiveType();
             if(type > CSSPrimitiveValue::CSS_PERCENTAGE && type < CSSPrimitiveValue::CSS_DEG)
                 // Handle our quirky margin units if we have them.
@@ -2511,12 +2584,19 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         if(id != CSS_PROP_MAX_HEIGHT && primitiveValue &&
            primitiveValue->getIdent() == CSS_VAL_AUTO)
             apply = true;
-        if (value->cssValueType() == CSSValue::CSS_INHERIT) {
+        if (isInherit) {
             HANDLE_INHERIT_COND(CSS_PROP_MAX_HEIGHT, maxHeight, MaxHeight)
             HANDLE_INHERIT_COND(CSS_PROP_HEIGHT, height, Height)
             HANDLE_INHERIT_COND(CSS_PROP_MIN_HEIGHT, minHeight, MinHeight)
             return;
         }
+        else if (isInitial) {
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_MAX_HEIGHT, MaxHeight, MaxSize)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_HEIGHT, Height, Size)
+            HANDLE_INITIAL_COND_WITH_VALUE(CSS_PROP_MIN_HEIGHT, MinHeight, MinSize)
+            return;
+        }
+
         if (primitiveValue && !apply)
         {
             int type = primitiveValue->primitiveType();
@@ -2548,10 +2628,9 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
 
     case CSS_PROP_VERTICAL_ALIGN:
-        HANDLE_INHERIT(verticalAlign, VerticalAlign)
+        HANDLE_INHERIT_AND_INITIAL(verticalAlign, VerticalAlign)
         if (!primitiveValue) return;
-        if(primitiveValue->getIdent()) {
-
+        if (primitiveValue->getIdent()) {
          khtml::EVerticalAlign align;
 
          switch(primitiveValue->getIdent())
@@ -2606,8 +2685,10 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         else
             oldSize = m_fontSizes[3];
 
-        if (value->cssValueType() == CSSValue::CSS_INHERIT)
+        if (isInherit)
             size = oldSize;
+        else if (isInitial)
+            size = m_fontSizes[3];
         else if (primitiveValue->getIdent()) {
             // keywords are being used.  Pick the correct default
             // based off the font family.
@@ -2661,7 +2742,12 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     case CSS_PROP_Z_INDEX:
     {
         HANDLE_INHERIT(zIndex, ZIndex)
-
+        else if (isInitial) {
+            style->setHasAutoZIndex();
+            style->setZIndex(0);
+            return;
+        }
+        
         if (!primitiveValue)
             return;
 
@@ -2680,7 +2766,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         
     case CSS_PROP_WIDOWS:
     {
-        HANDLE_INHERIT(widows, Widows)
+        HANDLE_INHERIT_AND_INITIAL(widows, Widows)
         if (!primitiveValue || primitiveValue->primitiveType() != CSSPrimitiveValue::CSS_NUMBER)
             return;
         style->setWidows((int)primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_NUMBER));
@@ -2689,7 +2775,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         
     case CSS_PROP_ORPHANS:
     {
-        HANDLE_INHERIT(orphans, Orphans)
+        HANDLE_INHERIT_AND_INITIAL(orphans, Orphans)
         if (!primitiveValue || primitiveValue->primitiveType() != CSSPrimitiveValue::CSS_NUMBER)
             return;
         style->setOrphans((int)primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_NUMBER));
@@ -2699,13 +2785,13 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 // length, percent, number
     case CSS_PROP_LINE_HEIGHT:
     {
-        HANDLE_INHERIT(lineHeight, LineHeight)
+        HANDLE_INHERIT_AND_INITIAL(lineHeight, LineHeight)
         if(!primitiveValue) return;
         Length lineHeight;
         int type = primitiveValue->primitiveType();
-        if(primitiveValue->getIdent() == CSS_VAL_NORMAL)
+        if (primitiveValue->getIdent() == CSS_VAL_NORMAL)
             lineHeight = Length( -100, Percent );
-        else if(type > CSSPrimitiveValue::CSS_PERCENTAGE && type < CSSPrimitiveValue::CSS_DEG) {
+        else if (type > CSSPrimitiveValue::CSS_PERCENTAGE && type < CSSPrimitiveValue::CSS_DEG) {
             double multiplier = 1.0;
             // Scale for the font zoom factor only for types other than "em" and "ex", since those are
             // already based on the font size.
@@ -2713,9 +2799,9 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
                 multiplier = view->part()->zoomFactor() / 100.0;
             }
             lineHeight = Length(primitiveValue->computeLength(style, paintDeviceMetrics, multiplier), Fixed);
-        } else if(type == CSSPrimitiveValue::CSS_PERCENTAGE)
+        } else if (type == CSSPrimitiveValue::CSS_PERCENTAGE)
             lineHeight = Length( ( style->font().pixelSize() * int(primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_PERCENTAGE)) ) / 100, Fixed );
-        else if(type == CSSPrimitiveValue::CSS_NUMBER)
+        else if (type == CSSPrimitiveValue::CSS_NUMBER)
             lineHeight = Length(int(primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_NUMBER)*100), Percent);
         else
             return;
@@ -2726,7 +2812,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 // string
     case CSS_PROP_TEXT_ALIGN:
     {
-        HANDLE_INHERIT(textAlign, TextAlign)
+        HANDLE_INHERIT_AND_INITIAL(textAlign, TextAlign)
         if (!primitiveValue) return;
         if (primitiveValue->getIdent())
             style->setTextAlign( (ETextAlign) (primitiveValue->getIdent() - CSS_VAL__KHTML_AUTO) );
@@ -2740,12 +2826,22 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
        Length right;
        Length bottom;
        Length left;
-       if ( value->cssValueType() == CSSValue::CSS_INHERIT ) {
-           top = parentStyle->clipTop();
-           right = parentStyle->clipRight();
-           bottom = parentStyle->clipBottom();
-           left = parentStyle->clipLeft();
-       } else if ( !primitiveValue ) {
+        bool hasClip = true;
+       if (isInherit) {
+            if (parentStyle->hasClip()) {
+                top = parentStyle->clipTop();
+                right = parentStyle->clipRight();
+                bottom = parentStyle->clipBottom();
+                left = parentStyle->clipLeft();
+            }
+            else {
+                hasClip = false;
+                top = right = bottom = left = Length();
+            }
+        } else if (isInitial) {
+            hasClip = false;
+            top = right = bottom = left = Length();
+        } else if ( !primitiveValue ) {
            break;
        } else if ( primitiveValue->primitiveType() == CSSPrimitiveValue::CSS_RECT ) {
            RectImpl *rect = primitiveValue->getRectValue();
@@ -2763,8 +2859,8 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 //     qDebug("setting clip right to %d", right.value );
 //     qDebug("setting clip bottom to %d", bottom.value );
 //     qDebug("setting clip left to %d", left.value );
-       style->setClip( top, right, bottom, left );
-        style->setHasClip();
+       style->setClip(top, right, bottom, left);
+        style->setHasClip(hasClip);
     
         // rect, ident
         break;
@@ -2780,6 +2876,12 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
                 style->styleType()==RenderStyle::AFTER))
             break;
 
+        if (isInitial) {
+            if (style->contentData())
+                style->contentData()->clearContent();
+            return;
+        }
+        
         if(!value->isValueList()) return;
         CSSValueListImpl *list = static_cast<CSSValueListImpl *>(value);
         int len = list->length();
@@ -2819,8 +2921,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     case CSS_PROP_FONT_FAMILY:
         // list of strings and ids
     {
-        if(value->cssValueType() == CSSValue::CSS_INHERIT) {
-            if (!parentNode) return;
+        if (isInherit) {
             FontDef parentFontDef = parentStyle->htmlFont().fontDef;
             FontDef fontDef = style->htmlFont().fontDef;
             fontDef.genericFamily = parentFontDef.genericFamily;
@@ -2829,6 +2930,15 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
                 fontDirty = true;
             return;
         }
+        else if (isInitial) {
+            FontDef fontDef = style->htmlFont().fontDef;
+            FontDef initialDef = FontDef();
+            fontDef.genericFamily = initialDef.genericFamily;
+            fontDef.family = initialDef.firstFamily();
+            if (style->setFontDef(fontDef))
+                fontDirty = true;
+            return;
+        }
         
         if (!value->isValueList()) return;
         FontDef fontDef = style->htmlFont().fontDef;
@@ -2900,8 +3010,8 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
       break;
     case CSS_PROP_TEXT_DECORATION: {
         // list of ident
-        HANDLE_INHERIT(textDecoration, TextDecoration)
-        int t = TDNONE;
+        HANDLE_INHERIT_AND_INITIAL(textDecoration, TextDecoration)
+        int t = RenderStyle::initialTextDecoration();
         if(primitiveValue && primitiveValue->getIdent() == CSS_VAL_NONE) {
            // do nothing
        } else {
@@ -2935,7 +3045,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
     }
     case CSS_PROP__KHTML_FLOW_MODE:
-        HANDLE_INHERIT(flowAroundFloats, FlowAroundFloats)
+        HANDLE_INHERIT_AND_INITIAL(flowAroundFloats, FlowAroundFloats)
         if (!primitiveValue) return;
         if (primitiveValue->getIdent()) {
             style->setFlowAroundFloats( primitiveValue->getIdent() == CSS_VAL__KHTML_AROUND_FLOATS );
@@ -2945,89 +3055,140 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
 
 // shorthand properties
     case CSS_PROP_BACKGROUND:
-        if (value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setBackgroundColor(parentStyle->backgroundColor());
-        style->setBackgroundImage(parentStyle->backgroundImage());
-        style->setBackgroundRepeat(parentStyle->backgroundRepeat());
-        style->setBackgroundAttachment(parentStyle->backgroundAttachment());
-        style->setBackgroundXPosition(parentStyle->backgroundXPosition());
-        style->setBackgroundYPosition(parentStyle->backgroundYPosition());
+        if (isInherit) {
+            style->setBackgroundColor(parentStyle->backgroundColor());
+            style->setBackgroundImage(parentStyle->backgroundImage());
+            style->setBackgroundRepeat(parentStyle->backgroundRepeat());
+            style->setBackgroundAttachment(parentStyle->backgroundAttachment());
+            style->setBackgroundXPosition(parentStyle->backgroundXPosition());
+            style->setBackgroundYPosition(parentStyle->backgroundYPosition());
+        }
+        else if (isInitial) {
+            style->setBackgroundColor(QColor());
+            style->setBackgroundImage(RenderStyle::initialBackgroundImage());
+            style->setBackgroundRepeat(RenderStyle::initialBackgroundRepeat());
+            style->setBackgroundAttachment(RenderStyle::initialBackgroundAttachment());
+            style->setBackgroundXPosition(RenderStyle::initialBackgroundXPosition());
+            style->setBackgroundYPosition(RenderStyle::initialBackgroundYPosition());
+        }
         break;
     case CSS_PROP_BORDER:
     case CSS_PROP_BORDER_STYLE:
     case CSS_PROP_BORDER_WIDTH:
     case CSS_PROP_BORDER_COLOR:
-        if(value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-
-        if(id == CSS_PROP_BORDER || id == CSS_PROP_BORDER_COLOR)
+        if (id == CSS_PROP_BORDER || id == CSS_PROP_BORDER_COLOR)
         {
-            style->setBorderTopColor(parentStyle->borderTopColor());
-            style->setBorderBottomColor(parentStyle->borderBottomColor());
-            style->setBorderLeftColor(parentStyle->borderLeftColor());
-            style->setBorderRightColor(parentStyle->borderRightColor());
+            if (isInherit) {
+                style->setBorderTopColor(parentStyle->borderTopColor());
+                style->setBorderBottomColor(parentStyle->borderBottomColor());
+                style->setBorderLeftColor(parentStyle->borderLeftColor());
+                style->setBorderRightColor(parentStyle->borderRightColor());
+            }
+            else if (isInitial) {
+                style->setBorderTopColor(QColor()); // Reset to invalid color so currentColor is used instead.
+                style->setBorderBottomColor(QColor());
+                style->setBorderLeftColor(QColor());
+                style->setBorderRightColor(QColor());
+            }
         }
-        if(id == CSS_PROP_BORDER || id == CSS_PROP_BORDER_STYLE)
+        if (id == CSS_PROP_BORDER || id == CSS_PROP_BORDER_STYLE)
         {
-            style->setBorderTopStyle(parentStyle->borderTopStyle());
-            style->setBorderBottomStyle(parentStyle->borderBottomStyle());
-            style->setBorderLeftStyle(parentStyle->borderLeftStyle());
-            style->setBorderRightStyle(parentStyle->borderRightStyle());
+            if (isInherit) {
+                style->setBorderTopStyle(parentStyle->borderTopStyle());
+                style->setBorderBottomStyle(parentStyle->borderBottomStyle());
+                style->setBorderLeftStyle(parentStyle->borderLeftStyle());
+                style->setBorderRightStyle(parentStyle->borderRightStyle());
+            }
+            else if (isInitial) {
+                style->setBorderTopStyle(RenderStyle::initialBorderStyle());
+                style->setBorderBottomStyle(RenderStyle::initialBorderStyle());
+                style->setBorderLeftStyle(RenderStyle::initialBorderStyle());
+                style->setBorderRightStyle(RenderStyle::initialBorderStyle());
+            }
         }
-        if(id == CSS_PROP_BORDER || id == CSS_PROP_BORDER_WIDTH)
+        if (id == CSS_PROP_BORDER || id == CSS_PROP_BORDER_WIDTH)
         {
-            style->setBorderTopWidth(parentStyle->borderTopWidth());
-            style->setBorderBottomWidth(parentStyle->borderBottomWidth());
-            style->setBorderLeftWidth(parentStyle->borderLeftWidth());
-            style->setBorderRightWidth(parentStyle->borderRightWidth());
+            if (isInherit) {
+                style->setBorderTopWidth(parentStyle->borderTopWidth());
+                style->setBorderBottomWidth(parentStyle->borderBottomWidth());
+                style->setBorderLeftWidth(parentStyle->borderLeftWidth());
+                style->setBorderRightWidth(parentStyle->borderRightWidth());
+            }
+            else if (isInitial) {
+                style->setBorderTopWidth(RenderStyle::initialBorderWidth());
+                style->setBorderBottomWidth(RenderStyle::initialBorderWidth());
+                style->setBorderLeftWidth(RenderStyle::initialBorderWidth());
+                style->setBorderRightWidth(RenderStyle::initialBorderWidth());
+            }
         }
         return;
     case CSS_PROP_BORDER_TOP:
-        if(value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setBorderTopColor(parentStyle->borderTopColor());
-        style->setBorderTopStyle(parentStyle->borderTopStyle());
-        style->setBorderTopWidth(parentStyle->borderTopWidth());
+        if (isInherit) {
+            style->setBorderTopColor(parentStyle->borderTopColor());
+            style->setBorderTopStyle(parentStyle->borderTopStyle());
+            style->setBorderTopWidth(parentStyle->borderTopWidth());
+        }
+        else if (isInitial)
+            style->resetBorderTop();
         return;
     case CSS_PROP_BORDER_RIGHT:
-        if(value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setBorderRightColor(parentStyle->borderRightColor());
-        style->setBorderRightStyle(parentStyle->borderRightStyle());
-        style->setBorderRightWidth(parentStyle->borderRightWidth());
+        if (isInherit) {
+            style->setBorderRightColor(parentStyle->borderRightColor());
+            style->setBorderRightStyle(parentStyle->borderRightStyle());
+            style->setBorderRightWidth(parentStyle->borderRightWidth());
+        }
+        else if (isInitial)
+            style->resetBorderRight();
         return;
     case CSS_PROP_BORDER_BOTTOM:
-        if(value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setBorderBottomColor(parentStyle->borderBottomColor());
-        style->setBorderBottomStyle(parentStyle->borderBottomStyle());
-        style->setBorderBottomWidth(parentStyle->borderBottomWidth());
+        if (isInherit) {
+            style->setBorderBottomColor(parentStyle->borderBottomColor());
+            style->setBorderBottomStyle(parentStyle->borderBottomStyle());
+            style->setBorderBottomWidth(parentStyle->borderBottomWidth());
+        }
+        else if (isInitial)
+            style->resetBorderBottom();
         return;
     case CSS_PROP_BORDER_LEFT:
-        if(value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setBorderLeftColor(parentStyle->borderLeftColor());
-        style->setBorderLeftStyle(parentStyle->borderLeftStyle());
-        style->setBorderLeftWidth(parentStyle->borderLeftWidth());
+        if (isInherit) {
+            style->setBorderLeftColor(parentStyle->borderLeftColor());
+            style->setBorderLeftStyle(parentStyle->borderLeftStyle());
+            style->setBorderLeftWidth(parentStyle->borderLeftWidth());
+        }
+        else if (isInitial)
+            style->resetBorderLeft();
         return;
     case CSS_PROP_MARGIN:
-        if(value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setMarginTop(parentStyle->marginTop());
-        style->setMarginBottom(parentStyle->marginBottom());
-        style->setMarginLeft(parentStyle->marginLeft());
-        style->setMarginRight(parentStyle->marginRight());
+        if (isInherit) {
+            style->setMarginTop(parentStyle->marginTop());
+            style->setMarginBottom(parentStyle->marginBottom());
+            style->setMarginLeft(parentStyle->marginLeft());
+            style->setMarginRight(parentStyle->marginRight());
+        }
+        else if (isInitial)
+            style->resetMargin();
         return;
     case CSS_PROP_PADDING:
-        if(value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setPaddingTop(parentStyle->paddingTop());
-        style->setPaddingBottom(parentStyle->paddingBottom());
-        style->setPaddingLeft(parentStyle->paddingLeft());
-        style->setPaddingRight(parentStyle->paddingRight());
+        if (isInherit) {
+            style->setPaddingTop(parentStyle->paddingTop());
+            style->setPaddingBottom(parentStyle->paddingBottom());
+            style->setPaddingLeft(parentStyle->paddingLeft());
+            style->setPaddingRight(parentStyle->paddingRight());
+        }
+        else if (isInitial)
+            style->resetPadding();
         return;
-
     case CSS_PROP_FONT:
-        if ( value->cssValueType() == CSSValue::CSS_INHERIT ) {
-            if ( !parentNode )
-                return;
+        if (isInherit) {
             FontDef fontDef = parentStyle->htmlFont().fontDef;
             style->setLineHeight( parentStyle->lineHeight() );
             if (style->setFontDef( fontDef ))
                 fontDirty = true;
+        } else if (isInitial) {
+            FontDef fontDef;
+            style->setLineHeight(RenderStyle::initialLineHeight());
+            if (style->setFontDef( fontDef ))
+                fontDirty = true;
         } else if ( value->isFontValue() ) {
             FontValueImpl *font = static_cast<FontValueImpl *>(value);
             if ( !font->style || !font->variant || !font->weight ||
@@ -3050,21 +3211,30 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         return;
         
     case CSS_PROP_LIST_STYLE:
-        if (value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setListStyleType(parentStyle->listStyleType());
-        style->setListStyleImage(parentStyle->listStyleImage());
-        style->setListStylePosition(parentStyle->listStylePosition());
+        if (isInherit) {
+            style->setListStyleType(parentStyle->listStyleType());
+            style->setListStyleImage(parentStyle->listStyleImage());
+            style->setListStylePosition(parentStyle->listStylePosition());
+        }
+        else if (isInitial) {
+            style->setListStyleType(RenderStyle::initialListStyleType());
+            style->setListStyleImage(RenderStyle::initialListStyleImage());
+            style->setListStylePosition(RenderStyle::initialListStylePosition());
+        }
         break;
     case CSS_PROP_OUTLINE:
-        if (value->cssValueType() != CSSValue::CSS_INHERIT || !parentNode) return;
-        style->setOutlineWidth(parentStyle->outlineWidth());
-        style->setOutlineColor(parentStyle->outlineColor());
-        style->setOutlineStyle(parentStyle->outlineStyle());
+        if (isInherit) {
+            style->setOutlineWidth(parentStyle->outlineWidth());
+            style->setOutlineColor(parentStyle->outlineColor());
+            style->setOutlineStyle(parentStyle->outlineStyle());
+        }
+        else if (isInitial)
+            style->resetOutline();
         break;
 
     // CSS3 Properties
     case CSS_PROP_OUTLINE_OFFSET: {
-        HANDLE_INHERIT(outlineOffset, OutlineOffset)
+        HANDLE_INHERIT_AND_INITIAL(outlineOffset, OutlineOffset)
 
         int offset = primitiveValue->computeLength(style, paintDeviceMetrics);
         if (offset < 0) return;
@@ -3074,11 +3244,14 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
     }
 
     case CSS_PROP_TEXT_SHADOW: {
-        if (value->cssValueType() == CSSValue::CSS_INHERIT) {
-            if (!parentNode) return;
+        if (isInherit) {
             style->setTextShadow(parentStyle->textShadow() ? new ShadowData(*parentStyle->textShadow()) : 0);
             return;
         }
+        else if (isInitial) {
+            style->setTextShadow(0);
+            return;
+        }
 
         if (primitiveValue) { // none
             style->setTextShadow(0);
@@ -3109,7 +3282,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         return;
     }
     case CSS_PROP_OPACITY:
-        HANDLE_INHERIT(opacity, Opacity)
+        HANDLE_INHERIT_AND_INITIAL(opacity, Opacity)
         if (!primitiveValue || primitiveValue->primitiveType() != CSSPrimitiveValue::CSS_NUMBER)
             return; // Error case.
         
@@ -3117,7 +3290,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         style->setOpacity(kMin(1.0f, kMax(0, primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_NUMBER))));
         return;
     case CSS_PROP__KHTML_BOX_ALIGN:
-        HANDLE_INHERIT(boxAlign, BoxAlign)
+        HANDLE_INHERIT_AND_INITIAL(boxAlign, BoxAlign)
         if (!primitiveValue) return;
         switch (primitiveValue->getIdent()) {
             case CSS_VAL_STRETCH:
@@ -3140,7 +3313,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         }
         return;        
     case CSS_PROP__KHTML_BOX_DIRECTION:
-        HANDLE_INHERIT(boxDirection, BoxDirection)
+        HANDLE_INHERIT_AND_INITIAL(boxDirection, BoxDirection)
         if (!primitiveValue) return;
         if (primitiveValue->getIdent() == CSS_VAL_NORMAL)
             style->setBoxDirection(BNORMAL);
@@ -3148,7 +3321,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
             style->setBoxDirection(BREVERSE);
         return;        
     case CSS_PROP__KHTML_BOX_LINES:
-        HANDLE_INHERIT(boxLines, BoxLines)
+        HANDLE_INHERIT_AND_INITIAL(boxLines, BoxLines)
         if(!primitiveValue) return;
         if (primitiveValue->getIdent() == CSS_VAL_SINGLE)
             style->setBoxLines(SINGLE);
@@ -3156,7 +3329,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
             style->setBoxLines(MULTIPLE);
         return;     
     case CSS_PROP__KHTML_BOX_ORIENT:
-        HANDLE_INHERIT(boxOrient, BoxOrient)
+        HANDLE_INHERIT_AND_INITIAL(boxOrient, BoxOrient)
         if (!primitiveValue) return;
         if (primitiveValue->getIdent() == CSS_VAL_HORIZONTAL ||
             primitiveValue->getIdent() == CSS_VAL_INLINE_AXIS)
@@ -3165,7 +3338,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
             style->setBoxOrient(VERTICAL);
         return;     
     case CSS_PROP__KHTML_BOX_PACK:
-        HANDLE_INHERIT(boxPack, BoxPack)
+        HANDLE_INHERIT_AND_INITIAL(boxPack, BoxPack)
         if (!primitiveValue) return;
         switch (primitiveValue->getIdent()) {
             case CSS_VAL_START:
@@ -3185,19 +3358,19 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         }
         return;        
     case CSS_PROP__KHTML_BOX_FLEX:
-        HANDLE_INHERIT(boxFlex, BoxFlex)
+        HANDLE_INHERIT_AND_INITIAL(boxFlex, BoxFlex)
         if (!primitiveValue || primitiveValue->primitiveType() != CSSPrimitiveValue::CSS_NUMBER)
             return; // Error case.
         style->setBoxFlex(primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_NUMBER));
         return;
     case CSS_PROP__KHTML_BOX_FLEX_GROUP:
-        HANDLE_INHERIT(boxFlexGroup, BoxFlexGroup)
+        HANDLE_INHERIT_AND_INITIAL(boxFlexGroup, BoxFlexGroup)
         if (!primitiveValue || primitiveValue->primitiveType() != CSSPrimitiveValue::CSS_NUMBER)
             return; // Error case.
         style->setBoxFlexGroup((unsigned int)(primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_NUMBER)));
         return;        
     case CSS_PROP__KHTML_BOX_ORDINAL_GROUP:
-        HANDLE_INHERIT(boxOrdinalGroup, BoxOrdinalGroup)
+        HANDLE_INHERIT_AND_INITIAL(boxOrdinalGroup, BoxOrdinalGroup)
         if (!primitiveValue || primitiveValue->primitiveType() != CSSPrimitiveValue::CSS_NUMBER)
             return; // Error case.
         style->setBoxOrdinalGroup((unsigned int)(primitiveValue->getFloatValue(CSSPrimitiveValue::CSS_NUMBER)));
@@ -3211,7 +3384,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         style->setMarqueeBehavior(parentStyle->marqueeBehavior());
         break;
     case CSS_PROP__KHTML_MARQUEE_REPETITION: {
-        HANDLE_INHERIT(marqueeLoopCount, MarqueeLoopCount)
+        HANDLE_INHERIT_AND_INITIAL(marqueeLoopCount, MarqueeLoopCount)
         if (!primitiveValue) return;
         if (primitiveValue->getIdent() == CSS_VAL_INFINITE)
             style->setMarqueeLoopCount(-1); // -1 means repeat forever.
@@ -3220,7 +3393,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
     }
     case CSS_PROP__KHTML_MARQUEE_SPEED: {
-        HANDLE_INHERIT(marqueeSpeed, MarqueeSpeed)      
+        HANDLE_INHERIT_AND_INITIAL(marqueeSpeed, MarqueeSpeed)      
         if (!primitiveValue) return;
         if (primitiveValue->getIdent()) {
             switch (primitiveValue->getIdent())
@@ -3245,7 +3418,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
     }
     case CSS_PROP__KHTML_MARQUEE_INCREMENT: {
-        HANDLE_INHERIT(marqueeIncrement, MarqueeIncrement)
+        HANDLE_INHERIT_AND_INITIAL(marqueeIncrement, MarqueeIncrement)
         if (!primitiveValue) return;
         if (primitiveValue->getIdent()) {
             switch (primitiveValue->getIdent())
@@ -3270,11 +3443,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
     }
     case CSS_PROP__KHTML_MARQUEE_STYLE: {
-        if (value->cssValueType() == CSSValue::CSS_INHERIT) {
-            if(!parentNode) return;
-            style->setMarqueeBehavior(parentStyle->marqueeBehavior());
-            return;
-        }        
+        HANDLE_INHERIT_AND_INITIAL(marqueeBehavior, MarqueeBehavior)      
         if (!primitiveValue || !primitiveValue->getIdent()) return;
         switch (primitiveValue->getIdent())
         {
@@ -3294,11 +3463,7 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value )
         break;
     }
     case CSS_PROP__KHTML_MARQUEE_DIRECTION: {
-        if (value->cssValueType() == CSSValue::CSS_INHERIT) {
-            if(!parentNode) return;
-            style->setMarqueeDirection(parentStyle->marqueeDirection());
-            return;
-        }        
+        HANDLE_INHERIT_AND_INITIAL(marqueeDirection, MarqueeDirection)
         if (!primitiveValue || !primitiveValue->getIdent()) return;
         switch (primitiveValue->getIdent())
         {
index 1fcea14..cc72f03 100644 (file)
@@ -7,7 +7,7 @@ struct css_value {
     const char *name;
     int id;
 };
-/* maximum key range = 1826, duplicates = 2 */
+/* maximum key range = 1944, duplicates = 1 */
 
 #ifdef __GNUC__
 __inline
@@ -21,32 +21,32 @@ hash_val (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      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
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944,    5, 1944, 1944,    0,   15,
+        20,   25,   30,   35,   40,    5,   10,    0, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944,    0,   99,   34,
+        15,  205,  115,   94,  135,   55,    0,   84,    0,   93,
+        30,  200,  145,   50,  140,   59,    0,  190,   68,  120,
+       223,   30,   95, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944, 1944,
+      1944, 1944, 1944, 1944, 1944, 1944
     };
   register int hval = 0;
 
@@ -110,18 +110,17 @@ findValue (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 253,
+      TOTAL_KEYWORDS = 254,
       MIN_WORD_LENGTH = 2,
       MAX_WORD_LENGTH = 22,
       MIN_HASH_VALUE = 0,
-      MAX_HASH_VALUE = 1825
+      MAX_HASH_VALUE = 1943
     };
 
   static const struct css_value wordlist_value[] =
     {
       {"900", CSS_VAL_900},
-      {"ltr", CSS_VAL_LTR},
-      {"rtl", CSS_VAL_RTL},
+      {"700", CSS_VAL_700},
       {"800", CSS_VAL_800},
       {"100", CSS_VAL_100},
       {"200", CSS_VAL_200},
@@ -129,445 +128,463 @@ findValue (register const char *str, register unsigned int len)
       {"400", CSS_VAL_400},
       {"500", CSS_VAL_500},
       {"600", CSS_VAL_600},
-      {"700", CSS_VAL_700},
+      {"navy", CSS_VAL_NAVY},
+      {"ltr", CSS_VAL_LTR},
+      {"rtl", CSS_VAL_RTL},
       {"italic", CSS_VAL_ITALIC},
-      {"aqua", CSS_VAL_AQUA},
+      {"static", CSS_VAL_STATIC},
+      {"small", CSS_VAL_SMALL},
+      {"disc", CSS_VAL_DISC},
+      {"fast", CSS_VAL_FAST},
       {"wait", CSS_VAL_WAIT},
-      {"up", CSS_VAL_UP},
+      {"hand", CSS_VAL_HAND},
+      {"initial", CSS_VAL_INITIAL},
+      {"katakana", CSS_VAL_KATAKANA},
       {"start", CSS_VAL_START},
-      {"mix", CSS_VAL_MIX},
-      {"small", CSS_VAL_SMALL},
-      {"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},
-      {"compact", CSS_VAL_COMPACT},
-      {"table", CSS_VAL_TABLE},
-      {"icon", CSS_VAL_ICON},
+      {"always", CSS_VAL_ALWAYS},
+      {"black", CSS_VAL_BLACK},
+      {"thin", CSS_VAL_THIN},
+      {"fantasy", CSS_VAL_FANTASY},
+      {"aqua", CSS_VAL_AQUA},
+      {"end", CSS_VAL_END},
       {"gray", CSS_VAL_GRAY},
-      {"run-in", CSS_VAL_RUN_IN},
-      {"portrait", CSS_VAL_PORTRAIT},
-      {"x-small", CSS_VAL_X_SMALL},
       {"blink", CSS_VAL_BLINK},
-      {"scroll", CSS_VAL_SCROLL},
-      {"circle", CSS_VAL_CIRCLE},
-      {"large", CSS_VAL_LARGE},
-      {"scrollbar", CSS_VAL_SCROLLBAR},
+      {"table", CSS_VAL_TABLE},
+      {"thick", CSS_VAL_THICK},
+      {"bold", CSS_VAL_BOLD},
+      {"icon", CSS_VAL_ICON},
+      {"left", CSS_VAL_LEFT},
+      {"solid", CSS_VAL_SOLID},
+      {"slide", CSS_VAL_SLIDE},
+      {"up", CSS_VAL_UP},
+      {"avoid", CSS_VAL_AVOID},
+      {"top", CSS_VAL_TOP},
+      {"sub", CSS_VAL_SUB},
+      {"inset", CSS_VAL_INSET},
       {"lime", CSS_VAL_LIME},
-      {"larger", CSS_VAL_LARGER},
-      {"pre", CSS_VAL_PRE},
-      {"bottom", CSS_VAL_BOTTOM},
-      {"caption", CSS_VAL_CAPTION},
-      {"blue", CSS_VAL_BLUE},
+      {"ahead", CSS_VAL_AHEAD},
+      {"red", CSS_VAL_RED},
+      {"down", CSS_VAL_DOWN},
+      {"mix", CSS_VAL_MIX},
+      {"inline", CSS_VAL_INLINE},
+      {"slow", CSS_VAL_SLOW},
+      {"x-small", CSS_VAL_X_SMALL},
+      {"middle", CSS_VAL_MIDDLE},
+      {"auto", CSS_VAL_AUTO},
+      {"small-caps", CSS_VAL_SMALL_CAPS},
+      {"decimal", CSS_VAL_DECIMAL},
+      {"loud", CSS_VAL_LOUD},
+      {"hide", CSS_VAL_HIDE},
       {"block", CSS_VAL_BLOCK},
-      {"text", CSS_VAL_TEXT},
-      {"thin", CSS_VAL_THIN},
+      {"inside", CSS_VAL_INSIDE},
       {"right", CSS_VAL_RIGHT},
-      {"nowrap", CSS_VAL_NOWRAP},
-      {"bold", CSS_VAL_BOLD},
-      {"slow", CSS_VAL_SLOW},
-      {"maroon", CSS_VAL_MAROON},
-      {"xx-small", CSS_VAL_XX_SMALL},
-      {"fast", CSS_VAL_FAST},
+      {"text", CSS_VAL_TEXT},
+      {"dashed", CSS_VAL_DASHED},
+      {"scroll", CSS_VAL_SCROLL},
       {"both", CSS_VAL_BOTH},
-      {"disc", CSS_VAL_DISC},
-      {"menu", CSS_VAL_MENU},
-      {"status-bar", CSS_VAL_STATUS_BAR},
+      {"dotted", CSS_VAL_DOTTED},
+      {"large", CSS_VAL_LARGE},
+      {"single", CSS_VAL_SINGLE},
+      {"justify", CSS_VAL_JUSTIFY},
+      {"run-in", CSS_VAL_RUN_IN},
       {"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},
-      {"cross", CSS_VAL_CROSS},
-      {"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},
-      {"down", CSS_VAL_DOWN},
-      {"left", CSS_VAL_LEFT},
-      {"navy", CSS_VAL_NAVY},
-      {"inset", CSS_VAL_INSET},
-      {"hand", CSS_VAL_HAND},
-      {"square", CSS_VAL_SQUARE},
-      {"table-row", CSS_VAL_TABLE_ROW},
-      {"end", CSS_VAL_END},
+      {"hidden", CSS_VAL_HIDDEN},
+      {"normal", CSS_VAL_NORMAL},
+      {"caption", CSS_VAL_CAPTION},
       {"none", CSS_VAL_NONE},
+      {"circle", CSS_VAL_CIRCLE},
       {"grey", CSS_VAL_GREY},
-      {"orange", CSS_VAL_ORANGE},
-      {"small-caption", CSS_VAL_SMALL_CAPTION},
-      {"decimal", CSS_VAL_DECIMAL},
-      {"xx-large", CSS_VAL_XX_LARGE},
-      {"table-cell", CSS_VAL_TABLE_CELL},
       {"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},
+      {"level", CSS_VAL_LEVEL},
       {"help", CSS_VAL_HELP},
-      {"center", CSS_VAL_CENTER},
-      {"single", CSS_VAL_SINGLE},
+      {"landscape", CSS_VAL_LANDSCAPE},
+      {"pre", CSS_VAL_PRE},
+      {"cross", CSS_VAL_CROSS},
+      {"blue", CSS_VAL_BLUE},
+      {"smaller", CSS_VAL_SMALLER},
+      {"invert", CSS_VAL_INVERT},
+      {"vertical", CSS_VAL_VERTICAL},
+      {"compact", CSS_VAL_COMPACT},
       {"ridge", CSS_VAL_RIDGE},
-      {"repeat", CSS_VAL_REPEAT},
-      {"pointer", CSS_VAL_POINTER},
+      {"show", CSS_VAL_SHOW},
+      {"white", CSS_VAL_WHITE},
+      {"menu", CSS_VAL_MENU},
+      {"crop", CSS_VAL_CROP},
+      {"default", CSS_VAL_DEFAULT},
+      {"silver", CSS_VAL_SILVER},
+      {"olive", CSS_VAL_OLIVE},
       {"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},
-      {"bolder", CSS_VAL_BOLDER},
-      {"white", CSS_VAL_WHITE},
-      {"show", CSS_VAL_SHOW},
-      {"collapse", CSS_VAL_COLLAPSE},
-      {"outset", CSS_VAL_OUTSET},
-      {"green", CSS_VAL_GREEN},
-      {"medium", CSS_VAL_MEDIUM},
+      {"visible", CSS_VAL_VISIBLE},
+      {"infinite", CSS_VAL_INFINITE},
+      {"table-cell", CSS_VAL_TABLE_CELL},
       {"backwards", CSS_VAL_BACKWARDS},
-      {"absolute", CSS_VAL_ABSOLUTE},
-      {"marquee", CSS_VAL_MARQUEE},
-      {"georgian", CSS_VAL_GEORGIAN},
-      {"buttontext", CSS_VAL_BUTTONTEXT},
-      {"avoid", CSS_VAL_AVOID},
+      {"status-bar", CSS_VAL_STATUS_BAR},
+      {"armenian", CSS_VAL_ARMENIAN},
+      {"yellow", CSS_VAL_YELLOW},
+      {"move", CSS_VAL_MOVE},
       {"above", CSS_VAL_ABOVE},
       {"stretch", CSS_VAL_STRETCH},
-      {"slide", CSS_VAL_SLIDE},
+      {"serif", CSS_VAL_SERIF},
+      {"larger", CSS_VAL_LARGER},
+      {"alternate", CSS_VAL_ALTERNATE},
+      {"fuchsia", CSS_VAL_FUCHSIA},
+      {"capitalize", CSS_VAL_CAPITALIZE},
+      {"bottom", CSS_VAL_BOTTOM},
+      {"xx-small", CSS_VAL_XX_SMALL},
+      {"fixed", CSS_VAL_FIXED},
+      {"center", CSS_VAL_CENTER},
+      {"embed", CSS_VAL_EMBED},
       {"inherit", CSS_VAL_INHERIT},
-      {"block-axis", CSS_VAL_BLOCK_AXIS},
-      {"fantasy", CSS_VAL_FANTASY},
-      {"move", CSS_VAL_MOVE},
-      {"captiontext", CSS_VAL_CAPTIONTEXT},
-      {"yellow", CSS_VAL_YELLOW},
-      {"olive", CSS_VAL_OLIVE},
+      {"small-caption", CSS_VAL_SMALL_CAPTION},
+      {"below", CSS_VAL_BELOW},
+      {"lighter", CSS_VAL_LIGHTER},
+      {"nowrap", CSS_VAL_NOWRAP},
+      {"-khtml-left", CSS_VAL__KHTML_LEFT},
+      {"collapse", CSS_VAL_COLLAPSE},
+      {"square", CSS_VAL_SQUARE},
+      {"medium", CSS_VAL_MEDIUM},
+      {"baseline", CSS_VAL_BASELINE},
+      {"outset", CSS_VAL_OUTSET},
+      {"bolder", CSS_VAL_BOLDER},
+      {"maroon", CSS_VAL_MAROON},
+      {"lower", CSS_VAL_LOWER},
+      {"-khtml-body", CSS_VAL__KHTML_BODY},
+      {"x-large", CSS_VAL_X_LARGE},
+      {"orange", CSS_VAL_ORANGE},
+      {"scrollbar", CSS_VAL_SCROLLBAR},
+      {"relative", CSS_VAL_RELATIVE},
+      {"green", CSS_VAL_GREEN},
+      {"portrait", CSS_VAL_PORTRAIT},
+      {"inline-table", CSS_VAL_INLINE_TABLE},
+      {"multiple", CSS_VAL_MULTIPLE},
+      {"graytext", CSS_VAL_GRAYTEXT},
+      {"repeat", CSS_VAL_REPEAT},
+      {"highlight", CSS_VAL_HIGHLIGHT},
       {"double", CSS_VAL_DOUBLE},
-      {"silver", CSS_VAL_SILVER},
-      {"repeat-x", CSS_VAL_REPEAT_X},
-      {"text-bottom", CSS_VAL_TEXT_BOTTOM},
-      {"ahead", CSS_VAL_AHEAD},
-      {"serif", CSS_VAL_SERIF},
       {"-khtml-auto", CSS_VAL__KHTML_AUTO},
+      {"inline-axis", CSS_VAL_INLINE_AXIS},
+      {"outside", CSS_VAL_OUTSIDE},
+      {"sans-serif", CSS_VAL_SANS_SERIF},
+      {"repeat-y", CSS_VAL_REPEAT_Y},
+      {"katakana-iroha", CSS_VAL_KATAKANA_IROHA},
+      {"super", CSS_VAL_SUPER},
+      {"-apple-aqua", CSS_VAL__APPLE_AQUA},
+      {"-khtml-right", CSS_VAL__KHTML_RIGHT},
+      {"transparent", CSS_VAL_TRANSPARENT},
+      {"-khtml-text", CSS_VAL__KHTML_TEXT},
+      {"cursive", CSS_VAL_CURSIVE},
+      {"absolute", CSS_VAL_ABSOLUTE},
       {"separate", CSS_VAL_SEPARATE},
-      {"justify", CSS_VAL_JUSTIFY},
-      {"middle", CSS_VAL_MIDDLE},
+      {"lower-latin", CSS_VAL_LOWER_LATIN},
+      {"block-axis", CSS_VAL_BLOCK_AXIS},
+      {"higher", CSS_VAL_HIGHER},
+      {"table-row", CSS_VAL_TABLE_ROW},
+      {"table-caption", CSS_VAL_TABLE_CAPTION},
+      {"pointer", CSS_VAL_POINTER},
+      {"text-top", CSS_VAL_TEXT_TOP},
       {"-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},
+      {"forwards", CSS_VAL_FORWARDS},
+      {"condensed", CSS_VAL_CONDENSED},
+      {"n-resize", CSS_VAL_N_RESIZE},
+      {"inline-block", CSS_VAL_INLINE_BLOCK},
+      {"oblique", CSS_VAL_OBLIQUE},
+      {"georgian", CSS_VAL_GEORGIAN},
       {"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},
+      {"s-resize", CSS_VAL_S_RESIZE},
+      {"purple", CSS_VAL_PURPLE},
+      {"activecaption", CSS_VAL_ACTIVECAPTION},
+      {"infotext", CSS_VAL_INFOTEXT},
+      {"expanded", CSS_VAL_EXPANDED},
+      {"-khtml-box", CSS_VAL__KHTML_BOX},
       {"horizontal", CSS_VAL_HORIZONTAL},
-      {"inline-axis", CSS_VAL_INLINE_AXIS},
-      {"default", CSS_VAL_DEFAULT},
-      {"relative", CSS_VAL_RELATIVE},
+      {"table-column", CSS_VAL_TABLE_COLUMN},
+      {"underline", CSS_VAL_UNDERLINE},
       {"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},
+      {"marquee", CSS_VAL_MARQUEE},
+      {"w-resize", CSS_VAL_W_RESIZE},
+      {"background", CSS_VAL_BACKGROUND},
+      {"xx-large", CSS_VAL_XX_LARGE},
+      {"captiontext", CSS_VAL_CAPTIONTEXT},
+      {"overline", CSS_VAL_OVERLINE},
       {"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-right", CSS_VAL__KHTML_RIGHT},
       {"groove", CSS_VAL_GROOVE},
-      {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
-      {"activecaption", CSS_VAL_ACTIVECAPTION},
-      {"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},
       {"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},
+      {"upper-latin", CSS_VAL_UPPER_LATIN},
+      {"repeat-x", CSS_VAL_REPEAT_X},
+      {"no-repeat", CSS_VAL_NO_REPEAT},
       {"-khtml-center", CSS_VAL__KHTML_CENTER},
       {"sw-resize", CSS_VAL_SW_RESIZE},
-      {"close-quote", CSS_VAL_CLOSE_QUOTE},
-      {"sans-serif", CSS_VAL_SANS_SERIF},
+      {"menutext", CSS_VAL_MENUTEXT},
+      {"buttontext", CSS_VAL_BUTTONTEXT},
+      {"lower-alpha", CSS_VAL_LOWER_ALPHA},
+      {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP},
+      {"lowercase", CSS_VAL_LOWERCASE},
+      {"monospace", CSS_VAL_MONOSPACE},
+      {"windowtext", CSS_VAL_WINDOWTEXT},
       {"e-resize", CSS_VAL_E_RESIZE},
+      {"narrower", CSS_VAL_NARROWER},
+      {"hiragana-iroha", CSS_VAL_HIRAGANA_IROHA},
+      {"ne-resize", CSS_VAL_NE_RESIZE},
+      {"reverse", CSS_VAL_REVERSE},
+      {"text-bottom", CSS_VAL_TEXT_BOTTOM},
+      {"se-resize", CSS_VAL_SE_RESIZE},
       {"buttonshadow", CSS_VAL_BUTTONSHADOW},
-      {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE},
-      {"expanded", CSS_VAL_EXPANDED},
+      {"threedface", CSS_VAL_THREEDFACE},
       {"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},
+      {"upper-alpha", CSS_VAL_UPPER_ALPHA},
+      {"uppercase", CSS_VAL_UPPERCASE},
+      {"ultra-condensed", CSS_VAL_ULTRA_CONDENSED},
+      {"highlighttext", CSS_VAL_HIGHLIGHTTEXT},
+      {"lower-roman", CSS_VAL_LOWER_ROMAN},
+      {"close-quote", CSS_VAL_CLOSE_QUOTE},
       {"activeborder", CSS_VAL_ACTIVEBORDER},
-      {"-khtml-inline-box", CSS_VAL__KHTML_INLINE_BOX},
       {"ultra-expanded", CSS_VAL_ULTRA_EXPANDED},
+      {"line-through", CSS_VAL_LINE_THROUGH},
+      {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC},
+      {"semi-condensed", CSS_VAL_SEMI_CONDENSED},
       {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT},
-      {"se-resize", CSS_VAL_SE_RESIZE},
-      {"lower-greek", CSS_VAL_LOWER_GREEK},
-      {"infobackground", CSS_VAL_INFOBACKGROUND},
+      {"-khtml-inline-box", CSS_VAL__KHTML_INLINE_BOX},
+      {"threedshadow", CSS_VAL_THREEDSHADOW},
+      {"open-quote", CSS_VAL_OPEN_QUOTE},
+      {"message-box", CSS_VAL_MESSAGE_BOX},
       {"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},
-      {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP},
+      {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
       {"bidi-override", CSS_VAL_BIDI_OVERRIDE},
-      {"extra-expanded", CSS_VAL_EXTRA_EXPANDED},
       {"-khtml-around-floats", CSS_VAL__KHTML_AROUND_FLOATS},
-      {"table-header-group", CSS_VAL_TABLE_HEADER_GROUP},
-      {"semi-expanded", CSS_VAL_SEMI_EXPANDED},
+      {"appworkspace", CSS_VAL_APPWORKSPACE},
+      {"infobackground", CSS_VAL_INFOBACKGROUND},
+      {"upper-roman", CSS_VAL_UPPER_ROMAN},
+      {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT},
+      {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
       {"extra-condensed", CSS_VAL_EXTRA_CONDENSED},
-      {"decimal-leading-zero", CSS_VAL_DECIMAL_LEADING_ZERO},
-      {"threedshadow", CSS_VAL_THREEDSHADOW},
-      {"semi-condensed", CSS_VAL_SEMI_CONDENSED},
+      {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE},
+      {"lower-greek", CSS_VAL_LOWER_GREEK},
       {"threedhighlight", CSS_VAL_THREEDHIGHLIGHT},
-      {"-khtml-baseline-middle", CSS_VAL__KHTML_BASELINE_MIDDLE},
+      {"extra-expanded", CSS_VAL_EXTRA_EXPANDED},
+      {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE},
+      {"decimal-leading-zero", CSS_VAL_DECIMAL_LEADING_ZERO},
+      {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE},
+      {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW},
       {"threedlightshadow", CSS_VAL_THREEDLIGHTSHADOW},
-      {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW}
+      {"table-row-group", CSS_VAL_TABLE_ROW_GROUP},
+      {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP},
+      {"table-header-group", CSS_VAL_TABLE_HEADER_GROUP},
+      {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP}
     };
 
   static const short lookup[] =
     {
-         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,
+         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,
+         9,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1, -396, -244,   -2,   -1,
+        12,   -1,   -1,   -1,   13,   -1,   -1,   -1,
+        14,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   15,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   16,   17,
+        -1,   -1,   -1,   -1,   18,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   19,   -1,   -1,   20,   21,
+        -1,   -1,   -1,   -1,   -1,   22,   -1,   -1,
+        -1,   23,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   24,   -1,   -1,   25,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   26,   -1,   -1,   -1,   -1,   -1,
+        27,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   28,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        29,   -1,   -1,   -1,   30,   -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,
+        31,   -1,   -1,   -1,   32,   -1,   -1,   -1,
+        -1,   -1,   33,   -1,   -1,   -1,   -1,   34,
+        35,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   36,   -1,   -1,   -1,   -1,   37,   38,
+        -1,   -1,   39,   -1,   -1,   -1,   -1,   -1,
+        -1,   40,   -1,   -1,   41,   42,   -1,   -1,
+        -1,   43,   -1,   44,   -1,   -1,   -1,   -1,
+        45,   -1,   -1,   -1,   -1,   46,   -1,   -1,
+        -1,   -1,   -1,   47,   -1,   -1,   -1,   48,
+        -1,   -1,   -1,   49,   50,   -1,   -1,   51,
+        -1,   -1,   -1,   -1,   -1,   -1,   52,   -1,
+        -1,   -1,   -1,   53,   -1,   -1,   -1,   -1,
+        -1,   -1,   54,   -1,   -1,   55,   -1,   -1,
+        -1,   -1,   56,   -1,   -1,   -1,   -1,   -1,
+        -1,   57,   -1,   58,   -1,   -1,   -1,   -1,
+        59,   -1,   -1,   -1,   60,   61,   -1,   -1,
+        -1,   62,   63,   64,   -1,   -1,   -1,   65,
+        -1,   -1,   -1,   66,   -1,   -1,   -1,   -1,
+        -1,   67,   68,   -1,   -1,   -1,   69,   70,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   71,
+        72,   73,   -1,   -1,   74,   75,   -1,   -1,
+        76,   -1,   -1,   -1,   -1,   -1,   77,   -1,
+        -1,   -1,   -1,   -1,   -1,   78,   -1,   -1,
+        79,   -1,   80,   -1,   81,   -1,   82,   -1,
+        -1,   83,   84,   -1,   -1,   -1,   85,   -1,
+        -1,   -1,   86,   -1,   -1,   87,   -1,   -1,
+        -1,   -1,   88,   89,   -1,   -1,   90,   91,
+        -1,   -1,   -1,   -1,   -1,   92,   -1,   93,
+        94,   -1,   -1,   -1,   -1,   -1,   -1,   95,
+        -1,   -1,   -1,   -1,   96,   97,   -1,   -1,
+        -1,   98,   -1,   -1,   99,   -1,   -1,  100,
+       101,  102,   -1,  103,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  104,   -1,
+        -1,   -1,   -1,   -1,  105,  106,  107,   -1,
+        -1,   -1,   -1,  108,  109,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  110,  111,   -1,   -1,
+       112,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  113,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  114,  115,   -1,
+        -1,  116,   -1,   -1,  117,  118,   -1,   -1,
+       119,   -1,   -1,   -1,   -1,  120,   -1,   -1,
+        -1,   -1,   -1,  121,   -1,   -1,   -1,   -1,
+        -1,   -1,  122,  123,  124,   -1,   -1,   -1,
+        -1,   -1,   -1,  125,   -1,  126,  127,   -1,
+        -1,   -1,   -1,  128,   -1,   -1,   -1,  129,
+        -1,  130,  131,  132,   -1,  133,   -1,   -1,
+       134,  135,  136,   -1,   -1,   -1,   -1,   -1,
+       137,   -1,   -1,   -1,  138,   -1,   -1,   -1,
+       139,   -1,   -1,   -1,  140,   -1,   -1,  141,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  142,
+        -1,   -1,   -1,   -1,   -1,  143,   -1,   -1,
+       144,   -1,   -1,   -1,   -1,  145,   -1,   -1,
+        -1,   -1,   -1,   -1,  146,   -1,   -1,  147,
+        -1,   -1,  148,   -1,   -1,  149,   -1,   -1,
+        -1,   -1,   -1,  150,   -1,   -1,   -1,   -1,
+        -1,  151,  152,   -1,   -1,  153,  154,  155,
+        -1,  156,  157,  158,   -1,   -1,   -1,  159,
+        -1,   -1,   -1,   -1,  160,   -1,   -1,   -1,
+        -1,  161,   -1,   -1,   -1,  162,   -1,  163,
+        -1,   -1,  164,   -1,   -1,   -1,   -1,   -1,
+        -1,  165,   -1,   -1,   -1,  166,   -1,   -1,
+        -1,  167,  168,   -1,   -1,  169,   -1,  170,
         -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,  171,   -1,   -1,   -1,  172,  173,
+        -1,  174,  175,   -1,  176,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  177,   -1,
+        -1,   -1,   -1,   -1,  178,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  179,
+       180,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  181,   -1,
+        -1,  182,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  183,  184,   -1,  185,   -1,
+        -1,   -1,  186,   -1,  187,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  188,
+       189,   -1,   -1,  190,   -1,   -1,   -1,  191,
+        -1,   -1,  192,  193,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  194,   -1,   -1,   -1,   -1,
+        -1,   -1,  195,   -1,   -1,   -1,   -1,   -1,
+       196,   -1,   -1,   -1,   -1,   -1,   -1,  197,
+        -1,   -1,  198,  199,   -1,   -1,  200,   -1,
+        -1,   -1,   -1,   -1,   -1,  201,   -1,   -1,
+        -1,   -1,   -1,  202,   -1,   -1,  203,   -1,
+       204,  205,   -1,   -1,   -1,   -1,   -1,  206,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  207,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  208,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  209,   -1,
+        -1,  210,   -1,   -1,  211,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+       212,   -1,   -1,   -1,   -1,   -1,  213,   -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,  214,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  215,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  216,   -1,   -1,   -1,   -1,
+       217,   -1,   -1,  218,   -1,  219,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -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,  222,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,  223,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,  224,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  225,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  226,   -1,
+       227,   -1,   -1,   -1,   -1,  228,  229,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,  230,   -1,   -1,   -1,  231,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  232,
+        -1,  233,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,  234,  235,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  236,   -1,
+        -1,   -1,   -1,   -1,   -1,  237,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  195,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -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,
-        -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,  238,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -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,
-       211,   -1,   -1,   -1,  212,  213,   -1,   -1,
+        -1,   -1,   -1,  239,   -1,   -1,  240,   -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,  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,   -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,   -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,   -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,
-       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,  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,  241,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,   -1,   -1,   -1,  242,   -1,
+        -1,   -1,   -1,  243,   -1,   -1,   -1,   -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,  245,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
+        -1,   -1,   -1,  246,   -1,   -1,   -1,   -1,
         -1,   -1,   -1,   -1,   -1,   -1,   -1,   -1,
-        -1,   -1,   -1,  242,   -1,   -1,   -1,   -1,
+        -1,  247,   -1,   -1,  248,   -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,  243,   -1,
-        -1,   -1,   -1,  244,   -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,  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,   -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,
-       246,   -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,  247,
+        -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,   -1,   -1,   -1,  248,   -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,
@@ -576,19 +593,18 @@ 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,  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,   -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,  252,
         -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,
-       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,
@@ -600,11 +616,10 @@ 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,  252
+        -1,   -1,   -1,   -1,   -1,   -1,   -1,  253
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -644,6 +659,7 @@ findValue (register const char *str, register unsigned int len)
 static const char * const valueList[] = {
 "",
 "inherit", 
+"initial", 
 "none", 
 "hidden", 
 "inset", 
index decf6f5..9c2678b 100644 (file)
@@ -10,259 +10,260 @@ DOM::DOMString getValueName(unsigned short id);
 #define CSS_VAL_INVALID 0
 #define CSS_VAL_MIN 1
 #define CSS_VAL_INHERIT 1
-#define CSS_VAL_NONE 2
-#define CSS_VAL_HIDDEN 3
-#define CSS_VAL_INSET 4
-#define CSS_VAL_GROOVE 5
-#define CSS_VAL_RIDGE 6
-#define CSS_VAL_OUTSET 7
-#define CSS_VAL_DOTTED 8
-#define CSS_VAL_DASHED 9
-#define CSS_VAL_SOLID 10
-#define CSS_VAL_DOUBLE 11
-#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_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_TRANSPARENT 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_INITIAL 2
+#define CSS_VAL_NONE 3
+#define CSS_VAL_HIDDEN 4
+#define CSS_VAL_INSET 5
+#define CSS_VAL_GROOVE 6
+#define CSS_VAL_RIDGE 7
+#define CSS_VAL_OUTSET 8
+#define CSS_VAL_DOTTED 9
+#define CSS_VAL_DASHED 10
+#define CSS_VAL_SOLID 11
+#define CSS_VAL_DOUBLE 12
+#define CSS_VAL__APPLE_AQUA 13
+#define CSS_VAL_CAPTION 14
+#define CSS_VAL_ICON 15
+#define CSS_VAL_MENU 16
+#define CSS_VAL_MESSAGE_BOX 17
+#define CSS_VAL_SMALL_CAPTION 18
+#define CSS_VAL_STATUS_BAR 19
+#define CSS_VAL_ITALIC 20
+#define CSS_VAL_OBLIQUE 21
+#define CSS_VAL_SMALL_CAPS 22
+#define CSS_VAL_NORMAL 23
+#define CSS_VAL_BOLD 24
+#define CSS_VAL_BOLDER 25
+#define CSS_VAL_LIGHTER 26
+#define CSS_VAL_100 27
+#define CSS_VAL_200 28
+#define CSS_VAL_300 29
+#define CSS_VAL_400 30
+#define CSS_VAL_500 31
+#define CSS_VAL_600 32
+#define CSS_VAL_700 33
+#define CSS_VAL_800 34
+#define CSS_VAL_900 35
+#define CSS_VAL_XX_SMALL 36
+#define CSS_VAL_X_SMALL 37
+#define CSS_VAL_SMALL 38
+#define CSS_VAL_MEDIUM 39
+#define CSS_VAL_LARGE 40
+#define CSS_VAL_X_LARGE 41
+#define CSS_VAL_XX_LARGE 42
+#define CSS_VAL__KHTML_XXX_LARGE 43
+#define CSS_VAL_SMALLER 44
+#define CSS_VAL_LARGER 45
+#define CSS_VAL_WIDER 46
+#define CSS_VAL_NARROWER 47
+#define CSS_VAL_ULTRA_CONDENSED 48
+#define CSS_VAL_EXTRA_CONDENSED 49
+#define CSS_VAL_CONDENSED 50
+#define CSS_VAL_SEMI_CONDENSED 51
+#define CSS_VAL_SEMI_EXPANDED 52
+#define CSS_VAL_EXPANDED 53
+#define CSS_VAL_EXTRA_EXPANDED 54
+#define CSS_VAL_ULTRA_EXPANDED 55
+#define CSS_VAL_SERIF 56
+#define CSS_VAL_SANS_SERIF 57
+#define CSS_VAL_CURSIVE 58
+#define CSS_VAL_FANTASY 59
+#define CSS_VAL_MONOSPACE 60
+#define CSS_VAL__KHTML_BODY 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_TRANSPARENT 79
+#define CSS_VAL_ACTIVEBORDER 80
+#define CSS_VAL_ACTIVECAPTION 81
+#define CSS_VAL_APPWORKSPACE 82
+#define CSS_VAL_BACKGROUND 83
+#define CSS_VAL_BUTTONFACE 84
+#define CSS_VAL_BUTTONHIGHLIGHT 85
+#define CSS_VAL_BUTTONSHADOW 86
+#define CSS_VAL_BUTTONTEXT 87
+#define CSS_VAL_CAPTIONTEXT 88
+#define CSS_VAL_GRAYTEXT 89
+#define CSS_VAL_HIGHLIGHT 90
+#define CSS_VAL_HIGHLIGHTTEXT 91
+#define CSS_VAL_INACTIVEBORDER 92
+#define CSS_VAL_INACTIVECAPTION 93
+#define CSS_VAL_INACTIVECAPTIONTEXT 94
+#define CSS_VAL_INFOBACKGROUND 95
+#define CSS_VAL_INFOTEXT 96
+#define CSS_VAL_MENUTEXT 97
+#define CSS_VAL_SCROLLBAR 98
+#define CSS_VAL_THREEDDARKSHADOW 99
+#define CSS_VAL_THREEDFACE 100
+#define CSS_VAL_THREEDHIGHLIGHT 101
+#define CSS_VAL_THREEDLIGHTSHADOW 102
+#define CSS_VAL_THREEDSHADOW 103
+#define CSS_VAL_WINDOW 104
+#define CSS_VAL_WINDOWFRAME 105
+#define CSS_VAL_WINDOWTEXT 106
+#define CSS_VAL_GREY 107
+#define CSS_VAL__KHTML_TEXT 108
+#define CSS_VAL_REPEAT 109
+#define CSS_VAL_REPEAT_X 110
+#define CSS_VAL_REPEAT_Y 111
+#define CSS_VAL_NO_REPEAT 112
+#define CSS_VAL_BASELINE 113
+#define CSS_VAL_MIDDLE 114
+#define CSS_VAL_SUB 115
+#define CSS_VAL_SUPER 116
+#define CSS_VAL_TEXT_TOP 117
+#define CSS_VAL_TEXT_BOTTOM 118
+#define CSS_VAL_TOP 119
+#define CSS_VAL_BOTTOM 120
+#define CSS_VAL__KHTML_BASELINE_MIDDLE 121
+#define CSS_VAL__KHTML_AUTO 122
+#define CSS_VAL_LEFT 123
+#define CSS_VAL_RIGHT 124
+#define CSS_VAL_CENTER 125
+#define CSS_VAL_JUSTIFY 126
+#define CSS_VAL__KHTML_LEFT 127
+#define CSS_VAL__KHTML_RIGHT 128
+#define CSS_VAL__KHTML_CENTER 129
+#define CSS_VAL_OUTSIDE 130
+#define CSS_VAL_INSIDE 131
+#define CSS_VAL_DISC 132
+#define CSS_VAL_CIRCLE 133
+#define CSS_VAL_SQUARE 134
+#define CSS_VAL_DECIMAL 135
+#define CSS_VAL_DECIMAL_LEADING_ZERO 136
+#define CSS_VAL_LOWER_ROMAN 137
+#define CSS_VAL_UPPER_ROMAN 138
+#define CSS_VAL_LOWER_GREEK 139
+#define CSS_VAL_LOWER_ALPHA 140
+#define CSS_VAL_LOWER_LATIN 141
+#define CSS_VAL_UPPER_ALPHA 142
+#define CSS_VAL_UPPER_LATIN 143
+#define CSS_VAL_HEBREW 144
+#define CSS_VAL_ARMENIAN 145
+#define CSS_VAL_GEORGIAN 146
+#define CSS_VAL_CJK_IDEOGRAPHIC 147
+#define CSS_VAL_HIRAGANA 148
+#define CSS_VAL_KATAKANA 149
+#define CSS_VAL_HIRAGANA_IROHA 150
+#define CSS_VAL_KATAKANA_IROHA 151
+#define CSS_VAL_INLINE 152
+#define CSS_VAL_BLOCK 153
+#define CSS_VAL_LIST_ITEM 154
+#define CSS_VAL_RUN_IN 155
+#define CSS_VAL_COMPACT 156
+#define CSS_VAL_INLINE_BLOCK 157
+#define CSS_VAL_TABLE 158
+#define CSS_VAL_INLINE_TABLE 159
+#define CSS_VAL_TABLE_ROW_GROUP 160
+#define CSS_VAL_TABLE_HEADER_GROUP 161
+#define CSS_VAL_TABLE_FOOTER_GROUP 162
+#define CSS_VAL_TABLE_ROW 163
+#define CSS_VAL_TABLE_COLUMN_GROUP 164
+#define CSS_VAL_TABLE_COLUMN 165
+#define CSS_VAL_TABLE_CELL 166
+#define CSS_VAL_TABLE_CAPTION 167
+#define CSS_VAL__KHTML_BOX 168
+#define CSS_VAL__KHTML_INLINE_BOX 169
+#define CSS_VAL_AUTO 170
+#define CSS_VAL_CROSSHAIR 171
+#define CSS_VAL_DEFAULT 172
+#define CSS_VAL_POINTER 173
+#define CSS_VAL_MOVE 174
+#define CSS_VAL_E_RESIZE 175
+#define CSS_VAL_NE_RESIZE 176
+#define CSS_VAL_NW_RESIZE 177
+#define CSS_VAL_N_RESIZE 178
+#define CSS_VAL_SE_RESIZE 179
+#define CSS_VAL_SW_RESIZE 180
+#define CSS_VAL_S_RESIZE 181
+#define CSS_VAL_W_RESIZE 182
+#define CSS_VAL_TEXT 183
+#define CSS_VAL_WAIT 184
+#define CSS_VAL_HELP 185
+#define CSS_VAL_LTR 186
+#define CSS_VAL_RTL 187
+#define CSS_VAL_CAPITALIZE 188
+#define CSS_VAL_UPPERCASE 189
+#define CSS_VAL_LOWERCASE 190
+#define CSS_VAL_VISIBLE 191
+#define CSS_VAL_COLLAPSE 192
+#define CSS_VAL_ABOVE 193
+#define CSS_VAL_ABSOLUTE 194
+#define CSS_VAL_ALWAYS 195
+#define CSS_VAL_AVOID 196
+#define CSS_VAL_BELOW 197
+#define CSS_VAL_BIDI_OVERRIDE 198
+#define CSS_VAL_BLINK 199
+#define CSS_VAL_BOTH 200
+#define CSS_VAL_CLOSE_QUOTE 201
+#define CSS_VAL_CROP 202
+#define CSS_VAL_CROSS 203
+#define CSS_VAL_EMBED 204
+#define CSS_VAL_FIXED 205
+#define CSS_VAL_HAND 206
+#define CSS_VAL_HIDE 207
+#define CSS_VAL_HIGHER 208
+#define CSS_VAL_INVERT 209
+#define CSS_VAL_LANDSCAPE 210
+#define CSS_VAL_LEVEL 211
+#define CSS_VAL_LINE_THROUGH 212
+#define CSS_VAL_LOUD 213
+#define CSS_VAL_LOWER 214
+#define CSS_VAL_MARQUEE 215
+#define CSS_VAL_MIX 216
+#define CSS_VAL_NO_CLOSE_QUOTE 217
+#define CSS_VAL_NO_OPEN_QUOTE 218
+#define CSS_VAL_NOWRAP 219
+#define CSS_VAL_OPEN_QUOTE 220
+#define CSS_VAL_OVERLINE 221
+#define CSS_VAL_PORTRAIT 222
+#define CSS_VAL_PRE 223
+#define CSS_VAL_RELATIVE 224
+#define CSS_VAL_SCROLL 225
+#define CSS_VAL_SEPARATE 226
+#define CSS_VAL_SHOW 227
+#define CSS_VAL_STATIC 228
+#define CSS_VAL_THICK 229
+#define CSS_VAL_THIN 230
+#define CSS_VAL_UNDERLINE 231
+#define CSS_VAL__KHTML_NOWRAP 232
+#define CSS_VAL__KHTML_NORMAL 233
+#define CSS_VAL__KHTML_AROUND_FLOATS 234
+#define CSS_VAL_STRETCH 235
+#define CSS_VAL_START 236
+#define CSS_VAL_END 237
+#define CSS_VAL_REVERSE 238
+#define CSS_VAL_HORIZONTAL 239
+#define CSS_VAL_VERTICAL 240
+#define CSS_VAL_INLINE_AXIS 241
+#define CSS_VAL_BLOCK_AXIS 242
+#define CSS_VAL_SINGLE 243
+#define CSS_VAL_MULTIPLE 244
+#define CSS_VAL_FORWARDS 245
+#define CSS_VAL_BACKWARDS 246
+#define CSS_VAL_AHEAD 247
+#define CSS_VAL_UP 248
+#define CSS_VAL_DOWN 249
+#define CSS_VAL_SLOW 250
+#define CSS_VAL_FAST 251
+#define CSS_VAL_INFINITE 252
+#define CSS_VAL_SLIDE 253
+#define CSS_VAL_ALTERNATE 254
 
-#define CSS_VAL_TOTAL 254
+#define CSS_VAL_TOTAL 255
 #endif
 
index 58d626e..3801dd6 100644 (file)
@@ -10,6 +10,7 @@
 # and produce incorrect results.
 #
 inherit
+initial
 #
 # CSS_PROP_OUTLINE_STYLE
 # CSS_PROP_BORDER_TOP_STYLE
index 6d51040..f464d2d 100644 (file)
@@ -256,7 +256,8 @@ public:
        CSS_INHERIT = 0,
         CSS_PRIMITIVE_VALUE = 1,
         CSS_VALUE_LIST = 2,
-        CSS_CUSTOM = 3
+        CSS_CUSTOM = 3,
+        CSS_INITIAL = 4
     };
 
     /**
index f28a62e..dbc676b 100644 (file)
@@ -55,14 +55,8 @@ StyleBoxData::StyleBoxData()
     : z_index( 0 ), z_auto(true)
 {
     // Initialize our min/max widths/heights.
-    min_width.type = Fixed;
-    min_width.value = 0;
-    min_height.type = Fixed;
-    min_height.value = 0;
-    max_width.type = Fixed;
-    max_width.value = UNDEFINED;
-    max_height.type = Fixed;
-    max_height.value = UNDEFINED;
+    min_width = min_height = RenderStyle::initialMinSize();
+    max_width = max_height = RenderStyle::initialMaxSize();
 }
 
 StyleBoxData::StyleBoxData(const StyleBoxData& o )
@@ -88,7 +82,9 @@ bool StyleBoxData::operator==(const StyleBoxData& o) const
 }
 
 StyleVisualData::StyleVisualData()
-    : hasClip(false), textDecoration(TDNONE), colspan( 1 ), counter_increment( 0 ), counter_reset( 0 ),
+      : hasClip(false), 
+      textDecoration(RenderStyle::initialTextDecoration()), 
+      colspan( 1 ), counter_increment( 0 ), counter_reset( 0 ),
       palette( QApplication::palette() )
 {
 }
@@ -107,7 +103,7 @@ StyleVisualData::StyleVisualData(const StyleVisualData& o )
 
 
 StyleBackgroundData::StyleBackgroundData()
-    : image( 0 )
+    : image( RenderStyle::initialBackgroundImage() )
 {
 }
 
@@ -131,12 +127,11 @@ bool StyleBackgroundData::operator==(const StyleBackgroundData& o) const
 
 StyleMarqueeData::StyleMarqueeData()
 {
-    increment.type = Fixed;
-    increment.value = 6; // 6 pixels is the WinIE default.
-    speed = 85; // 85msec is the WinIE default.
-    direction = MAUTO; // Direction is auto-determined by overflow by default.
-    behavior = MSCROLL; // Scrolling marquee is the default.
-    loops = -1; // Loop forever by default. Matches WinIE.
+    increment = RenderStyle::initialMarqueeIncrement();
+    speed = RenderStyle::initialMarqueeSpeed();
+    direction = RenderStyle::initialMarqueeDirection();
+    behavior = RenderStyle::initialMarqueeBehavior();
+    loops = RenderStyle::initialMarqueeLoopCount();
 }
 
 StyleMarqueeData::StyleMarqueeData(const StyleMarqueeData& o)
@@ -153,13 +148,13 @@ bool StyleMarqueeData::operator==(const StyleMarqueeData& o) const
 StyleFlexibleBoxData::StyleFlexibleBoxData()
 : Shared<StyleFlexibleBoxData>()
 {
-    flex = 0.0f;
-    flex_group = 1;
-    ordinal_group = 1;
-    align = BSTRETCH;
-    pack = BSTART;
-    orient = HORIZONTAL;
-    lines = SINGLE;
+    flex = RenderStyle::initialBoxFlex();
+    flex_group = RenderStyle::initialBoxFlexGroup();
+    ordinal_group = RenderStyle::initialBoxOrdinalGroup();
+    align = RenderStyle::initialBoxAlign();
+    pack = RenderStyle::initialBoxPack();
+    orient = RenderStyle::initialBoxOrient();
+    lines = RenderStyle::initialBoxLines();
     flexed_height = -1;
 }
 
@@ -185,7 +180,7 @@ bool StyleFlexibleBoxData::operator==(const StyleFlexibleBoxData& o) const
 }
 
 StyleCSS3NonInheritedData::StyleCSS3NonInheritedData()
-:Shared<StyleCSS3NonInheritedData>(), opacity(1.0f)
+:Shared<StyleCSS3NonInheritedData>(), opacity(RenderStyle::initialOpacity())
 {
 }
 
@@ -226,10 +221,13 @@ bool StyleCSS3InheritedData::shadowDataEquivalent(const StyleCSS3InheritedData&
 }
 
 StyleInheritedData::StyleInheritedData()
-    : indent( Fixed ), line_height( -100, Percent ), style_image( 0 ),
-      cursor_image( 0 ), font(), color( Qt::black ), 
-      horizontal_border_spacing( 0 ), vertical_border_spacing( 0 ), widows( 2 ), orphans( 2 ),
-      page_break_inside(PBAUTO)
+    : indent( RenderStyle::initialTextIndent() ), line_height( RenderStyle::initialLineHeight() ), 
+      style_image( RenderStyle::initialListStyleImage() ),
+      cursor_image( 0 ), font(), color( RenderStyle::initialColor() ), 
+      horizontal_border_spacing( RenderStyle::initialHorizontalBorderSpacing() ), 
+      vertical_border_spacing( RenderStyle::initialVerticalBorderSpacing() ),
+      widows( RenderStyle::initialWidows() ), orphans( RenderStyle::initialOrphans() ),
+      page_break_inside( RenderStyle::initialPageBreak() )
 {
 }
 
@@ -532,7 +530,6 @@ RenderStyle::Diff RenderStyle::diff( const RenderStyle *other ) const
         !(inherited_flags._text_transform == other->inherited_flags._text_transform) ||
         !(inherited_flags._direction == other->inherited_flags._direction) ||
         !(inherited_flags._white_space == other->inherited_flags._white_space) ||
-        !(inherited_flags._font_variant == other->inherited_flags._font_variant) ||
         !(noninherited_flags._clear == other->noninherited_flags._clear)
        )
        return Layout;
@@ -576,6 +573,7 @@ RenderStyle::Diff RenderStyle::diff( const RenderStyle *other ) const
         !(noninherited_flags._bg_repeat == other->noninherited_flags._bg_repeat) ||
         !(noninherited_flags._bg_attachment == other->noninherited_flags._bg_attachment) ||
         !(inherited_flags._text_decorations == other->inherited_flags._text_decorations) ||
+        !(inherited_flags._should_correct_text_color == other->inherited_flags._should_correct_text_color) ||
         !(surround->border == other->surround->border) ||
         *background.get() != *other->background.get() ||
         !(visual->clip == other->visual->clip) ||
index 88bc98a..1409c41 100644 (file)
@@ -200,7 +200,7 @@ public:
     BorderValue()
     {
        width = 3; // medium is default value
-       style = BNONE;
+        style = BNONE;
     }
     QColor color;
     unsigned short width : 12;
@@ -241,7 +241,7 @@ struct CollapsedBorderValue
     CollapsedBorderValue() :border(0), precedence(BOFF) {}
     CollapsedBorderValue(const BorderValue* b, EBorderPrecedence p) :border(b), precedence(p) {}
     
-    int width() const { return border ? border->width : 0; }
+    int width() const { return border && border->nonZero() ? border->width : 0; }
     EBorderStyle style() const { return border ? border->style : BHIDDEN; }
     bool exists() const { return border; }
     QColor color() const { return border ? border->color : QColor(); }
@@ -620,10 +620,6 @@ enum ECursor {
     CURSOR_S_RESIZE, CURSOR_W_RESIZE, CURSOR_TEXT, CURSOR_WAIT, CURSOR_HELP
 };
 
-enum EFontVariant {
-    FVNORMAL, SMALL_CAPS
-};
-
 enum ContentType {
     CONTENT_NONE, CONTENT_OBJECT, CONTENT_TEXT, CONTENT_COUNTER
 };
@@ -688,11 +684,12 @@ protected:
                    (_direction == other._direction) &&
                    (_border_collapse == other._border_collapse) &&
                    (_white_space == other._white_space) &&
-                   (_font_variant == other._font_variant) &&
                    (_box_direction == other._box_direction) &&
                    (_visuallyOrdered == other._visuallyOrdered) &&
-                   (_htmlHacks == other._htmlHacks);
+                   (_htmlHacks == other._htmlHacks) &&
+                   (_should_correct_text_color == other._should_correct_text_color);
        }
+        
        bool operator!=( const InheritedFlags &other ) const {
             return !(*this == other);
        }
@@ -709,8 +706,7 @@ protected:
        EDirection _direction : 1;
        bool _border_collapse : 1 ;
        EWhiteSpace _white_space : 2;
-       EFontVariant _font_variant : 1;
-        EBoxDirection _box_direction : 1; // CSS3 box_direction property (flexible box layout module)
+       EBoxDirection _box_direction : 1; // CSS3 box_direction property (flexible box layout module)
               // non CSS2 inherited
               bool _visuallyOrdered : 1;
               bool _htmlHacks :1;
@@ -791,41 +787,40 @@ protected:
 protected:
     void setBitDefaults()
     {
-       inherited_flags._empty_cells = SHOW;
-       inherited_flags._caption_side = CAPTOP;
-       inherited_flags._list_style_type = DISC;
-       inherited_flags._list_style_position = OUTSIDE;
-       inherited_flags._visibility = VISIBLE;
-       inherited_flags._text_align = TAAUTO;
-       inherited_flags._text_transform = TTNONE;
-       inherited_flags._text_decorations = TDNONE;
-       inherited_flags._cursor_style = CURSOR_AUTO;
-       inherited_flags._direction = LTR;
-       inherited_flags._border_collapse = false;
-       inherited_flags._white_space = NORMAL;
-       inherited_flags._font_variant = FVNORMAL;
+       inherited_flags._empty_cells = initialEmptyCells();
+       inherited_flags._caption_side = initialCaptionSide();
+       inherited_flags._list_style_type = initialListStyleType();
+       inherited_flags._list_style_position = initialListStylePosition();
+       inherited_flags._visibility = initialVisibility();
+       inherited_flags._text_align = initialTextAlign();
+       inherited_flags._text_transform = initialTextTransform();
+       inherited_flags._text_decorations = initialTextDecoration();
+       inherited_flags._cursor_style = initialCursor();
+       inherited_flags._direction = initialDirection();
+       inherited_flags._border_collapse = initialBorderCollapse();
+       inherited_flags._white_space = initialWhiteSpace();
        inherited_flags._visuallyOrdered = false;
        inherited_flags._htmlHacks=false;
-        inherited_flags._box_direction = BNORMAL;
+        inherited_flags._box_direction = initialBoxDirection();
         inherited_flags._should_correct_text_color = false;
-
-       noninherited_flags._effectiveDisplay = noninherited_flags._originalDisplay = INLINE;
-       noninherited_flags._bg_repeat = REPEAT;
-       noninherited_flags._bg_attachment = true;
-       noninherited_flags._overflow = OVISIBLE;
-       noninherited_flags._vertical_align = BASELINE;
-       noninherited_flags._clear = CNONE;
-       noninherited_flags._position = STATIC;
-       noninherited_flags._floating = FNONE;
-       noninherited_flags._table_layout = TAUTO;
-        noninherited_flags._page_break_before = PBAUTO;
-        noninherited_flags._page_break_after = PBAUTO;
-       noninherited_flags._flowAroundFloats=false;
+        
+       noninherited_flags._effectiveDisplay = noninherited_flags._originalDisplay = initialDisplay();
+       noninherited_flags._bg_repeat = initialBackgroundRepeat();
+       noninherited_flags._bg_attachment = initialBackgroundAttachment();
+       noninherited_flags._overflow = initialOverflow();
+       noninherited_flags._vertical_align = initialVerticalAlign();
+       noninherited_flags._clear = initialClear();
+       noninherited_flags._position = initialPosition();
+       noninherited_flags._floating = initialFloating();
+       noninherited_flags._table_layout = initialTableLayout();
+        noninherited_flags._page_break_before = initialPageBreak();
+        noninherited_flags._page_break_after = initialPageBreak();
+       noninherited_flags._flowAroundFloats = initialFlowAroundFloats();
        noninherited_flags._styleType = NOPSEUDO;
         noninherited_flags._affectedByHover = false;
         noninherited_flags._affectedByActive = false;
         noninherited_flags._pseudoBits = 0;
-       noninherited_flags._unicodeBidi = UBNormal;
+       noninherited_flags._unicodeBidi = initialUnicodeBidi();
     }
 
 public:
@@ -889,7 +884,7 @@ public:
     const BorderValue& borderRight() const { return surround->border.right; }
     const BorderValue& borderTop() const { return surround->border.top; }
     const BorderValue& borderBottom() const { return surround->border.bottom; }
-    
+
     unsigned short  borderLeftWidth() const
     { if( surround->border.left.style == BNONE) return 0; return surround->border.left.width; }
     EBorderStyle    borderLeftStyle() const { return surround->border.left.style; }
@@ -989,8 +984,7 @@ public:
     Length paddingRight() const {  return surround->padding.right; }
 
     ECursor cursor() const { return inherited_flags._cursor_style; }
-    EFontVariant fontVariant() { return inherited_flags._font_variant; }
-
+    
     CachedImage *cursorImage() const { return inherited->cursor_image; }
 
     short widows() const { return inherited->widows; }
@@ -1041,6 +1035,12 @@ public:
     void setMinHeight(Length v) { SET_VAR(box,min_height,v) }
     void setMaxHeight(Length v) { SET_VAR(box,max_height,v) }
 
+    void resetBorderTop() { SET_VAR(surround, border.top, BorderValue()) }
+    void resetBorderRight() { SET_VAR(surround, border.right, BorderValue()) }
+    void resetBorderBottom() { SET_VAR(surround, border.bottom, BorderValue()) }
+    void resetBorderLeft() { SET_VAR(surround, border.left, BorderValue()) }
+    void resetOutline() { SET_VAR(background, outline, OutlineValue()) }
+    
     void setBorderLeftWidth(unsigned short v)   {  SET_VAR(surround,border.left.width,v) }
     void setBorderLeftStyle(EBorderStyle v)     {  SET_VAR(surround,border.left.style,v) }
     void setBorderLeftColor(const QColor & v)   {  SET_VAR(surround,border.left.color,v) }
@@ -1062,7 +1062,7 @@ public:
     void setVerticalAlign(EVerticalAlign v) { noninherited_flags._vertical_align = v; }
     void setVerticalAlignLength(Length l) { SET_VAR(box, vertical_align, l ) }
 
-    void setHasClip() { SET_VAR(visual,hasClip,true) }
+    void setHasClip(bool b = true) { SET_VAR(visual,hasClip,b) }
     void setClipLeft(Length v) { SET_VAR(visual,clip.left,v) }
     void setClipRight(Length v) { SET_VAR(visual,clip.right,v) }
     void setClipTop(Length v) { SET_VAR(visual,clip.top,v) }
@@ -1120,18 +1120,19 @@ public:
     void setListStyleImage(CachedImage *v) {  SET_VAR(inherited,style_image,v)}
     void setListStylePosition(EListStylePosition v) { inherited_flags._list_style_position = v; }
 
+    void resetMargin() { SET_VAR(surround, margin, LengthBox(Fixed)) }
     void setMarginTop(Length v)     {  SET_VAR(surround,margin.top,v) }
     void setMarginBottom(Length v)  {  SET_VAR(surround,margin.bottom,v) }
     void setMarginLeft(Length v)    {  SET_VAR(surround,margin.left,v) }
     void setMarginRight(Length v)   {  SET_VAR(surround,margin.right,v) }
 
+    void resetPadding() { SET_VAR(surround, padding, LengthBox(Variable)) }
     void setPaddingTop(Length v)    {  SET_VAR(surround,padding.top,v) }
     void setPaddingBottom(Length v) {  SET_VAR(surround,padding.bottom,v) }
     void setPaddingLeft(Length v)   {  SET_VAR(surround,padding.left,v) }
     void setPaddingRight(Length v)  {  SET_VAR(surround,padding.right,v) }
 
     void setCursor( ECursor c ) { inherited_flags._cursor_style = c; }
-    void setFontVariant( EFontVariant f ) { inherited_flags._font_variant = f; }
     void setCursorImage( CachedImage *v ) { SET_VAR(inherited,cursor_image,v) }
 
     bool shouldCorrectTextColor() const { return inherited_flags._should_correct_text_color; }
@@ -1199,6 +1200,67 @@ public:
         return originalDisplay() == INLINE || originalDisplay() == INLINE_BLOCK ||
                originalDisplay() == INLINE_BOX || originalDisplay() == INLINE_TABLE;
     }
+    
+    // Initial values for all the properties
+    static bool initialBackgroundAttachment() { return true; }
+    static EBackgroundRepeat initialBackgroundRepeat() { return REPEAT; }
+    static bool initialBorderCollapse() { return false; }
+    static EBorderStyle initialBorderStyle() { return BNONE; }
+    static ECaptionSide initialCaptionSide() { return CAPTOP; }
+    static EClear initialClear() { return CNONE; }
+    static EDirection initialDirection() { return LTR; }
+    static EDisplay initialDisplay() { return INLINE; }
+    static EEmptyCell initialEmptyCells() { return SHOW; }
+    static EFloat initialFloating() { return FNONE; }
+    static EListStylePosition initialListStylePosition() { return OUTSIDE; }
+    static EListStyleType initialListStyleType() { return DISC; }
+    static EOverflow initialOverflow() { return OVISIBLE; }
+    static EPageBreak initialPageBreak() { return PBAUTO; }
+    static EPosition initialPosition() { return STATIC; }
+    static ETableLayout initialTableLayout() { return TAUTO; }
+    static EUnicodeBidi initialUnicodeBidi() { return UBNormal; }
+    static ETextTransform initialTextTransform() { return TTNONE; }
+    static EVisibility initialVisibility() { return VISIBLE; }
+    static EWhiteSpace initialWhiteSpace() { return NORMAL; }
+    static Length initialBackgroundXPosition() { return Length(); }
+    static Length initialBackgroundYPosition() { return Length(); }
+    static short initialHorizontalBorderSpacing() { return 0; }
+    static short initialVerticalBorderSpacing() { return 0; }
+    static ECursor initialCursor() { return CURSOR_AUTO; }
+    static QColor initialColor() { return Qt::black; }
+    static CachedImage* initialBackgroundImage() { return 0; }
+    static CachedImage* initialListStyleImage() { return 0; }
+    static unsigned short initialBorderWidth() { return 3; }
+    static int initialLetterWordSpacing() { return 0; }
+    static Length initialSize() { return Length(); }
+    static Length initialMinSize() { return Length(0, Fixed); }
+    static Length initialMaxSize() { return Length(UNDEFINED, Fixed); }
+    static Length initialOffset() { return Length(); }
+    static Length initialMargin() { return Length(Fixed); }
+    static Length initialPadding() { return Length(Variable); }
+    static Length initialTextIndent() { return Length(Fixed); }
+    static EVerticalAlign initialVerticalAlign() { return BASELINE; }
+    static int initialWidows() { return 2; }
+    static int initialOrphans() { return 2; }
+    static Length initialLineHeight() { return Length(-100, Percent); }
+    static ETextAlign initialTextAlign() { return TAAUTO; }
+    static ETextDecoration initialTextDecoration() { return TDNONE; }
+    static bool initialFlowAroundFloats() { return false; }
+    static int initialOutlineOffset() { return 0; }
+    static float initialOpacity() { return 1.0f; }
+    static EBoxAlignment initialBoxAlign() { return BSTRETCH; }
+    static EBoxDirection initialBoxDirection() { return BNORMAL; }
+    static EBoxLines initialBoxLines() { return SINGLE; }
+    static EBoxOrient initialBoxOrient() { return HORIZONTAL; }
+    static EBoxAlignment initialBoxPack() { return BSTART; }
+    static float initialBoxFlex() { return 0.0f; }
+    static int initialBoxFlexGroup() { return 1; }
+    static int initialBoxOrdinalGroup() { return 1; }
+    static int initialMarqueeLoopCount() { return -1; }
+    static int initialMarqueeSpeed() { return 85; }
+    static Length initialMarqueeIncrement() { return Length(6, Fixed); }
+    static EMarqueeBehavior initialMarqueeBehavior() { return MSCROLL; }
+    static EMarqueeDirection initialMarqueeDirection() { return MAUTO; }
 };