Fixed transparent boxes not redrawing sometimes
This commit is contained in:
parent
0c0b8ae475
commit
db2ed06daf
@ -1,6 +1,7 @@
|
|||||||
package x
|
package x
|
||||||
|
|
||||||
import "image"
|
import "image"
|
||||||
|
import "image/color"
|
||||||
import "git.tebibyte.media/tomo/tomo"
|
import "git.tebibyte.media/tomo/tomo"
|
||||||
import "git.tebibyte.media/tomo/tomo/event"
|
import "git.tebibyte.media/tomo/tomo/event"
|
||||||
import "git.tebibyte.media/tomo/tomo/canvas"
|
import "git.tebibyte.media/tomo/tomo/canvas"
|
||||||
@ -29,6 +30,16 @@ func (backend *Backend) NewContainerBox() tomo.ContainerBox {
|
|||||||
return this
|
return this
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *containerBox) SetColor (c color.Color) {
|
||||||
|
this.box.SetColor(c)
|
||||||
|
this.invalidateTransparentChildren()
|
||||||
|
}
|
||||||
|
|
||||||
|
func (this *containerBox) SetTexture (texture canvas.Texture) {
|
||||||
|
this.box.SetTexture(texture)
|
||||||
|
this.invalidateTransparentChildren()
|
||||||
|
}
|
||||||
|
|
||||||
func (this *containerBox) SetOverflow (horizontal, vertical bool) {
|
func (this *containerBox) SetOverflow (horizontal, vertical bool) {
|
||||||
if this.hOverflow == horizontal && this.vOverflow == vertical { return }
|
if this.hOverflow == horizontal && this.vOverflow == vertical { return }
|
||||||
this.hOverflow = horizontal
|
this.hOverflow = horizontal
|
||||||
@ -162,6 +173,17 @@ func (this *containerBox) drawBackgroundPart (can canvas.Canvas) {
|
|||||||
pen.Rectangle(this.innerClippingBounds)
|
pen.Rectangle(this.innerClippingBounds)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (this *containerBox) invalidateTransparentChildren () {
|
||||||
|
window := this.window()
|
||||||
|
if this.window == nil { return }
|
||||||
|
for _, box := range this.children {
|
||||||
|
box := assertAnyBox(box)
|
||||||
|
if box.transparent() {
|
||||||
|
window.invalidateDraw(box)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func (this *containerBox) flushActionQueue () {
|
func (this *containerBox) flushActionQueue () {
|
||||||
for _, box := range this.children {
|
for _, box := range this.children {
|
||||||
box.(anyBox).flushActionQueue()
|
box.(anyBox).flushActionQueue()
|
||||||
|
@ -52,6 +52,7 @@ type anyBox interface {
|
|||||||
recursiveRedo ()
|
recursiveRedo ()
|
||||||
canBeFocused () bool
|
canBeFocused () bool
|
||||||
boxUnder (image.Point) anyBox
|
boxUnder (image.Point) anyBox
|
||||||
|
transparent () bool
|
||||||
|
|
||||||
propagate (func (anyBox) bool) bool
|
propagate (func (anyBox) bool) bool
|
||||||
propagateAlt (func (anyBox) bool) bool
|
propagateAlt (func (anyBox) bool) bool
|
||||||
|
Reference in New Issue
Block a user