Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3b4ab56914 | |||
| e7f16645eb |
@@ -75,7 +75,8 @@ func (this *System) newBox (outer anyBox) *box {
|
||||
if box.parent == nil { return nil }
|
||||
parentCanvas := box.parent.getCanvas()
|
||||
if parentCanvas == nil { return nil }
|
||||
return parentCanvas.SubCanvas(box.bounds)
|
||||
drawableArea := box.bounds.Intersect(box.parent.getInnerClippingBounds())
|
||||
return parentCanvas.SubCanvas(drawableArea)
|
||||
})
|
||||
if outer == nil {
|
||||
box.drawer = box
|
||||
@@ -259,6 +260,24 @@ func (this *box) unsetAttr (kind tomo.AttrKind, user bool) {
|
||||
}
|
||||
}
|
||||
|
||||
func (this *box) unsetAllAttrs (user bool) {
|
||||
// keep this in sync with tomo.AttrKind!
|
||||
this.outer.unsetAttr(tomo.AttrKindColor, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindTexture, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindTextureMode, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindBorder, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindMinimumSize, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindPadding, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindGap, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindTextColor, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindDotColor, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindFace, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindWrap, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindAlign, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindOverflow, user)
|
||||
this.outer.unsetAttr(tomo.AttrKindLayout, user)
|
||||
}
|
||||
|
||||
func (this *box) setBounds (bounds image.Rectangle) {
|
||||
if this.bounds == bounds { return }
|
||||
this.bounds = bounds
|
||||
@@ -624,6 +643,7 @@ func (this *box) recursiveReApply () {
|
||||
// applicator for every box, it's so style applicators can cache
|
||||
// information about the boxes they're linked to (like all rules
|
||||
// with a matching role).
|
||||
this.unsetAllAttrs(false)
|
||||
this.lastStyleNonce = hierarchyStyleNonce
|
||||
this.styleApplicator = hierarchy.newStyleApplicator()
|
||||
this.invalidateStyle()
|
||||
|
||||
@@ -298,6 +298,10 @@ func (this *containerBox) getCanvas () canvas.Canvas {
|
||||
return this.canvas.Value()
|
||||
}
|
||||
|
||||
func (this *containerBox) getInnerClippingBounds () image.Rectangle {
|
||||
return this.innerClippingBounds
|
||||
}
|
||||
|
||||
func (this *containerBox) notifyMinimumSizeChange (child anyBox) {
|
||||
this.invalidateMinimum()
|
||||
size := child.minimumSize()
|
||||
|
||||
@@ -193,6 +193,10 @@ func (this *Hierarchy) getCanvas () canvas.Canvas {
|
||||
return this.canvas
|
||||
}
|
||||
|
||||
func (this *Hierarchy) getInnerClippingBounds () image.Rectangle {
|
||||
return this.canvas.Bounds()
|
||||
}
|
||||
|
||||
func (this *Hierarchy) getModifiers () input.Modifiers {
|
||||
return this.modifiers
|
||||
}
|
||||
|
||||
@@ -12,6 +12,9 @@ type parent interface {
|
||||
getHierarchy () *Hierarchy
|
||||
// canvas returns the canvas held by the parent.
|
||||
getCanvas () canvas.Canvas
|
||||
// getInnerClippingBounds returns the area of the canvas that children
|
||||
// can draw to.
|
||||
getInnerClippingBounds () image.Rectangle
|
||||
// notifyMinimumSizeChange informs the parent that the minimum size of
|
||||
// one of its children has changed.
|
||||
notifyMinimumSizeChange (anyBox)
|
||||
|
||||
Reference in New Issue
Block a user