From 5efdb69c7484b5c89e4cb9395922376b319f7c2d Mon Sep 17 00:00:00 2001 From: "dbaron%dbaron.org" Date: Wed, 15 Jun 2005 23:45:06 +0000 Subject: [PATCH] Implement the same block-alignment behavior for align=left (which matters only for RTL) that we do for center and right. b=64510 r+sr=roc a=asa git-svn-id: svn://10.0.0.236/trunk@174650 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/content/html/content/src/nsGenericHTMLElement.cpp | 6 +++--- mozilla/layout/base/nsStyleConsts.h | 1 + mozilla/layout/generic/nsBlockReflowContext.cpp | 2 +- mozilla/layout/generic/nsHTMLReflowState.cpp | 8 +++++--- mozilla/layout/generic/nsLineLayout.cpp | 1 + mozilla/layout/style/nsCSSKeywordList.h | 1 + mozilla/layout/style/nsCSSProps.cpp | 1 + 7 files changed, 13 insertions(+), 7 deletions(-) diff --git a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp index 9f5a6cda0c2..2831f2bcbde 100644 --- a/mozilla/content/html/content/src/nsGenericHTMLElement.cpp +++ b/mozilla/content/html/content/src/nsGenericHTMLElement.cpp @@ -2428,7 +2428,7 @@ static const nsAttrValue::EnumTable kVAlignTable[] = { }; static const nsAttrValue::EnumTable kDivAlignTable[] = { - { "left", NS_STYLE_TEXT_ALIGN_LEFT }, + { "left", NS_STYLE_TEXT_ALIGN_MOZ_LEFT }, { "right", NS_STYLE_TEXT_ALIGN_MOZ_RIGHT }, { "center", NS_STYLE_TEXT_ALIGN_MOZ_CENTER }, { "middle", NS_STYLE_TEXT_ALIGN_MOZ_CENTER }, @@ -2509,7 +2509,7 @@ nsGenericHTMLElement::ParseTableHAlignValue(const nsAString& aString, // These tables are used for TD,TH,TR, etc (but not TABLE) static const nsAttrValue::EnumTable kTableCellHAlignTable[] = { - { "left", NS_STYLE_TEXT_ALIGN_LEFT }, + { "left", NS_STYLE_TEXT_ALIGN_MOZ_LEFT }, { "right", NS_STYLE_TEXT_ALIGN_MOZ_RIGHT }, { "center", NS_STYLE_TEXT_ALIGN_MOZ_CENTER }, { "char", NS_STYLE_TEXT_ALIGN_CHAR }, @@ -2518,7 +2518,7 @@ static const nsAttrValue::EnumTable kTableCellHAlignTable[] = { }; static const nsAttrValue::EnumTable kCompatTableCellHAlignTable[] = { - { "left", NS_STYLE_TEXT_ALIGN_LEFT }, + { "left", NS_STYLE_TEXT_ALIGN_MOZ_LEFT }, { "right", NS_STYLE_TEXT_ALIGN_MOZ_RIGHT }, { "center", NS_STYLE_TEXT_ALIGN_MOZ_CENTER }, { "char", NS_STYLE_TEXT_ALIGN_CHAR }, diff --git a/mozilla/layout/base/nsStyleConsts.h b/mozilla/layout/base/nsStyleConsts.h index cedadc02816..e877693ed23 100644 --- a/mozilla/layout/base/nsStyleConsts.h +++ b/mozilla/layout/base/nsStyleConsts.h @@ -526,6 +526,7 @@ #define NS_STYLE_TEXT_ALIGN_CHAR 5 //align based on a certain character, for table cell #define NS_STYLE_TEXT_ALIGN_MOZ_CENTER 6 #define NS_STYLE_TEXT_ALIGN_MOZ_RIGHT 7 +#define NS_STYLE_TEXT_ALIGN_MOZ_LEFT 8 // See nsStyleText, nsStyleFont #define NS_STYLE_TEXT_DECORATION_NONE 0 diff --git a/mozilla/layout/generic/nsBlockReflowContext.cpp b/mozilla/layout/generic/nsBlockReflowContext.cpp index 680c149c824..7993a89adc8 100644 --- a/mozilla/layout/generic/nsBlockReflowContext.cpp +++ b/mozilla/layout/generic/nsBlockReflowContext.cpp @@ -268,7 +268,7 @@ nsBlockReflowContext::AlignBlockHorizontally(nscoord aWidth, aAlign.mXOffset += remainingSpace; } else if (styleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_CENTER) { aAlign.mXOffset += remainingSpace / 2; - } else { + } else if (styleText->mTextAlign != NS_STYLE_TEXT_ALIGN_MOZ_LEFT) { // If we don't have a special text-align value indicating // HTML alignment, then use the CSS rules. diff --git a/mozilla/layout/generic/nsHTMLReflowState.cpp b/mozilla/layout/generic/nsHTMLReflowState.cpp index e29daea156f..898904b17ca 100644 --- a/mozilla/layout/generic/nsHTMLReflowState.cpp +++ b/mozilla/layout/generic/nsHTMLReflowState.cpp @@ -2165,11 +2165,13 @@ nsHTMLReflowState::CalculateBlockSideMargins(nscoord aAvailWidth, // First check if there is an HTML alignment that we should honor const nsHTMLReflowState* prs = parentReflowState; if (prs && - (prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_CENTER || + (prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_LEFT || + prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_CENTER || prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_RIGHT)) { - isAutoLeftMargin = PR_TRUE; + isAutoLeftMargin = + prs->mStyleText->mTextAlign != NS_STYLE_TEXT_ALIGN_MOZ_LEFT; isAutoRightMargin = - prs->mStyleText->mTextAlign == NS_STYLE_TEXT_ALIGN_MOZ_CENTER; + prs->mStyleText->mTextAlign != NS_STYLE_TEXT_ALIGN_MOZ_RIGHT; } // Otherwise apply the CSS rules, and ignore one margin by forcing // it to 'auto', depending on 'direction'. diff --git a/mozilla/layout/generic/nsLineLayout.cpp b/mozilla/layout/generic/nsLineLayout.cpp index fce6c484e39..d501aaceb99 100644 --- a/mozilla/layout/generic/nsLineLayout.cpp +++ b/mozilla/layout/generic/nsLineLayout.cpp @@ -2830,6 +2830,7 @@ nsLineLayout::HorizontalAlignFrames(nsRect& aLineBounds, break; case NS_STYLE_TEXT_ALIGN_LEFT: + case NS_STYLE_TEXT_ALIGN_MOZ_LEFT: break; case NS_STYLE_TEXT_ALIGN_JUSTIFY: diff --git a/mozilla/layout/style/nsCSSKeywordList.h b/mozilla/layout/style/nsCSSKeywordList.h index da22d435583..52d2c1a94d6 100644 --- a/mozilla/layout/style/nsCSSKeywordList.h +++ b/mozilla/layout/style/nsCSSKeywordList.h @@ -126,6 +126,7 @@ CSS_KEY(-moz-japanese-informal, _moz_japanese_informal) CSS_KEY(-moz-kannada, _moz_kannada) CSS_KEY(-moz-khmer, _moz_khmer) CSS_KEY(-moz-lao, _moz_lao) +CSS_KEY(-moz-left, _moz_left) CSS_KEY(-moz-list, _moz_list) CSS_KEY(-moz-mac-accentdarkestshadow, _moz_mac_accentdarkestshadow) CSS_KEY(-moz-mac-accentdarkshadow, _moz_mac_accentdarkshadow) diff --git a/mozilla/layout/style/nsCSSProps.cpp b/mozilla/layout/style/nsCSSProps.cpp index 50f19fcc015..98478bb7ca8 100644 --- a/mozilla/layout/style/nsCSSProps.cpp +++ b/mozilla/layout/style/nsCSSProps.cpp @@ -829,6 +829,7 @@ const PRInt32 nsCSSProps::kTextAlignKTable[] = { eCSSKeyword_justify, NS_STYLE_TEXT_ALIGN_JUSTIFY, eCSSKeyword__moz_center, NS_STYLE_TEXT_ALIGN_MOZ_CENTER, eCSSKeyword__moz_right, NS_STYLE_TEXT_ALIGN_MOZ_RIGHT, + eCSSKeyword__moz_left, NS_STYLE_TEXT_ALIGN_MOZ_LEFT, eCSSKeyword_start, NS_STYLE_TEXT_ALIGN_DEFAULT, eCSSKeyword_UNKNOWN,-1 };