From 44408c2dc0cba02f6cff7f55207cbb197aff1b3b Mon Sep 17 00:00:00 2001 From: "kipp%netscape.com" Date: Fri, 24 Jul 1998 16:22:54 +0000 Subject: [PATCH] Check style unit before translating relative position coords git-svn-id: svn://10.0.0.236/trunk@6401 18797224-902f-48f8-a5cc-f745e15eee43 --- .../content/html/style/src/nsCSSLayout.cpp | 26 ++++++++++++++++--- mozilla/layout/html/style/src/nsCSSLayout.cpp | 26 ++++++++++++++++--- 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/mozilla/content/html/style/src/nsCSSLayout.cpp b/mozilla/content/html/style/src/nsCSSLayout.cpp index abb939dcc85..0be40d3a905 100644 --- a/mozilla/content/html/style/src/nsCSSLayout.cpp +++ b/mozilla/content/html/style/src/nsCSSLayout.cpp @@ -258,12 +258,30 @@ nsCSSLayout::RelativePositionChildren(nsIPresContext* aCX, nsIFrame* kid = aFirstChild; while (--aChildCount >= 0) { const nsStylePosition* kidPosition; - kid->GetStyleData(eStyleStruct_Position, (const nsStyleStruct*&)kidPosition); + kid->GetStyleData(eStyleStruct_Position, + (const nsStyleStruct*&)kidPosition); if (NS_STYLE_POSITION_RELATIVE == kidPosition->mPosition) { kid->GetOrigin(origin); - // XXX Check the unit: could be auto or percent (not just length) - nscoord dx = kidPosition->mLeftOffset.GetCoordValue(); - nscoord dy = kidPosition->mTopOffset.GetCoordValue(); + nscoord dx = 0; + switch (kidPosition->mLeftOffset.GetUnit()) { + case eStyleUnit_Percent: + printf("XXX: not yet implemented: % relative position\n"); + case eStyleUnit_Auto: + break; + case eStyleUnit_Coord: + dx = kidPosition->mLeftOffset.GetCoordValue(); + break; + } + nscoord dy = 0; + switch (kidPosition->mTopOffset.GetUnit()) { + case eStyleUnit_Percent: + printf("XXX: not yet implemented: % relative position\n"); + case eStyleUnit_Auto: + break; + case eStyleUnit_Coord: + dx = kidPosition->mTopOffset.GetCoordValue(); + break; + } kid->MoveTo(origin.x + dx, origin.y + dy); } kid->GetNextSibling(kid); diff --git a/mozilla/layout/html/style/src/nsCSSLayout.cpp b/mozilla/layout/html/style/src/nsCSSLayout.cpp index abb939dcc85..0be40d3a905 100644 --- a/mozilla/layout/html/style/src/nsCSSLayout.cpp +++ b/mozilla/layout/html/style/src/nsCSSLayout.cpp @@ -258,12 +258,30 @@ nsCSSLayout::RelativePositionChildren(nsIPresContext* aCX, nsIFrame* kid = aFirstChild; while (--aChildCount >= 0) { const nsStylePosition* kidPosition; - kid->GetStyleData(eStyleStruct_Position, (const nsStyleStruct*&)kidPosition); + kid->GetStyleData(eStyleStruct_Position, + (const nsStyleStruct*&)kidPosition); if (NS_STYLE_POSITION_RELATIVE == kidPosition->mPosition) { kid->GetOrigin(origin); - // XXX Check the unit: could be auto or percent (not just length) - nscoord dx = kidPosition->mLeftOffset.GetCoordValue(); - nscoord dy = kidPosition->mTopOffset.GetCoordValue(); + nscoord dx = 0; + switch (kidPosition->mLeftOffset.GetUnit()) { + case eStyleUnit_Percent: + printf("XXX: not yet implemented: % relative position\n"); + case eStyleUnit_Auto: + break; + case eStyleUnit_Coord: + dx = kidPosition->mLeftOffset.GetCoordValue(); + break; + } + nscoord dy = 0; + switch (kidPosition->mTopOffset.GetUnit()) { + case eStyleUnit_Percent: + printf("XXX: not yet implemented: % relative position\n"); + case eStyleUnit_Auto: + break; + case eStyleUnit_Coord: + dx = kidPosition->mTopOffset.GetCoordValue(); + break; + } kid->MoveTo(origin.x + dx, origin.y + dy); } kid->GetNextSibling(kid);