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 }
|
if box.parent == nil { return nil }
|
||||||
parentCanvas := box.parent.getCanvas()
|
parentCanvas := box.parent.getCanvas()
|
||||||
if parentCanvas == nil { return nil }
|
if parentCanvas == nil { return nil }
|
||||||
return parentCanvas.SubCanvas(box.bounds)
|
drawableArea := box.bounds.Intersect(box.parent.getInnerClippingBounds())
|
||||||
|
return parentCanvas.SubCanvas(drawableArea)
|
||||||
})
|
})
|
||||||
if outer == nil {
|
if outer == nil {
|
||||||
box.drawer = box
|
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) {
|
func (this *box) setBounds (bounds image.Rectangle) {
|
||||||
if this.bounds == bounds { return }
|
if this.bounds == bounds { return }
|
||||||
this.bounds = bounds
|
this.bounds = bounds
|
||||||
@@ -624,6 +643,7 @@ func (this *box) recursiveReApply () {
|
|||||||
// applicator for every box, it's so style applicators can cache
|
// applicator for every box, it's so style applicators can cache
|
||||||
// information about the boxes they're linked to (like all rules
|
// information about the boxes they're linked to (like all rules
|
||||||
// with a matching role).
|
// with a matching role).
|
||||||
|
this.unsetAllAttrs(false)
|
||||||
this.lastStyleNonce = hierarchyStyleNonce
|
this.lastStyleNonce = hierarchyStyleNonce
|
||||||
this.styleApplicator = hierarchy.newStyleApplicator()
|
this.styleApplicator = hierarchy.newStyleApplicator()
|
||||||
this.invalidateStyle()
|
this.invalidateStyle()
|
||||||
|
|||||||
@@ -298,6 +298,10 @@ func (this *containerBox) getCanvas () canvas.Canvas {
|
|||||||
return this.canvas.Value()
|
return this.canvas.Value()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *containerBox) getInnerClippingBounds () image.Rectangle {
|
||||||
|
return this.innerClippingBounds
|
||||||
|
}
|
||||||
|
|
||||||
func (this *containerBox) notifyMinimumSizeChange (child anyBox) {
|
func (this *containerBox) notifyMinimumSizeChange (child anyBox) {
|
||||||
this.invalidateMinimum()
|
this.invalidateMinimum()
|
||||||
size := child.minimumSize()
|
size := child.minimumSize()
|
||||||
|
|||||||
@@ -193,6 +193,10 @@ func (this *Hierarchy) getCanvas () canvas.Canvas {
|
|||||||
return this.canvas
|
return this.canvas
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *Hierarchy) getInnerClippingBounds () image.Rectangle {
|
||||||
|
return this.canvas.Bounds()
|
||||||
|
}
|
||||||
|
|
||||||
func (this *Hierarchy) getModifiers () input.Modifiers {
|
func (this *Hierarchy) getModifiers () input.Modifiers {
|
||||||
return this.modifiers
|
return this.modifiers
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,9 @@ type parent interface {
|
|||||||
getHierarchy () *Hierarchy
|
getHierarchy () *Hierarchy
|
||||||
// canvas returns the canvas held by the parent.
|
// canvas returns the canvas held by the parent.
|
||||||
getCanvas () canvas.Canvas
|
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
|
// notifyMinimumSizeChange informs the parent that the minimum size of
|
||||||
// one of its children has changed.
|
// one of its children has changed.
|
||||||
notifyMinimumSizeChange (anyBox)
|
notifyMinimumSizeChange (anyBox)
|
||||||
|
|||||||
Reference in New Issue
Block a user