Add support for box-flex-group-transition (whew!), a new property that is going...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Jun 2004 00:39:23 +0000 (00:39 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 4 Jun 2004 00:39:23 +0000 (00:39 +0000)
complicated flexing layouts in HTML.

This is Stage 1 - wire up the CSS property and make it get parsed into front-end data.  Nobody actually looks
at this data yet.

        Reviewed by darin

        * khtml/css/css_valueimpl.cpp:
        (CSSInheritedValueImpl::cssText):
        (ShadowValueImpl::cssText):
        (length):
        (FlexGroupTransitionValueImpl::~FlexGroupTransitionValueImpl):
        (FlexGroupTransitionValueImpl::cssText):
        * khtml/css/css_valueimpl.h:
        (DOM::FlexGroupTransitionValueImpl::cssValueType):
        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        (CSSParser::parseShadow):
        (FlexGroupTransitionParseContext::length):
        (FlexGroupTransitionParseContext::~FlexGroupTransitionParseContext):
        (FlexGroupTransitionParseContext::failed):
        (FlexGroupTransitionParseContext::allowGroup):
        (FlexGroupTransitionParseContext::commitGroup):
        (FlexGroupTransitionParseContext::commitSlash):
        (FlexGroupTransitionParseContext::commitLength):
        (FlexGroupTransitionParseContext::commitValue):
        (CSSParser::parseFlexGroupTransition):
        * khtml/css/cssparser.h:
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/rendering/render_style.cpp:
        (StyleFlexibleBoxData::StyleFlexibleBoxData):
        (StyleFlexibleBoxData::operator==):
        (StyleFlexibleBoxData::transitionDataEquivalent):
        (StyleCSS3InheritedData::operator==):
        (StyleCSS3InheritedData::shadowDataEquivalent):
        (ShadowData::operator==):
        (RenderStyle::setBoxFlexGroupTransition):
        (length):
        (FlexGroupTransitionData::operator==):
        * khtml/rendering/render_style.h:
        (khtml::FlexGroupTransitionData::next):
        (khtml::FlexGroupTransitionData::~FlexGroupTransitionData):
        (khtml::FlexGroupTransitionData::operator!=):
        (khtml::StyleFlexibleBoxData::~StyleFlexibleBoxData):
        (khtml::RenderStyle::boxFlexGroupTransition):

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

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/cssparser.h
WebCore/khtml/css/cssproperties.c
WebCore/khtml/css/cssproperties.h
WebCore/khtml/css/cssproperties.in
WebCore/khtml/rendering/render_style.cpp
WebCore/khtml/rendering/render_style.h

index 8ad6698986cefe4149681044a9ece3ca13796d79..bfe3f5e2c7666983dc3286fa88480beb627b3c23 100644 (file)
@@ -1,3 +1,56 @@
+2004-06-03  David Hyatt  <hyatt@apple.com>
+
+       Add support for box-flex-group-transition (whew!), a new property that is going to enable some incredibly
+       complicated flexing layouts in HTML.
+
+       This is Stage 1 - wire up the CSS property and make it get parsed into front-end data.  Nobody actually looks
+       at this data yet.
+       
+        Reviewed by darin
+
+        * khtml/css/css_valueimpl.cpp:
+        (CSSInheritedValueImpl::cssText):
+        (ShadowValueImpl::cssText):
+        (length):
+        (FlexGroupTransitionValueImpl::~FlexGroupTransitionValueImpl):
+        (FlexGroupTransitionValueImpl::cssText):
+        * khtml/css/css_valueimpl.h:
+        (DOM::FlexGroupTransitionValueImpl::cssValueType):
+        * khtml/css/cssparser.cpp:
+        (CSSParser::parseValue):
+        (CSSParser::parseShadow):
+        (FlexGroupTransitionParseContext::length):
+        (FlexGroupTransitionParseContext::~FlexGroupTransitionParseContext):
+        (FlexGroupTransitionParseContext::failed):
+        (FlexGroupTransitionParseContext::allowGroup):
+        (FlexGroupTransitionParseContext::commitGroup):
+        (FlexGroupTransitionParseContext::commitSlash):
+        (FlexGroupTransitionParseContext::commitLength):
+        (FlexGroupTransitionParseContext::commitValue):
+        (CSSParser::parseFlexGroupTransition):
+        * khtml/css/cssparser.h:
+        * khtml/css/cssproperties.c:
+        (hash_prop):
+        (findProp):
+        * khtml/css/cssproperties.h:
+        * khtml/css/cssproperties.in:
+        * khtml/rendering/render_style.cpp:
+        (StyleFlexibleBoxData::StyleFlexibleBoxData):
+        (StyleFlexibleBoxData::operator==):
+        (StyleFlexibleBoxData::transitionDataEquivalent):
+        (StyleCSS3InheritedData::operator==):
+        (StyleCSS3InheritedData::shadowDataEquivalent):
+        (ShadowData::operator==):
+        (RenderStyle::setBoxFlexGroupTransition):
+        (length):
+        (FlexGroupTransitionData::operator==):
+        * khtml/rendering/render_style.h:
+        (khtml::FlexGroupTransitionData::next):
+        (khtml::FlexGroupTransitionData::~FlexGroupTransitionData):
+        (khtml::FlexGroupTransitionData::operator!=):
+        (khtml::StyleFlexibleBoxData::~StyleFlexibleBoxData):
+        (khtml::RenderStyle::boxFlexGroupTransition):
+
 2004-06-03  Richard Williamson   <rjw@apple.com>
 
        Add extra sanity check to Image parameter of drawImage...
index 0f71d45928500942c6deb5da42500373b42cceda..695443073aaa7da161f5b54f5b12c6165a491a0d 100644 (file)
@@ -425,7 +425,7 @@ unsigned short CSSInheritedValueImpl::cssValueType() const
 
 DOM::DOMString CSSInheritedValueImpl::cssText() const
 {
-    return DOMString("inherited");
+    return DOMString("inherit");
 }
 
 unsigned short CSSInitialValueImpl::cssValueType() const
@@ -1031,6 +1031,32 @@ DOMString ShadowValueImpl::cssText() const
     return text;
 }
 
+// Used for box-flex-transition-group
+FlexGroupTransitionValueImpl::FlexGroupTransitionValueImpl(unsigned int _group1, 
+                                                           unsigned int _group2,
+                                                           CSSPrimitiveValueImpl* _length)
+:group1(_group1), group2(_group2), length(_length)
+{}
+
+FlexGroupTransitionValueImpl::~FlexGroupTransitionValueImpl()
+{
+    delete length;
+}
+
+DOMString FlexGroupTransitionValueImpl::cssText() const
+{
+    DOMString text(QString::number(group1));
+    if (group2) {
+        text += "/";
+        text += QString::number(group2);
+    }
+    if (length) {
+        text += " ";
+        text += length->cssText();
+    }
+    return text;
+}
+
 DOMString CSSProperty::cssText() const
 {
     return getPropertyName(m_id) + DOMString(": ") + m_value->cssText() + (m_bImportant ? DOMString(" !important") : DOMString()) + DOMString("; ");
index 37e40160fff5d20d17fe888c8a170bbff41d76df..6b9453e66fdec52f3027992a38db1127255fcc00 100644 (file)
@@ -351,7 +351,25 @@ public:
     CSSPrimitiveValueImpl* blur;
     CSSPrimitiveValueImpl* color;
 };
