diff options
-rw-r--r-- | src/css/cssvalues.nim | 16 | ||||
-rw-r--r-- | src/layout/engine.nim | 5 |
2 files changed, 18 insertions, 3 deletions
diff --git a/src/css/cssvalues.nim b/src/css/cssvalues.nim index 86d5630c..8751ba50 100644 --- a/src/css/cssvalues.nim +++ b/src/css/cssvalues.nim @@ -99,6 +99,7 @@ type cptFlexGrow = "flex-grow" cptFlexShrink = "flex-shrink" cptFlexBasis = "flex-basis" + cptOverflow = "overflow" CSSValueType* = enum cvtNone = "" @@ -131,6 +132,7 @@ type cvtFlexDirection = "flexDirection" cvtFlexWrap = "flexWrap" cvtNumber = "number" + cvtOverflow = "overflow" CSSGlobalType = enum cgtNoglobal = "" @@ -293,6 +295,13 @@ type FlexWrapWrap = "wrap" FlexWrapWrapReverse = "wrap-reverse" + CSSOverflow* = enum + OverflowVisible = "visible" + OverflowHidden = "hidden" + OverflowClip = "clip" + OverflowScroll = "scroll" + OverflowAuto = "auto" + type CSSLength* = object num*: float64 @@ -376,6 +385,8 @@ type flexDirection*: CSSFlexDirection of cvtFlexWrap: flexWrap*: CSSFlexWrap + of cvtOverflow: + overflow*: CSSOverflow of cvtNone: discard CSSComputedValues* = ref array[CSSPropertyType, CSSComputedValue] @@ -466,7 +477,8 @@ const ValueTypes = [ cptFlexWrap: cvtFlexWrap, cptFlexGrow: cvtNumber, cptFlexShrink: cvtNumber, - cptFlexBasis: cvtLength + cptFlexBasis: cvtLength, + cptOverflow: cvtOverflow ] const InheritedProperties = { @@ -550,6 +562,7 @@ func `$`*(val: CSSComputedValue): string = of cvtBgcolorIsCanvas: return $val.bgcolorIsCanvas of cvtFlexDirection: return $val.flexDirection of cvtFlexWrap: return $val.flexWrap + of cvtOverflow: return $val.overflow of cvtNumber: return $val.number macro `{}`*(vals: CSSComputedValues; s: static string): untyped = @@ -1284,6 +1297,7 @@ proc parseValue(cvals: openArray[CSSComponentValue]; t: CSSPropertyType): return_new flexDirection, ?parseIdent[CSSFlexDirection](cval) of cvtFlexWrap: return_new flexWrap, ?parseIdent[CSSFlexWrap](cval) of cvtNumber: return_new number, ?cssNumber(cval, t == cptFlexGrow) + of cvtOverflow: return_new overflow, ?parseIdent[CSSOverflow](cval) of cvtNone: return err() func getInitialColor(t: CSSPropertyType): CellColor = diff --git a/src/layout/engine.nim b/src/layout/engine.nim index ca3c9c5e..712ba511 100644 --- a/src/layout/engine.nim +++ b/src/layout/engine.nim @@ -1383,8 +1383,9 @@ func establishesBFC(computed: CSSComputedValues): bool = return computed{"float"} != FloatNone or computed{"position"} == PositionAbsolute or computed{"display"} in {DisplayInlineBlock, DisplayFlowRoot} + - InternalTableBox + {DisplayFlex, DisplayInlineFlex} - #TODO overflow, contain, grid, multicol, column-span + InternalTableBox + {DisplayFlex, DisplayInlineFlex} or + computed{"overflow"} notin {OverflowVisible, OverflowClip} + #TODO contain, grid, multicol, column-span proc layoutFlow(bctx: var BlockContext; box: BlockBox; builder: BlockBoxBuilder; sizes: ResolvedSizes) = |