Reworked lists to work well with RTL text. Specifically the following bugs have...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 28 Sep 2004 18:32:47 +0000 (18:32 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 28 Sep 2004 18:32:47 +0000 (18:32 +0000)
(1) All bullets use the same offset constant now (a padding of 7 pixels).  Before, images used 5 and others used 7.
(2) Line height now works properly, so that list items with no content aren't squished (and missing the line descent).
(3) Punctuation now works correctly with inside and outside style ordered lists in RTL.
(4) RTL lists now properly apply padding and margin to the right side rather than the left.  This was done by adding
-khtml-margin-start and -khtml-padding-start properties that are just mapped to left/right based off the direction.

        Reviewed by darin

        * khtml/css/cssparser.cpp:
        (CSSParser::parseValue):
        * khtml/css/cssproperties.c:
        (hash_prop):
        (findProp):
        * khtml/css/cssproperties.h:
        * khtml/css/cssproperties.in:
        * khtml/css/cssstyleselector.cpp:
        (khtml::CSSStyleSelector::applyDeclarations):
        (khtml::CSSStyleSelector::applyProperty):
        * khtml/css/html4.css:
        * khtml/rendering/bidi.cpp:
        (khtml::BidiIterator::direction):
        * khtml/rendering/render_list.cpp:
        (RenderListItem::getAbsoluteRepaintRect):
        (RenderListMarker::paint):
        (RenderListMarker::calcMinMaxWidth):
        (RenderListMarker::lineHeight):
        (RenderListMarker::baselinePosition):

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

WebCore/ChangeLog-2005-08-23
WebCore/khtml/css/cssparser.cpp
WebCore/khtml/css/cssproperties.c
WebCore/khtml/css/cssproperties.h
WebCore/khtml/css/cssproperties.in
WebCore/khtml/css/cssstyleselector.cpp
WebCore/khtml/css/html4.css
WebCore/khtml/rendering/bidi.cpp
WebCore/khtml/rendering/render_list.cpp

index 66e869457548060ea79fbb25d7b3f31e5c80278e..80146bcc42528daed0216e3002fedf3640528f27 100644 (file)
@@ -1,3 +1,35 @@
+2004-09-27  David Hyatt  <hyatt@apple.com>
+
+       Reworked lists to work well with RTL text.  Specifically the following bugs have been fixed:
+
+       (1) All bullets use the same offset constant now (a padding of 7 pixels).  Before, images used 5 and others used 7.
+       (2) Line height now works properly, so that list items with no content aren't squished (and missing the line descent).
+       (3) Punctuation now works correctly with inside and outside style ordered lists in RTL.
+       (4) RTL lists now properly apply padding and margin to the right side rather than the left.  This was done by adding
+       -khtml-margin-start and -khtml-padding-start properties that are just mapped to left/right based off the direction.
+       
+        Reviewed by darin
+
+        * khtml/css/cssparser.cpp:
+        (CSSParser::parseValue):
+        * khtml/css/cssproperties.c:
+        (hash_prop):
+        (findProp):
+        * khtml/css/cssproperties.h:
+        * khtml/css/cssproperties.in:
+        * khtml/css/cssstyleselector.cpp:
+        (khtml::CSSStyleSelector::applyDeclarations):
+        (khtml::CSSStyleSelector::applyProperty):
+        * khtml/css/html4.css:
+        * khtml/rendering/bidi.cpp:
+        (khtml::BidiIterator::direction):
+        * khtml/rendering/render_list.cpp:
+        (RenderListItem::getAbsoluteRepaintRect):
+        (RenderListMarker::paint):
+        (RenderListMarker::calcMinMaxWidth):
+        (RenderListMarker::lineHeight):
+        (RenderListMarker::baselinePosition):
+
 2004-09-28  Ken Kocienda  <kocienda@apple.com>
 
         Reviewed by Darin
index e53e06f428b8d4f3a754610ad18ab40fb22943c5..b9aad714f2e1b6e654cfd12eb169699ec2b85ebe 100644 (file)
@@ -856,6 +856,7 @@ bool CSSParser::parseValue( int propId, bool important )
     case CSS_PROP_PADDING_RIGHT:        //   Which is defined as
     case CSS_PROP_PADDING_BOTTOM:       //   <length> | <percentage>
     case CSS_PROP_PADDING_LEFT:         ////
+    case CSS_PROP__KHTML_PADDING_START:
        valid_primitive = ( !id && validUnit( value, FLength|FPercent, strict ) );
        break;
 
@@ -919,6 +920,7 @@ bool CSSParser::parseValue( int propId, bool important )
     case CSS_PROP_MARGIN_RIGHT:         //   Which is defined as
     case CSS_PROP_MARGIN_BOTTOM:        //   <length> | <percentage> | auto | inherit
     case CSS_PROP_MARGIN_LEFT:          ////
+    case CSS_PROP__KHTML_MARGIN_START:
        if ( id == CSS_VAL_AUTO )
            valid_primitive = true;
        else
index 49048c50bfa7705e70241cfae9a566cf72a19e9d..fe6362fb6b89da3c75fcc8d6c023568d98919181 100644 (file)
@@ -7,7 +7,7 @@ struct props {
     const char *name;
     int id;
 };
-/* maximum key range = 1478, duplicates = 0 */
+/* maximum key range = 1638, 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[] =
     {
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483,    0, 1483, 1483, 1483, 1483,
-      1483,    0, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483,   40,   30,    0,
-         0,    0,  340,   15,    0,    0,   10,   25,    0,   10,
-       455,    0,   65,   10,    0,   25,    0,   90,   10,  265,
-       150,  225,    0, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483, 1483,
-      1483, 1483, 1483, 1483, 1483, 1483
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643,    0, 1643, 1643, 1643, 1643,
+      1643,    0, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643,   35,   35,    0,
+         0,    0,  325,   10,    0,    0,    0,   15,    0,   35,
+       510,    0,   20,   55,    0,   95,    0,   60,   65,  320,
+       170,  180,   20, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643, 1643,
+      1643, 1643, 1643, 1643, 1643, 1643
     };
   register int hval = len;
 
@@ -130,11 +130,11 @@ findProp (register const char *str, register unsigned int len)
 {
   enum
     {
-      TOTAL_KEYWORDS = 154,
+      TOTAL_KEYWORDS = 156,
       MIN_WORD_LENGTH = 3,
       MAX_WORD_LENGTH = 32,
       MIN_HASH_VALUE = 5,
-      MAX_HASH_VALUE = 1482
+      MAX_HASH_VALUE = 1642
     };
 
   static const struct props wordlist_prop[] =
@@ -142,310 +142,328 @@ findProp (register const char *str, register unsigned int len)
       {"color", CSS_PROP_COLOR},
       {"right", CSS_PROP_RIGHT},
       {"height", CSS_PROP_HEIGHT},
-      {"size", CSS_PROP_SIZE},
+      {"top", CSS_PROP_TOP},
+      {"clip", CSS_PROP_CLIP},
+      {"clear", CSS_PROP_CLEAR},
       {"border", CSS_PROP_BORDER},
       {"border-color", CSS_PROP_BORDER_COLOR},
-      {"clear", CSS_PROP_CLEAR},
-      {"bottom", CSS_PROP_BOTTOM},
       {"border-right", CSS_PROP_BORDER_RIGHT},
       {"border-right-color", CSS_PROP_BORDER_RIGHT_COLOR},
-      {"top", CSS_PROP_TOP},
-      {"clip", CSS_PROP_CLIP},
-      {"border-bottom", CSS_PROP_BORDER_BOTTOM},
-      {"border-bottom-color", CSS_PROP_BORDER_BOTTOM_COLOR},
       {"border-top", CSS_PROP_BORDER_TOP},
+      {"page", CSS_PROP_PAGE},
       {"border-top-color", CSS_PROP_BORDER_TOP_COLOR},
+      {"bottom", CSS_PROP_BOTTOM},
+      {"border-bottom", CSS_PROP_BORDER_BOTTOM},
+      {"size", CSS_PROP_SIZE},
+      {"border-bottom-color", CSS_PROP_BORDER_BOTTOM_COLOR},
       {"cursor", CSS_PROP_CURSOR},
-      {"page", CSS_PROP_PAGE},
-      {"quotes", CSS_PROP_QUOTES},
       {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR},
-      {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
       {"border-collapse", CSS_PROP_BORDER_COLLAPSE},
+      {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR},
+      {"quotes", CSS_PROP_QUOTES},
       {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR},
-      {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
+      {"opacity", CSS_PROP_OPACITY},
       {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE},
-      {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
       {"max-height", CSS_PROP_MAX_HEIGHT},
-      {"width", CSS_PROP_WIDTH},
-      {"list-style", CSS_PROP_LIST_STYLE},
+      {"-khtml-user-drag", CSS_PROP__KHTML_USER_DRAG},
+      {"-khtml-user-select", CSS_PROP__KHTML_USER_SELECT},
       {"border-style", CSS_PROP_BORDER_STYLE},
-      {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
-      {"visibility", CSS_PROP_VISIBILITY},
-      {"border-width", CSS_PROP_BORDER_WIDTH},
-      {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
-      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
-      {"empty-cells", CSS_PROP_EMPTY_CELLS},
-      {"opacity", CSS_PROP_OPACITY},
-      {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
+      {"width", CSS_PROP_WIDTH},
       {"left", CSS_PROP_LEFT},
-      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
-      {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
+      {"display", CSS_PROP_DISPLAY},
+      {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE},
       {"-khtml-box-pack", CSS_PROP__KHTML_BOX_PACK},
+      {"empty-cells", CSS_PROP_EMPTY_CELLS},
       {"border-top-style", CSS_PROP_BORDER_TOP_STYLE},
-      {"display", CSS_PROP_DISPLAY},
-      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
-      {"border-left", CSS_PROP_BORDER_LEFT},
+      {"table-layout", CSS_PROP_TABLE_LAYOUT},
       {"float", CSS_PROP_FLOAT},
+      {"border-width", CSS_PROP_BORDER_WIDTH},
+      {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED},
+      {"border-left", CSS_PROP_BORDER_LEFT},
       {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR},
+      {"list-style", CSS_PROP_LIST_STYLE},
+      {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH},
+      {"visibility", CSS_PROP_VISIBILITY},
+      {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH},
+      {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE},
+      {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH},
+      {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE},
       {"white-space", CSS_PROP_WHITE_SPACE},
-      {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR},
-      {"table-layout", CSS_PROP_TABLE_LAYOUT},
-      {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR},
-      {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
       {"direction", CSS_PROP_DIRECTION},
-      {"max-width", CSS_PROP_MAX_WIDTH},
+      {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
+      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
+      {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE},
       {"line-height", CSS_PROP_LINE_HEIGHT},
-      {"min-height", CSS_PROP_MIN_HEIGHT},
-      {"text-shadow", CSS_PROP_TEXT_SHADOW},
+      {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR},
       {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR},
-      {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
-      {"margin", CSS_PROP_MARGIN},
+      {"min-height", CSS_PROP_MIN_HEIGHT},
+      {"max-width", CSS_PROP_MAX_WIDTH},
       {"-apple-text-size-adjust", CSS_PROP__APPLE_TEXT_SIZE_ADJUST},
-      {"margin-right", CSS_PROP_MARGIN_RIGHT},
       {"outline", CSS_PROP_OUTLINE},
-      {"position", CSS_PROP_POSITION},
+      {"padding", CSS_PROP_PADDING},
       {"outline-color", CSS_PROP_OUTLINE_COLOR},
-      {"widows", CSS_PROP_WIDOWS},
-      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
-      {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
       {"list-style-type", CSS_PROP_LIST_STYLE_TYPE},
-      {"padding", CSS_PROP_PADDING},
-      {"counter-reset", CSS_PROP_COUNTER_RESET},
+      {"margin", CSS_PROP_MARGIN},
+      {"padding-right", CSS_PROP_PADDING_RIGHT},
+      {"padding-top", CSS_PROP_PADDING_TOP},
+      {"margin-right", CSS_PROP_MARGIN_RIGHT},
       {"unicode-bidi", CSS_PROP_UNICODE_BIDI},
-      {"orphans", CSS_PROP_ORPHANS},
       {"margin-top", CSS_PROP_MARGIN_TOP},
+      {"text-shadow", CSS_PROP_TEXT_SHADOW},
+      {"position", CSS_PROP_POSITION},
+      {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR},
+      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
+      {"padding-bottom", CSS_PROP_PADDING_BOTTOM},
+      {"orphans", CSS_PROP_ORPHANS},
+      {"vertical-align", CSS_PROP_VERTICAL_ALIGN},
       {"caption-side", CSS_PROP_CAPTION_SIDE},
-      {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE},
-      {"padding-right", CSS_PROP_PADDING_RIGHT},
-      {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER},
-      {"z-index", CSS_PROP_Z_INDEX},
+      {"margin-bottom", CSS_PROP_MARGIN_BOTTOM},
+      {"background", CSS_PROP_BACKGROUND},
+      {"counter-reset", CSS_PROP_COUNTER_RESET},
+      {"background-color", CSS_PROP_BACKGROUND_COLOR},
       {"letter-spacing", CSS_PROP_LETTER_SPACING},
+      {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR},
+      {"-apple-line-clamp", CSS_PROP__APPLE_LINE_CLAMP},
+      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
+      {"z-index", CSS_PROP_Z_INDEX},
       {"overflow", CSS_PROP_OVERFLOW},
-      {"text-overline", CSS_PROP_TEXT_OVERLINE},
-      {"padding-bottom", CSS_PROP_PADDING_BOTTOM},
-      {"text-overline-color", CSS_PROP_TEXT_OVERLINE_COLOR},
-      {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE},
-      {"text-overline-mode", CSS_PROP_TEXT_OVERLINE_MODE},
       {"border-spacing", CSS_PROP_BORDER_SPACING},
-      {"padding-top", CSS_PROP_PADDING_TOP},
-      {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH},
       {"text-decoration", CSS_PROP_TEXT_DECORATION},
-      {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
-      {"background", CSS_PROP_BACKGROUND},
-      {"-khtml-flow-mode", CSS_PROP__KHTML_FLOW_MODE},
       {"text-align", CSS_PROP_TEXT_ALIGN},
-      {"background-color", CSS_PROP_BACKGROUND_COLOR},
-      {"-khtml-box-orient", CSS_PROP__KHTML_BOX_ORIENT},
-      {"-khtml-box-direction", CSS_PROP__KHTML_BOX_DIRECTION},
-      {"-khtml-margin-collapse", CSS_PROP__KHTML_MARGIN_COLLAPSE},
-      {"-khtml-box-lines", CSS_PROP__KHTML_BOX_LINES},
-      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
+      {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
+      {"widows", CSS_PROP_WIDOWS},
+      {"-khtml-flow-mode", CSS_PROP__KHTML_FLOW_MODE},
+      {"text-overline", CSS_PROP_TEXT_OVERLINE},
+      {"background-image", CSS_PROP_BACKGROUND_IMAGE},
+      {"-khtml-user-modify", CSS_PROP__KHTML_USER_MODIFY},
+      {"text-overline-color", CSS_PROP_TEXT_OVERLINE_COLOR},
       {"-khtml-box-flex", CSS_PROP__KHTML_BOX_FLEX},
       {"text-line-through", CSS_PROP_TEXT_LINE_THROUGH},
-      {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION},
+      {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION},
+      {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE},
       {"text-line-through-color", CSS_PROP_TEXT_LINE_THROUGH_COLOR},
-      {"background-image", CSS_PROP_BACKGROUND_IMAGE},
-      {"min-width", CSS_PROP_MIN_WIDTH},
-      {"-khtml-box-align", CSS_PROP__KHTML_BOX_ALIGN},
+      {"-khtml-padding-start", CSS_PROP__KHTML_PADDING_START},
+      {"-khtml-box-orient", CSS_PROP__KHTML_BOX_ORIENT},
+      {"-khtml-box-direction", CSS_PROP__KHTML_BOX_DIRECTION},
+      {"-khtml-margin-start", CSS_PROP__KHTML_MARGIN_START},
+      {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION},
+      {"text-overline-mode", CSS_PROP_TEXT_OVERLINE_MODE},
       {"text-line-through-mode", CSS_PROP_TEXT_LINE_THROUGH_MODE},
-      {"-khtml-user-modify", CSS_PROP__KHTML_USER_MODIFY},
-      {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING},
-      {"-khtml-margin-bottom-collapse", CSS_PROP__KHTML_MARGIN_BOTTOM_COLLAPSE},
-      {"-apple-line-clamp", CSS_PROP__APPLE_LINE_CLAMP},
-      {"-khtml-margin-top-collapse", CSS_PROP__KHTML_MARGIN_TOP_COLLAPSE},
-      {"background-repeat", CSS_PROP_BACKGROUND_REPEAT},
-      {"text-overflow", CSS_PROP_TEXT_OVERFLOW},
+      {"-khtml-margin-collapse", CSS_PROP__KHTML_MARGIN_COLLAPSE},
       {"-apple-dashboard-region", CSS_PROP__APPLE_DASHBOARD_REGION},
+      {"-khtml-box-align", CSS_PROP__KHTML_BOX_ALIGN},
+      {"-khtml-margin-top-collapse", CSS_PROP__KHTML_MARGIN_TOP_COLLAPSE},
       {"font", CSS_PROP_FONT},
       {"outline-style", CSS_PROP_OUTLINE_STYLE},
+      {"-khtml-box-flex-group", CSS_PROP__KHTML_BOX_FLEX_GROUP},
+      {"min-width", CSS_PROP_MIN_WIDTH},
+      {"-khtml-box-lines", CSS_PROP__KHTML_BOX_LINES},
+      {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING},
+      {"-khtml-margin-bottom-collapse", CSS_PROP__KHTML_MARGIN_BOTTOM_COLLAPSE},
+      {"text-overflow", CSS_PROP_TEXT_OVERFLOW},
       {"outline-width", CSS_PROP_OUTLINE_WIDTH},
-      {"font-size", CSS_PROP_FONT_SIZE},
-      {"font-stretch", CSS_PROP_FONT_STRETCH},
-      {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
+      {"padding-left", CSS_PROP_PADDING_LEFT},
+      {"-khtml-box-ordinal-group", CSS_PROP__KHTML_BOX_ORDINAL_GROUP},
       {"margin-left", CSS_PROP_MARGIN_LEFT},
+      {"font-stretch", CSS_PROP_FONT_STRETCH},
+      {"font-size", CSS_PROP_FONT_SIZE},
       {"word-spacing", CSS_PROP_WORD_SPACING},
-      {"text-overline-style", CSS_PROP_TEXT_OVERLINE_STYLE},
-      {"-khtml-box-flex-group", CSS_PROP__KHTML_BOX_FLEX_GROUP},
-      {"text-overline-width", CSS_PROP_TEXT_OVERLINE_WIDTH},
-      {"-khtml-box-ordinal-group", CSS_PROP__KHTML_BOX_ORDINAL_GROUP},
+      {"list-style-position", CSS_PROP_LIST_STYLE_POSITION},
       {"content", CSS_PROP_CONTENT},
-      {"padding-left", CSS_PROP_PADDING_LEFT},
+      {"text-overline-style", CSS_PROP_TEXT_OVERLINE_STYLE},
       {"text-line-through-style", CSS_PROP_TEXT_LINE_THROUGH_STYLE},
+      {"text-overline-width", CSS_PROP_TEXT_OVERLINE_WIDTH},
       {"text-line-through-width", CSS_PROP_TEXT_LINE_THROUGH_WIDTH},
-      {"font-size-adjust", CSS_PROP_FONT_SIZE_ADJUST},
+      {"font-style", CSS_PROP_FONT_STYLE},
       {"-khtml-binding", CSS_PROP__KHTML_BINDING},
+      {"font-size-adjust", CSS_PROP_FONT_SIZE_ADJUST},
+      {"font-weight", CSS_PROP_FONT_WEIGHT},
       {"text-transform", CSS_PROP_TEXT_TRANSFORM},
-      {"font-style", CSS_PROP_FONT_STYLE},
       {"text-indent", CSS_PROP_TEXT_INDENT},
-      {"font-weight", CSS_PROP_FONT_WEIGHT},
-      {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
       {"text-underline", CSS_PROP_TEXT_UNDERLINE},
       {"text-underline-color", CSS_PROP_TEXT_UNDERLINE_COLOR},
+      {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
       {"text-underline-mode", CSS_PROP_TEXT_UNDERLINE_MODE},
-      {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING},
       {"background-position", CSS_PROP_BACKGROUND_POSITION},
-      {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT},
+      {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT},
       {"outline-offset", CSS_PROP_OUTLINE_OFFSET},
-      {"font-variant", CSS_PROP_FONT_VARIANT},
+      {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING},
+      {"font-family", CSS_PROP_FONT_FAMILY},
       {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X},
+      {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y},
+      {"font-variant", CSS_PROP_FONT_VARIANT},
       {"text-underline-style", CSS_PROP_TEXT_UNDERLINE_STYLE},
-      {"font-family", CSS_PROP_FONT_FAMILY},
       {"text-underline-width", CSS_PROP_TEXT_UNDERLINE_WIDTH},
-      {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y},
       {"counter-increment", CSS_PROP_COUNTER_INCREMENT}
     };
 
   static const short lookup[] =
     {
        -1,  -1,  -1,  -1,  -1,   0,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,   1,   2,  -1,  -1,  -1,
+       -1,  -1,  -1,   3,   4,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-        1,   2,  -1,  -1,  -1,  -1,  -1,  -1,  -1,   3,
-       -1,  -1,  -1,  -1,  -1,  -1,   4,  -1,  -1,  -1,
-       -1,  -1,   5,  -1,  -1,   6,   7,  -1,  -1,  -1,
+        5,   6,  -1,  -1,  -1,  -1,  -1,   7,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,   8,  -1,  -1,
-       -1,  -1,  -1,   9,  -1,  -1,  -1,  -1,  10,  11,
+       -1,  -1,  -1,   9,  -1,  10,  -1,  -1,  -1,  11,
+       -1,  12,  -1,  -1,  -1,  -1,  13,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  14,  15,
+       -1,  -1,  -1,  -1,  16,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  12,  -1,  -1,  -1,  -1,  -1,  13,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  14,  -1,  -1,  -1,  -1,
-       -1,  15,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  16,  -1,  -1,  17,  -1,  -1,  -1,  -1,  -1,
-       -1,  18,  -1,  19,  -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,
+       -1,  17,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  21,  -1,  -1,  -1,  -1,
-       -1,  22,  -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,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  18,  -1,
+       19,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       20,  -1,  -1,  -1,  -1,  -1,  21,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  25,  -1,  -1,  -1,  26,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  22,  -1,  -1,  -1,
+       -1,  -1,  23,  -1,  -1,  -1,  -1,  -1,  -1,  24,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       25,  -1,  -1,  -1,  -1,  -1,  26,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       27,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  28,  -1,  -1,  -1,  -1,
-       -1,  -1,  29,  -1,  -1,  30,  -1,  -1,  -1,  -1,
-       31,  -1,  -1,  -1,  -1,  -1,  -1,  32,  -1,  -1,
-       -1,  -1,  -1,  33,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  34,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  35,  36,  -1,  37,
-       -1,  -1,  -1,  -1,  38,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  39,  -1,  40,  -1,  -1,  -1,
-       41,  42,  43,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  44,  -1,  -1,  -1,
-       -1,  45,  -1,  -1,  -1,  46,  -1,  47,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  27,  -1,
+       -1,  -1,  28,  -1,  -1,  29,  -1,  -1,  -1,  30,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  31,  32,  -1,
+       33,  34,  -1,  -1,  -1,  -1,  35,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  36,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  37,  -1,  38,  -1,  -1,
+       39,  40,  -1,  -1,  -1,  -1,  -1,  41,  -1,  -1,
+       42,  -1,  -1,  43,  -1,  44,  -1,  -1,  -1,  -1,
+       -1,  45,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  46,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  47,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  48,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  49,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  50,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  51,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  52,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  53,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  54,  -1,  -1,  -1,  -1,  -1,
-       -1,  55,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       56,  57,  -1,  -1,  -1,  58,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  59,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  60,  -1,  -1,  -1,
-       -1,  -1,  -1,  61,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  62,  -1,  -1,
-       -1,  -1,  63,  64,  -1,  -1,  -1,  -1,  65,  -1,
-       -1,  66,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  67,  68,  -1,  -1,  -1,  -1,  -1,
-       69,  -1,  70,  71,  -1,  -1,  -1,  72,  -1,  -1,
-       -1,  -1,  73,  -1,  -1,  74,  -1,  75,  -1,  -1,
-       -1,  -1,  76,  77,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  78,  79,  -1,  80,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  81,  -1,  -1,  -1,  -1,  82,  83,
-       -1,  -1,  -1,  -1,  84,  -1,  -1,  85,  -1,  -1,
-       -1,  -1,  -1,  86,  87,  -1,  -1,  -1,  -1,  -1,
-       -1,  88,  89,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       90,  -1,  -1,  -1,  91,  92,  93,  -1,  -1,  -1,
-       94,  95,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  96,  -1,  -1,
-       97,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  98,  -1,  -1,
-       -1,  99, 100,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-      101,  -1,  -1,  -1,  -1,  -1,  -1, 102,  -1,  -1,
-      103,  -1,  -1, 104,  -1,  -1, 105,  -1,  -1, 106,
-       -1, 107, 108, 109,  -1, 110,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1, 111,  -1,  -1, 112,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 113, 114, 115,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 116, 117,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 118,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1, 119,  -1,  -1,  -1,  -1,  -1, 120,
-       -1,  -1, 121,  -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,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 123,  -1,  -1,  -1,  -1,  -1, 124,  -1,  -1,
-       -1,  -1,  -1,  -1, 125,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 126,  -1,  -1, 127,
-       -1,  -1,  -1,  -1, 128,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1, 129,  -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,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  50,
+       -1,  -1,  -1,  -1,  -1,  -1,  51,  52,  -1,  -1,
+       53,  54,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  55,  -1,  -1,  -1,  56,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  57,  -1,  -1,  -1,  58,
+       -1,  -1,  -1,  59,  -1,  -1,  -1,  60,  -1,  -1,
+       -1,  -1,  61,  62,  -1,  63,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  64,  -1,  65,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  66,  -1,  -1,  -1,
+       -1,  -1,  67,  -1,  -1,  -1,  -1,  68,  -1,  -1,
+       69,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  70,  -1,  71,  -1,  -1,  -1,  72,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  73,  -1,  -1,  -1,  -1,  -1,  -1,  74,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  75,  -1,  76,
+       -1,  -1,  77,  78,  -1,  79,  -1,  -1,  80,  -1,
+       -1,  81,  -1,  -1,  82,  -1,  -1,  -1,  -1,  -1,
+       -1,  83,  84,  -1,  -1,  -1,  -1,  85,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  86,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  87,  88,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       89,  -1,  -1,  -1,  -1,  90,  -1,  91,  -1,  -1,
+       -1,  92,  -1,  -1,  -1,  -1,  93,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  94,  -1,
+       -1,  95,  -1,  96,  97,  98,  -1,  99,  -1, 100,
+       -1,  -1, 101, 102,  -1, 103,  -1,  -1,  -1,  -1,
+       -1,  -1, 104,  -1,  -1, 105,  -1,  -1,  -1, 106,
+      107,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 108,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 109,  -1,  -1,
+       -1,  -1, 110,  -1,  -1,  -1,  -1,  -1, 111,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1, 112,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1, 113,  -1,  -1, 114,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 115,  -1,
+       -1, 116,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1, 117,  -1, 118,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1, 119,  -1,  -1,  -1, 120,
+       -1,  -1,  -1, 121,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1, 122,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 123,  -1, 124,  -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, 126,  -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,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -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, 129,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1, 130,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 131,
+       -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,  -1,  -1, 131,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 132,  -1,
-       -1, 133,  -1,  -1, 134,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1, 133,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1, 134,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1, 135,  -1,  -1,  -1,  -1,  -1,
+      135,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 136,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 136,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 137,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1, 137,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1, 138,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1, 139,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 140,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 139,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1, 140,  -1,  -1,  -1,  -1,  -1,
-      141,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 142,
+       -1,  -1,  -1,  -1, 141,  -1,  -1,  -1,  -1,  -1,
+      142,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 143,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 144,
-       -1, 145,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 143,  -1,  -1, 144,  -1,  -1,  -1,  -1, 145,
+       -1,  -1,  -1,  -1, 146,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1, 147,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1, 148,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 149,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1, 146,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 150,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1, 151, 152,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 147,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+       -1,  -1,  -1,  -1,  -1, 153,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1, 148,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
+      154,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-      149, 150,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1, 151,  -1,  -1,  -1,  -1,
-       -1,  -1,  -1,  -1,  -1,  -1, 152,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
        -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,  -1,
-       -1,  -1, 153
+       -1,  -1, 155
     };
 
   if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH)
@@ -536,6 +554,7 @@ static const char * const propertyList[] = {
 "-khtml-margin-collapse", 
 "-khtml-margin-top-collapse", 
 "-khtml-margin-bottom-collapse", 
+"-khtml-margin-start", 
 "-khtml-marquee", 
 "-khtml-marquee-direction", 
 "-khtml-marquee-increment", 
@@ -557,6 +576,7 @@ static const char * const propertyList[] = {
 "padding-right", 
 "padding-bottom", 
 "padding-left", 
+"-khtml-padding-start", 
 "page", 
 "page-break-after", 
 "page-break-before", 
index 56d09de3f9ca640ce6b44d72d956751104398586..5671ea6ba97c052acc204d9a6753bc7f23e10268 100644 (file)
 #define CSS_PROP__KHTML_MARGIN_COLLAPSE 65
 #define CSS_PROP__KHTML_MARGIN_TOP_COLLAPSE 66
 #define CSS_PROP__KHTML_MARGIN_BOTTOM_COLLAPSE 67
-#define CSS_PROP__KHTML_MARQUEE 68
-#define CSS_PROP__KHTML_MARQUEE_DIRECTION 69
-#define CSS_PROP__KHTML_MARQUEE_INCREMENT 70
-#define CSS_PROP__KHTML_MARQUEE_REPETITION 71
-#define CSS_PROP__KHTML_MARQUEE_SPEED 72
-#define CSS_PROP__KHTML_MARQUEE_STYLE 73
-#define CSS_PROP_MAX_HEIGHT 74
-#define CSS_PROP_MAX_WIDTH 75
-#define CSS_PROP_MIN_HEIGHT 76
-#define CSS_PROP_MIN_WIDTH 77
-#define CSS_PROP_OPACITY 78
-#define CSS_PROP_ORPHANS 79
-#define CSS_PROP_OUTLINE_COLOR 80
-#define CSS_PROP_OUTLINE_OFFSET 81
-#define CSS_PROP_OUTLINE_STYLE 82
-#define CSS_PROP_OUTLINE_WIDTH 83
-#define CSS_PROP_OVERFLOW 84
-#define CSS_PROP_PADDING_TOP 85
-#define CSS_PROP_PADDING_RIGHT 86
-#define CSS_PROP_PADDING_BOTTOM 87
-#define CSS_PROP_PADDING_LEFT 88
-#define CSS_PROP_PAGE 89
-#define CSS_PROP_PAGE_BREAK_AFTER 90
-#define CSS_PROP_PAGE_BREAK_BEFORE 91
-#define CSS_PROP_PAGE_BREAK_INSIDE 92
-#define CSS_PROP_POSITION 93
-#define CSS_PROP_QUOTES 94
-#define CSS_PROP_RIGHT 95
-#define CSS_PROP_SIZE 96
-#define CSS_PROP_TABLE_LAYOUT 97
-#define CSS_PROP_TEXT_ALIGN 98
-#define CSS_PROP_TEXT_DECORATION 99
-#define CSS_PROP_TEXT_INDENT 100
-#define CSS_PROP_TEXT_LINE_THROUGH 101
-#define CSS_PROP_TEXT_LINE_THROUGH_COLOR 102
-#define CSS_PROP_TEXT_LINE_THROUGH_MODE 103
-#define CSS_PROP_TEXT_LINE_THROUGH_STYLE 104
-#define CSS_PROP_TEXT_LINE_THROUGH_WIDTH 105
-#define CSS_PROP_TEXT_OVERFLOW 106
-#define CSS_PROP_TEXT_OVERLINE 107
-#define CSS_PROP_TEXT_OVERLINE_COLOR 108
-#define CSS_PROP_TEXT_OVERLINE_MODE 109
-#define CSS_PROP_TEXT_OVERLINE_STYLE 110
-#define CSS_PROP_TEXT_OVERLINE_WIDTH 111
-#define CSS_PROP_TEXT_SHADOW 112
-#define CSS_PROP_TEXT_TRANSFORM 113
-#define CSS_PROP_TEXT_UNDERLINE 114
-#define CSS_PROP_TEXT_UNDERLINE_COLOR 115
-#define CSS_PROP_TEXT_UNDERLINE_MODE 116
-#define CSS_PROP_TEXT_UNDERLINE_STYLE 117
-#define CSS_PROP_TEXT_UNDERLINE_WIDTH 118
-#define CSS_PROP__APPLE_TEXT_SIZE_ADJUST 119
-#define CSS_PROP__APPLE_DASHBOARD_REGION 120
-#define CSS_PROP_TOP 121
-#define CSS_PROP_UNICODE_BIDI 122
-#define CSS_PROP__KHTML_USER_DRAG 123
-#define CSS_PROP__KHTML_USER_MODIFY 124
-#define CSS_PROP__KHTML_USER_SELECT 125
-#define CSS_PROP_VERTICAL_ALIGN 126
-#define CSS_PROP_VISIBILITY 127
-#define CSS_PROP_WHITE_SPACE 128
-#define CSS_PROP_WIDOWS 129
-#define CSS_PROP_WIDTH 130
-#define CSS_PROP_WORD_SPACING 131
-#define CSS_PROP_Z_INDEX 132
-#define CSS_PROP_BACKGROUND 133
-#define CSS_PROP_BORDER 134
-#define CSS_PROP_BORDER_COLOR 135
-#define CSS_PROP_BORDER_STYLE 136
-#define CSS_PROP_BORDER_TOP 137
-#define CSS_PROP_BORDER_RIGHT 138
-#define CSS_PROP_BORDER_BOTTOM 139
-#define CSS_PROP_BORDER_LEFT 140
-#define CSS_PROP_BORDER_WIDTH 141
-#define CSS_PROP_FONT 142
-#define CSS_PROP_LIST_STYLE 143
-#define CSS_PROP_MARGIN 144
-#define CSS_PROP_OUTLINE 145
-#define CSS_PROP_PADDING 146
-#define CSS_PROP_SCROLLBAR_FACE_COLOR 147
-#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 148
-#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 149
-#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 150
-#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 151
-#define CSS_PROP_SCROLLBAR_TRACK_COLOR 152
-#define CSS_PROP_SCROLLBAR_ARROW_COLOR 153
-#define CSS_PROP__KHTML_FLOW_MODE 154
+#define CSS_PROP__KHTML_MARGIN_START 68
+#define CSS_PROP__KHTML_MARQUEE 69
+#define CSS_PROP__KHTML_MARQUEE_DIRECTION 70
+#define CSS_PROP__KHTML_MARQUEE_INCREMENT 71
+#define CSS_PROP__KHTML_MARQUEE_REPETITION 72
+#define CSS_PROP__KHTML_MARQUEE_SPEED 73
+#define CSS_PROP__KHTML_MARQUEE_STYLE 74
+#define CSS_PROP_MAX_HEIGHT 75
+#define CSS_PROP_MAX_WIDTH 76
+#define CSS_PROP_MIN_HEIGHT 77
+#define CSS_PROP_MIN_WIDTH 78
+#define CSS_PROP_OPACITY 79
+#define CSS_PROP_ORPHANS 80
+#define CSS_PROP_OUTLINE_COLOR 81
+#define CSS_PROP_OUTLINE_OFFSET 82
+#define CSS_PROP_OUTLINE_STYLE 83
+#define CSS_PROP_OUTLINE_WIDTH 84
+#define CSS_PROP_OVERFLOW 85
+#define CSS_PROP_PADDING_TOP 86
+#define CSS_PROP_PADDING_RIGHT 87
+#define CSS_PROP_PADDING_BOTTOM 88
+#define CSS_PROP_PADDING_LEFT 89
+#define CSS_PROP__KHTML_PADDING_START 90
+#define CSS_PROP_PAGE 91
+#define CSS_PROP_PAGE_BREAK_AFTER 92
+#define CSS_PROP_PAGE_BREAK_BEFORE 93
+#define CSS_PROP_PAGE_BREAK_INSIDE 94
+#define CSS_PROP_POSITION 95
+#define CSS_PROP_QUOTES 96
+#define CSS_PROP_RIGHT 97
+#define CSS_PROP_SIZE 98
+#define CSS_PROP_TABLE_LAYOUT 99
+#define CSS_PROP_TEXT_ALIGN 100
+#define CSS_PROP_TEXT_DECORATION 101
+#define CSS_PROP_TEXT_INDENT 102
+#define CSS_PROP_TEXT_LINE_THROUGH 103
+#define CSS_PROP_TEXT_LINE_THROUGH_COLOR 104
+#define CSS_PROP_TEXT_LINE_THROUGH_MODE 105
+#define CSS_PROP_TEXT_LINE_THROUGH_STYLE 106
+#define CSS_PROP_TEXT_LINE_THROUGH_WIDTH 107
+#define CSS_PROP_TEXT_OVERFLOW 108
+#define CSS_PROP_TEXT_OVERLINE 109
+#define CSS_PROP_TEXT_OVERLINE_COLOR 110
+#define CSS_PROP_TEXT_OVERLINE_MODE 111
+#define CSS_PROP_TEXT_OVERLINE_STYLE 112
+#define CSS_PROP_TEXT_OVERLINE_WIDTH 113
+#define CSS_PROP_TEXT_SHADOW 114
+#define CSS_PROP_TEXT_TRANSFORM 115
+#define CSS_PROP_TEXT_UNDERLINE 116
+#define CSS_PROP_TEXT_UNDERLINE_COLOR 117
+#define CSS_PROP_TEXT_UNDERLINE_MODE 118
+#define CSS_PROP_TEXT_UNDERLINE_STYLE 119
+#define CSS_PROP_TEXT_UNDERLINE_WIDTH 120
+#define CSS_PROP__APPLE_TEXT_SIZE_ADJUST 121
+#define CSS_PROP__APPLE_DASHBOARD_REGION 122
+#define CSS_PROP_TOP 123
+#define CSS_PROP_UNICODE_BIDI 124
+#define CSS_PROP__KHTML_USER_DRAG 125
+#define CSS_PROP__KHTML_USER_MODIFY 126
+#define CSS_PROP__KHTML_USER_SELECT 127
+#define CSS_PROP_VERTICAL_ALIGN 128
+#define CSS_PROP_VISIBILITY 129
+#define CSS_PROP_WHITE_SPACE 130
+#define CSS_PROP_WIDOWS 131
+#define CSS_PROP_WIDTH 132
+#define CSS_PROP_WORD_SPACING 133
+#define CSS_PROP_Z_INDEX 134
+#define CSS_PROP_BACKGROUND 135
+#define CSS_PROP_BORDER 136
+#define CSS_PROP_BORDER_COLOR 137
+#define CSS_PROP_BORDER_STYLE 138
+#define CSS_PROP_BORDER_TOP 139
+#define CSS_PROP_BORDER_RIGHT 140
+#define CSS_PROP_BORDER_BOTTOM 141
+#define CSS_PROP_BORDER_LEFT 142
+#define CSS_PROP_BORDER_WIDTH 143
+#define CSS_PROP_FONT 144
+#define CSS_PROP_LIST_STYLE 145
+#define CSS_PROP_MARGIN 146
+#define CSS_PROP_OUTLINE 147
+#define CSS_PROP_PADDING 148
+#define CSS_PROP_SCROLLBAR_FACE_COLOR 149
+#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 150
+#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 151
+#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 152
+#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 153
+#define CSS_PROP_SCROLLBAR_TRACK_COLOR 154
+#define CSS_PROP_SCROLLBAR_ARROW_COLOR 155
+#define CSS_PROP__KHTML_FLOW_MODE 156
 
 #define CSS_PROP_MAX CSS_PROP_Z_INDEX
-#define CSS_PROP_TOTAL 155
+#define CSS_PROP_TOTAL 157
 #endif
 
index e1288b8719857b422a7919272f39d43ebfa6dc33..a1258048fdc6e8f0ace6a4af3d0254b927673288 100644 (file)
@@ -79,6 +79,7 @@ margin-left
 -khtml-margin-collapse
 -khtml-margin-top-collapse
 -khtml-margin-bottom-collapse
+-khtml-margin-start
 -khtml-marquee
 -khtml-marquee-direction
 -khtml-marquee-increment
@@ -100,6 +101,7 @@ padding-top
 padding-right
 padding-bottom
 padding-left
+-khtml-padding-start
 page
 page-break-after
 page-break-before
index 09c77bc2ec1ebb3e8f408dd8dee7b5d6e0c24eb1..63394b6a8ceca3dd2249663e31faf89ffb421aae 100644 (file)
@@ -1662,6 +1662,7 @@ void CSSStyleSelector::applyDeclarations(bool applyFirst, bool isImportant,
                         case CSS_PROP_BACKGROUND:
                         case CSS_PROP_BACKGROUND_IMAGE:
                         case CSS_PROP_COLOR:
+                        case CSS_PROP_DIRECTION:
                         case CSS_PROP_DISPLAY:
                         case CSS_PROP_FONT:
                         case CSS_PROP_FONT_SIZE:
@@ -1702,6 +1703,12 @@ void CSSStyleSelector::applyProperty( int id, DOM::CSSValueImpl *value )
     bool isInitial = (value->cssValueType() == CSSValue::CSS_INITIAL) ||
                      (!parentNode && value->cssValueType() == CSSValue::CSS_INHERIT);
 
+    // These properties are used to set the correct margins/padding on RTL lists.
+    if (id == CSS_PROP__KHTML_MARGIN_START)
+        id = style->direction() == LTR ? CSS_PROP_MARGIN_LEFT : CSS_PROP_MARGIN_RIGHT;
+    else if (id == CSS_PROP__KHTML_PADDING_START)
+        id = style->direction() == LTR ? CSS_PROP_PADDING_LEFT : CSS_PROP_PADDING_RIGHT;
+
     // 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.
index b8302c893207f276791b0cb7331bc69d03bd08c4..0aa3edbd7cfdfb664a96649fb750309bd971910a 100644 (file)
@@ -219,14 +219,14 @@ ul, menu, dir {
     display: block;
     list-style-type: disc;
     margin: 1__qem 0 1em 0;
-    padding-left: 40px /* FIXME: For RTL, we need to implement padding-start */
+    -khtml-padding-start: 40px
 }
 
 ol {
     display: block;
     list-style-type: decimal;
     margin: 1__qem 0 1em 0;
-    padding-left: 40px /* FIXME: For RTL, we need to implement padding-start */
+    -khtml-padding-start: 40px
 }
 
 li {
@@ -243,7 +243,7 @@ ol ol ul, ol ul ul, ul ol ul, ul ul ul {
 
 dd {
     display: block;
-    margin-left: 40px /* FIXME: For RTL, we need to implement margin-start */
+    -khtml-margin-start: 40px
 }
 
 dl {
index af3a8972254c1afcdee30e90f39efdf474c0f3d6..ff2f3ac428ffd32cd306dd9dffcc3988db95b758 100644 (file)
@@ -354,8 +354,13 @@ const QChar &BidiIterator::current() const
 
 inline QChar::Direction BidiIterator::direction() const
 {
-    if(!obj || !obj->isText() ) return QChar::DirON;
-    
+    if (!obj)
+        return QChar::DirON;
+    if (obj->isListMarker())
+        return obj->style()->direction() == LTR ? QChar::DirL : QChar::DirR;
+    if (!obj->isText())
+        return QChar::DirON;
+
     RenderText *renderTxt = static_cast<RenderText *>( obj );
     if ( pos >= renderTxt->stringLength() )
         return QChar::DirON;
index a74df2c657cc47bb88c248edcd87242c08674ae8..060f3033f1252ae86fb3d3cb84fa0ce4ea5a3203 100644 (file)
@@ -39,6 +39,8 @@
 using DOM::DocumentImpl;
 using namespace khtml;
 
+const int cMarkerPadding = 7;
+
 static QString toRoman( int number, bool upper )
 {
     QString roman;
@@ -287,23 +289,17 @@ QRect RenderListItem::getAbsoluteRepaintRect()
         // This can be a sloppy and imprecise offset as long as it's always too big.
         int pixHeight = style()->htmlFont().getFontDef().computedPixelSize();
         int offset = pixHeight*2/3;
+        bool haveImage = m_marker->listImage() && !m_marker->listImage()->isErrorImage();
+        if (haveImage)
+            offset = m_marker->listImage()->pixmap().width();
+        int bulletWidth = offset/2;
+        if (offset%2)
+            bulletWidth++;
         int xoff = 0;
         if (style()->direction() == LTR)
-            xoff = -7 - offset;
+            xoff = -cMarkerPadding - offset;
         else
-            xoff = offset;
-
-        if (m_marker->listImage() && !m_marker->listImage()->isErrorImage()) {
-            // For OUTSIDE bullets shrink back to only a 0.3em margin. 0.67 em is too
-            // much.  This brings the margin back to MacIE/Gecko/WinIE levels.
-            // For LTR don't forget to add in the width of the image to the offset as
-            // well (you are moving the image left, so you have to also add in the width
-            // of the image's border box as well). -dwh
-            if (style()->direction() == LTR)
-                xoff -= m_marker->listImage()->pixmap().width() - pixHeight*1/3;
-            else
-                xoff -= pixHeight*1/3;
-        }
+            xoff = cMarkerPadding + (haveImage ? 0 : (offset - bulletWidth));
 
         if (xoff < 0) {
             result.setX(result.x() + xoff);
@@ -371,8 +367,7 @@ void RenderListMarker::paint(PaintInfo& i, int _tx, int _ty)
     QPainter* p = i.p;
     p->setFont(style()->font());
     const QFontMetrics fm = p->fontMetrics();
-    int offset = fm.ascent()*2/3;
-
+    
     // The marker needs to adjust its tx, for the case where it's an outside marker.
     RenderObject* listItem = 0;
     int leftLineOffset = 0;
@@ -422,31 +417,28 @@ void RenderListMarker::paint(PaintInfo& i, int _tx, int _ty)
         }
     }
     
-
+    int offset = fm.ascent()*2/3;
+    bool haveImage = m_listImage && !m_listImage->isErrorImage();
+    if (haveImage)
+        offset = m_listImage->pixmap().width();
+    
     int xoff = 0;
     int yoff = fm.ascent() - offset;
 
-    if (!isInside())
+    int bulletWidth = offset/2;
+    if (offset%2)
+        bulletWidth++;
+    if (!isInside()) {
         if (listItem->style()->direction() == LTR)
-            xoff = -7 - offset;
-        else 
-            xoff = offset;
-        
-            
-    if ( m_listImage && !m_listImage->isErrorImage()) {
-        // For OUTSIDE bullets shrink back to only a 0.3em margin. 0.67 em is too
-        // much.  This brings the margin back to MacIE/Gecko/WinIE levels.  
-        // For LTR don't forget to add in the width of the image to the offset as
-        // well (you are moving the image left, so you have to also add in the width
-        // of the image's border box as well). -dwh
-        if (!isInside()) {
-            if (style()->direction() == LTR)
-                xoff -= m_listImage->pixmap().width() - fm.ascent()*1/3;
-            else
-                xoff -= fm.ascent()*1/3;
-        }
-        
-        p->drawPixmap( QPoint( _tx + xoff, _ty ), m_listImage->pixmap());
+            xoff = -cMarkerPadding - offset;
+        else
+            xoff = cMarkerPadding + (haveImage ? 0 : (offset - bulletWidth));
+    }
+    else if (style()->direction() == RTL)
+        xoff += haveImage ? cMarkerPadding : (m_width - bulletWidth);
+    
+    if (m_listImage && !m_listImage->isErrorImage()) {
+        p->drawPixmap(QPoint(_tx + xoff, _ty), m_listImage->pixmap());
         return;
     }
 
@@ -460,16 +452,16 @@ void RenderListMarker::paint(PaintInfo& i, int _tx, int _ty)
 
     switch(style()->listStyleType()) {
     case DISC:
-        p->setBrush( color );
-        p->drawEllipse( _tx + xoff, _ty + (3 * yoff)/2, (offset>>1)+1, (offset>>1)+1 );
+        p->setBrush(color);
+        p->drawEllipse(_tx + xoff, _ty + (3 * yoff)/2, bulletWidth, bulletWidth);
         return;
     case CIRCLE:
-        p->setBrush( Qt::NoBrush );
-        p->drawEllipse( _tx + xoff, _ty + (3 * yoff)/2, (offset>>1)+1, (offset>>1)+1 );
+        p->setBrush(Qt::NoBrush);
+        p->drawEllipse(_tx + xoff, _ty + (3 * yoff)/2, bulletWidth, bulletWidth);
         return;
     case SQUARE:
-        p->setBrush( color );
-        p->drawRect( _tx + xoff, _ty + (3 * yoff)/2, (offset>>1)+1, (offset>>1)+1 );
+        p->setBrush(color);
+        p->drawRect(_tx + xoff, _ty + (3 * yoff)/2, bulletWidth, bulletWidth);
         return;
     case LNONE:
         return;
@@ -483,16 +475,29 @@ void RenderListMarker::paint(PaintInfo& i, int _tx, int _ty)
 #else
                    //_ty += fm.ascent() - fm.height()/2 + 1;
 #endif
+
             if (isInside()) {
-               if( style()->direction() == LTR)
+               if( style()->direction() == LTR) {
                     p->drawText(_tx, _ty, 0, 0, Qt::AlignLeft|Qt::DontClip, m_item);
-               else
-                   p->drawText(_tx, _ty, 0, 0, Qt::AlignRight|Qt::DontClip, m_item);
+                    p->drawText(_tx + fm.width(m_item), _ty, 0, 0, Qt::AlignLeft|Qt::DontClip, 
+                                QString::fromLatin1(". "));
+                }
+               else {
+                    const QString& punct(QString::fromLatin1(" ."));
+                    p->drawText(_tx, _ty, 0, 0, Qt::AlignLeft|Qt::DontClip, punct);
+                   p->drawText(_tx + fm.width(punct), _ty, 0, 0, Qt::AlignLeft|Qt::DontClip, m_item);
+                }
             } else {
-                if(style()->direction() == LTR)
-                   p->drawText(_tx-offset/2, _ty, 0, 0, Qt::AlignRight|Qt::DontClip, m_item);
-               else
-                   p->drawText(_tx+offset/2, _ty, 0, 0, Qt::AlignLeft|Qt::DontClip, m_item);
+                if (style()->direction() == LTR) {
+                    const QString& punct(QString::fromLatin1(". "));
+                    p->drawText(_tx-offset/2, _ty, 0, 0, Qt::AlignRight|Qt::DontClip, punct);
+                    p->drawText(_tx-offset/2-fm.width(punct), _ty, 0, 0, Qt::AlignRight|Qt::DontClip, m_item);
+                }
+               else {
+                    const QString& punct(QString::fromLatin1(" ."));
+                   p->drawText(_tx+offset/2, _ty, 0, 0, Qt::AlignLeft|Qt::DontClip, punct);
+                    p->drawText(_tx+offset/2+fm.width(punct), _ty, 0, 0, Qt::AlignLeft|Qt::DontClip, m_item);
+                }
             }
         }
     }
@@ -526,9 +531,9 @@ void RenderListMarker::calcMinMaxWidth()
 
     m_width = 0;
 
-    if(m_listImage) {
+    if (m_listImage) {
         if (isInside())
-            m_width = m_listImage->pixmap().width() + 5;
+            m_width = m_listImage->pixmap().width() + cMarkerPadding;
         m_height = m_listImage->pixmap().height();
         m_minWidth = m_maxWidth = m_width;
         setMinMaxKnown();
@@ -546,9 +551,8 @@ void RenderListMarker::calcMinMaxWidth()
     case DISC:
     case CIRCLE:
     case SQUARE:
-        if (isInside()) {
-            m_width = m_height; //fm.ascent();
-        }
+        if (isInside())
+            m_width = m_height;
        goto end;
     case ARMENIAN:
     case GEORGIAN:
@@ -596,10 +600,8 @@ void RenderListMarker::calcMinMaxWidth()
         break;
     }
 
-    m_item += QString::fromLatin1(". ");
-
     if (isInside())
-        m_width = fm.width(m_item);
+        m_width = fm.width(m_item) + fm.width(QString::fromLatin1(". "));
 
 end:
 
@@ -616,11 +618,17 @@ void RenderListMarker::calcWidth()
 
 short RenderListMarker::lineHeight(bool, bool) const
 {
+    if (!m_listImage)
+        return m_listItem->lineHeight(false, true);
     return height();
 }
 
 short RenderListMarker::baselinePosition(bool, bool) const
 {
+    if (!m_listImage) {
+        const QFontMetrics &fm = style()->fontMetrics();
+        return fm.ascent() + (lineHeight(false) - fm.height())/2;
+    }
     return height();
 }