+
+// Used by box-flex-group-transition
+class FlexGroupTransitionValueImpl : public CSSValueImpl
+{
+public:
+    FlexGroupTransitionValueImpl(unsigned int _group1, 
+                                 unsigned int _group2,
+                                 CSSPrimitiveValueImpl* _length);
+    virtual ~FlexGroupTransitionValueImpl();
+    
+    virtual unsigned short cssValueType() const { return CSSValue::CSS_CUSTOM; }
     
+    virtual DOM::DOMString cssText() const;
+    
+    unsigned int group1;
+    unsigned int group2;
+    CSSPrimitiveValueImpl* length;
+};
+
 // ------------------------------------------------------------------------------
 
 // another helper class
index 76efa6a1c3c4277a4126315c7eedb07caf64522d..08967ae84c0f1dfa6f6133b84c9971204bb638cf 100644 (file)
@@ -1055,6 +1055,8 @@ bool CSSParser::parseValue( int propId, bool important )
     case CSS_PROP__KHTML_BOX_ORDINAL_GROUP:
         valid_primitive = validUnit(value, FInteger|FNonNeg, true);
         break;
+    case CSS_PROP__KHTML_BOX_FLEX_GROUP_TRANSITION:
+        return parseFlexGroupTransition(propId, important);
     case CSS_PROP__KHTML_MARQUEE: {
         const int properties[5] = { CSS_PROP__KHTML_MARQUEE_DIRECTION, CSS_PROP__KHTML_MARQUEE_INCREMENT,
                                     CSS_PROP__KHTML_MARQUEE_REPETITION,
@@ -1857,7 +1859,6 @@ struct ShadowParseContext {
     }
     
     CSSValueListImpl* values;
-    bool succeeded;
     CSSPrimitiveValueImpl* x;
     CSSPrimitiveValueImpl* y;
     CSSPrimitiveValueImpl* blur;
@@ -1870,7 +1871,7 @@ struct ShadowParseContext {
     bool allowBreak;
 };
 
-bool CSSParser::parseShadow( int propId, bool important )
+bool CSSParser::parseShadow(int propId, bool important)
 {
     ShadowParseContext context;
     Value* val;
@@ -1931,6 +1932,133 @@ bool CSSParser::parseShadow( int propId, bool important )
     return context.failed();
 }
 
+struct FlexGroupTransitionParseContext {
+    FlexGroupTransitionParseContext()
+    :values(0), allowGroup1(true), allowSlash(false), allowGroup2(false), allowLength(false),
+     allowBreak(true), group1(0), group2(0), length(0)
+    {}
+    
+    ~FlexGroupTransitionParseContext() {
+        if (!allowBreak) {
+            delete values;
+            delete length;
+        }        
+    }
+
+    bool failed() { return allowBreak = false; }
+    
+    bool allowGroup() const {
+        return allowGroup1 || allowGroup2;
+    }
+    
+    void commitGroup(Value* val) {
+        if (allowGroup1) {
+            allowGroup1 = allowGroup2 = allowBreak = false;
+            allowSlash = allowLength = true;
+            group1 = (unsigned int)val->fValue;
+        }
+        else if (allowGroup2) {
+            allowGroup1 = allowGroup2 = allowBreak = allowSlash = false;
+            allowLength = true;
+            group2 = (unsigned int)val->fValue;
+        }
+    }
+
+    void commitSlash() {
+        allowSlash = allowLength = allowGroup1 = allowBreak = false;
+        allowGroup2 = true;
+    }
+    
+    void commitLength(Value* v) {
+        length = new CSSPrimitiveValueImpl(v->fValue,
+                                           (CSSPrimitiveValue::UnitTypes)v->unit);
+        allowLength = allowGroup1 = allowGroup2 = allowSlash = false;
+        allowBreak = true;
+    }
+
+    void commitValue() {
+        // Handle the ,, case gracefully by doing nothing.
+        if ((group1 || group2) && length) {
+            if (!values)
+                values = new CSSValueListImpl();
+            
+            // Construct the current shadow value and add it to the list.
+            values->append(new FlexGroupTransitionValueImpl(group1, group2, length));
+        }
+        
+        // Now reset for the next shadow value.
+        group1 = group2 = 0;
+        length = 0;
+        allowGroup1 = allowBreak = true;
+        allowSlash = allowGroup2 = allowLength = false;
+    }
+    
+    CSSValueListImpl* values;
+    bool allowGroup1;
+    bool allowSlash;
+    bool allowGroup2;
+    bool allowLength;
+    bool allowBreak;
+    unsigned int group1;
+    unsigned int group2;
+    CSSPrimitiveValueImpl* length;
+};
+
+bool CSSParser::parseFlexGroupTransition(int propId, bool important)
+{
+    FlexGroupTransitionParseContext context;
+    Value* val;
+    while ((val = valueList->current())) {
+        // Check for a comma break first.
+        if (val->unit == Value::Operator) {
+            if (val->iValue == '/') {
+                if (context.allowSlash)
+                    context.commitSlash();
+                else
+                    return context.failed();
+            }    
+            else if (val->iValue != ',' || !context.allowBreak)
+                // Other operators aren't legal or we aren't done with the current flex group transitiion
+                // value.  Treat as invalid.
+                return context.failed();
+            
+            // The value is good.  Commit it.
+            context.commitValue();
+        }
+        // Check to see if we're a non-negative number.
+        else if (validUnit(val, FInteger|FNonNeg, true)) {
+            if (context.allowGroup())
+                context.commitGroup(val);
+            else
+                return context.failed();
+        }
+        // Check to see if we're a length.
+        else if (validUnit(val, FLength, true)) {
+            // We required a length and didn't get one. Invalid.
+            if (!context.allowLength)
+                return context.failed();
+            
+            // A length is allowed here.  Construct the value and add it.
+            context.commitLength(val);
+        }
+        else 
+            return context.failed();
+        
+        valueList->next();
+    }
+    
+    if (context.allowBreak) {
+        context.commitValue();
+        if (context.values->length()) {
+            addProperty(propId, context.values, important);
+            valueList->next();
+            return true;
+        }
+    }
+    
+    return context.failed();    
+}
+
 static inline int yyerror( const char *str ) {
 #ifdef CSS_DEBUG
     kdDebug( 6080 ) << "CSS parse error " << str << endl;
index e2b4b35cecaa7fd6ed958d206577d3b3b94d6b1d..56a5146944f5fae08dc372224027307bc418c39f 100644 (file)
@@ -136,6 +136,7 @@ namespace DOM {
 
         // CSS3 Parsing Routines (for properties specific to CSS3)
         bool parseShadow(int propId, bool important);
+        bool parseFlexGroupTransition(int propId, bool important);
         
        int yyparse( void );
     public:
index 315550f5247eeaa68475c9f1d995054fe6276d52..b9f98932333f3e73c1dc664b5a833a712bac7806 100644 (file)
@@ -7,7 +7,7 @@ struct props {
     const char *name;
     int id;
 };
-/* maximum key range = 1432, duplicates = 0 */
+/* maximum key range = 917, duplicates = 0 */
 
 #ifdef __GNUC__
 __inline
@@ -21,32 +21,32 @@ hash_prop (register const char *str, register unsigned int len)
 {
   static const unsigned short asso_values[] =
     {
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437,    0, 1437, 1437, 1437, 1437,
-      1437,    0, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437,   15,   10,    0,
-         0,    0,   15,  170,    0,    0,    0,   10,    0,   85,
-       390,    0,   60,   25,    0,   65,    0,   10,   10,  205,
-        80,  295,   10, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437, 1437,
-      1437, 1437, 1437, 1437, 1437, 1437
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922,   0, 922, 922, 922, 922,
+      922,   0, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922,  65,  55,   0,
+        0,   0,  90, 100,   0,   0,   0,  15,   0,  35,
+        5,   0,  50,  45,   0,  75,   0, 105,   0, 420,
+       60, 160,   0, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922, 922, 922, 922, 922,
+      922, 922, 922, 922, 922, 922
     };
   register int hval = len;
 
@@ -130,283 +130,232 @@ findProp (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 134,
+      TOTAL_KEYWORDS = 135,
       MIN_WORD_LENGTH = 3,
       MAX_WORD_LENGTH = 32,
       MIN_HASH_VALUE = 5,
-      MAX_HASH_VALUE = 1436
+      MAX_HASH_VALUE = 921
     };
 
   static const struct props wordlist_prop[] =
     {
       {"color", CSS_PROP_COLOR},
-      {"border", CSS_PROP_BORDER},
-      {"left", CSS_PROP_LEFT},
-      {"clear", CSS_PROP_CLEAR},
-      {"border-color", CSS_PROP_BORDER_COLOR},
-      {"float", CSS_PROP_FLOAT},
-      {"border-left", CSS_PROP_BORDER_LEFT},
-      {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR},
+      {"direction", CSS_PROP_DIRECTION},
+      {"content", CSS_PROP_CONTENT},
       {"top", CSS_PROP_TOP},
       {"clip", CSS_PROP_CLIP},
+      {"border", CSS_PROP_BORDER},
+      {"border-color", CSS_PROP_BORDER_COLOR},
+      {"clear", CSS_PROP_CLEAR},
+      {"z-index", CSS_PROP_Z_INDEX},
       {"size", CSS_PROP_SIZE},
+      {"text-indent", CSS_PROP_TEXT_INDENT},
+      {"left", CSS_PROP_LEFT},
+      {"bottom", CSS_PROP_BOTTOM},
+      {"font", CSS_PROP_FONT},
+      {"right", CSS_PROP_RIGHT},
+      {"height", CSS_PROP_HEIGHT},
       {"border-top", CSS_PROP_BORDER_TOP},
-      {"cursor", CSS_PROP_CURSOR},
+      {"line-height", CSS_PROP_LINE_HEIGHT},
+      {"outline", CSS_PROP_OUTLINE},
       {"border-top-color", CSS_PROP_BORDER_TOP_COLOR},
-      {"bottom", CSS_PROP_BOTTOM},
-      {"quotes", CSS_PROP_QUOTES},
+      {"outline-color", CSS_PROP_OUTLINE_COLOR},
+      {"position", CSS_PROP_POSITION},
+      {"text-decoration", CSS_PROP_TEXT_DECORATION},
+      {"min-height", CSS_PROP_MIN_HEIGHT},
+      {"text-decoration-color", CSS_PROP_TEXT_DECORATION_COLOR},
+      {"border-left", CSS_PROP_BORDER_LEFT},
       {"border-bottom", CSS_PROP_BORDER_BOTTOM},
+      {"float", CSS_PROP_FLOAT},
+      {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR},
       {"border-bottom-color", CSS_PROP_BORDER_BOTTOM_COLOR},
-      {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR},
-      {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR},
-      {"border-collapse", CSS_PROP_BORDER_COLLAPSE},
-      {"right", CSS_PROP_RIGHT},
-      {"height", CSS_PROP_HEIGHT},
       {"border-right", CSS_PROP_BORDER_RIGHT},
+      {"counter-increment", CSS_PROP_COUNTER_INCREMENT},
       {"border-right-color", CSS_PROP_BORDER_RIGHT_COLOR},
-      {"width", CSS_PROP_WIDTH},
-      {"border-width", CSS_PROP_BORDER_WIDTH},
-      {"overflow", CSS_PROP_OVERFLOW},
-      {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE},
-      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
-      {"page", CSS_PROP_PAGE},
-      {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
-      {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR},
-      {"-khtml-box-pack", CSS_PROP__KHTML_BOX_PACK},
-      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
-      {"-khtml-box-flex", CSS_PROP__KHTML_BOX_FLEX},
-      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
-      {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
-      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
-      {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR},
-      {"white-space", CSS_PROP_WHITE_SPACE},
-      {"table-layout", CSS_PROP_TABLE_LAYOUT},
-      {"max-height", CSS_PROP_MAX_HEIGHT},
-      {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
-      {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
-      {"text-shadow", CSS_PROP_TEXT_SHADOW},
-      {"opacity", CSS_PROP_OPACITY},
-      {"border-style", CSS_PROP_BORDER_STYLE},
-      {"visibility", CSS_PROP_VISIBILITY},
-      {"max-width", CSS_PROP_MAX_WIDTH},
-      {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR},
-      {"direction", CSS_PROP_DIRECTION},
-      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
-      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
-      {"outline", CSS_PROP_OUTLINE},
-      {"font", CSS_PROP_FONT},
-      {"outline-color", CSS_PROP_OUTLINE_COLOR},
-      {"-khtml-flow-mode", CSS_PROP__KHTML_FLOW_MODE},
       {"unicode-bidi", CSS_PROP_UNICODE_BIDI},
-      {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
-      {"list-style", CSS_PROP_LIST_STYLE},
-      {"display", CSS_PROP_DISPLAY},
-      {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
-      {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
-      {"counter-reset", CSS_PROP_COUNTER_RESET},
-      {"widows", CSS_PROP_WIDOWS},
-      {"font-stretch", CSS_PROP_FONT_STRETCH},
-      {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
-      {"z-index", CSS_PROP_Z_INDEX},
       {"font-size", CSS_PROP_FONT_SIZE},
-      {"text-decoration", CSS_PROP_TEXT_DECORATION},
-      {"text-decoration-color", CSS_PROP_TEXT_DECORATION_COLOR},
-      {"outline-offset", CSS_PROP_OUTLINE_OFFSET},
-      {"empty-cells", CSS_PROP_EMPTY_CELLS},
-      {"position", CSS_PROP_POSITION},
-      {"orphans", CSS_PROP_ORPHANS},
-      {"-khtml-box-flex-group", CSS_PROP__KHTML_BOX_FLEX_GROUP},
-      {"caption-side", CSS_PROP_CAPTION_SIDE},
-      {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
-      {"line-height", CSS_PROP_LINE_HEIGHT},
-      {"-khtml-user-modify", CSS_PROP__KHTML_USER_MODIFY},
-      {"font-size-adjust", CSS_PROP_FONT_SIZE_ADJUST},
+      {"font-stretch", CSS_PROP_FONT_STRETCH},
+      {"cursor", CSS_PROP_CURSOR},
       {"-khtml-box-orient", CSS_PROP__KHTML_BOX_ORIENT},
       {"-khtml-box-direction", CSS_PROP__KHTML_BOX_DIRECTION},
-      {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
-      {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
-      {"background", CSS_PROP_BACKGROUND},
-      {"outline-width", CSS_PROP_OUTLINE_WIDTH},
-      {"background-color", CSS_PROP_BACKGROUND_COLOR},
+      {"counter-reset", CSS_PROP_COUNTER_RESET},
+      {"orphans", CSS_PROP_ORPHANS},
+      {"caption-side", CSS_PROP_CAPTION_SIDE},
+      {"margin", CSS_PROP_MARGIN},
+      {"page", CSS_PROP_PAGE},
       {"padding", CSS_PROP_PADDING},
-      {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
-      {"min-height", CSS_PROP_MIN_HEIGHT},
-      {"-khtml-box-lines", CSS_PROP__KHTML_BOX_LINES},
-      {"padding-left", CSS_PROP_PADDING_LEFT},
-      {"text-transform", CSS_PROP_TEXT_TRANSFORM},
+      {"-khtml-binding", CSS_PROP__KHTML_BINDING},
+      {"quotes", CSS_PROP_QUOTES},
       {"text-align", CSS_PROP_TEXT_ALIGN},
-      {"margin", CSS_PROP_MARGIN},
-      {"margin-left", CSS_PROP_MARGIN_LEFT},
-      {"min-width", CSS_PROP_MIN_WIDTH},
-      {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
-      {"-apple-line-clamp", CSS_PROP__APPLE_LINE_CLAMP},
-      {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION},
+      {"font-variant", CSS_PROP_FONT_VARIANT},
+      {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
+      {"border-collapse", CSS_PROP_BORDER_COLLAPSE},
+      {"-khtml-box-lines", CSS_PROP__KHTML_BOX_LINES},
+      {"margin-top", CSS_PROP_MARGIN_TOP},
+      {"max-height", CSS_PROP_MAX_HEIGHT},
       {"padding-top", CSS_PROP_PADDING_TOP},
-      {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
+      {"opacity", CSS_PROP_OPACITY},
+      {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR},
+      {"visibility", CSS_PROP_VISIBILITY},
+      {"border-style", CSS_PROP_BORDER_STYLE},
+      {"margin-left", CSS_PROP_MARGIN_LEFT},
+      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
       {"letter-spacing", CSS_PROP_LETTER_SPACING},
-      {"border-spacing", CSS_PROP_BORDER_SPACING},
-      {"margin-top", CSS_PROP_MARGIN_TOP},
+      {"-khtml-box-pack", CSS_PROP__KHTML_BOX_PACK},
+      {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE},
+      {"margin-right", CSS_PROP_MARGIN_RIGHT},
+      {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR},
+      {"list-style", CSS_PROP_LIST_STYLE},
+      {"padding-left", CSS_PROP_PADDING_LEFT},
+      {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
       {"padding-bottom", CSS_PROP_PADDING_BOTTOM},
-      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
-      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
-      {"outline-style", CSS_PROP_OUTLINE_STYLE},
+      {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
+      {"-khtml-box-flex", CSS_PROP__KHTML_BOX_FLEX},
+      {"empty-cells", CSS_PROP_EMPTY_CELLS},
+      {"padding-right", CSS_PROP_PADDING_RIGHT},
+      {"-apple-line-clamp", CSS_PROP__APPLE_LINE_CLAMP},
       {"font-style", CSS_PROP_FONT_STYLE},
+      {"text-transform", CSS_PROP_TEXT_TRANSFORM},
       {"-khtml-box-align", CSS_PROP__KHTML_BOX_ALIGN},
-      {"content", CSS_PROP_CONTENT},
-      {"font-weight", CSS_PROP_FONT_WEIGHT},
-      {"list-style-type", CSS_PROP_LIST_STYLE_TYPE},
-      {"padding-right", CSS_PROP_PADDING_RIGHT},
+      {"background", CSS_PROP_BACKGROUND},
+      {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
+      {"display", CSS_PROP_DISPLAY},
+      {"outline-style", CSS_PROP_OUTLINE_STYLE},
+      {"background-color", CSS_PROP_BACKGROUND_COLOR},
+      {"border-spacing", CSS_PROP_BORDER_SPACING},
+      {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
+      {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR},
+      {"outline-offset", CSS_PROP_OUTLINE_OFFSET},
+      {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION},
+      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
+      {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
+      {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
+      {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
+      {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
+      {"width", CSS_PROP_WIDTH},
+      {"font-size-adjust", CSS_PROP_FONT_SIZE_ADJUST},
+      {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
+      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
       {"font-family", CSS_PROP_FONT_FAMILY},
-      {"margin-right", CSS_PROP_MARGIN_RIGHT},
-      {"font-variant", CSS_PROP_FONT_VARIANT},
-      {"-khtml-box-ordinal-group", CSS_PROP__KHTML_BOX_ORDINAL_GROUP},
-      {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING},
-      {"text-indent", CSS_PROP_TEXT_INDENT},
-      {"background-image", CSS_PROP_BACKGROUND_IMAGE},
-      {"word-spacing", CSS_PROP_WORD_SPACING},
       {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
-      {"-khtml-binding", CSS_PROP__KHTML_BINDING},
-      {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
-      {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
+      {"table-layout", CSS_PROP_TABLE_LAYOUT},
+      {"min-width", CSS_PROP_MIN_WIDTH},
+      {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
+      {"border-width", CSS_PROP_BORDER_WIDTH},
       {"background-position", CSS_PROP_BACKGROUND_POSITION},
-      {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X},
+      {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING},
       {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING},
-      {"counter-increment", CSS_PROP_COUNTER_INCREMENT},
-      {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y}
+      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
+      {"-khtml-box-ordinal-group", CSS_PROP__KHTML_BOX_ORDINAL_GROUP},
+      {"overflow", CSS_PROP_OVERFLOW},
+      {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
+      {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
+      {"-khtml-user-modify", CSS_PROP__KHTML_USER_MODIFY},
+      {"list-style-type", CSS_PROP_LIST_STYLE_TYPE},
+      {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
+      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
+      {"outline-width", CSS_PROP_OUTLINE_WIDTH},
+      {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
+      {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X},
+      {"background-image", CSS_PROP_BACKGROUND_IMAGE},
+      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
+      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
+      {"max-width", CSS_PROP_MAX_WIDTH},
+      {"-khtml-box-flex-group", CSS_PROP__KHTML_BOX_FLEX_GROUP},
+      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
+      {"-khtml-flow-mode", CSS_PROP__KHTML_FLOW_MODE},
+      {"white-space", CSS_PROP_WHITE_SPACE},
+      {"font-weight", CSS_PROP_FONT_WEIGHT},
+      {"text-shadow", CSS_PROP_TEXT_SHADOW},
+      {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y},
+      {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR},
+      {"word-spacing", CSS_PROP_WORD_SPACING},
+      {"-khtml-box-flex-group-transition", CSS_PROP__KHTML_BOX_FLEX_GROUP_TRANSITION},
+      {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR},
+      {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
+      {"widows", CSS_PROP_WIDOWS}
     };
 
   static const short lookup[] =
     {
        -1,  -1,  -1,  -1,  -1,   0,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,   1,  -1,  -1,   2,
-        3,  -1,   4,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,   5,   6,  -1,  -1,  -1,
-       -1,  -1,   7,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,   8,   9,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  10,
-       11,  12,  -1,  -1,  -1,  -1,  13,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  14,  -1,  -1,  -1,  -1,  15,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  16,  -1,
-       -1,  -1,  -1,  -1,  17,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  18,  -1,  -1,  -1,
-       19,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  20,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  21,  22,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  23,  -1,  -1,  -1,  -1,  -1,  24,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       25,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  26,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  27,  -1,
-       -1,  -1,  -1,  -1,  28,  -1,  -1,  29,  -1,  30,
-       -1,  -1,  -1,  31,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  32,  -1,  33,  -1,  -1,  -1,  -1,
-       -1,  34,  -1,  -1,  -1,  35,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  36,  -1,  -1,  -1,  37,  -1,  -1,  38,
-       -1,  39,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  40,  41,  -1,  -1,
-       42,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  43,  -1,  -1,  -1,  44,  45,  46,  -1,  -1,
-       -1,  -1,  47,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       48,  -1,  -1,  -1,  49,  -1,  -1,  50,  -1,  51,
-       -1,  -1,  52,  53,  -1,  -1,  -1,  54,  -1,  55,
-       -1,  -1,  -1,  56,  -1,  -1,  57,  -1,  -1,  -1,
-       -1,  -1,  58,  -1,  -1,  -1,  59,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  60,  -1,  -1,  -1,  -1,
-       -1,  -1,  61,  -1,  -1,  -1,  62,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  63,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  64,  -1,
-       -1,  65,  66,  -1,  67,  -1,  -1,  68,  -1,  69,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       70,  -1,  -1,  -1,  -1,  -1,  71,  -1,  -1,  72,
-       -1,  -1,  -1,  -1,  -1,  -1,  73,  -1,  -1,  -1,
-       -1,  -1,  -1,  74,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  75,  -1,  -1,
-       -1,  76,  77,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  78,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  79,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  80,  -1,  -1,  81,  -1,  -1,  -1,
-       -1,  -1,  82,  -1,  -1,  83,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       84,  -1,  -1,  -1,  85,  86,  -1,  -1,  87,  -1,
-       -1,  88,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  89,  -1,  90,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  91,  92,  -1,  -1,  -1,
-       -1,  -1,  93,  -1,  94,  95,  96,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,   1,  -1,  -1,   2,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,   3,   4,  -1,  -1,  -1,  -1,  -1,
+       -1,   5,  -1,  -1,  -1,  -1,  -1,   6,  -1,  -1,
+        7,  -1,   8,  -1,  -1,  -1,  -1,  -1,  -1,   9,
+       -1,  10,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  11,  -1,  12,  -1,  -1,  13,
+       -1,  -1,  -1,  -1,  -1,  14,  15,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  16,  17,  18,  -1,  -1,
+       -1,  19,  -1,  20,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  21,  -1,
+       -1,  -1,  -1,  -1,  -1,  22,  -1,  -1,  -1,  -1,
+       23,  24,  -1,  -1,  -1,  -1,  25,  -1,  26,  -1,
+       27,  -1,  28,  -1,  29,  -1,  -1,  30,  -1,  -1,
+       -1,  -1,  31,  32,  -1,  -1,  -1,  33,  -1,  34,
+       -1,  -1,  35,  -1,  -1,  -1,  36,  37,  -1,  -1,
+       38,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  39,  -1,
+       -1,  -1,  40,  -1,  -1,  -1,  -1,  41,  -1,  -1,
+       -1,  42,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  43,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  44,  -1,  45,
+       -1,  46,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       47,  -1,  48,  -1,  -1,  -1,  -1,  -1,  -1,  49,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       50,  51,  -1,  -1,  -1,  52,  -1,  -1,  -1,  -1,
+       53,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  54,  55,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  56,  -1,  -1,  -1,
+       57,  -1,  58,  -1,  -1,  -1,  59,  -1,  60,  61,
+       62,  -1,  -1,  -1,  63,  -1,  -1,  64,  65,  -1,
+       66,  -1,  67,  68,  69,  -1,  -1,  -1,  -1,  70,
+       71,  72,  -1,  73,  -1,  -1,  -1,  74,  -1,  -1,
+       75,  -1,  -1,  -1,  76,  -1,  -1,  -1,  -1,  -1,
+       -1,  77,  -1,  -1,  -1,  78,  79,  80,  81,  -1,
+       -1,  82,  -1,  -1,  83,  -1,  -1,  -1,  -1,  84,
+       85,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  86,
+       87,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  88,  -1,  89,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  90,  -1,
+       -1,  91,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       92,  -1,  -1,  -1,  -1,  93,  -1,  -1,  -1,  -1,
+       -1,  94,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  95,  -1,  96,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  97,  -1,  -1,  98,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  99,  -1,  -1,
-       -1,  -1, 100,  -1,  -1, 101, 102,  -1,  -1,  -1,
-       -1, 103,  -1,  -1, 104,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1, 105,  -1,  -1,  -1,  -1,  -1,
-      106,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1, 107,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 108,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 109,  -1,
-       -1,  -1,  -1, 110,  -1, 111, 112,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 113,  -1,  -1,
-       -1, 114,  -1,  -1,  -1, 115,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 116,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 117,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 118,  -1,  -1,  -1,  -1, 119,  -1,  -1,
-       -1,  -1,  -1,  -1, 120,  -1,  -1,  -1,  -1,  -1,
-      121,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 122,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 123,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 124,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 125,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  99,  -1,  -1,  -1,  -1,  -1,  -1, 100,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 101,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 102,  -1,  -1,
+       -1,  -1,  -1,  -1, 103, 104,  -1,  -1,  -1,  -1,
+       -1,  -1, 105,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 106,  -1, 107,  -1,  -1,  -1, 108,  -1,
+       -1, 109,  -1,  -1,  -1,  -1, 110,  -1,  -1,  -1,
+       -1,  -1,  -1, 111,  -1, 112, 113,  -1,  -1,  -1,
+       -1, 114,  -1, 115,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1, 116, 117,  -1,  -1,  -1,
+       -1, 118,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 119,  -1, 120,  -1,  -1,  -1,  -1, 121,
+       -1, 122,  -1, 123,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 124,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 125,  -1,  -1,  -1,  -1, 126,  -1,  -1,  -1,
+       -1, 127,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1, 128,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 129,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 126,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 127,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 128,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 129,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 130,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 130,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1, 131,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 132,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 132,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
@@ -415,12 +364,13 @@ findProp (register const char *str, register unsigned int len)
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 133,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 133
+       -1, 134
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -473,6 +423,7 @@ static const char * const propertyList[] = {
 "-khtml-box-direction", 
 "-khtml-box-flex", 
 "-khtml-box-flex-group", 
+"-khtml-box-flex-group-transition", 
 "-khtml-box-lines", 
 "-khtml-box-ordinal-group", 
 "-khtml-box-orient", 
index 6df9757ed3bdbabf6a57bfe2fb2da60dca2191aa..adc8360cec8249df6de9b4d3c42e6817adac9c81 100644 (file)
 #define CSS_PROP__KHTML_BOX_DIRECTION 27
 #define CSS_PROP__KHTML_BOX_FLEX 28
 #define CSS_PROP__KHTML_BOX_FLEX_GROUP 29
-#define CSS_PROP__KHTML_BOX_LINES 30
-#define CSS_PROP__KHTML_BOX_ORDINAL_GROUP 31
-#define CSS_PROP__KHTML_BOX_ORIENT 32
-#define CSS_PROP__KHTML_BOX_PACK 33
-#define CSS_PROP_CAPTION_SIDE 34
-#define CSS_PROP_CLEAR 35
-#define CSS_PROP_CLIP 36
-#define CSS_PROP_COLOR 37
-#define CSS_PROP_CONTENT 38
-#define CSS_PROP_COUNTER_INCREMENT 39
-#define CSS_PROP_COUNTER_RESET 40
-#define CSS_PROP_CURSOR 41
-#define CSS_PROP_DIRECTION 42
-#define CSS_PROP_DISPLAY 43
-#define CSS_PROP_EMPTY_CELLS 44
-#define CSS_PROP_FLOAT 45
-#define CSS_PROP_FONT_FAMILY 46
-#define CSS_PROP_FONT_SIZE 47
-#define CSS_PROP_FONT_SIZE_ADJUST 48
-#define CSS_PROP_FONT_STRETCH 49
-#define CSS_PROP_FONT_STYLE 50
-#define CSS_PROP_FONT_VARIANT 51
-#define CSS_PROP_FONT_WEIGHT 52
-#define CSS_PROP_HEIGHT 53
-#define CSS_PROP_LEFT 54
-#define CSS_PROP_LETTER_SPACING 55
-#define CSS_PROP__APPLE_LINE_CLAMP 56
-#define CSS_PROP_LINE_HEIGHT 57
-#define CSS_PROP_LIST_STYLE_IMAGE 58
-#define CSS_PROP_LIST_STYLE_POSITION 59
-#define CSS_PROP_LIST_STYLE_TYPE 60
-#define CSS_PROP_MARGIN_TOP 61
-#define CSS_PROP_MARGIN_RIGHT 62
-#define CSS_PROP_MARGIN_BOTTOM 63
-#define CSS_PROP_MARGIN_LEFT 64
-#define CSS_PROP__KHTML_MARQUEE 65
-#define CSS_PROP__KHTML_MARQUEE_DIRECTION 66
-#define CSS_PROP__KHTML_MARQUEE_INCREMENT 67
-#define CSS_PROP__KHTML_MARQUEE_REPETITION 68
-#define CSS_PROP__KHTML_MARQUEE_SPEED 69
-#define CSS_PROP__KHTML_MARQUEE_STYLE 70
-#define CSS_PROP_MAX_HEIGHT 71
-#define CSS_PROP_MAX_WIDTH 72
-#define CSS_PROP_MIN_HEIGHT 73
-#define CSS_PROP_MIN_WIDTH 74
-#define CSS_PROP_OPACITY 75
-#define CSS_PROP_ORPHANS 76
-#define CSS_PROP_OUTLINE_COLOR 77
-#define CSS_PROP_OUTLINE_OFFSET 78
-#define CSS_PROP_OUTLINE_STYLE 79
-#define CSS_PROP_OUTLINE_WIDTH 80
-#define CSS_PROP_OVERFLOW 81
-#define CSS_PROP_PADDING_TOP 82
-#define CSS_PROP_PADDING_RIGHT 83
-#define CSS_PROP_PADDING_BOTTOM 84
-#define CSS_PROP_PADDING_LEFT 85
-#define CSS_PROP_PAGE 86
-#define CSS_PROP_PAGE_BREAK_AFTER 87
-#define CSS_PROP_PAGE_BREAK_BEFORE 88
-#define CSS_PROP_PAGE_BREAK_INSIDE 89
-#define CSS_PROP_POSITION 90
-#define CSS_PROP_QUOTES 91
-#define CSS_PROP_RIGHT 92
-#define CSS_PROP_SIZE 93
-#define CSS_PROP_TABLE_LAYOUT 94
-#define CSS_PROP_TEXT_ALIGN 95
-#define CSS_PROP_TEXT_DECORATION 96
-#define CSS_PROP_TEXT_DECORATION_COLOR 97
-#define CSS_PROP_TEXT_INDENT 98
-#define CSS_PROP_TEXT_SHADOW 99
-#define CSS_PROP_TEXT_TRANSFORM 100
-#define CSS_PROP_TOP 101
-#define CSS_PROP_UNICODE_BIDI 102
-#define CSS_PROP__KHTML_USER_DRAG 103
-#define CSS_PROP__KHTML_USER_MODIFY 104
-#define CSS_PROP__KHTML_USER_SELECT 105
-#define CSS_PROP_VERTICAL_ALIGN 106
-#define CSS_PROP_VISIBILITY 107
-#define CSS_PROP_WHITE_SPACE 108
-#define CSS_PROP_WIDOWS 109
-#define CSS_PROP_WIDTH 110
-#define CSS_PROP_WORD_SPACING 111
-#define CSS_PROP_Z_INDEX 112
-#define CSS_PROP_BACKGROUND 113
-#define CSS_PROP_BORDER 114
-#define CSS_PROP_BORDER_COLOR 115
-#define CSS_PROP_BORDER_STYLE 116
-#define CSS_PROP_BORDER_TOP 117
-#define CSS_PROP_BORDER_RIGHT 118
-#define CSS_PROP_BORDER_BOTTOM 119
-#define CSS_PROP_BORDER_LEFT 120
-#define CSS_PROP_BORDER_WIDTH 121
-#define CSS_PROP_FONT 122
-#define CSS_PROP_LIST_STYLE 123
-#define CSS_PROP_MARGIN 124
-#define CSS_PROP_OUTLINE 125
-#define CSS_PROP_PADDING 126
-#define CSS_PROP_SCROLLBAR_FACE_COLOR 127
-#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 128
-#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 129
-#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 130
-#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 131
-#define CSS_PROP_SCROLLBAR_TRACK_COLOR 132
-#define CSS_PROP_SCROLLBAR_ARROW_COLOR 133
-#define CSS_PROP__KHTML_FLOW_MODE 134
+#define CSS_PROP__KHTML_BOX_FLEX_GROUP_TRANSITION 30
+#define CSS_PROP__KHTML_BOX_LINES 31
+#define CSS_PROP__KHTML_BOX_ORDINAL_GROUP 32
+#define CSS_PROP__KHTML_BOX_ORIENT 33
+#define CSS_PROP__KHTML_BOX_PACK 34
+#define CSS_PROP_CAPTION_SIDE 35
+#define CSS_PROP_CLEAR 36
+#define CSS_PROP_CLIP 37
+#define CSS_PROP_COLOR 38
+#define CSS_PROP_CONTENT 39
+#define CSS_PROP_COUNTER_INCREMENT 40
+#define CSS_PROP_COUNTER_RESET 41
+#define CSS_PROP_CURSOR 42
+#define CSS_PROP_DIRECTION 43
+#define CSS_PROP_DISPLAY 44
+#define CSS_PROP_EMPTY_CELLS 45
+#define CSS_PROP_FLOAT 46
+#define CSS_PROP_FONT_FAMILY 47
+#define CSS_PROP_FONT_SIZE 48
+#define CSS_PROP_FONT_SIZE_ADJUST 49
+#define CSS_PROP_FONT_STRETCH 50
+#define CSS_PROP_FONT_STYLE 51
+#define CSS_PROP_FONT_VARIANT 52
+#define CSS_PROP_FONT_WEIGHT 53
+#define CSS_PROP_HEIGHT 54
+#define CSS_PROP_LEFT 55
+#define CSS_PROP_LETTER_SPACING 56
+#define CSS_PROP__APPLE_LINE_CLAMP 57
+#define CSS_PROP_LINE_HEIGHT 58
+#define CSS_PROP_LIST_STYLE_IMAGE 59
+#define CSS_PROP_LIST_STYLE_POSITION 60
+#define CSS_PROP_LIST_STYLE_TYPE 61
+#define CSS_PROP_MARGIN_TOP 62
+#define CSS_PROP_MARGIN_RIGHT 63
+#define CSS_PROP_MARGIN_BOTTOM 64
+#define CSS_PROP_MARGIN_LEFT 65
+#define CSS_PROP__KHTML_MARQUEE 66
+#define CSS_PROP__KHTML_MARQUEE_DIRECTION 67
+#define CSS_PROP__KHTML_MARQUEE_INCREMENT 68
+#define CSS_PROP__KHTML_MARQUEE_REPETITION 69
+#define CSS_PROP__KHTML_MARQUEE_SPEED 70
+#define CSS_PROP__KHTML_MARQUEE_STYLE 71
+#define CSS_PROP_MAX_HEIGHT 72
+#define CSS_PROP_MAX_WIDTH 73
+#define CSS_PROP_MIN_HEIGHT 74
+#define CSS_PROP_MIN_WIDTH 75
+#define CSS_PROP_OPACITY 76
+#define CSS_PROP_ORPHANS 77
+#define CSS_PROP_OUTLINE_COLOR 78
+#define CSS_PROP_OUTLINE_OFFSET 79
+#define CSS_PROP_OUTLINE_STYLE 80
+#define CSS_PROP_OUTLINE_WIDTH 81
+#define CSS_PROP_OVERFLOW 82
+#define CSS_PROP_PADDING_TOP 83
+#define CSS_PROP_PADDING_RIGHT 84
+#define CSS_PROP_PADDING_BOTTOM 85
+#define CSS_PROP_PADDING_LEFT 86
+#define CSS_PROP_PAGE 87
+#define CSS_PROP_PAGE_BREAK_AFTER 88
+#define CSS_PROP_PAGE_BREAK_BEFORE 89
+#define CSS_PROP_PAGE_BREAK_INSIDE 90
+#define CSS_PROP_POSITION 91
+#define CSS_PROP_QUOTES 92
+#define CSS_PROP_RIGHT 93
+#define CSS_PROP_SIZE 94
+#define CSS_PROP_TABLE_LAYOUT 95
+#define CSS_PROP_TEXT_ALIGN 96
+#define CSS_PROP_TEXT_DECORATION 97
+#define CSS_PROP_TEXT_DECORATION_COLOR 98
+#define CSS_PROP_TEXT_INDENT 99
+#define CSS_PROP_TEXT_SHADOW 100
+#define CSS_PROP_TEXT_TRANSFORM 101
+#define CSS_PROP_TOP 102
+#define CSS_PROP_UNICODE_BIDI 103
+#define CSS_PROP__KHTML_USER_DRAG 104
+#define CSS_PROP__KHTML_USER_MODIFY 105
+#define CSS_PROP__KHTML_USER_SELECT 106
+#define CSS_PROP_VERTICAL_ALIGN 107
+#define CSS_PROP_VISIBILITY 108
+#define CSS_PROP_WHITE_SPACE 109
+#define CSS_PROP_WIDOWS 110
+#define CSS_PROP_WIDTH 111
+#define CSS_PROP_WORD_SPACING 112
+#define CSS_PROP_Z_INDEX 113
+#define CSS_PROP_BACKGROUND 114
+#define CSS_PROP_BORDER 115
+#define CSS_PROP_BORDER_COLOR 116
+#define CSS_PROP_BORDER_STYLE 117
+#define CSS_PROP_BORDER_TOP 118
+#define CSS_PROP_BORDER_RIGHT 119
+#define CSS_PROP_BORDER_BOTTOM 120
+#define CSS_PROP_BORDER_LEFT 121
+#define CSS_PROP_BORDER_WIDTH 122
+#define CSS_PROP_FONT 123
+#define CSS_PROP_LIST_STYLE 124
+#define CSS_PROP_MARGIN 125
+#define CSS_PROP_OUTLINE 126
+#define CSS_PROP_PADDING 127
+#define CSS_PROP_SCROLLBAR_FACE_COLOR 128
+#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 129
+#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 130
+#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 131
+#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 132
+#define CSS_PROP_SCROLLBAR_TRACK_COLOR 133
+#define CSS_PROP_SCROLLBAR_ARROW_COLOR 134
+#define CSS_PROP__KHTML_FLOW_MODE 135
 
 #define CSS_PROP_MAX CSS_PROP_Z_INDEX
-#define CSS_PROP_TOTAL 135
+#define CSS_PROP_TOTAL 136
 #endif
 
index a450648299254ac39f0f475e53a04b70c4fe6421..12d1d3ba179466776cca8a4977f13d5d19dc40f6 100644 (file)
@@ -41,6 +41,7 @@ bottom
 -khtml-box-direction
 -khtml-box-flex
 -khtml-box-flex-group
+-khtml-box-flex-group-transition
 -khtml-box-lines
 -khtml-box-ordinal-group
 -khtml-box-orient
index c5c0cce61304e2506850778001282a92eecd6fe9..467a0f5b2d92db22200acb228eda5fca66086f8d 100644 (file)
@@ -157,6 +157,7 @@ StyleFlexibleBoxData::StyleFlexibleBoxData()
     orient = RenderStyle::initialBoxOrient();
     lines = RenderStyle::initialBoxLines();
     flexed_height = -1;
+    transitions = 0;
 }
 
 StyleFlexibleBoxData::StyleFlexibleBoxData(const StyleFlexibleBoxData& o)
@@ -170,6 +171,7 @@ StyleFlexibleBoxData::StyleFlexibleBoxData(const StyleFlexibleBoxData& o)
     orient = o.orient;
     lines = o.lines;
     flexed_height = o.flexed_height;
+    transitions = o.transitions ? new FlexGroupTransitionData(*o.transitions) : 0;
 }
 
 bool StyleFlexibleBoxData::operator==(const StyleFlexibleBoxData& o) const
@@ -177,7 +179,17 @@ bool StyleFlexibleBoxData::operator==(const StyleFlexibleBoxData& o) const
     return flex == o.flex && flex_group == o.flex_group &&
            ordinal_group == o.ordinal_group && align == o.align &&
            pack == o.pack && orient == o.orient && lines == o.lines &&
-           flexed_height == o.flexed_height;
+           flexed_height == o.flexed_height &&
+           transitionDataEquivalent(o);
+}
+
+bool StyleFlexibleBoxData::transitionDataEquivalent(const StyleFlexibleBoxData& o) const
+{
+    if (!transitions && o.transitions || transitions && !o.transitions)
+        return false;
+    if (transitions && o.transitions && (*transitions != *o.transitions))
+        return false;
+    return true;
 }
 
 StyleCSS3NonInheritedData::StyleCSS3NonInheritedData()
@@ -259,13 +271,11 @@ StyleCSS3InheritedData::~StyleCSS3InheritedData()
 
 bool StyleCSS3InheritedData::operator==(const StyleCSS3InheritedData& o) const
 {
-    return shadowDataEquivalent(o);
+    return (userModify == o.userModify) && shadowDataEquivalent(o);
 }
 
 bool StyleCSS3InheritedData::shadowDataEquivalent(const StyleCSS3InheritedData& o) const
 {
-    if (userModify != o.userModify)
-        return false;
     if (!textShadow && o.textShadow || textShadow && !o.textShadow)
         return false;
     if (textShadow && o.textShadow && (*textShadow != *o.textShadow))
@@ -887,3 +897,32 @@ bool ShadowData::operator==(const ShadowData& o) const
     
     return x == o.x && y == o.y && blur == o.blur && color == o.color;
 }
+
+void RenderStyle::setBoxFlexGroupTransition(FlexGroupTransitionData* val, bool add)
+{
+    StyleFlexibleBoxData* boxData = css3NonInheritedData.access()->flexibleBox.access(); 
+    if (!add) {
+        delete boxData->transitions;
+        boxData->transitions = val;
+        return;
+    }
+    
+    FlexGroupTransitionData* last = boxData->transitions;
+    while (last->next) last = last->next;
+    last->next = val;
+}
+
+FlexGroupTransitionData::FlexGroupTransitionData(const FlexGroupTransitionData& o)
+:group1(o.group1), group2(o.group2), length(o.length)
+{
+    next = o.next ? new FlexGroupTransitionData(*o.next) : 0;
+}
+
+bool FlexGroupTransitionData::operator==(const FlexGroupTransitionData& o) const
+{
+    if ((next && !o.next) || (!next && o.next) ||
+        (next && o.next && *next != *o.next))
+        return false;
+    
+    return group1 == o.group1 && group2 == o.group2 && length == o.length;
+}
index edd10b828e3516904f8c7357e338940324ec4621..c38676daa07eb729406dede38c393ea9c00580cb 100644 (file)
@@ -57,6 +57,7 @@ class RenderArena;
 namespace DOM {
     class DOMStringImpl;
     class ShadowValueImpl;
+    class FlexGroupTransitionValueImpl;
 }
 
 namespace khtml {
@@ -450,6 +451,25 @@ public:
 //------------------------------------------------
 // CSS3 Flexible Box Properties
 
+// This struct holds information about flex group transitions for the box-flex-group-transition property.
+struct FlexGroupTransitionData {
+    FlexGroupTransitionData(unsigned int _group1, unsigned int _group2, Length _l)
+    :group1(_group1), group2(_group2), length(_l), next(0) {}
+    FlexGroupTransitionData(const FlexGroupTransitionData& o);
+    
+    ~FlexGroupTransitionData() { delete next; }
+    
+    bool operator==(const FlexGroupTransitionData& o) const;
+    bool operator!=(const FlexGroupTransitionData &o) const {
+        return !(*this == o);
+    }
+    
+    unsigned int group1;
+    unsigned int group2;
+    Length length;
+    FlexGroupTransitionData* next;
+};
+
 enum EBoxAlignment { BSTRETCH, BSTART, BCENTER, BEND, BJUSTIFY, BBASELINE };
 enum EBoxOrient { HORIZONTAL, VERTICAL };
 enum EBoxLines { SINGLE, MULTIPLE };
@@ -459,7 +479,7 @@ class StyleFlexibleBoxData : public Shared<StyleFlexibleBoxData>
 {
 public:
     StyleFlexibleBoxData();
-    ~StyleFlexibleBoxData() {}
+    ~StyleFlexibleBoxData() { delete transitions; }
     StyleFlexibleBoxData(const StyleFlexibleBoxData& o);
 
     bool operator==(const StyleFlexibleBoxData& o) const;
@@ -467,11 +487,14 @@ public:
         return !(*this == o);
     }
 
+    bool transitionDataEquivalent(const StyleFlexibleBoxData& o) const;
+    
     float flex;
     unsigned int flex_group;
     unsigned int ordinal_group;
     int flexed_height; // Not an actual CSS property. Vertical flexing has to use this as a cache.
-    
+    FlexGroupTransitionData* transitions;
+
     EBoxAlignment align : 3;
     EBoxAlignment pack: 3;
     EBoxOrient orient: 1;
@@ -1087,6 +1110,7 @@ public:
     EBoxOrient boxOrient() { return css3NonInheritedData->flexibleBox->orient; }
     EBoxAlignment boxPack() { return css3NonInheritedData->flexibleBox->pack; }
     int boxFlexedHeight() { return css3NonInheritedData->flexibleBox->flexed_height; }
+    FlexGroupTransitionData* boxFlexGroupTransition() { return css3NonInheritedData->flexibleBox->transitions; }
     Length marqueeIncrement() { return css3NonInheritedData->marquee->increment; }
     int marqueeSpeed() { return css3NonInheritedData->marquee->speed; }
     int marqueeLoopCount() { return css3NonInheritedData->marquee->loops; }
@@ -1266,6 +1290,7 @@ public:
     void setBoxOrient(EBoxOrient o) { SET_VAR(css3NonInheritedData.access()->flexibleBox, orient, o); }
     void setBoxPack(EBoxAlignment p) { SET_VAR(css3NonInheritedData.access()->flexibleBox, pack, p); }
     void setBoxFlexedHeight(int h) { SET_VAR(css3NonInheritedData.access()->flexibleBox, flexed_height, h); }
+    void setBoxFlexGroupTransition(FlexGroupTransitionData* transition, bool add = false);
     void setMarqueeIncrement(const Length& f) { SET_VAR(css3NonInheritedData.access()->marquee, increment, f); }
     void setMarqueeSpeed(int f) { SET_VAR(css3NonInheritedData.access()->marquee, speed, f); }
     void setMarqueeDirection(EMarqueeDirection d) { SET_VAR(css3NonInheritedData.access()->marquee, direction, d); }