From d0abc1a165ce7130e802d892e1417617a99a3ba0 Mon Sep 17 00:00:00 2001 From: tpearson Date: Fri, 3 Sep 2010 17:11:27 +0000 Subject: [PATCH] Merge commit 1170303 from the Enterprise branch git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1171389 283d02a7-25f6-0310-bc7c-ecb5cbfe19da --- LAST_ENTERPRISE_SYNC | 2 +- khtml/css/cssparser.cpp | 7 + khtml/css/cssproperties.c | 387 ++++++++------- khtml/css/cssproperties.h | 57 +-- khtml/css/cssproperties.in | 1 + khtml/css/cssstyleselector.cpp | 27 ++ khtml/css/cssvalues.c | 751 +++++++++++++++--------------- khtml/css/cssvalues.h | 115 ++--- khtml/css/cssvalues.in | 5 + khtml/rendering/bidi.cpp | 279 ++++++----- khtml/rendering/bidi.h | 66 +++ khtml/rendering/render_block.cpp | 68 --- khtml/rendering/render_line.cpp | 4 +- khtml/rendering/render_object.cpp | 5 + khtml/rendering/render_object.h | 1 + khtml/rendering/render_style.cpp | 5 +- khtml/rendering/render_style.h | 7 + 17 files changed, 911 insertions(+), 876 deletions(-) diff --git a/LAST_ENTERPRISE_SYNC b/LAST_ENTERPRISE_SYNC index 2e52917a0..75d744c44 100644 --- a/LAST_ENTERPRISE_SYNC +++ b/LAST_ENTERPRISE_SYNC @@ -1 +1 @@ -Revision 1170137 +Revision 1170313 diff --git a/khtml/css/cssparser.cpp b/khtml/css/cssparser.cpp index 1bff45c51..23eeb69a9 100644 --- a/khtml/css/cssparser.cpp +++ b/khtml/css/cssparser.cpp @@ -1076,6 +1076,13 @@ bool CSSParser::parseValue( int propId, bool important ) CSS_PROP_LIST_STYLE_IMAGE }; return parseShortHand(propId, properties, 3, important); } + case CSS_PROP_WORD_WRAP: + { + // normal | break-word + if ( id == CSS_VAL_NORMAL || id == CSS_VAL_BREAK_WORD ) + valid_primitive = true; + break; + } default: // #ifdef CSS_DEBUG // kdDebug( 6080 ) << "illegal or CSS2 Aural property: " << val << endl; diff --git a/khtml/css/cssproperties.c b/khtml/css/cssproperties.c index df4563a56..c86f2d326 100644 --- a/khtml/css/cssproperties.c +++ b/khtml/css/cssproperties.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.2 */ /* Command-line: gperf -a -L ANSI-C -E -C -c -o -t -k '*' -NfindProp -Hhash_prop -Wwordlist_prop -D -s 2 cssproperties.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -40,7 +40,7 @@ struct props { }; static const struct props * findProp (register const char *str, register unsigned int len); -/* maximum key range = 508, duplicates = 0 */ +/* maximum key range = 469, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -54,32 +54,32 @@ hash_prop (register const char *str, register unsigned int len) { static const unsigned short asso_values[] = { - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 0, 511, 511, 511, 511, - 511, 0, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 10, 0, 0, - 5, 5, 160, 0, 0, 0, 511, 15, 5, 0, - 25, 0, 0, 15, 0, 30, 0, 40, 5, 190, - 5, 135, 120, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511, 511, 511, 511, 511, - 511, 511, 511, 511, 511, 511 + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 0, 472, 472, 472, 472, + 472, 0, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 10, 0, 0, + 5, 5, 120, 0, 0, 0, 472, 15, 5, 0, + 25, 0, 0, 50, 0, 30, 0, 40, 0, 140, + 35, 180, 80, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472, 472, 472, 472, 472, + 472, 472, 472, 472, 472, 472 }; register int hval = len; @@ -193,11 +193,11 @@ findProp (register const char *str, register unsigned int len) { enum { - TOTAL_KEYWORDS = 128, + TOTAL_KEYWORDS = 129, MIN_WORD_LENGTH = 3, MAX_WORD_LENGTH = 32, MIN_HASH_VALUE = 3, - MAX_HASH_VALUE = 510 + MAX_HASH_VALUE = 471 }; static const struct props wordlist_prop[] = @@ -214,20 +214,18 @@ findProp (register const char *str, register unsigned int len) {"color", CSS_PROP_COLOR}, #line 58 "cssproperties.gperf" {"height", CSS_PROP_HEIGHT}, -#line 118 "cssproperties.gperf" +#line 119 "cssproperties.gperf" {"border", CSS_PROP_BORDER}, -#line 121 "cssproperties.gperf" - {"border-top", CSS_PROP_BORDER_TOP}, #line 122 "cssproperties.gperf" - {"border-right", CSS_PROP_BORDER_RIGHT}, + {"border-top", CSS_PROP_BORDER_TOP}, #line 123 "cssproperties.gperf" + {"border-right", CSS_PROP_BORDER_RIGHT}, +#line 124 "cssproperties.gperf" {"border-bottom", CSS_PROP_BORDER_BOTTOM}, #line 42 "cssproperties.gperf" {"clear", CSS_PROP_CLEAR}, -#line 119 "cssproperties.gperf" +#line 120 "cssproperties.gperf" {"border-color", CSS_PROP_BORDER_COLOR}, -#line 76 "cssproperties.gperf" - {"max-height", CSS_PROP_MAX_HEIGHT}, #line 28 "cssproperties.gperf" {"border-top-color", CSS_PROP_BORDER_TOP_COLOR}, #line 29 "cssproperties.gperf" @@ -236,7 +234,7 @@ findProp (register const char *str, register unsigned int len) {"border-bottom-color", CSS_PROP_BORDER_BOTTOM_COLOR}, #line 78 "cssproperties.gperf" {"min-height", CSS_PROP_MIN_HEIGHT}, -#line 129 "cssproperties.gperf" +#line 130 "cssproperties.gperf" {"margin", CSS_PROP_MARGIN}, #line 49 "cssproperties.gperf" {"direction", CSS_PROP_DIRECTION}, @@ -248,7 +246,7 @@ findProp (register const char *str, register unsigned int len) {"margin-bottom", CSS_PROP_MARGIN_BOTTOM}, #line 61 "cssproperties.gperf" {"line-height", CSS_PROP_LINE_HEIGHT}, -#line 131 "cssproperties.gperf" +#line 132 "cssproperties.gperf" {"padding", CSS_PROP_PADDING}, #line 89 "cssproperties.gperf" {"padding-top", CSS_PROP_PADDING_TOP}, @@ -256,53 +254,53 @@ findProp (register const char *str, register unsigned int len) {"padding-right", CSS_PROP_PADDING_RIGHT}, #line 91 "cssproperties.gperf" {"padding-bottom", CSS_PROP_PADDING_BOTTOM}, -#line 102 "cssproperties.gperf" - {"text-align", CSS_PROP_TEXT_ALIGN}, +#line 76 "cssproperties.gperf" + {"max-height", CSS_PROP_MAX_HEIGHT}, #line 45 "cssproperties.gperf" {"content", CSS_PROP_CONTENT}, #line 97 "cssproperties.gperf" {"position", CSS_PROP_POSITION}, -#line 103 "cssproperties.gperf" - {"text-decoration", CSS_PROP_TEXT_DECORATION}, #line 80 "cssproperties.gperf" {"orphans", CSS_PROP_ORPHANS}, -#line 48 "cssproperties.gperf" - {"cursor", CSS_PROP_CURSOR}, #line 110 "cssproperties.gperf" {"vertical-align", CSS_PROP_VERTICAL_ALIGN}, +#line 48 "cssproperties.gperf" + {"cursor", CSS_PROP_CURSOR}, #line 24 "cssproperties.gperf" {"border-collapse", CSS_PROP_BORDER_COLLAPSE}, -#line 104 "cssproperties.gperf" - {"text-indent", CSS_PROP_TEXT_INDENT}, -#line 130 "cssproperties.gperf" +#line 131 "cssproperties.gperf" {"outline", CSS_PROP_OUTLINE}, -#line 135 "cssproperties.gperf" +#line 136 "cssproperties.gperf" {"scrollbar-highlight-color", CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR}, #line 41 "cssproperties.gperf" {"caption-side", CSS_PROP_CAPTION_SIDE}, -#line 136 "cssproperties.gperf" +#line 137 "cssproperties.gperf" {"scrollbar-3dlight-color", CSS_PROP_SCROLLBAR_3DLIGHT_COLOR}, #line 25 "cssproperties.gperf" {"border-spacing", CSS_PROP_BORDER_SPACING}, +#line 102 "cssproperties.gperf" + {"text-align", CSS_PROP_TEXT_ALIGN}, #line 109 "cssproperties.gperf" {"unicode-bidi", CSS_PROP_UNICODE_BIDI}, #line 82 "cssproperties.gperf" {"outline-color", CSS_PROP_OUTLINE_COLOR}, #line 60 "cssproperties.gperf" {"letter-spacing", CSS_PROP_LETTER_SPACING}, -#line 98 "cssproperties.gperf" - {"quotes", CSS_PROP_QUOTES}, -#line 138 "cssproperties.gperf" +#line 103 "cssproperties.gperf" + {"text-decoration", CSS_PROP_TEXT_DECORATION}, +#line 139 "cssproperties.gperf" {"scrollbar-track-color", CSS_PROP_SCROLLBAR_TRACK_COLOR}, -#line 117 "cssproperties.gperf" +#line 118 "cssproperties.gperf" {"background", CSS_PROP_BACKGROUND}, -#line 70 "cssproperties.gperf" - {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE}, +#line 104 "cssproperties.gperf" + {"text-indent", CSS_PROP_TEXT_INDENT}, #line 69 "cssproperties.gperf" {"-khtml-margin-start", CSS_PROP__KHTML_MARGIN_START}, #line 14 "cssproperties.gperf" {"background-color", CSS_PROP_BACKGROUND_COLOR}, -#line 132 "cssproperties.gperf" +#line 100 "cssproperties.gperf" + {"size", CSS_PROP_SIZE}, +#line 133 "cssproperties.gperf" {"scrollbar-base-color", CSS_PROP_SCROLLBAR_BASE_COLOR}, #line 47 "cssproperties.gperf" {"counter-reset", CSS_PROP_COUNTER_RESET}, @@ -312,208 +310,208 @@ findProp (register const char *str, register unsigned int len) {"background-image", CSS_PROP_BACKGROUND_IMAGE}, #line 96 "cssproperties.gperf" {"page-break-inside", CSS_PROP_PAGE_BREAK_INSIDE}, +#line 98 "cssproperties.gperf" + {"quotes", CSS_PROP_QUOTES}, #line 16 "cssproperties.gperf" {"background-repeat", CSS_PROP_BACKGROUND_REPEAT}, -#line 21 "cssproperties.gperf" - {"-khtml-background-clip", CSS_PROP__KHTML_BACKGROUND_CLIP}, -#line 46 "cssproperties.gperf" - {"counter-increment", CSS_PROP_COUNTER_INCREMENT}, -#line 27 "cssproperties.gperf" - {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING}, -#line 81 "cssproperties.gperf" - {"opacity", CSS_PROP_OPACITY}, -#line 71 "cssproperties.gperf" - {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION}, -#line 73 "cssproperties.gperf" - {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION}, -#line 100 "cssproperties.gperf" - {"size", CSS_PROP_SIZE}, -#line 74 "cssproperties.gperf" - {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED}, -#line 22 "cssproperties.gperf" - {"-khtml-background-origin", CSS_PROP__KHTML_BACKGROUND_ORIGIN}, -#line 17 "cssproperties.gperf" - {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT}, -#line 116 "cssproperties.gperf" - {"z-index", CSS_PROP_Z_INDEX}, -#line 18 "cssproperties.gperf" - {"background-position", CSS_PROP_BACKGROUND_POSITION}, #line 59 "cssproperties.gperf" {"left", CSS_PROP_LEFT}, -#line 19 "cssproperties.gperf" - {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X}, -#line 141 "cssproperties.gperf" - {"-khtml-user-input", CSS_PROP__KHTML_USER_INPUT}, -#line 72 "cssproperties.gperf" - {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT}, #line 52 "cssproperties.gperf" {"float", CSS_PROP_FLOAT}, -#line 111 "cssproperties.gperf" - {"visibility", CSS_PROP_VISIBILITY}, -#line 127 "cssproperties.gperf" +#line 21 "cssproperties.gperf" + {"-khtml-background-clip", CSS_PROP__KHTML_BACKGROUND_CLIP}, +#line 70 "cssproperties.gperf" + {"-khtml-marquee", CSS_PROP__KHTML_MARQUEE}, +#line 27 "cssproperties.gperf" + {"-khtml-border-vertical-spacing", CSS_PROP__KHTML_BORDER_VERTICAL_SPACING}, +#line 46 "cssproperties.gperf" + {"counter-increment", CSS_PROP_COUNTER_INCREMENT}, +#line 128 "cssproperties.gperf" {"font", CSS_PROP_FONT}, -#line 126 "cssproperties.gperf" - {"box-sizing", CSS_PROP_BOX_SIZING}, -#line 124 "cssproperties.gperf" - {"border-left", CSS_PROP_BORDER_LEFT}, -#line 50 "cssproperties.gperf" - {"display", CSS_PROP_DISPLAY}, -#line 51 "cssproperties.gperf" - {"empty-cells", CSS_PROP_EMPTY_CELLS}, -#line 120 "cssproperties.gperf" - {"border-style", CSS_PROP_BORDER_STYLE}, #line 114 "cssproperties.gperf" {"width", CSS_PROP_WIDTH}, -#line 32 "cssproperties.gperf" - {"border-top-style", CSS_PROP_BORDER_TOP_STYLE}, +#line 125 "cssproperties.gperf" + {"border-left", CSS_PROP_BORDER_LEFT}, +#line 117 "cssproperties.gperf" + {"z-index", CSS_PROP_Z_INDEX}, #line 31 "cssproperties.gperf" {"border-left-color", CSS_PROP_BORDER_LEFT_COLOR}, -#line 33 "cssproperties.gperf" - {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE}, -#line 34 "cssproperties.gperf" - {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE}, -#line 68 "cssproperties.gperf" - {"margin-left", CSS_PROP_MARGIN_LEFT}, -#line 125 "cssproperties.gperf" +#line 22 "cssproperties.gperf" + {"-khtml-background-origin", CSS_PROP__KHTML_BACKGROUND_ORIGIN}, +#line 17 "cssproperties.gperf" + {"background-attachment", CSS_PROP_BACKGROUND_ATTACHMENT}, +#line 126 "cssproperties.gperf" {"border-width", CSS_PROP_BORDER_WIDTH}, -#line 77 "cssproperties.gperf" - {"max-width", CSS_PROP_MAX_WIDTH}, -#line 128 "cssproperties.gperf" - {"list-style", CSS_PROP_LIST_STYLE}, +#line 18 "cssproperties.gperf" + {"background-position", CSS_PROP_BACKGROUND_POSITION}, #line 36 "cssproperties.gperf" {"border-top-width", CSS_PROP_BORDER_TOP_WIDTH}, -#line 101 "cssproperties.gperf" - {"table-layout", CSS_PROP_TABLE_LAYOUT}, #line 37 "cssproperties.gperf" {"border-right-width", CSS_PROP_BORDER_RIGHT_WIDTH}, #line 38 "cssproperties.gperf" {"border-bottom-width", CSS_PROP_BORDER_BOTTOM_WIDTH}, -#line 92 "cssproperties.gperf" - {"padding-left", CSS_PROP_PADDING_LEFT}, +#line 68 "cssproperties.gperf" + {"margin-left", CSS_PROP_MARGIN_LEFT}, +#line 142 "cssproperties.gperf" + {"-khtml-user-input", CSS_PROP__KHTML_USER_INPUT}, #line 79 "cssproperties.gperf" {"min-width", CSS_PROP_MIN_WIDTH}, +#line 127 "cssproperties.gperf" + {"box-sizing", CSS_PROP_BOX_SIZING}, +#line 92 "cssproperties.gperf" + {"padding-left", CSS_PROP_PADDING_LEFT}, +#line 71 "cssproperties.gperf" + {"-khtml-marquee-direction", CSS_PROP__KHTML_MARQUEE_DIRECTION}, +#line 73 "cssproperties.gperf" + {"-khtml-marquee-repetition", CSS_PROP__KHTML_MARQUEE_REPETITION}, #line 95 "cssproperties.gperf" {"page-break-before", CSS_PROP_PAGE_BREAK_BEFORE}, +#line 74 "cssproperties.gperf" + {"-khtml-marquee-speed", CSS_PROP__KHTML_MARQUEE_SPEED}, #line 94 "cssproperties.gperf" {"page-break-after", CSS_PROP_PAGE_BREAK_AFTER}, -#line 62 "cssproperties.gperf" - {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE}, +#line 81 "cssproperties.gperf" + {"opacity", CSS_PROP_OPACITY}, +#line 77 "cssproperties.gperf" + {"max-width", CSS_PROP_MAX_WIDTH}, +#line 112 "cssproperties.gperf" + {"white-space", CSS_PROP_WHITE_SPACE}, #line 56 "cssproperties.gperf" {"font-variant", CSS_PROP_FONT_VARIANT}, -#line 107 "cssproperties.gperf" - {"text-transform", CSS_PROP_TEXT_TRANSFORM}, -#line 133 "cssproperties.gperf" +#line 19 "cssproperties.gperf" + {"background-position-x", CSS_PROP_BACKGROUND_POSITION_X}, +#line 134 "cssproperties.gperf" {"scrollbar-face-color", CSS_PROP_SCROLLBAR_FACE_COLOR}, -#line 112 "cssproperties.gperf" - {"white-space", CSS_PROP_WHITE_SPACE}, -#line 106 "cssproperties.gperf" - {"text-shadow", CSS_PROP_TEXT_SHADOW}, -#line 84 "cssproperties.gperf" - {"outline-style", CSS_PROP_OUTLINE_STYLE}, -#line 115 "cssproperties.gperf" +#line 72 "cssproperties.gperf" + {"-khtml-marquee-increment", CSS_PROP__KHTML_MARQUEE_INCREMENT}, +#line 116 "cssproperties.gperf" {"word-spacing", CSS_PROP_WORD_SPACING}, -#line 139 "cssproperties.gperf" +#line 111 "cssproperties.gperf" + {"visibility", CSS_PROP_VISIBILITY}, +#line 140 "cssproperties.gperf" {"scrollbar-arrow-color", CSS_PROP_SCROLLBAR_ARROW_COLOR}, #line 85 "cssproperties.gperf" {"outline-width", CSS_PROP_OUTLINE_WIDTH}, -#line 63 "cssproperties.gperf" - {"list-style-position", CSS_PROP_LIST_STYLE_POSITION}, +#line 106 "cssproperties.gperf" + {"text-shadow", CSS_PROP_TEXT_SHADOW}, +#line 50 "cssproperties.gperf" + {"display", CSS_PROP_DISPLAY}, +#line 107 "cssproperties.gperf" + {"text-transform", CSS_PROP_TEXT_TRANSFORM}, +#line 51 "cssproperties.gperf" + {"empty-cells", CSS_PROP_EMPTY_CELLS}, +#line 121 "cssproperties.gperf" + {"border-style", CSS_PROP_BORDER_STYLE}, +#line 32 "cssproperties.gperf" + {"border-top-style", CSS_PROP_BORDER_TOP_STYLE}, #line 26 "cssproperties.gperf" {"-khtml-border-horizontal-spacing", CSS_PROP__KHTML_BORDER_HORIZONTAL_SPACING}, -#line 75 "cssproperties.gperf" - {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE}, +#line 33 "cssproperties.gperf" + {"border-right-style", CSS_PROP_BORDER_RIGHT_STYLE}, +#line 34 "cssproperties.gperf" + {"border-bottom-style", CSS_PROP_BORDER_BOTTOM_STYLE}, #line 23 "cssproperties.gperf" {"-khtml-background-size", CSS_PROP__KHTML_BACKGROUND_SIZE}, -#line 20 "cssproperties.gperf" - {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y}, -#line 134 "cssproperties.gperf" +#line 135 "cssproperties.gperf" {"scrollbar-shadow-color", CSS_PROP_SCROLLBAR_SHADOW_COLOR}, -#line 137 "cssproperties.gperf" - {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR}, +#line 129 "cssproperties.gperf" + {"list-style", CSS_PROP_LIST_STYLE}, +#line 101 "cssproperties.gperf" + {"table-layout", CSS_PROP_TABLE_LAYOUT}, #line 54 "cssproperties.gperf" {"font-size", CSS_PROP_FONT_SIZE}, -#line 64 "cssproperties.gperf" - {"list-style-type", CSS_PROP_LIST_STYLE_TYPE}, -#line 55 "cssproperties.gperf" - {"font-style", CSS_PROP_FONT_STYLE}, -#line 35 "cssproperties.gperf" - {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE}, #line 86 "cssproperties.gperf" {"overflow", CSS_PROP_OVERFLOW}, -#line 87 "cssproperties.gperf" - {"overflow-x", CSS_PROP_OVERFLOW_X}, -#line 105 "cssproperties.gperf" - {"text-overflow", CSS_PROP_TEXT_OVERFLOW}, +#line 62 "cssproperties.gperf" + {"list-style-image", CSS_PROP_LIST_STYLE_IMAGE}, +#line 138 "cssproperties.gperf" + {"scrollbar-darkshadow-color", CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR}, #line 57 "cssproperties.gperf" {"font-weight", CSS_PROP_FONT_WEIGHT}, #line 39 "cssproperties.gperf" {"border-left-width", CSS_PROP_BORDER_LEFT_WIDTH}, -#line 140 "cssproperties.gperf" +#line 115 "cssproperties.gperf" + {"word-wrap", CSS_PROP_WORD_WRAP}, +#line 84 "cssproperties.gperf" + {"outline-style", CSS_PROP_OUTLINE_STYLE}, +#line 141 "cssproperties.gperf" {"-khtml-flow-mode", CSS_PROP__KHTML_FLOW_MODE}, +#line 87 "cssproperties.gperf" + {"overflow-x", CSS_PROP_OVERFLOW_X}, #line 113 "cssproperties.gperf" {"widows", CSS_PROP_WIDOWS}, +#line 105 "cssproperties.gperf" + {"text-overflow", CSS_PROP_TEXT_OVERFLOW}, +#line 63 "cssproperties.gperf" + {"list-style-position", CSS_PROP_LIST_STYLE_POSITION}, +#line 20 "cssproperties.gperf" + {"background-position-y", CSS_PROP_BACKGROUND_POSITION_Y}, #line 83 "cssproperties.gperf" {"outline-offset", CSS_PROP_OUTLINE_OFFSET}, -#line 53 "cssproperties.gperf" - {"font-family", CSS_PROP_FONT_FAMILY}, +#line 75 "cssproperties.gperf" + {"-khtml-marquee-style", CSS_PROP__KHTML_MARQUEE_STYLE}, +#line 55 "cssproperties.gperf" + {"font-style", CSS_PROP_FONT_STYLE}, +#line 35 "cssproperties.gperf" + {"border-left-style", CSS_PROP_BORDER_LEFT_STYLE}, +#line 64 "cssproperties.gperf" + {"list-style-type", CSS_PROP_LIST_STYLE_TYPE}, #line 88 "cssproperties.gperf" - {"overflow-y", CSS_PROP_OVERFLOW_Y} + {"overflow-y", CSS_PROP_OVERFLOW_Y}, +#line 53 "cssproperties.gperf" + {"font-family", CSS_PROP_FONT_FAMILY} }; - static const signed char lookup[] = + static const short lookup[] = { -1, -1, -1, 0, -1, 1, 2, -1, -1, 3, 4, 5, -1, -1, -1, -1, 6, -1, -1, -1, 7, -1, 8, 9, -1, 10, -1, 11, -1, -1, - 12, 13, -1, 14, 15, -1, -1, -1, -1, -1, - 16, 17, -1, -1, 18, 19, -1, 20, 21, -1, - -1, 22, 23, -1, -1, -1, 24, -1, 25, 26, - 27, -1, 28, 29, -1, -1, -1, -1, -1, -1, - 30, -1, 31, -1, -1, -1, 32, -1, -1, 33, - 34, 35, 36, -1, -1, 37, -1, 38, 39, 40, - -1, -1, 41, 42, 43, -1, 44, -1, -1, -1, - -1, 45, -1, -1, -1, 46, -1, -1, -1, 47, - -1, -1, -1, -1, 48, -1, 49, -1, -1, -1, - 50, -1, -1, 51, -1, 52, 53, 54, -1, -1, - -1, -1, 55, -1, -1, -1, -1, -1, -1, -1, - -1, -1, 56, -1, -1, -1, -1, 57, -1, -1, - 58, -1, 59, -1, 60, 61, -1, -1, -1, 62, - 63, -1, -1, -1, 64, -1, 65, 66, -1, 67, - -1, -1, -1, -1, 68, -1, 69, 70, -1, 71, - 72, -1, -1, -1, -1, 73, -1, -1, -1, 74, - 75, 76, 77, -1, -1, -1, 78, 79, -1, -1, - 80, 81, 82, 83, 84, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 85, 86, -1, 87, - 88, 89, 90, 91, 92, -1, -1, 93, -1, 94, - -1, -1, 95, -1, -1, -1, 96, -1, -1, -1, - -1, 97, -1, -1, -1, -1, -1, 98, -1, 99, - 100, 101, -1, -1, -1, -1, 102, -1, -1, -1, - -1, -1, -1, 103, -1, -1, -1, -1, -1, -1, - -1, -1, 104, -1, -1, -1, 105, -1, -1, -1, - -1, -1, -1, 106, 107, -1, -1, 108, -1, -1, - 109, -1, 110, -1, -1, -1, -1, -1, -1, -1, + -1, 12, -1, 13, 14, -1, -1, -1, -1, -1, + 15, 16, -1, -1, 17, 18, -1, 19, 20, -1, + -1, 21, 22, -1, -1, -1, 23, -1, 24, 25, + 26, -1, 27, 28, -1, -1, -1, -1, -1, -1, + -1, -1, 29, -1, 30, -1, 31, -1, -1, -1, + 32, -1, 33, -1, -1, 34, -1, 35, 36, 37, + 38, -1, 39, 40, 41, -1, -1, -1, -1, -1, + 42, 43, -1, -1, -1, 44, -1, -1, -1, -1, + -1, 45, -1, -1, 46, -1, 47, -1, -1, 48, + 49, -1, -1, 50, -1, 51, 52, 53, -1, -1, + -1, 54, 55, -1, 56, -1, -1, -1, -1, -1, + 57, -1, 58, -1, 59, 60, -1, 61, -1, 62, + 63, 64, -1, -1, -1, -1, -1, 65, -1, -1, + -1, -1, 66, -1, 67, -1, 68, 69, -1, 70, + -1, 71, -1, 72, 73, -1, 74, 75, -1, 76, + 77, -1, -1, -1, -1, -1, -1, 78, -1, 79, + 80, -1, 81, -1, -1, 82, 83, 84, -1, 85, + -1, 86, 87, -1, -1, -1, 88, -1, -1, -1, + 89, -1, -1, -1, 90, -1, -1, -1, -1, -1, + -1, -1, 91, -1, -1, 92, 93, -1, -1, -1, + -1, -1, -1, 94, -1, -1, 95, 96, -1, 97, + -1, 98, 99, -1, -1, -1, 100, 101, 102, 103, + -1, -1, 104, -1, -1, -1, -1, -1, -1, -1, + -1, -1, 105, -1, -1, 106, -1, 107, -1, 108, + -1, -1, -1, -1, -1, -1, -1, -1, 109, -1, + -1, -1, -1, -1, -1, -1, 110, -1, -1, -1, -1, -1, -1, -1, -1, -1, 111, -1, -1, -1, - -1, -1, 112, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 112, 113, -1, 114, -1, -1, -1, 115, -1, + -1, 116, -1, -1, -1, 117, -1, -1, -1, -1, + -1, 118, -1, 119, -1, -1, -1, -1, -1, 120, -1, -1, -1, -1, -1, -1, -1, -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, 115, -1, -1, -1, -1, - 116, -1, 117, 118, -1, -1, -1, -1, -1, -1, - 119, -1, -1, -1, -1, -1, -1, -1, 120, -1, - -1, 121, 122, -1, -1, -1, -1, -1, -1, -1, - -1, 123, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 121, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, 122, -1, -1, -1, -1, -1, + 123, -1, -1, -1, -1, 124, -1, 125, -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, 125, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -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, - 127 + -1, -1, -1, -1, -1, 126, -1, -1, -1, -1, + 127, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 128 }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -535,7 +533,7 @@ findProp (register const char *str, register unsigned int len) } return 0; } -#line 142 "cssproperties.gperf" +#line 143 "cssproperties.gperf" static const char * const propertyList[] = { "", @@ -640,6 +638,7 @@ static const char * const propertyList[] = { "white-space", "widows", "width", +"word-wrap", "word-spacing", "z-index", "background", diff --git a/khtml/css/cssproperties.h b/khtml/css/cssproperties.h index 29f7d375b..be92d93d4 100644 --- a/khtml/css/cssproperties.h +++ b/khtml/css/cssproperties.h @@ -109,35 +109,36 @@ DOM::DOMString getPropertyName(unsigned short id) KDE_NO_EXPORT; #define CSS_PROP_WHITE_SPACE 99 #define CSS_PROP_WIDOWS 100 #define CSS_PROP_WIDTH 101 -#define CSS_PROP_WORD_SPACING 102 -#define CSS_PROP_Z_INDEX 103 -#define CSS_PROP_BACKGROUND 104 -#define CSS_PROP_BORDER 105 -#define CSS_PROP_BORDER_COLOR 106 -#define CSS_PROP_BORDER_STYLE 107 -#define CSS_PROP_BORDER_TOP 108 -#define CSS_PROP_BORDER_RIGHT 109 -#define CSS_PROP_BORDER_BOTTOM 110 -#define CSS_PROP_BORDER_LEFT 111 -#define CSS_PROP_BORDER_WIDTH 112 -#define CSS_PROP_BOX_SIZING 113 -#define CSS_PROP_FONT 114 -#define CSS_PROP_LIST_STYLE 115 -#define CSS_PROP_MARGIN 116 -#define CSS_PROP_OUTLINE 117 -#define CSS_PROP_PADDING 118 -#define CSS_PROP_SCROLLBAR_BASE_COLOR 119 -#define CSS_PROP_SCROLLBAR_FACE_COLOR 120 -#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 121 -#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 122 -#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 123 -#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 124 -#define CSS_PROP_SCROLLBAR_TRACK_COLOR 125 -#define CSS_PROP_SCROLLBAR_ARROW_COLOR 126 -#define CSS_PROP__KHTML_FLOW_MODE 127 -#define CSS_PROP__KHTML_USER_INPUT 128 +#define CSS_PROP_WORD_WRAP 102 +#define CSS_PROP_WORD_SPACING 103 +#define CSS_PROP_Z_INDEX 104 +#define CSS_PROP_BACKGROUND 105 +#define CSS_PROP_BORDER 106 +#define CSS_PROP_BORDER_COLOR 107 +#define CSS_PROP_BORDER_STYLE 108 +#define CSS_PROP_BORDER_TOP 109 +#define CSS_PROP_BORDER_RIGHT 110 +#define CSS_PROP_BORDER_BOTTOM 111 +#define CSS_PROP_BORDER_LEFT 112 +#define CSS_PROP_BORDER_WIDTH 113 +#define CSS_PROP_BOX_SIZING 114 +#define CSS_PROP_FONT 115 +#define CSS_PROP_LIST_STYLE 116 +#define CSS_PROP_MARGIN 117 +#define CSS_PROP_OUTLINE 118 +#define CSS_PROP_PADDING 119 +#define CSS_PROP_SCROLLBAR_BASE_COLOR 120 +#define CSS_PROP_SCROLLBAR_FACE_COLOR 121 +#define CSS_PROP_SCROLLBAR_SHADOW_COLOR 122 +#define CSS_PROP_SCROLLBAR_HIGHLIGHT_COLOR 123 +#define CSS_PROP_SCROLLBAR_3DLIGHT_COLOR 124 +#define CSS_PROP_SCROLLBAR_DARKSHADOW_COLOR 125 +#define CSS_PROP_SCROLLBAR_TRACK_COLOR 126 +#define CSS_PROP_SCROLLBAR_ARROW_COLOR 127 +#define CSS_PROP__KHTML_FLOW_MODE 128 +#define CSS_PROP__KHTML_USER_INPUT 129 #define CSS_PROP_MAX CSS_PROP_Z_INDEX -#define CSS_PROP_TOTAL 129 +#define CSS_PROP_TOTAL 130 #endif diff --git a/khtml/css/cssproperties.in b/khtml/css/cssproperties.in index 0d8980663..251eb5e3d 100644 --- a/khtml/css/cssproperties.in +++ b/khtml/css/cssproperties.in @@ -116,6 +116,7 @@ visibility white-space widows width +word-wrap word-spacing z-index background diff --git a/khtml/css/cssstyleselector.cpp b/khtml/css/cssstyleselector.cpp index 8f6cc09a6..15432dcd6 100644 --- a/khtml/css/cssstyleselector.cpp +++ b/khtml/css/cssstyleselector.cpp @@ -175,6 +175,26 @@ if (id == propID) \ return;\ } +#define HANDLE_INHERIT_ON_INHERITED_PROPERTY(prop, Prop) \ +if (isInherit) \ +{\ + style->set##Prop(parentStyle->prop());\ + return;\ +} + +#define HANDLE_INITIAL(prop, Prop) \ +if (isInitial) \ +{\ + style->set##Prop(RenderStyle::initial##Prop());\ + return;\ +} + +#define HANDLE_INITIAL_AND_INHERIT_ON_INHERITED_PROPERTY(prop, Prop) \ +HANDLE_INITIAL(prop, Prop) \ +else \ +HANDLE_INHERIT_ON_INHERITED_PROPERTY(prop, Prop) + + namespace khtml { CSSStyleSelectorList *CSSStyleSelector::s_defaultStyle; @@ -3953,6 +3973,13 @@ void CSSStyleSelector::applyRule( int id, DOM::CSSValueImpl *value ) break; } } + case CSS_PROP_WORD_WRAP: { + HANDLE_INITIAL_AND_INHERIT_ON_INHERITED_PROPERTY(wordWrap, WordWrap) + if (!primitiveValue) + return; + style->setWordWrap(primitiveValue->getIdent() == CSS_VAL_NORMAL ? WWNORMAL : WWBREAKWORD); + break; + } default: return; } diff --git a/khtml/css/cssvalues.c b/khtml/css/cssvalues.c index ad4dbb9db..7368d1869 100644 --- a/khtml/css/cssvalues.c +++ b/khtml/css/cssvalues.c @@ -1,4 +1,4 @@ -/* ANSI-C code produced by gperf version 3.0.1 */ +/* ANSI-C code produced by gperf version 3.0.2 */ /* Command-line: gperf -L ANSI-C -E -c -C -n -o -t -k '*' -NfindValue -Hhash_val -Wwordlist_value -D cssvalues.gperf */ #if !((' ' == 32) && ('!' == 33) && ('"' == 34) && ('#' == 35) \ @@ -40,7 +40,7 @@ struct css_value { }; static const css_value* findValue (register const char *str, register unsigned int len); -/* maximum key range = 3056, duplicates = 0 */ +/* maximum key range = 2876, duplicates = 0 */ #ifdef __GNUC__ __inline @@ -54,32 +54,32 @@ hash_val (register const char *str, register unsigned int len) { static const unsigned short asso_values[] = { - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 420, 225, 3056, 0, 0, - 105, 100, 40, 35, 20, 15, 10, 5, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 175, 60, 0, - 20, 45, 235, 380, 270, 5, 113, 65, 0, 35, - 0, 5, 265, 465, 100, 20, 5, 195, 223, 13, - 3, 68, 10, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, 3056, - 3056, 3056, 3056, 3056, 3056, 3056, 3056 + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 420, 23, 2876, 0, 0, + 105, 100, 40, 35, 20, 15, 10, 5, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 175, 60, 0, + 20, 45, 18, 380, 270, 5, 3, 65, 0, 35, + 0, 5, 265, 465, 100, 20, 5, 195, 18, 13, + 3, 133, 10, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, 2876, + 2876, 2876, 2876, 2876, 2876, 2876, 2876 }; register int hval = 0; @@ -181,11 +181,11 @@ findValue (register const char *str, register unsigned int len) { enum { - TOTAL_KEYWORDS = 274, + TOTAL_KEYWORDS = 275, MIN_WORD_LENGTH = 2, MAX_WORD_LENGTH = 28, MIN_HASH_VALUE = 0, - MAX_HASH_VALUE = 3055 + MAX_HASH_VALUE = 2875 }; static const struct css_value wordlist_value[] = @@ -202,7 +202,7 @@ findValue (register const char *str, register unsigned int len) {"600", CSS_VAL_600}, #line 216 "cssvalues.gperf" {"ltr", CSS_VAL_LTR}, -#line 276 "cssvalues.gperf" +#line 277 "cssvalues.gperf" {"down", CSS_VAL_DOWN}, #line 146 "cssvalues.gperf" {"disc", CSS_VAL_DISC}, @@ -210,7 +210,9 @@ findValue (register const char *str, register unsigned int len) {"500", CSS_VAL_500}, #line 43 "cssvalues.gperf" {"400", CSS_VAL_400}, -#line 258 "cssvalues.gperf" +#line 252 "cssvalues.gperf" + {"loud", CSS_VAL_LOUD}, +#line 259 "cssvalues.gperf" {"scroll", CSS_VAL_SCROLL}, #line 83 "cssvalues.gperf" {"lime", CSS_VAL_LIME}, @@ -220,30 +222,34 @@ findValue (register const char *str, register unsigned int len) {"inset", CSS_VAL_INSET}, #line 118 "cssvalues.gperf" {"window", CSS_VAL_WINDOW}, -#line 286 "cssvalues.gperf" +#line 287 "cssvalues.gperf" {"content", CSS_VAL_CONTENT}, #line 147 "cssvalues.gperf" {"circle", CSS_VAL_CIRCLE}, +#line 86 "cssvalues.gperf" + {"olive", CSS_VAL_OLIVE}, #line 33 "cssvalues.gperf" {"italic", CSS_VAL_ITALIC}, #line 145 "cssvalues.gperf" {"inside", CSS_VAL_INSIDE}, #line 25 "cssvalues.gperf" {"solid", CSS_VAL_SOLID}, +#line 281 "cssvalues.gperf" + {"slide", CSS_VAL_SLIDE}, #line 183 "cssvalues.gperf" {"inline", CSS_VAL_INLINE}, -#line 261 "cssvalues.gperf" +#line 262 "cssvalues.gperf" {"static", CSS_VAL_STATIC}, #line 204 "cssvalues.gperf" {"move", CSS_VAL_MOVE}, #line 42 "cssvalues.gperf" {"300", CSS_VAL_300}, -#line 249 "cssvalues.gperf" +#line 250 "cssvalues.gperf" {"level", CSS_VAL_LEVEL}, #line 41 "cssvalues.gperf" {"200", CSS_VAL_200}, -#line 254 "cssvalues.gperf" - {"mix", CSS_VAL_MIX}, +#line 69 "cssvalues.gperf" + {"serif", CSS_VAL_SERIF}, #line 91 "cssvalues.gperf" {"teal", CSS_VAL_TEAL}, #line 51 "cssvalues.gperf" @@ -252,191 +258,207 @@ findValue (register const char *str, register unsigned int len) {"windowtext", CSS_VAL_WINDOWTEXT}, #line 37 "cssvalues.gperf" {"bold", CSS_VAL_BOLD}, -#line 213 "cssvalues.gperf" - {"text", CSS_VAL_TEXT}, -#line 149 "cssvalues.gperf" - {"box", CSS_VAL_BOX}, +#line 77 "cssvalues.gperf" + {"blue", CSS_VAL_BLUE}, +#line 239 "cssvalues.gperf" + {"blink", CSS_VAL_BLINK}, +#line 221 "cssvalues.gperf" + {"visible", CSS_VAL_VISIBLE}, #line 217 "cssvalues.gperf" {"rtl", CSS_VAL_RTL}, -#line 242 "cssvalues.gperf" +#line 243 "cssvalues.gperf" {"embed", CSS_VAL_EMBED}, +#line 26 "cssvalues.gperf" + {"double", CSS_VAL_DOUBLE}, #line 128 "cssvalues.gperf" {"middle", CSS_VAL_MIDDLE}, -#line 252 "cssvalues.gperf" +#line 253 "cssvalues.gperf" {"lower", CSS_VAL_LOWER}, -#line 236 "cssvalues.gperf" +#line 237 "cssvalues.gperf" {"below", CSS_VAL_BELOW}, #line 63 "cssvalues.gperf" {"condensed", CSS_VAL_CONDENSED}, +#line 78 "cssvalues.gperf" + {"crimson", CSS_VAL_CRIMSON}, #line 14 "cssvalues.gperf" {"inherit", CSS_VAL_INHERIT}, -#line 93 "cssvalues.gperf" - {"yellow", CSS_VAL_YELLOW}, -#line 247 "cssvalues.gperf" +#line 248 "cssvalues.gperf" {"invert", CSS_VAL_INVERT}, +#line 255 "cssvalues.gperf" + {"mix", CSS_VAL_MIX}, #line 76 "cssvalues.gperf" {"black", CSS_VAL_BLACK}, +#line 213 "cssvalues.gperf" + {"text", CSS_VAL_TEXT}, #line 89 "cssvalues.gperf" {"red", CSS_VAL_RED}, -#line 280 "cssvalues.gperf" - {"slide", CSS_VAL_SLIDE}, +#line 256 "cssvalues.gperf" + {"overline", CSS_VAL_OVERLINE}, +#line 15 "cssvalues.gperf" + {"initial", CSS_VAL_INITIAL}, +#line 214 "cssvalues.gperf" + {"wait", CSS_VAL_WAIT}, +#line 149 "cssvalues.gperf" + {"box", CSS_VAL_BOX}, #line 139 "cssvalues.gperf" {"center", CSS_VAL_CENTER}, +#line 279 "cssvalues.gperf" + {"fast", CSS_VAL_FAST}, #line 59 "cssvalues.gperf" {"wider", CSS_VAL_WIDER}, #line 129 "cssvalues.gperf" {"sub", CSS_VAL_SUB}, +#line 244 "cssvalues.gperf" + {"fixed", CSS_VAL_FIXED}, +#line 90 "cssvalues.gperf" + {"silver", CSS_VAL_SILVER}, #line 189 "cssvalues.gperf" {"table", CSS_VAL_TABLE}, -#line 269 "cssvalues.gperf" +#line 270 "cssvalues.gperf" {"enabled", CSS_VAL_ENABLED}, +#line 93 "cssvalues.gperf" + {"yellow", CSS_VAL_YELLOW}, #line 36 "cssvalues.gperf" {"normal", CSS_VAL_NORMAL}, -#line 238 "cssvalues.gperf" - {"blink", CSS_VAL_BLINK}, #line 84 "cssvalues.gperf" {"maroon", CSS_VAL_MAROON}, -#line 251 "cssvalues.gperf" - {"loud", CSS_VAL_LOUD}, -#line 285 "cssvalues.gperf" +#line 286 "cssvalues.gperf" {"border", CSS_VAL_BORDER}, -#line 85 "cssvalues.gperf" - {"navy", CSS_VAL_NAVY}, +#line 49 "cssvalues.gperf" + {"xx-small", CSS_VAL_XX_SMALL}, #line 57 "cssvalues.gperf" {"smaller", CSS_VAL_SMALLER}, +#line 207 "cssvalues.gperf" + {"nw-resize", CSS_VAL_NW_RESIZE}, #line 38 "cssvalues.gperf" {"bolder", CSS_VAL_BOLDER}, +#line 284 "cssvalues.gperf" + {"clip", CSS_VAL_CLIP}, #line 28 "cssvalues.gperf" {"icon", CSS_VAL_ICON}, -#line 78 "cssvalues.gperf" - {"crimson", CSS_VAL_CRIMSON}, +#line 264 "cssvalues.gperf" + {"thin", CSS_VAL_THIN}, #line 29 "cssvalues.gperf" {"menu", CSS_VAL_MENU}, +#line 210 "cssvalues.gperf" + {"sw-resize", CSS_VAL_SW_RESIZE}, #line 23 "cssvalues.gperf" {"dotted", CSS_VAL_DOTTED}, -#line 277 "cssvalues.gperf" +#line 206 "cssvalues.gperf" + {"ne-resize", CSS_VAL_NE_RESIZE}, +#line 278 "cssvalues.gperf" {"slow", CSS_VAL_SLOW}, #line 151 "cssvalues.gperf" {"decimal", CSS_VAL_DECIMAL}, -#line 15 "cssvalues.gperf" - {"initial", CSS_VAL_INITIAL}, +#line 71 "cssvalues.gperf" + {"cursive", CSS_VAL_CURSIVE}, #line 134 "cssvalues.gperf" {"bottom", CSS_VAL_BOTTOM}, -#line 214 "cssvalues.gperf" - {"wait", CSS_VAL_WAIT}, -#line 69 "cssvalues.gperf" - {"serif", CSS_VAL_SERIF}, -#line 77 "cssvalues.gperf" - {"blue", CSS_VAL_BLUE}, -#line 270 "cssvalues.gperf" +#line 209 "cssvalues.gperf" + {"se-resize", CSS_VAL_SE_RESIZE}, +#line 85 "cssvalues.gperf" + {"navy", CSS_VAL_NAVY}, +#line 271 "cssvalues.gperf" {"disabled", CSS_VAL_DISABLED}, #line 127 "cssvalues.gperf" {"baseline", CSS_VAL_BASELINE}, +#line 92 "cssvalues.gperf" + {"white", CSS_VAL_WHITE}, #line 111 "cssvalues.gperf" {"menutext", CSS_VAL_MENUTEXT}, -#line 221 "cssvalues.gperf" - {"visible", CSS_VAL_VISIBLE}, -#line 26 "cssvalues.gperf" - {"double", CSS_VAL_DOUBLE}, +#line 263 "cssvalues.gperf" + {"thick", CSS_VAL_THICK}, #line 52 "cssvalues.gperf" {"medium", CSS_VAL_MEDIUM}, -#line 245 "cssvalues.gperf" +#line 140 "cssvalues.gperf" + {"justify", CSS_VAL_JUSTIFY}, +#line 246 "cssvalues.gperf" {"hide", CSS_VAL_HIDE}, -#line 274 "cssvalues.gperf" +#line 275 "cssvalues.gperf" {"reverse", CSS_VAL_REVERSE}, -#line 243 "cssvalues.gperf" - {"fixed", CSS_VAL_FIXED}, -#line 283 "cssvalues.gperf" - {"clip", CSS_VAL_CLIP}, +#line 272 "cssvalues.gperf" + {"forwards", CSS_VAL_FORWARDS}, #line 112 "cssvalues.gperf" {"scrollbar", CSS_VAL_SCROLLBAR}, +#line 228 "cssvalues.gperf" + {"pre", CSS_VAL_PRE}, #line 18 "cssvalues.gperf" {"hidden", CSS_VAL_HIDDEN}, -#line 86 "cssvalues.gperf" - {"olive", CSS_VAL_OLIVE}, -#line 263 "cssvalues.gperf" - {"thin", CSS_VAL_THIN}, #line 184 "cssvalues.gperf" {"block", CSS_VAL_BLOCK}, #line 220 "cssvalues.gperf" {"lowercase", CSS_VAL_LOWERCASE}, -#line 284 "cssvalues.gperf" +#line 285 "cssvalues.gperf" {"ellipsis", CSS_VAL_ELLIPSIS}, -#line 241 "cssvalues.gperf" +#line 242 "cssvalues.gperf" {"cross", CSS_VAL_CROSS}, -#line 278 "cssvalues.gperf" - {"fast", CSS_VAL_FAST}, -#line 90 "cssvalues.gperf" - {"silver", CSS_VAL_SILVER}, +#line 202 "cssvalues.gperf" + {"pointer", CSS_VAL_POINTER}, +#line 258 "cssvalues.gperf" + {"relative", CSS_VAL_RELATIVE}, #line 137 "cssvalues.gperf" {"left", CSS_VAL_LEFT}, -#line 264 "cssvalues.gperf" +#line 119 "cssvalues.gperf" + {"windowframe", CSS_VAL_WINDOWFRAME}, +#line 265 "cssvalues.gperf" {"underline", CSS_VAL_UNDERLINE}, #line 82 "cssvalues.gperf" {"indigo", CSS_VAL_INDIGO}, -#line 234 "cssvalues.gperf" - {"always", CSS_VAL_ALWAYS}, -#line 279 "cssvalues.gperf" +#line 280 "cssvalues.gperf" {"infinite", CSS_VAL_INFINITE}, -#line 92 "cssvalues.gperf" - {"white", CSS_VAL_WHITE}, #line 110 "cssvalues.gperf" {"infotext", CSS_VAL_INFOTEXT}, #line 187 "cssvalues.gperf" {"compact", CSS_VAL_COMPACT}, -#line 262 "cssvalues.gperf" - {"thick", CSS_VAL_THICK}, #line 60 "cssvalues.gperf" {"narrower", CSS_VAL_NARROWER}, -#line 275 "cssvalues.gperf" +#line 276 "cssvalues.gperf" {"up", CSS_VAL_UP}, -#line 49 "cssvalues.gperf" - {"xx-small", CSS_VAL_XX_SMALL}, -#line 207 "cssvalues.gperf" - {"nw-resize", CSS_VAL_NW_RESIZE}, #line 22 "cssvalues.gperf" {"outset", CSS_VAL_OUTSET}, -#line 244 "cssvalues.gperf" +#line 106 "cssvalues.gperf" + {"inactiveborder", CSS_VAL_INACTIVEBORDER}, +#line 245 "cssvalues.gperf" {"hand", CSS_VAL_HAND}, #line 161 "cssvalues.gperf" {"hebrew", CSS_VAL_HEBREW}, #line 133 "cssvalues.gperf" {"top", CSS_VAL_TOP}, -#line 210 "cssvalues.gperf" - {"sw-resize", CSS_VAL_SW_RESIZE}, +#line 236 "cssvalues.gperf" + {"avoid", CSS_VAL_AVOID}, #line 144 "cssvalues.gperf" {"outside", CSS_VAL_OUTSIDE}, -#line 233 "cssvalues.gperf" +#line 234 "cssvalues.gperf" {"absolute", CSS_VAL_ABSOLUTE}, -#line 206 "cssvalues.gperf" - {"ne-resize", CSS_VAL_NE_RESIZE}, #line 162 "cssvalues.gperf" {"armenian", CSS_VAL_ARMENIAN}, -#line 71 "cssvalues.gperf" - {"cursive", CSS_VAL_CURSIVE}, -#line 209 "cssvalues.gperf" - {"se-resize", CSS_VAL_SE_RESIZE}, +#line 235 "cssvalues.gperf" + {"always", CSS_VAL_ALWAYS}, #line 101 "cssvalues.gperf" {"buttontext", CSS_VAL_BUTTONTEXT}, #line 185 "cssvalues.gperf" {"list-item", CSS_VAL_LIST_ITEM}, -#line 239 "cssvalues.gperf" +#line 240 "cssvalues.gperf" {"both", CSS_VAL_BOTH}, -#line 202 "cssvalues.gperf" - {"pointer", CSS_VAL_POINTER}, +#line 72 "cssvalues.gperf" + {"fantasy", CSS_VAL_FANTASY}, #line 24 "cssvalues.gperf" {"dashed", CSS_VAL_DASHED}, +#line 81 "cssvalues.gperf" + {"green", CSS_VAL_GREEN}, #line 222 "cssvalues.gperf" {"collapse", CSS_VAL_COLLAPSE}, #line 227 "cssvalues.gperf" {"nowrap", CSS_VAL_NOWRAP}, -#line 268 "cssvalues.gperf" +#line 269 "cssvalues.gperf" {"content-box", CSS_VAL_CONTENT_BOX}, #line 73 "cssvalues.gperf" {"monospace", CSS_VAL_MONOSPACE}, +#line 233 "cssvalues.gperf" + {"above", CSS_VAL_ABOVE}, #line 208 "cssvalues.gperf" {"n-resize", CSS_VAL_N_RESIZE}, -#line 260 "cssvalues.gperf" +#line 261 "cssvalues.gperf" {"show", CSS_VAL_SHOW}, #line 199 "cssvalues.gperf" {"auto", CSS_VAL_AUTO}, @@ -444,137 +466,131 @@ findValue (register const char *str, register unsigned int len) {"ridge", CSS_VAL_RIDGE}, #line 212 "cssvalues.gperf" {"w-resize", CSS_VAL_W_RESIZE}, -#line 256 "cssvalues.gperf" +#line 257 "cssvalues.gperf" {"portrait", CSS_VAL_PORTRAIT}, #line 211 "cssvalues.gperf" {"s-resize", CSS_VAL_S_RESIZE}, -#line 271 "cssvalues.gperf" - {"forwards", CSS_VAL_FORWARDS}, #line 87 "cssvalues.gperf" {"orange", CSS_VAL_ORANGE}, -#line 228 "cssvalues.gperf" - {"pre", CSS_VAL_PRE}, -#line 80 "cssvalues.gperf" - {"gray", CSS_VAL_GRAY}, +#line 107 "cssvalues.gperf" + {"inactivecaption", CSS_VAL_INACTIVECAPTION}, #line 205 "cssvalues.gperf" {"e-resize", CSS_VAL_E_RESIZE}, -#line 255 "cssvalues.gperf" - {"overline", CSS_VAL_OVERLINE}, #line 215 "cssvalues.gperf" {"help", CSS_VAL_HELP}, #line 53 "cssvalues.gperf" {"large", CSS_VAL_LARGE}, -#line 140 "cssvalues.gperf" - {"justify", CSS_VAL_JUSTIFY}, -#line 240 "cssvalues.gperf" +#line 241 "cssvalues.gperf" {"crop", CSS_VAL_CROP}, -#line 257 "cssvalues.gperf" - {"relative", CSS_VAL_RELATIVE}, +#line 121 "cssvalues.gperf" + {"grey", CSS_VAL_GREY}, #line 50 "cssvalues.gperf" {"x-small", CSS_VAL_X_SMALL}, #line 188 "cssvalues.gperf" {"inline-block", CSS_VAL_INLINE_BLOCK}, +#line 114 "cssvalues.gperf" + {"threedface", CSS_VAL_THREEDFACE}, #line 64 "cssvalues.gperf" {"semi-condensed", CSS_VAL_SEMI_CONDENSED}, -#line 272 "cssvalues.gperf" +#line 273 "cssvalues.gperf" {"backwards", CSS_VAL_BACKWARDS}, #line 138 "cssvalues.gperf" {"right", CSS_VAL_RIGHT}, -#line 119 "cssvalues.gperf" - {"windowframe", CSS_VAL_WINDOWFRAME}, +#line 108 "cssvalues.gperf" + {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT}, #line 27 "cssvalues.gperf" {"caption", CSS_VAL_CAPTION}, -#line 132 "cssvalues.gperf" - {"text-bottom", CSS_VAL_TEXT_BOTTOM}, -#line 103 "cssvalues.gperf" - {"graytext", CSS_VAL_GRAYTEXT}, -#line 106 "cssvalues.gperf" - {"inactiveborder", CSS_VAL_INACTIVEBORDER}, -#line 72 "cssvalues.gperf" - {"fantasy", CSS_VAL_FANTASY}, -#line 235 "cssvalues.gperf" - {"avoid", CSS_VAL_AVOID}, +#line 274 "cssvalues.gperf" + {"ahead", CSS_VAL_AHEAD}, +#line 126 "cssvalues.gperf" + {"no-repeat", CSS_VAL_NO_REPEAT}, +#line 80 "cssvalues.gperf" + {"gray", CSS_VAL_GRAY}, #line 197 "cssvalues.gperf" {"table-cell", CSS_VAL_TABLE_CELL}, #line 39 "cssvalues.gperf" {"lighter", CSS_VAL_LIGHTER}, -#line 248 "cssvalues.gperf" +#line 98 "cssvalues.gperf" + {"buttonface", CSS_VAL_BUTTONFACE}, +#line 79 "cssvalues.gperf" + {"fuchsia", CSS_VAL_FUCHSIA}, +#line 249 "cssvalues.gperf" {"landscape", CSS_VAL_LANDSCAPE}, #line 102 "cssvalues.gperf" {"captiontext", CSS_VAL_CAPTIONTEXT}, #line 58 "cssvalues.gperf" {"larger", CSS_VAL_LARGER}, +#line 132 "cssvalues.gperf" + {"text-bottom", CSS_VAL_TEXT_BOTTOM}, #line 186 "cssvalues.gperf" {"run-in", CSS_VAL_RUN_IN}, -#line 267 "cssvalues.gperf" +#line 55 "cssvalues.gperf" + {"xx-large", CSS_VAL_XX_LARGE}, +#line 103 "cssvalues.gperf" + {"graytext", CSS_VAL_GRAYTEXT}, +#line 268 "cssvalues.gperf" {"border-box", CSS_VAL_BORDER_BOX}, -#line 281 "cssvalues.gperf" +#line 282 "cssvalues.gperf" {"alternate", CSS_VAL_ALTERNATE}, #line 174 "cssvalues.gperf" {"lower-latin", CSS_VAL_LOWER_LATIN}, -#line 81 "cssvalues.gperf" - {"green", CSS_VAL_GREEN}, #line 194 "cssvalues.gperf" {"table-row", CSS_VAL_TABLE_ROW}, -#line 232 "cssvalues.gperf" - {"above", CSS_VAL_ABOVE}, +#line 94 "cssvalues.gperf" + {"activeborder", CSS_VAL_ACTIVEBORDER}, #line 66 "cssvalues.gperf" {"expanded", CSS_VAL_EXPANDED}, #line 74 "cssvalues.gperf" {"transparent", CSS_VAL_TRANSPARENT}, -#line 121 "cssvalues.gperf" - {"grey", CSS_VAL_GREY}, #line 88 "cssvalues.gperf" {"purple", CSS_VAL_PURPLE}, #line 190 "cssvalues.gperf" {"inline-table", CSS_VAL_INLINE_TABLE}, -#line 107 "cssvalues.gperf" - {"inactivecaption", CSS_VAL_INACTIVECAPTION}, #line 34 "cssvalues.gperf" {"oblique", CSS_VAL_OBLIQUE}, -#line 131 "cssvalues.gperf" - {"text-top", CSS_VAL_TEXT_TOP}, +#line 20 "cssvalues.gperf" + {"groove", CSS_VAL_GROOVE}, #line 201 "cssvalues.gperf" {"default", CSS_VAL_DEFAULT}, +#line 148 "cssvalues.gperf" + {"square", CSS_VAL_SQUARE}, #line 130 "cssvalues.gperf" {"super", CSS_VAL_SUPER}, +#line 70 "cssvalues.gperf" + {"sans-serif", CSS_VAL_SANS_SERIF}, +#line 75 "cssvalues.gperf" + {"aqua", CSS_VAL_AQUA}, #line 123 "cssvalues.gperf" {"repeat", CSS_VAL_REPEAT}, -#line 108 "cssvalues.gperf" - {"inactivecaptiontext", CSS_VAL_INACTIVECAPTIONTEXT}, -#line 114 "cssvalues.gperf" - {"threedface", CSS_VAL_THREEDFACE}, -#line 126 "cssvalues.gperf" - {"no-repeat", CSS_VAL_NO_REPEAT}, -#line 282 "cssvalues.gperf" +#line 230 "cssvalues.gperf" + {"pre-line", CSS_VAL_PRE_LINE}, +#line 283 "cssvalues.gperf" {"unfurl", CSS_VAL_UNFURL}, -#line 273 "cssvalues.gperf" - {"ahead", CSS_VAL_AHEAD}, +#line 238 "cssvalues.gperf" + {"bidi-override", CSS_VAL_BIDI_OVERRIDE}, #line 196 "cssvalues.gperf" {"table-column", CSS_VAL_TABLE_COLUMN}, +#line 131 "cssvalues.gperf" + {"text-top", CSS_VAL_TEXT_TOP}, #line 218 "cssvalues.gperf" {"capitalize", CSS_VAL_CAPITALIZE}, #line 159 "cssvalues.gperf" {"lower-roman", CSS_VAL_LOWER_ROMAN}, -#line 287 "cssvalues.gperf" +#line 288 "cssvalues.gperf" {"padding", CSS_VAL_PADDING}, +#line 95 "cssvalues.gperf" + {"activecaption", CSS_VAL_ACTIVECAPTION}, #line 117 "cssvalues.gperf" {"threedshadow", CSS_VAL_THREEDSHADOW}, -#line 98 "cssvalues.gperf" - {"buttonface", CSS_VAL_BUTTONFACE}, -#line 79 "cssvalues.gperf" - {"fuchsia", CSS_VAL_FUCHSIA}, -#line 55 "cssvalues.gperf" - {"xx-large", CSS_VAL_XX_LARGE}, #line 200 "cssvalues.gperf" {"crosshair", CSS_VAL_CROSSHAIR}, -#line 246 "cssvalues.gperf" +#line 247 "cssvalues.gperf" {"higher", CSS_VAL_HIGHER}, #line 100 "cssvalues.gperf" {"buttonshadow", CSS_VAL_BUTTONSHADOW}, -#line 94 "cssvalues.gperf" - {"activeborder", CSS_VAL_ACTIVEBORDER}, -#line 253 "cssvalues.gperf" +#line 232 "cssvalues.gperf" + {"break-word", CSS_VAL_BREAK_WORD}, +#line 254 "cssvalues.gperf" {"marquee", CSS_VAL_MARQUEE}, #line 31 "cssvalues.gperf" {"small-caption", CSS_VAL_SMALL_CAPTION}, @@ -582,32 +598,20 @@ findValue (register const char *str, register unsigned int len) {"small-caps", CSS_VAL_SMALL_CAPS}, #line 122 "cssvalues.gperf" {"-khtml-text", CSS_VAL__KHTML_TEXT}, -#line 20 "cssvalues.gperf" - {"groove", CSS_VAL_GROOVE}, +#line 141 "cssvalues.gperf" + {"-khtml-left", CSS_VAL__KHTML_LEFT}, #line 97 "cssvalues.gperf" {"background", CSS_VAL_BACKGROUND}, #line 178 "cssvalues.gperf" {"katakana", CSS_VAL_KATAKANA}, -#line 148 "cssvalues.gperf" - {"square", CSS_VAL_SQUARE}, -#line 259 "cssvalues.gperf" +#line 260 "cssvalues.gperf" {"separate", CSS_VAL_SEPARATE}, -#line 75 "cssvalues.gperf" - {"aqua", CSS_VAL_AQUA}, -#line 70 "cssvalues.gperf" - {"sans-serif", CSS_VAL_SANS_SERIF}, #line 32 "cssvalues.gperf" {"status-bar", CSS_VAL_STATUS_BAR}, #line 65 "cssvalues.gperf" {"semi-expanded", CSS_VAL_SEMI_EXPANDED}, -#line 230 "cssvalues.gperf" - {"pre-line", CSS_VAL_PRE_LINE}, -#line 237 "cssvalues.gperf" - {"bidi-override", CSS_VAL_BIDI_OVERRIDE}, #line 62 "cssvalues.gperf" {"extra-condensed", CSS_VAL_EXTRA_CONDENSED}, -#line 95 "cssvalues.gperf" - {"activecaption", CSS_VAL_ACTIVECAPTION}, #line 198 "cssvalues.gperf" {"table-caption", CSS_VAL_TABLE_CAPTION}, #line 154 "cssvalues.gperf" @@ -620,40 +624,42 @@ findValue (register const char *str, register unsigned int len) {"message-box", CSS_VAL_MESSAGE_BOX}, #line 203 "cssvalues.gperf" {"progress", CSS_VAL_PROGRESS}, +#line 16 "cssvalues.gperf" + {"-khtml-native", CSS_VAL__KHTML_NATIVE}, #line 177 "cssvalues.gperf" {"hiragana", CSS_VAL_HIRAGANA}, #line 171 "cssvalues.gperf" {"lower-greek", CSS_VAL_LOWER_GREEK}, #line 150 "cssvalues.gperf" {"-khtml-diamond", CSS_VAL__KHTML_DIAMOND}, -#line 141 "cssvalues.gperf" - {"-khtml-left", CSS_VAL__KHTML_LEFT}, +#line 224 "cssvalues.gperf" + {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE}, #line 61 "cssvalues.gperf" {"ultra-condensed", CSS_VAL_ULTRA_CONDENSED}, #line 158 "cssvalues.gperf" {"-khtml-tibetan", CSS_VAL__KHTML_TIBETAN}, #line 124 "cssvalues.gperf" {"repeat-x", CSS_VAL_REPEAT_X}, -#line 265 "cssvalues.gperf" +#line 266 "cssvalues.gperf" {"-khtml-normal", CSS_VAL__KHTML_NORMAL}, #line 113 "cssvalues.gperf" {"threeddarkshadow", CSS_VAL_THREEDDARKSHADOW}, #line 219 "cssvalues.gperf" {"uppercase", CSS_VAL_UPPERCASE}, -#line 125 "cssvalues.gperf" - {"repeat-y", CSS_VAL_REPEAT_Y}, #line 136 "cssvalues.gperf" {"-khtml-auto", CSS_VAL__KHTML_AUTO}, #line 163 "cssvalues.gperf" {"georgian", CSS_VAL_GEORGIAN}, +#line 229 "cssvalues.gperf" + {"pre-wrap", CSS_VAL_PRE_WRAP}, +#line 125 "cssvalues.gperf" + {"repeat-y", CSS_VAL_REPEAT_Y}, #line 109 "cssvalues.gperf" {"infobackground", CSS_VAL_INFOBACKGROUND}, -#line 16 "cssvalues.gperf" - {"-khtml-native", CSS_VAL__KHTML_NATIVE}, #line 157 "cssvalues.gperf" {"-khtml-thai", CSS_VAL__KHTML_THAI}, -#line 224 "cssvalues.gperf" - {"no-close-quote", CSS_VAL_NO_CLOSE_QUOTE}, +#line 226 "cssvalues.gperf" + {"open-quote", CSS_VAL_OPEN_QUOTE}, #line 173 "cssvalues.gperf" {"lower-alpha", CSS_VAL_LOWER_ALPHA}, #line 156 "cssvalues.gperf" @@ -662,6 +668,8 @@ findValue (register const char *str, register unsigned int len) {"close-quote", CSS_VAL_CLOSE_QUOTE}, #line 104 "cssvalues.gperf" {"highlight", CSS_VAL_HIGHLIGHT}, +#line 225 "cssvalues.gperf" + {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE}, #line 231 "cssvalues.gperf" {"-khtml-nowrap", CSS_VAL__KHTML_NOWRAP}, #line 67 "cssvalues.gperf" @@ -672,24 +680,18 @@ findValue (register const char *str, register unsigned int len) {"-khtml-persian", CSS_VAL__KHTML_PERSIAN}, #line 116 "cssvalues.gperf" {"threedlightshadow", CSS_VAL_THREEDLIGHTSHADOW}, -#line 229 "cssvalues.gperf" - {"pre-wrap", CSS_VAL_PRE_WRAP}, #line 96 "cssvalues.gperf" {"appworkspace", CSS_VAL_APPWORKSPACE}, -#line 226 "cssvalues.gperf" - {"open-quote", CSS_VAL_OPEN_QUOTE}, #line 68 "cssvalues.gperf" {"ultra-expanded", CSS_VAL_ULTRA_EXPANDED}, #line 176 "cssvalues.gperf" {"upper-latin", CSS_VAL_UPPER_LATIN}, -#line 225 "cssvalues.gperf" - {"no-open-quote", CSS_VAL_NO_OPEN_QUOTE}, -#line 250 "cssvalues.gperf" +#line 164 "cssvalues.gperf" + {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC}, +#line 251 "cssvalues.gperf" {"line-through", CSS_VAL_LINE_THROUGH}, #line 142 "cssvalues.gperf" {"-khtml-right", CSS_VAL__KHTML_RIGHT}, -#line 164 "cssvalues.gperf" - {"cjk-ideographic", CSS_VAL_CJK_IDEOGRAPHIC}, #line 160 "cssvalues.gperf" {"upper-roman", CSS_VAL_UPPER_ROMAN}, #line 135 "cssvalues.gperf" @@ -706,30 +708,28 @@ findValue (register const char *str, register unsigned int len) {"buttonhighlight", CSS_VAL_BUTTONHIGHLIGHT}, #line 56 "cssvalues.gperf" {"-khtml-xxx-large", CSS_VAL__KHTML_XXX_LARGE}, +#line 267 "cssvalues.gperf" + {"-khtml-around-floats", CSS_VAL__KHTML_AROUND_FLOATS}, #line 191 "cssvalues.gperf" {"table-row-group", CSS_VAL_TABLE_ROW_GROUP}, #line 182 "cssvalues.gperf" {"-khtml-close-quote", CSS_VAL__KHTML_CLOSE_QUOTE}, #line 179 "cssvalues.gperf" {"hiragana-iroha", CSS_VAL_HIRAGANA_IROHA}, +#line 193 "cssvalues.gperf" + {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP}, #line 195 "cssvalues.gperf" {"table-column-group", CSS_VAL_TABLE_COLUMN_GROUP}, -#line 266 "cssvalues.gperf" - {"-khtml-around-floats", CSS_VAL__KHTML_AROUND_FLOATS}, #line 175 "cssvalues.gperf" {"upper-alpha", CSS_VAL_UPPER_ALPHA}, #line 181 "cssvalues.gperf" {"-khtml-open-quote", CSS_VAL__KHTML_OPEN_QUOTE}, -#line 193 "cssvalues.gperf" - {"table-footer-group", CSS_VAL_TABLE_FOOTER_GROUP}, -#line 192 "cssvalues.gperf" - {"table-header-group", CSS_VAL_TABLE_HEADER_GROUP}, #line 165 "cssvalues.gperf" {"-khtml-japanese-formal", CSS_VAL__KHTML_JAPANESE_FORMAL}, #line 166 "cssvalues.gperf" {"-khtml-japanese-informal", CSS_VAL__KHTML_JAPANESE_INFORMAL}, -#line 172 "cssvalues.gperf" - {"-khtml-upper-greek", CSS_VAL__KHTML_UPPER_GREEK}, +#line 192 "cssvalues.gperf" + {"table-header-group", CSS_VAL_TABLE_HEADER_GROUP}, #line 169 "cssvalues.gperf" {"-khtml-trad-chinese-formal", CSS_VAL__KHTML_TRAD_CHINESE_FORMAL}, #line 170 "cssvalues.gperf" @@ -737,7 +737,9 @@ findValue (register const char *str, register unsigned int len) #line 167 "cssvalues.gperf" {"-khtml-simp-chinese-formal", CSS_VAL__KHTML_SIMP_CHINESE_FORMAL}, #line 168 "cssvalues.gperf" - {"-khtml-simp-chinese-informal", CSS_VAL__KHTML_SIMP_CHINESE_INFORMAL} + {"-khtml-simp-chinese-informal", CSS_VAL__KHTML_SIMP_CHINESE_INFORMAL}, +#line 172 "cssvalues.gperf" + {"-khtml-upper-greek", CSS_VAL__KHTML_UPPER_GREEK} }; static const short lookup[] = @@ -746,243 +748,227 @@ findValue (register const char *str, register unsigned int len) 2, -1, -1, -1, -1, 3, -1, -1, -1, -1, 4, -1, -1, -1, -1, 5, -1, -1, 6, -1, 7, -1, -1, -1, -1, 8, -1, -1, -1, -1, - 9, -1, -1, -1, -1, 10, -1, -1, -1, -1, - 11, -1, -1, -1, -1, 12, -1, -1, -1, -1, - 13, 14, -1, -1, -1, 15, -1, -1, -1, -1, - 16, -1, -1, -1, -1, 17, -1, -1, -1, -1, - 18, -1, -1, -1, -1, 19, -1, -1, -1, -1, + 9, -1, -1, 10, -1, 11, -1, -1, -1, -1, + 12, -1, -1, -1, -1, 13, -1, -1, -1, -1, + 14, 15, -1, -1, -1, 16, -1, -1, -1, -1, + 17, 18, -1, -1, -1, 19, -1, -1, -1, -1, 20, -1, -1, -1, -1, 21, -1, -1, 22, -1, - 23, -1, -1, 24, -1, 25, -1, -1, 26, -1, - 27, -1, -1, -1, -1, 28, -1, -1, -1, 29, - 30, -1, -1, 31, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 32, -1, -1, -1, -1, -1, -1, - 33, -1, -1, -1, -1, 34, -1, -1, -1, -1, - 35, -1, -1, 36, -1, -1, -1, -1, 37, -1, - 38, -1, -1, -1, -1, 39, 40, -1, 41, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 42, -1, -1, -1, -1, - 43, -1, -1, -1, -1, -1, -1, -1, 44, -1, - 45, -1, -1, -1, -1, -1, -1, -1, 46, -1, - -1, -1, -1, -1, -1, 47, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 48, -1, -1, -1, -1, - 49, -1, -1, -1, -1, 50, -1, -1, 51, -1, - 52, -1, -1, -1, -1, -1, -1, -1, 53, -1, - 54, -1, -1, -1, -1, -1, 55, -1, -1, -1, - 56, -1, -1, -1, -1, 57, -1, -1, -1, -1, - 58, -1, -1, 59, -1, -1, -1, -1, -1, -1, - 60, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 61, -1, -1, -1, -1, -1, -1, -1, 62, -1, - 63, -1, -1, 64, -1, 65, 66, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 67, -1, -1, 68, -1, - 69, -1, -1, -1, -1, 70, -1, -1, 71, -1, - -1, -1, -1, 72, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 73, -1, -1, -1, -1, -1, -1, - 74, -1, -1, -1, -1, 75, -1, -1, 76, -1, - -1, -1, -1, 77, -1, -1, -1, -1, 78, -1, - 79, -1, -1, -1, -1, 80, 81, -1, 82, -1, - 83, -1, -1, 84, -1, 85, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 86, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 87, -1, -1, -1, -1, -1, -1, -1, 88, -1, - 89, -1, -1, -1, -1, 90, -1, -1, -1, -1, - 91, 92, -1, -1, -1, 93, 94, -1, 95, -1, - 96, -1, -1, 97, -1, -1, -1, -1, 98, -1, - 99, 100, -1, 101, -1, 102, -1, -1, -1, -1, - 103, -1, -1, 104, -1, 105, -1, -1, -1, -1, - -1, -1, -1, 106, -1, 107, -1, -1, -1, -1, - 108, -1, -1, -1, -1, 109, -1, -1, -1, -1, - 110, -1, -1, -1, -1, -1, -1, -1, 111, -1, - -1, -1, -1, -1, -1, 112, -1, -1, 113, -1, - -1, -1, -1, -1, -1, 114, -1, -1, -1, -1, - 115, -1, -1, 116, -1, 117, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 118, -1, -1, 119, -1, - -1, -1, -1, 120, -1, 121, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 122, -1, -1, 123, -1, - 124, -1, -1, -1, -1, 125, -1, -1, 126, -1, - 127, -1, -1, -1, -1, 128, -1, -1, 129, -1, - 130, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 131, -1, -1, -1, -1, -1, -1, -1, 132, -1, - 133, -1, -1, 134, -1, 135, -1, -1, -1, -1, - 136, -1, -1, -1, -1, -1, 137, -1, -1, -1, - 138, -1, -1, 139, -1, -1, -1, -1, 140, -1, - 141, -1, -1, -1, -1, 142, -1, -1, 143, -1, - 144, 145, -1, -1, -1, 146, -1, -1, 147, -1, - -1, -1, -1, -1, -1, -1, 148, -1, -1, -1, - -1, -1, -1, 149, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 150, -1, -1, -1, -1, 151, -1, - 152, -1, -1, -1, -1, 153, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 154, -1, -1, -1, -1, - -1, -1, -1, 155, -1, -1, -1, -1, -1, -1, - 156, -1, -1, -1, -1, 157, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 158, -1, - 159, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 160, -1, - 161, -1, -1, 162, -1, -1, -1, -1, 163, -1, - -1, -1, -1, 164, -1, 165, -1, -1, -1, -1, - -1, -1, -1, 166, -1, -1, -1, -1, -1, -1, - 167, -1, -1, -1, -1, 168, -1, -1, 169, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 170, -1, -1, -1, -1, -1, -1, -1, 171, -1, - 172, -1, -1, -1, -1, 173, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 174, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, 175, -1, -1, -1, - 176, -1, -1, -1, -1, 177, -1, -1, -1, -1, - 178, -1, -1, -1, -1, 179, -1, -1, -1, -1, - 180, -1, -1, -1, -1, 181, -1, -1, 182, -1, - 183, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 184, -1, - -1, -1, -1, -1, -1, 185, -1, -1, -1, -1, - 186, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, 187, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 188, -1, -1, -1, -1, - 189, -1, -1, 190, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 191, -1, -1, -1, -1, -1, -1, - 192, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 193, -1, -1, -1, -1, 194, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 195, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 196, -1, - 197, -1, -1, -1, -1, 198, -1, -1, 199, -1, - 200, -1, -1, -1, -1, -1, -1, -1, 201, -1, - -1, -1, -1, -1, -1, 202, -1, -1, -1, -1, + 23, -1, -1, -1, -1, 24, -1, -1, 25, -1, + 26, -1, -1, 27, -1, 28, -1, -1, 29, -1, + 30, -1, -1, -1, -1, 31, -1, -1, -1, 32, + 33, -1, -1, 34, -1, -1, -1, -1, 35, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 36, -1, + 37, -1, -1, -1, -1, 38, -1, -1, 39, -1, + 40, -1, -1, 41, -1, -1, -1, -1, 42, -1, + 43, -1, -1, 44, -1, 45, -1, -1, 46, -1, + -1, -1, -1, 47, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 48, -1, -1, 49, -1, + 50, 51, -1, 52, -1, -1, 53, -1, 54, -1, + 55, -1, -1, 56, -1, -1, -1, -1, 57, -1, + -1, -1, -1, -1, -1, 58, -1, -1, -1, -1, + -1, 59, -1, 60, -1, 61, -1, -1, -1, -1, + 62, 63, -1, -1, -1, 64, -1, -1, -1, -1, + 65, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 66, -1, -1, -1, -1, -1, -1, -1, -1, 67, + 68, 69, -1, -1, -1, 70, -1, -1, 71, -1, + 72, -1, -1, -1, -1, -1, -1, -1, 73, -1, + 74, 75, -1, -1, -1, -1, -1, -1, -1, -1, + 76, -1, -1, 77, -1, -1, -1, -1, 78, -1, + 79, -1, -1, 80, -1, 81, -1, -1, -1, -1, + -1, -1, -1, 82, -1, -1, -1, -1, -1, -1, + -1, 83, -1, -1, -1, -1, -1, -1, -1, -1, + 84, -1, -1, -1, -1, 85, 86, -1, 87, -1, + -1, -1, -1, 88, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 89, -1, -1, -1, 90, 91, -1, -1, 92, -1, + -1, 93, -1, -1, -1, -1, -1, -1, -1, -1, + 94, -1, -1, 95, -1, 96, -1, -1, -1, -1, + 97, -1, -1, 98, -1, 99, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 100, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 101, -1, -1, -1, -1, 102, -1, + 103, -1, -1, -1, 104, 105, -1, -1, -1, -1, + 106, -1, -1, -1, -1, 107, -1, -1, 108, -1, + 109, -1, -1, -1, -1, -1, -1, -1, 110, -1, + 111, -1, -1, -1, -1, 112, -1, -1, 113, -1, + 114, -1, -1, 115, -1, 116, -1, -1, -1, -1, + -1, -1, -1, 117, -1, 118, -1, -1, -1, -1, + 119, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 120, -1, -1, -1, -1, -1, 121, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 122, -1, + -1, -1, -1, -1, -1, 123, -1, -1, -1, -1, + 124, 125, -1, -1, -1, 126, -1, -1, -1, -1, + -1, -1, -1, 127, -1, 128, -1, -1, 129, -1, + -1, -1, -1, 130, -1, 131, -1, -1, -1, -1, + -1, -1, -1, 132, -1, 133, -1, -1, 134, -1, + 135, -1, -1, -1, -1, 136, -1, -1, 137, -1, + 138, -1, -1, -1, -1, 139, -1, -1, -1, -1, + 140, -1, -1, 141, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 142, -1, -1, -1, -1, 143, -1, -1, -1, -1, + 144, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 145, 146, -1, -1, -1, -1, -1, -1, 147, -1, + 148, -1, -1, 149, -1, 150, -1, -1, 151, -1, + 152, 153, -1, -1, -1, 154, -1, -1, 155, -1, + -1, -1, -1, 156, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 157, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 158, -1, -1, -1, -1, 159, -1, -1, 160, -1, + -1, -1, -1, 161, -1, 162, -1, -1, -1, -1, + -1, -1, -1, 163, -1, -1, -1, -1, -1, -1, + 164, -1, -1, 165, -1, 166, -1, -1, -1, 167, + -1, 168, -1, -1, -1, -1, -1, -1, 169, -1, + 170, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 171, -1, + -1, -1, -1, 172, -1, -1, -1, -1, 173, -1, + -1, -1, -1, 174, -1, 175, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 203, -1, -1, 204, -1, -1, -1, -1, -1, -1, - 205, -1, -1, -1, -1, -1, -1, -1, 206, -1, + 176, -1, -1, -1, -1, 177, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 207, -1, -1, -1, -1, 208, -1, - 209, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 178, -1, -1, 179, -1, -1, -1, -1, -1, -1, + 180, -1, -1, 181, -1, 182, -1, -1, 183, -1, + -1, -1, -1, 184, -1, 185, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 186, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 210, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 211, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 212, -1, + 187, -1, -1, 188, -1, -1, -1, -1, -1, -1, + 189, -1, -1, 190, -1, 191, -1, -1, 192, -1, + 193, -1, -1, 194, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 195, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 213, -1, 214, -1, -1, -1, -1, - 215, -1, -1, -1, -1, -1, -1, -1, 216, -1, - 217, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 218, -1, -1, -1, -1, - 219, -1, -1, -1, -1, 220, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 221, -1, - -1, -1, -1, -1, -1, 222, -1, -1, 223, -1, + -1, -1, -1, -1, -1, 196, -1, -1, -1, -1, + 197, -1, -1, 198, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, 199, -1, -1, -1, + 200, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 201, -1, -1, -1, -1, 202, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 203, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 204, -1, + 205, -1, -1, -1, -1, 206, -1, -1, -1, -1, + 207, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 208, -1, -1, 209, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 224, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 225, -1, -1, -1, -1, -1, -1, - 226, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 210, -1, -1, -1, -1, -1, -1, + 211, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 212, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 213, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 214, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 229, -1, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 215, -1, 216, -1, -1, 217, -1, + 218, -1, -1, -1, -1, -1, -1, -1, 219, -1, + 220, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 231, -1, -1, -1, -1, + -1, -1, -1, 221, -1, -1, -1, -1, -1, -1, + 222, -1, -1, -1, -1, 223, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 224, -1, + -1, -1, -1, -1, -1, 225, -1, -1, 226, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 232, -1, - 233, -1, -1, -1, -1, 234, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 235, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 236, -1, - -1, 237, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 238, -1, -1, -1, -1, -1, -1, + 227, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 228, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 239, -1, -1, -1, -1, -1, -1, -1, 240, -1, - -1, -1, -1, 241, -1, -1, -1, -1, -1, -1, + 229, -1, -1, -1, -1, -1, 230, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 242, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 231, -1, + 232, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 233, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 234, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 243, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 244, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 235, -1, + 236, -1, -1, -1, -1, 237, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 238, -1, -1, 239, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 245, -1, -1, -1, -1, - 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 248, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 240, -1, + -1, 241, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 242, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 243, -1, -1, -1, -1, -1, -1, -1, 244, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 245, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, 249, -1, 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 246, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 251, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 247, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 248, -1, -1, -1, -1, -1, -1, + 249, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 250, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 253, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 251, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 255, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 252, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 253, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 254, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 258, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 260, -1, -1, -1, -1, + 255, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 256, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 257, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, -1, 258, + -1, -1, -1, -1, -1, -1, -1, -1, 259, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 260, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 261, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 262, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 263, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 263, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 264, -1, -1, -1, -1, 265, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 264, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -995,10 +981,13 @@ findValue (register const char *str, register unsigned int len) -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 265, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, 267, -1, -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1008,7 +997,6 @@ findValue (register const char *str, register unsigned int len) -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 266, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1017,19 +1005,14 @@ findValue (register const char *str, register unsigned int len) -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, 267, -1, - -1, -1, -1, 268, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 269, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, @@ -1041,13 +1024,14 @@ findValue (register const char *str, register unsigned int len) -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, -1, -1, -1, -1, -1, 270, -1, + -1, -1, -1, 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, + -1, -1, -1, 272, -1, -1, -1, -1, 273, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - -1, -1, -1, -1, -1, 270, -1, -1, -1, -1, - 271, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, - 272, -1, -1, -1, -1, 273 + -1, -1, -1, -1, -1, 274 }; if (len <= MAX_WORD_LENGTH && len >= MIN_WORD_LENGTH) @@ -1069,7 +1053,7 @@ findValue (register const char *str, register unsigned int len) } return 0; } -#line 288 "cssvalues.gperf" +#line 289 "cssvalues.gperf" static const char * const valueList[] = { "", @@ -1291,6 +1275,7 @@ static const char * const valueList[] = { "pre-wrap", "pre-line", "-khtml-nowrap", +"break-word", "above", "absolute", "always", diff --git a/khtml/css/cssvalues.h b/khtml/css/cssvalues.h index 0e0442c79..36a365754 100644 --- a/khtml/css/cssvalues.h +++ b/khtml/css/cssvalues.h @@ -227,63 +227,64 @@ DOM::DOMString getValueName(unsigned short id) KDE_NO_EXPORT; #define CSS_VAL_PRE_WRAP 216 #define CSS_VAL_PRE_LINE 217 #define CSS_VAL__KHTML_NOWRAP 218 -#define CSS_VAL_ABOVE 219 -#define CSS_VAL_ABSOLUTE 220 -#define CSS_VAL_ALWAYS 221 -#define CSS_VAL_AVOID 222 -#define CSS_VAL_BELOW 223 -#define CSS_VAL_BIDI_OVERRIDE 224 -#define CSS_VAL_BLINK 225 -#define CSS_VAL_BOTH 226 -#define CSS_VAL_CROP 227 -#define CSS_VAL_CROSS 228 -#define CSS_VAL_EMBED 229 -#define CSS_VAL_FIXED 230 -#define CSS_VAL_HAND 231 -#define CSS_VAL_HIDE 232 -#define CSS_VAL_HIGHER 233 -#define CSS_VAL_INVERT 234 -#define CSS_VAL_LANDSCAPE 235 -#define CSS_VAL_LEVEL 236 -#define CSS_VAL_LINE_THROUGH 237 -#define CSS_VAL_LOUD 238 -#define CSS_VAL_LOWER 239 -#define CSS_VAL_MARQUEE 240 -#define CSS_VAL_MIX 241 -#define CSS_VAL_OVERLINE 242 -#define CSS_VAL_PORTRAIT 243 -#define CSS_VAL_RELATIVE 244 -#define CSS_VAL_SCROLL 245 -#define CSS_VAL_SEPARATE 246 -#define CSS_VAL_SHOW 247 -#define CSS_VAL_STATIC 248 -#define CSS_VAL_THICK 249 -#define CSS_VAL_THIN 250 -#define CSS_VAL_UNDERLINE 251 -#define CSS_VAL__KHTML_NORMAL 252 -#define CSS_VAL__KHTML_AROUND_FLOATS 253 -#define CSS_VAL_BORDER_BOX 254 -#define CSS_VAL_CONTENT_BOX 255 -#define CSS_VAL_ENABLED 256 -#define CSS_VAL_DISABLED 257 -#define CSS_VAL_FORWARDS 258 -#define CSS_VAL_BACKWARDS 259 -#define CSS_VAL_AHEAD 260 -#define CSS_VAL_REVERSE 261 -#define CSS_VAL_UP 262 -#define CSS_VAL_DOWN 263 -#define CSS_VAL_SLOW 264 -#define CSS_VAL_FAST 265 -#define CSS_VAL_INFINITE 266 -#define CSS_VAL_SLIDE 267 -#define CSS_VAL_ALTERNATE 268 -#define CSS_VAL_UNFURL 269 -#define CSS_VAL_CLIP 270 -#define CSS_VAL_ELLIPSIS 271 -#define CSS_VAL_BORDER 272 -#define CSS_VAL_CONTENT 273 -#define CSS_VAL_PADDING 274 +#define CSS_VAL_BREAK_WORD 219 +#define CSS_VAL_ABOVE 220 +#define CSS_VAL_ABSOLUTE 221 +#define CSS_VAL_ALWAYS 222 +#define CSS_VAL_AVOID 223 +#define CSS_VAL_BELOW 224 +#define CSS_VAL_BIDI_OVERRIDE 225 +#define CSS_VAL_BLINK 226 +#define CSS_VAL_BOTH 227 +#define CSS_VAL_CROP 228 +#define CSS_VAL_CROSS 229 +#define CSS_VAL_EMBED 230 +#define CSS_VAL_FIXED 231 +#define CSS_VAL_HAND 232 +#define CSS_VAL_HIDE 233 +#define CSS_VAL_HIGHER 234 +#define CSS_VAL_INVERT 235 +#define CSS_VAL_LANDSCAPE 236 +#define CSS_VAL_LEVEL 237 +#define CSS_VAL_LINE_THROUGH 238 +#define CSS_VAL_LOUD 239 +#define CSS_VAL_LOWER 240 +#define CSS_VAL_MARQUEE 241 +#define CSS_VAL_MIX 242 +#define CSS_VAL_OVERLINE 243 +#define CSS_VAL_PORTRAIT 244 +#define CSS_VAL_RELATIVE 245 +#define CSS_VAL_SCROLL 246 +#define CSS_VAL_SEPARATE 247 +#define CSS_VAL_SHOW 248 +#define CSS_VAL_STATIC 249 +#define CSS_VAL_THICK 250 +#define CSS_VAL_THIN 251 +#define CSS_VAL_UNDERLINE 252 +#define CSS_VAL__KHTML_NORMAL 253 +#define CSS_VAL__KHTML_AROUND_FLOATS 254 +#define CSS_VAL_BORDER_BOX 255 +#define CSS_VAL_CONTENT_BOX 256 +#define CSS_VAL_ENABLED 257 +#define CSS_VAL_DISABLED 258 +#define CSS_VAL_FORWARDS 259 +#define CSS_VAL_BACKWARDS 260 +#define CSS_VAL_AHEAD 261 +#define CSS_VAL_REVERSE 262 +#define CSS_VAL_UP 263 +#define CSS_VAL_DOWN 264 +#define CSS_VAL_SLOW 265 +#define CSS_VAL_FAST 266 +#define CSS_VAL_INFINITE 267 +#define CSS_VAL_SLIDE 268 +#define CSS_VAL_ALTERNATE 269 +#define CSS_VAL_UNFURL 270 +#define CSS_VAL_CLIP 271 +#define CSS_VAL_ELLIPSIS 272 +#define CSS_VAL_BORDER 273 +#define CSS_VAL_CONTENT 274 +#define CSS_VAL_PADDING 275 -#define CSS_VAL_TOTAL 275 +#define CSS_VAL_TOTAL 276 #endif diff --git a/khtml/css/cssvalues.in b/khtml/css/cssvalues.in index 86db77670..1ad99c38d 100644 --- a/khtml/css/cssvalues.in +++ b/khtml/css/cssvalues.in @@ -309,6 +309,11 @@ pre-wrap pre-line -khtml-nowrap # +# CSS_PROP_WORD_WRAP +# +#normal +break-word +# # Unordered rest # above diff --git a/khtml/rendering/bidi.cpp b/khtml/rendering/bidi.cpp index 19de828a0..bd010047a 100644 --- a/khtml/rendering/bidi.cpp +++ b/khtml/rendering/bidi.cpp @@ -44,10 +44,10 @@ namespace khtml { // an iterator which goes through a BidiParagraph struct BidiIterator { - BidiIterator() : par(0), obj(0), pos(0) {} - BidiIterator(RenderBlock *_par, RenderObject *_obj, unsigned int _pos) : par(_par), obj(_obj), pos(_pos) {} + BidiIterator() : par(0), obj(0), pos(0), endOfInline(0) {} + BidiIterator(RenderBlock *_par, RenderObject *_obj, unsigned int _pos, bool eoi=false) : par(_par), obj(_obj), pos(_pos), endOfInline(eoi) {} - void increment( BidiState &bidi ); + void increment( BidiState &bidi, bool skipInlines=true ); bool atEnd() const; @@ -57,6 +57,7 @@ struct BidiIterator RenderBlock *par; RenderObject *obj; unsigned int pos; + bool endOfInline; }; @@ -128,21 +129,6 @@ static int getBorderPaddingMargin(RenderObject* child, bool endOfInline) return result; } -static int inlineWidth(RenderObject* child, bool start = true, bool end = true) -{ - int extraWidth = 0; - RenderObject* parent = child->parent(); - while (parent->isInline() && !parent->isInlineBlockOrInlineTable()) { - if (start && parent->firstChild() == child) - extraWidth += getBorderPaddingMargin(parent, false); - if (end && parent->lastChild() == child) - extraWidth += getBorderPaddingMargin(parent, true); - child = parent; - parent = child->parent(); - } - return extraWidth; -} - #ifndef NDEBUG static bool inBidiRunDetach; #endif @@ -241,15 +227,19 @@ inline bool operator!=( const BidiIterator &it1, const BidiIterator &it2 ) return false; } +// when modifying this function, make sure you check InlineMinMaxIterator::next() as well. static inline RenderObject *Bidinext(RenderObject *par, RenderObject *current, BidiState &bidi, - bool skipInlines = true) + bool skipInlines = true, bool *endOfInline = 0 ) { RenderObject *next = 0; + bool oldEndOfInline = endOfInline ? *endOfInline : false; + if (oldEndOfInline) + *endOfInline = false; while(current != 0) { //kdDebug( 6040 ) << "current = " << current << endl; - if (!current->isFloating() && !current->isReplaced() && !current->isPositioned()) { + if (!oldEndOfInline && !current->isFloating() && !current->isReplaced() && !current->isPositioned()) { next = current->firstChild(); if ( next && adjustEmbedding ) { EUnicodeBidi ub = next->style()->unicodeBidi(); @@ -262,6 +252,12 @@ static inline RenderObject *Bidinext(RenderObject *par, RenderObject *current, B } } if (!next) { + if (!skipInlines && !oldEndOfInline && current->isInlineFlow() && endOfInline) { + next = current; + *endOfInline = true; + break; + } + while (current && current != par) { next = current->nextSibling(); if (next) break; @@ -269,6 +265,11 @@ static inline RenderObject *Bidinext(RenderObject *par, RenderObject *current, B embed( TQChar::DirPDF, bidi ); } current = current->parent(); + if (!skipInlines && current && current != par && current->isInlineFlow() && endOfInline) { + next = current; + *endOfInline = true; + break; + } } } @@ -300,17 +301,17 @@ static RenderObject *first( RenderObject *par, BidiState &bidi, bool skipInlines return o; } -inline void BidiIterator::increment (BidiState &bidi) +inline void BidiIterator::increment (BidiState &bidi, bool skipInlines) { if(!obj) return; if(obj->isText()) { pos++; if(pos >= static_cast(obj)->stringLength()) { - obj = Bidinext( par, obj, bidi ); + obj = Bidinext( par, obj, bidi, skipInlines ); pos = 0; } } else { - obj = Bidinext( par, obj, bidi ); + obj = Bidinext( par, obj, bidi, skipInlines, &endOfInline ); pos = 0; } } @@ -1322,45 +1323,6 @@ void RenderBlock::bidiReorderLine(const BidiIterator &start, const BidiIterator #endif } -#ifdef APPLE_CHANGES // KDE handles compact blocks differently -static void buildCompactRuns(RenderObject* compactObj, BidiState &bidi) -{ - sBuildingCompactRuns = true; - if (!compactObj->isRenderBlock()) { - // Just append a run for our object. - isLineEmpty = false; - addRun(new (compactObj->renderArena()) BidiRun(0, compactObj->length(), compactObj, bidi.context, dir)); - } - else { - // Format the compact like it is its own single line. We build up all the runs for - // the little compact and then reorder them for bidi. - RenderBlock* compactBlock = static_cast(compactObj); - adjustEmbedding = true; - BidiIterator start(compactBlock, first(compactBlock, bidi), 0); - adjustEmbedding = false; - BidiIterator end = start; - - betweenMidpoints = false; - isLineEmpty = true; - previousLineBrokeAtBR = true; - - end = compactBlock->findNextLineBreak(start, bidi); - if (!isLineEmpty) - compactBlock->bidiReorderLine(start, end, bidi); - } - - - sCompactFirstBidiRun = sFirstBidiRun; - sCompactLastBidiRun = sLastBidiRun; - sCompactBidiRunCount = sBidiRunCount; - - sNumMidpoints = 0; - sCurrMidpoint = 0; - betweenMidpoints = false; - sBuildingCompactRuns = false; -} -#endif - void RenderBlock::layoutInlineChildren(bool relayoutChildren, int breakBeforeLine) { BidiState bidi; @@ -1470,13 +1432,6 @@ void RenderBlock::layoutInlineChildren(bool relayoutChildren, int breakBeforeLin oldStart = start; oldBidi = bidi; } -#ifdef APPLE_CHANGES // KDE handles compact blocks differently - if (m_firstLine && firstChild() && firstChild()->isCompact()) { - buildCompactRuns(firstChild(), bidi); - start.obj = firstChild()->nextSibling(); - end = start; - } -#endif if (lineCount == breakBeforeLine) { m_height = pageTopAfter(oldPos); pagebreakHint = true; @@ -1491,15 +1446,6 @@ redo_linebreak: // At the same time we figure out where border/padding/margin should be applied for // inline flow boxes. -#ifdef APPLE_CHANGES // KDE handles compact blocks differently - if (sCompactFirstBidiRun) { - // We have a compact line sharing this line. Link the compact runs - // to our runs to create a single line of runs. - sCompactLastBidiRun->nextRun = sFirstBidiRun; - sFirstBidiRun = sCompactFirstBidiRun; - sBidiRunCount += sCompactBidiRunCount; - } -#endif if (sBidiRunCount) { InlineFlowBox* lineBox = constructLine(start, end); if (lineBox) { @@ -1698,7 +1644,7 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi } } adjustEmbedding = true; - start.increment(bidi); + start.increment(bidi, false /*skipInlines*/); adjustEmbedding = false; } @@ -1714,6 +1660,11 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi return start; } + // This variable says we have encountered an object after which initial whitespace should be ignored (e.g. InlineFlows at the begining of a line). + // Either we have nothing to do, if there is no whitespace after the object... or we have to enter the ignoringSpaces state. + // This dilemma will be resolved when we have a peek at the next object. + bool checkShouldIgnoreInitialWhitespace = false; + // This variable is used only if whitespace isn't set to PRE, and it tells us whether // or not we are currently ignoring whitespace. bool ignoringSpaces = false; @@ -1727,13 +1678,14 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi BidiIterator lBreak = start; - RenderObject *o = start.obj; - RenderObject *last = o; + InlineMinMaxIterator it(start.par, start.obj, start.endOfInline, false /*skipPositioned*/); + InlineMinMaxIterator lastIt = it; int pos = start.pos; bool prevLineBrokeCleanly = previousLineBrokeAtBR; previousLineBrokeAtBR = false; + RenderObject* o = it.current; while( o ) { #ifdef DEBUG_LINEBREAKS kdDebug(6041) << "new object "<< o <<" width = " << w <<" tmpw = " << tmpW << endl; @@ -1742,6 +1694,7 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi if( w + tmpW <= width ) { lBreak.obj = o; lBreak.pos = 0; + lBreak.endOfInline = it.endOfInline; // A
always breaks a line, so don't let the line be collapsed // away. Also, the space at the end of a line with a
does not @@ -1792,13 +1745,22 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi } } } else if (o->isInlineFlow()) { - // Only empty inlines matter. We treat those similarly to replaced elements. - KHTMLAssert(!o->firstChild()); - tmpW += o->marginLeft()+o->borderLeft()+o->paddingLeft()+ - o->marginRight()+o->borderRight()+o->paddingRight(); + tmpW += getBorderPaddingMargin(o, it.endOfInline); + if (isLineEmpty) isLineEmpty = !tmpW; + if (o->isWordBreak()) { // #### shouldn't be an InlineFlow! + w += tmpW; + tmpW = 0; + lBreak.obj = o; + lBreak.pos = 0; + lBreak.endOfInline = it.endOfInline; + } else if (!it.endOfInline) { + // this is the beginning of the line (other non-initial inline flows are handled directly when + // incrementing the iterator below). We want to skip initial whitespace as much as possible. + checkShouldIgnoreInitialWhitespace = true; + } } else if ( o->isReplaced() || o->isGlyph() ) { EWhiteSpace currWS = o->style()->whiteSpace(); - EWhiteSpace lastWS = last->style()->whiteSpace(); + EWhiteSpace lastWS = lastIt.current->style()->whiteSpace(); // WinIE marquees have different whitespace characteristics by default when viewed from // the outside vs. the inside. Text inside is NOWRAP, and so we altered the marquee's @@ -1806,8 +1768,8 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi // for the marquee when checking for line breaking. if (o->isHTMLMarquee() && o->layer() && o->layer()->marquee()) currWS = o->layer()->marquee()->whiteSpace(); - if (last->isHTMLMarquee() && last->layer() && last->layer()->marquee()) - lastWS = last->layer()->marquee()->whiteSpace(); + if (lastIt.current->isHTMLMarquee() && lastIt.current->layer() && lastIt.current->layer()->marquee()) + lastWS = lastIt.current->layer()->marquee()->whiteSpace(); // Break on replaced elements if either has normal white-space. if (currWS == NORMAL || lastWS == NORMAL) { @@ -1815,9 +1777,10 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi tmpW = 0; lBreak.obj = o; lBreak.pos = 0; + lBreak.endOfInline = false; } - tmpW += o->width()+o->marginLeft()+o->marginRight()+inlineWidth(o); + tmpW += o->width()+o->marginLeft()+o->marginRight(); if (ignoringSpaces) { BidiIterator startMid( 0, o, 0 ); addMidpoint(startMid); @@ -1828,21 +1791,7 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi trailingSpaceObject = 0; if (o->isListMarker() && o->style()->listStylePosition() == OUTSIDE) { - // The marker must not have an effect on whitespace at the start - // of the line. We start ignoring spaces to make sure that any additional - // spaces we see will be discarded. - // - // Optimize for a common case. If we can't find whitespace after the list - // item, then this is all moot. -dwh - RenderObject* next = Bidinext( start.par, o, bidi ); - if (!style()->preserveWS() && next && next->isText() && static_cast(next)->stringLength() > 0 && - (static_cast(next)->text()[0].category() == TQChar::Separator_Space || - static_cast(next)->text()[0] == '\n')) { - currentCharacterIsSpace = true; - ignoringSpaces = true; - BidiIterator endMid( 0, o, 0 ); - addMidpoint(endMid); - } + checkShouldIgnoreInitialWhitespace = true; } } else if ( o->isText() ) { RenderText *t = static_cast(o); @@ -1859,10 +1808,8 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi #ifdef APPLE_CHANGES int wordSpacing = o->style()->wordSpacing(); #endif - bool appliedStartWidth = pos > 0; // If the span originated on a previous line, - // then assume the start width has been applied. - bool appliedEndWidth = false; bool nextIsSoftBreakable = false; + bool checkBreakWord = autoWrap && (o->style()->wordWrap() == WWBREAKWORD); while(len) { bool previousCharacterIsSpace = currentCharacterIsSpace; @@ -1870,6 +1817,8 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi nextIsSoftBreakable = false; const TQChar c = str[pos]; currentCharacterIsSpace = c == ' '; + checkBreakWord &= !w; // only break words when no other breaking opportunity exists earlier + // on the line (even within the text object we are currently processing) if (preserveWS || !currentCharacterIsSpace) isLineEmpty = false; @@ -1921,13 +1870,11 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi } } - if ( (preserveLF && c == '\n') || (autoWrap && (isBreakable( str, pos, strlen ) || isSoftBreakable)) ) { + const bool isbreakablePosition = (preserveLF && c == '\n') || (autoWrap && + (isBreakable( str, pos, strlen ) || isSoftBreakable)); + if ( isbreakablePosition || checkBreakWord ) { tmpW += t->width(lastSpace, pos - lastSpace, f); - if (!appliedStartWidth) { - tmpW += inlineWidth(o, true, false); - appliedStartWidth = true; - } #ifdef APPLE_CHANGES applyWordSpacing = (wordSpacing && currentCharacterIsSpace && !previousCharacterIsSpace && !t->containsOnlyWhitespace(pos+1, strlen-(pos+1))); @@ -1957,9 +1904,14 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi } if (autoWrap) { - if (w+tmpW > width) + if (w+tmpW > width) { + if (checkBreakWord && pos) { + lBreak.obj = o; + lBreak.pos = pos-1; + lBreak.endOfInline = false; + } goto end; - else if ( (pos > 1 && str[pos-1].unicode() == SOFT_HYPHEN) ) + } else if ( (pos > 1 && str[pos-1].unicode() == SOFT_HYPHEN) ) // Subtract the width of the soft hyphen out since we fit on a line. tmpW -= t->width(pos-1, 1, f); } @@ -1967,6 +1919,7 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi if( preserveLF && *(str+pos) == '\n' ) { lBreak.obj = o; lBreak.pos = pos; + lBreak.endOfInline = false; #ifdef DEBUG_LINEBREAKS kdDebug(6041) << "forced break sol: " << start.obj << " " << start.pos << " end: " << lBreak.obj << " " << lBreak.pos << " width=" << w << endl; @@ -1974,11 +1927,12 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi return lBreak; } - if ( autoWrap ) { + if ( autoWrap && isbreakablePosition ) { w += tmpW; tmpW = 0; lBreak.obj = o; lBreak.pos = pos; + lBreak.endOfInline = false; } lastSpace = pos; @@ -2016,31 +1970,63 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi len--; } - // IMPORTANT: pos is > length here! - if (!ignoringSpaces) + if (!ignoringSpaces) { + // We didn't find any space that would be beyond the line |width|. + // Lets add to |tmpW| the remaining width since the last space we found. + // Before we test this new |tmpW| however, we will have to look ahead to check + // if the next object/position can serve as a line breaking opportunity. tmpW += t->width(lastSpace, pos - lastSpace, f); - if (!appliedStartWidth) - tmpW += inlineWidth(o, true, false); - if (!appliedEndWidth) - tmpW += inlineWidth(o, false, true); + if (checkBreakWord && !w && pos && tmpW > width) { + // Avoid doing the costly lookahead for break-word, + // since we know we are allowed to break. + lBreak.obj = o; + lBreak.pos = pos-1; + lBreak.endOfInline = false; + goto end; + } + } } else KHTMLAssert( false ); - RenderObject* next = Bidinext(start.par, o, bidi); - bool autoWrap = o->style()->autoWrap(); + InlineMinMaxIterator savedIt = lastIt; + lastIt = it; + o = it.next(); + + // advance the iterator to the next non-inline-flow + while (o && o->isInlineFlow() && !o->isWordBreak()) { + tmpW += getBorderPaddingMargin(o, it.endOfInline); + if (isLineEmpty) isLineEmpty = !tmpW; + o = it.next(); + } + + if (checkShouldIgnoreInitialWhitespace) { + // Check if we should switch to ignoringSpaces state + if (!style()->preserveWS() && it.current && it.current->isText()) { + const RenderText* rt = static_cast(it.current); + if (rt->stringLength() > 0 && (rt->text()[0].category() == TQChar::Separator_Space || rt->text()[0] == '\n')) { + currentCharacterIsSpace = true; + ignoringSpaces = true; + BidiIterator endMid( 0, lastIt.current, 0 ); + addMidpoint(endMid); + } + } + checkShouldIgnoreInitialWhitespace = false; + } + + bool autoWrap = lastIt.current->style()->autoWrap(); bool checkForBreak = autoWrap; - if (w && w + tmpW > width && lBreak.obj && !o->style()->preserveLF() && !autoWrap) + if (w && w + tmpW > width && lBreak.obj && !lastIt.current->style()->preserveLF() && !autoWrap) checkForBreak = true; - else if (next && o->isText() && next->isText() && !next->isBR()) { - if (autoWrap || next->style()->autoWrap()) { + else if (it.current && lastIt.current->isText() && it.current->isText() && !it.current->isBR()) { + if (autoWrap || it.current->style()->autoWrap()) { if (currentCharacterIsSpace) checkForBreak = true; else { checkForBreak = false; - RenderText* nextText = static_cast(next); + RenderText* nextText = static_cast(it.current); if (nextText->stringLength() != 0) { TQChar c = nextText->text()[0]; - if (c == ' ' || c == '\t' || (c == '\n' && !next->style()->preserveLF())) { + if (c == ' ' || c == '\t' || (c == '\n' && !it.current->style()->preserveLF())) { // If the next item on the line is text, and if we did not end with // a space, then the next text run continues our word (and so it needs to // keep adding to |tmpW|. Just update and continue. @@ -2052,8 +2038,9 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi if (canPlaceOnLine && checkForBreak) { w += tmpW; tmpW = 0; - lBreak.obj = next; + lBreak.obj = it.current; lBreak.pos = 0; + lBreak.endOfInline = it.endOfInline; } } } @@ -2063,7 +2050,7 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi //kdDebug() << " too wide w=" << w << " tmpW = " << tmpW << " width = " << width << endl; //kdDebug() << "start=" << start.obj << " current=" << o << endl; // if we have floats, try to get below them. - if (currentCharacterIsSpace && !ignoringSpaces && !o->style()->preserveWS()) + if (currentCharacterIsSpace && !ignoringSpaces && !lastIt.current->style()->preserveWS()) trailingSpaceObject = 0; int fb = nearestFloatBottom(m_height); @@ -2087,24 +2074,26 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi // |width| may have been adjusted because we got shoved down past a float (thus // giving us more room), so we need to retest, and only jump to // the end label if we still don't fit on the line. -dwh - if (w + tmpW > width) + if (w + tmpW > width) { + it = lastIt; + lastIt = savedIt; + o = it.current; goto end; + } } - last = o; - o = next; - - if (!last->isFloatingOrPositioned() && last->isReplaced() && last->style()->autoWrap()) { + if (!lastIt.current->isFloatingOrPositioned() && lastIt.current->isReplaced() && lastIt.current->style()->autoWrap()) { // Go ahead and add in tmpW. w += tmpW; tmpW = 0; lBreak.obj = o; lBreak.pos = 0; + lBreak.endOfInline = it.endOfInline; } // Clear out our character space bool, since inline
s don't collapse whitespace
         // with adjacent inline normal/nowrap spans.
-        if (last->style()->preserveWS())
+        if (lastIt.current->style()->preserveWS())
             currentCharacterIsSpace = false;
 
         pos = 0;
@@ -2113,9 +2102,10 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi
 #ifdef DEBUG_LINEBREAKS
     kdDebug( 6041 ) << "end of par, width = " << width << " linewidth = " << w + tmpW << endl;
 #endif
-    if( w + tmpW <= width || (last && !last->style()->autoWrap())) {
+    if( w + tmpW <= width || (lastIt.current && !lastIt.current->style()->autoWrap())) {
         lBreak.obj = 0;
         lBreak.pos = 0;
+        lBreak.endOfInline = false;
     }
 
  end:
@@ -2127,21 +2117,25 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi
             if(pos != 0) {
                 lBreak.obj = o;
                 lBreak.pos = pos - 1;
+                lBreak.endOfInline = it.endOfInline;
             } else {
-                lBreak.obj = last;
-                lBreak.pos = last->isText() ? last->length() : 0;
+                lBreak.obj = lastIt.current;
+                lBreak.pos = lastIt.current->isText() ? lastIt.current->length() : 0;
+                lBreak.endOfInline = lastIt.endOfInline;
             }
         } else if( lBreak.obj ) {
-            if( last != o ) {
+            if( lastIt.current != o ) {
                 // better to break between object boundaries than in the middle of a word
                 lBreak.obj = o;
                 lBreak.pos = 0;
+                lBreak.endOfInline = it.endOfInline;
             } else {
                 // Don't ever break in the middle of a word if we can help it.
                 // There's no room at all. We just have to be on this line,
                 // even though we'll spill out.
                 lBreak.obj = o;
                 lBreak.pos = pos;
+                lBreak.endOfInline = it.endOfInline;
             }
         }
     }
@@ -2150,8 +2144,11 @@ BidiIterator RenderBlock::findNextLineBreak(BidiIterator &start, BidiState &bidi
         start = posStart;
 
     // make sure we consume at least one char/object.
-    if( lBreak == start )
+    // and avoid returning an InlineFlow
+    // (FIXME: turn those wordbreaks into empty text objects - they shouldn't be inline flows!)
+    if( lBreak == start || (lBreak.obj && lBreak.obj->isInlineFlow() && !lBreak.obj->isWordBreak())) {
         lBreak.increment(bidi);
+    }
 
 #ifdef DEBUG_LINEBREAKS
     kdDebug(6041) << "regular break sol: " << start.obj << " " << start.pos << "   end: " << lBreak.obj << " " << lBreak.pos << "   width=" << w << endl;
diff --git a/khtml/rendering/bidi.h b/khtml/rendering/bidi.h
index 15a9ab906..c8776ce19 100644
--- a/khtml/rendering/bidi.h
+++ b/khtml/rendering/bidi.h
@@ -24,6 +24,7 @@
 #define BIDI_H
 
 #include 
+#include "rendering/render_object.h"
 
 namespace khtml {
     class RenderArena;
@@ -101,6 +102,71 @@ public:
     struct BidiIterator;
     struct BidiState;
 
+    struct InlineMinMaxIterator
+    {
+    /* InlineMinMaxIterator is a class that will iterate over all render objects that contribute to
+       inline min/max width calculations.  Note the following about the way it walks:
+       (1) Positioned content is skipped (since it does not contribute to min/max width of a block)
+       (2) We do not drill into the children of floats or replaced elements, since you can't break
+           in the middle of such an element.
+       (3) Inline flows (e.g., , , ) are walked twice, since each side can have
+           distinct borders/margin/padding that contribute to the min/max width.
+    */
+        RenderObject* parent;
+        RenderObject* current;
+        bool endOfInline;
+        bool skipPositioned;
+        InlineMinMaxIterator(RenderObject* p, RenderObject* o, bool eOI=false, bool skipPos=true)
+            :parent(p), current(o), endOfInline(eOI), skipPositioned(skipPos) {}
+        inline RenderObject* next();
+    };
+
+    inline RenderObject* InlineMinMaxIterator::next()
+    {
+        RenderObject* result = 0;
+        bool oldEndOfInline = endOfInline;
+        endOfInline = false;
+        while (current != 0 || (current == parent))
+        {
+            //kDebug( 6040 ) << "current = " << current;
+            if (!oldEndOfInline &&
+                (current == parent ||
+                (!current->isFloating() && !current->isReplaced() && !current->isPositioned())))
+                result = current->firstChild();
+            if (!result) {
+                // We hit the end of our inline. (It was empty, e.g., .)
+                if (!oldEndOfInline && current->isInlineFlow()) {
+                    result = current;
+                    endOfInline = true;
+                    break;
+                }
+                while (current && current != parent) {
+                    result = current->nextSibling();
+                    if (result) break;
+                    current = current->parent();
+                    if (current && current != parent && current->isInlineFlow()) {
+                        result = current;
+                        endOfInline = true;
+                        break;
+                    }
+                }
+            }
+
+            if (!result) break;
+
+            if ((!skipPositioned || !result->isPositioned()) && (result->isText() || result->isBR() ||
+                result->isFloatingOrPositioned() || result->isReplaced() || result->isGlyph() || result->isInlineFlow()))
+                break;
+
+            current = result;
+            result = 0;
+        }
+
+        // Update our position.
+        current = result;
+        return current;
+    }
+
 }
 
 #endif
diff --git a/khtml/rendering/render_block.cpp b/khtml/rendering/render_block.cpp
index d036b9d09..ccbb6fad0 100644
--- a/khtml/rendering/render_block.cpp
+++ b/khtml/rendering/render_block.cpp
@@ -2623,74 +2623,6 @@ void RenderBlock::calcMinMaxWidth()
     // ### compare with min/max width set in style sheet...
 }
 
-struct InlineMinMaxIterator
-{
-/* InlineMinMaxIterator is a class that will iterate over all render objects that contribute to
-   inline min/max width calculations.  Note the following about the way it walks:
-   (1) Positioned content is skipped (since it does not contribute to min/max width of a block)
-   (2) We do not drill into the children of floats or replaced elements, since you can't break
-       in the middle of such an element.
-   (3) Inline flows (e.g., , , ) are walked twice, since each side can have
-       distinct borders/margin/padding that contribute to the min/max width.
-*/
-    RenderObject* parent;
-    RenderObject* current;
-    bool endOfInline;
-
-    InlineMinMaxIterator(RenderObject* p, RenderObject* o, bool end = false)
-        :parent(p), current(o), endOfInline(end) {}
-
-    RenderObject* next();
-};
-
-RenderObject* InlineMinMaxIterator::next()
-{
-    RenderObject* result = 0;
-    bool oldEndOfInline = endOfInline;
-    endOfInline = false;
-    while (current != 0 || (current == parent))
-    {
-        //kdDebug( 6040 ) << "current = " << current << endl;
-        if (!oldEndOfInline &&
-            (current == parent ||
-             (!current->isFloating() && !current->isReplaced() && !current->isPositioned())))
-            result = current->firstChild();
-        if (!result) {
-            // We hit the end of our inline. (It was empty, e.g., .)
-            if (!oldEndOfInline && current->isInlineFlow()) {
-                result = current;
-                endOfInline = true;
-                break;
-            }
-
-            while (current && current != parent) {
-                result = current->nextSibling();
-                if (result) break;
-                current = current->parent();
-                if (current && current != parent && current->isInlineFlow()) {
-                    result = current;
-                    endOfInline = true;
-                    break;
-                }
-            }
-        }
-
-        if (!result) break;
-
-        if (!result->isPositioned() && (result->isText() || result->isBR() ||
-            result->isFloating() || result->isReplaced() ||
-            result->isInlineFlow()))
-            break;
-
-        current = result;
-        result = 0;
-    }
-
-    // Update our position.
-    current = result;
-    return current;
-}
-
 // bidi.cpp defines the following functions too.
 // Maybe these should not be static, after all...
 
diff --git a/khtml/rendering/render_line.cpp b/khtml/rendering/render_line.cpp
index f3b769e9c..2bcbe366e 100644
--- a/khtml/rendering/render_line.cpp
+++ b/khtml/rendering/render_line.cpp
@@ -271,8 +271,8 @@ bool InlineFlowBox::onEndChain(RenderObject* endObject)
 
     RenderObject* curr = endObject;
     RenderObject* parent = curr->parent();
-    while (parent && !parent->isRenderBlock() || parent == object()) {
-        if (parent->lastChild() != curr)
+    while (parent && !parent->isRenderBlock()) {
+        if (parent->lastChild() != curr || parent == object())
             return false;
 
         curr = parent;
diff --git a/khtml/rendering/render_object.cpp b/khtml/rendering/render_object.cpp
index c1f7fd754..c5ee68720 100644
--- a/khtml/rendering/render_object.cpp
+++ b/khtml/rendering/render_object.cpp
@@ -244,6 +244,11 @@ bool RenderObject::isHR() const
     return element() && element()->id() == ID_HR;
 }
 
+bool RenderObject::isWordBreak() const
+{
+    return element() && element()->id() == ID_WBR;
+}
+
 bool RenderObject::isHTMLMarquee() const
 {
     return element() && element()->renderer() == this && element()->id() == ID_MARQUEE;
diff --git a/khtml/rendering/render_object.h b/khtml/rendering/render_object.h
index 1242f8e87..f7f772387 100644
--- a/khtml/rendering/render_object.h
+++ b/khtml/rendering/render_object.h
@@ -282,6 +282,7 @@ public:
     virtual bool isApplet() const { return false; }
 
     bool isHTMLMarquee() const;
+    bool isWordBreak() const;
 
     bool isAnonymous() const { return m_isAnonymous; }
     void setIsAnonymous(bool b) { m_isAnonymous = b; }
diff --git a/khtml/rendering/render_style.cpp b/khtml/rendering/render_style.cpp
index 18c520ad4..a71dd4116 100644
--- a/khtml/rendering/render_style.cpp
+++ b/khtml/rendering/render_style.cpp
@@ -429,7 +429,7 @@ bool StyleCSS3NonInheritedData::operator==(const StyleCSS3NonInheritedData& o) c
 }
 
 StyleCSS3InheritedData::StyleCSS3InheritedData()
-:Shared(), textShadow(0)
+:Shared(), textShadow(0), wordWrap(RenderStyle::initialWordWrap())
 #ifdef APPLE_CHANGES
 , userModify(READ_ONLY), textSizeAdjust(RenderStyle::initialTextSizeAdjust())
 #endif
@@ -441,6 +441,7 @@ StyleCSS3InheritedData::StyleCSS3InheritedData(const StyleCSS3InheritedData& o)
 :Shared()
 {
     textShadow = o.textShadow ? new ShadowData(*o.textShadow) : 0;
+    wordWrap = o.wordWrap;
 #ifdef APPLE_CHANGES
     userModify = o.userModify;
     textSizeAdjust = o.textSizeAdjust;
@@ -454,7 +455,7 @@ StyleCSS3InheritedData::~StyleCSS3InheritedData()
 
 bool StyleCSS3InheritedData::operator==(const StyleCSS3InheritedData& o) const
 {
-    return shadowDataEquivalent(o)
+    return shadowDataEquivalent(o) && (wordWrap == o.wordWrap)
 #ifdef APPLE_CHANGES
             && (userModify == o.userModify) && (textSizeAdjust == o.textSizeAdjust)
 #endif
diff --git a/khtml/rendering/render_style.h b/khtml/rendering/render_style.h
index b1c1e5306..29b369ca1 100644
--- a/khtml/rendering/render_style.h
+++ b/khtml/rendering/render_style.h
@@ -192,6 +192,9 @@ enum EFloat {
     FNONE = 0, FLEFT = 0x01, FRIGHT = 0x02, FLEFT_ALIGN = 0x05, FRIGHT_ALIGN = 0x06
 };
 
+enum EWordWrap {
+  WWNORMAL = 0, WWBREAKWORD = 0x01
+};
 
 //------------------------------------------------
 // Border attributes. Not inherited.
@@ -702,6 +705,7 @@ class StyleCSS3InheritedData : public Shared
         EUserModify userModify : 2; // Flag used for editing state
         bool textSizeAdjust : 1;    // An Apple extension.  Not really CSS3 but not worth making a new struct over.
 #endif
+        EWordWrap wordWrap : 1;
     private:
         StyleCSS3InheritedData &operator=(const StyleCSS3InheritedData &);
 };
@@ -1195,6 +1199,7 @@ public:
         return background->m_outline._offset;
     }
     ShadowData* textShadow() const { return css3InheritedData->textShadow; }
+    EWordWrap wordWrap() const { return css3InheritedData->wordWrap; }
     float opacity() { return css3NonInheritedData->opacity; }
     EUserInput userInput() const { return inherited_flags.f._user_input; }
 
@@ -1346,6 +1351,7 @@ public:
     // CSS3 Setters
     void setBoxSizing( EBoxSizing b ) { SET_VAR(box,box_sizing,b); }
     void setOutlineOffset(unsigned short v) {  SET_VAR(background,m_outline._offset,v) }
+    void setWordWrap(EWordWrap w) { SET_VAR(css3InheritedData, wordWrap, w); }
     void setTextShadow(ShadowData* val, bool add=false);
     void setOpacity(float f) { SET_VAR(css3NonInheritedData, opacity, f); }
     void setUserInput(EUserInput ui) { inherited_flags.f._user_input = ui; }
@@ -1424,6 +1430,7 @@ public:
     static EDisplay initialDisplay() { return INLINE; }
     static EEmptyCell initialEmptyCells() { return SHOW; }
     static EFloat initialFloating() { return FNONE; }
+    static EWordWrap initialWordWrap() { return WWNORMAL; }
     static EListStylePosition initialListStylePosition() { return OUTSIDE; }
     static EListStyleType initialListStyleType() { return LDISC; }
     static EOverflow initialOverflowX() { return OVISIBLE; }