Fix code relating to cookies

This commit is contained in:
Sasha Koshka 2024-09-12 02:42:55 -04:00
parent e08d14135b
commit 2312b48a28
5 changed files with 12 additions and 25 deletions

View File

@ -505,11 +505,12 @@ func (this *iconSet) MimeIcon (mime data.Mime, size tomo.IconSize) canvas.Textur
} }
} }
func (this *iconSet) Close () { func (this *iconSet) Close () error {
if this.atlasSmall != nil { if this.atlasSmall != nil {
this.atlasSmall.Close() this.atlasSmall.Close()
} }
if this.atlasLarge != nil { if this.atlasLarge != nil {
this.atlasLarge.Close() this.atlasLarge.Close()
} }
return nil
} }

View File

@ -101,7 +101,7 @@ func (this *iconTheme) MimeIcon (mime data.Mime, size tomo.IconSize) canvas.Text
} }
} }
func (this *iconTheme) Close () { func (this *iconTheme) Close () error {
closeAllIn := func (mp map[tomo.Icon] canvas.TextureCloser) { closeAllIn := func (mp map[tomo.Icon] canvas.TextureCloser) {
for _, texture := range mp { for _, texture := range mp {
if texture != nil { if texture != nil {
@ -112,6 +112,7 @@ func (this *iconTheme) Close () {
closeAllIn(this.texturesSmall) closeAllIn(this.texturesSmall)
closeAllIn(this.texturesMedium) closeAllIn(this.texturesMedium)
closeAllIn(this.texturesLarge) closeAllIn(this.texturesLarge)
return nil
} }
func (this *iconTheme) icon (icon tomo.Icon, size tomo.IconSize) canvas.TextureCloser { func (this *iconTheme) icon (icon tomo.Icon, size tomo.IconSize) canvas.TextureCloser {

View File

@ -1,6 +1,5 @@
package fallbackStyle package fallbackStyle
import "io"
import "bytes" import "bytes"
import "image" import "image"
import _ "embed" import _ "embed"
@ -47,12 +46,6 @@ var borderColorShade = [4]color.Color { colorShade, colorShade, col
//go:embed assets/atlas.png //go:embed assets/atlas.png
var atlasBytes []byte var atlasBytes []byte
type closerCookie struct { io.Closer }
func (cookie closerCookie) Close () { cookie.Closer.Close() }
func newCloserCookie (closer io.Closer) event.Cookie {
return closerCookie { Closer: closer }
}
// New returns Wintergreen, the default Tomo style. It is neutral-gray with // New returns Wintergreen, the default Tomo style. It is neutral-gray with
// green and turquoise accents. // green and turquoise accents.
func New () (*style.Style, event.Cookie) { func New () (*style.Style, event.Cookie) {
@ -66,7 +59,7 @@ func New () (*style.Style, event.Cookie) {
textureHandleVertical := atlasTexture.SubTexture(image.Rect(28, 0, 29, 2)) textureHandleVertical := atlasTexture.SubTexture(image.Rect(28, 0, 29, 2))
textureHandleHorizontal := atlasTexture.SubTexture(image.Rect(28, 0, 30, 1)) textureHandleHorizontal := atlasTexture.SubTexture(image.Rect(28, 0, 30, 1))
cookie := event.MultiCookie(newCloserCookie(atlasTexture)) cookie := event.MultiCookie(atlasTexture)
rules := []style.Rule { rules := []style.Rule {
// *.* // *.*

View File

@ -1,7 +1,6 @@
package tss package tss
import "os" import "os"
import "io"
import "fmt" import "fmt"
import "image" import "image"
import "errors" import "errors"
@ -81,7 +80,7 @@ func (this *styleBuilder) build () (*style.Style, event.Cookie, error) {
// add each texture to the cookies list // add each texture to the cookies list
for _, texture := range this.textures { for _, texture := range this.textures {
cookies = append(cookies, closerCookie { Closer: texture }) cookies = append(cookies, texture)
} }
return sty, event.MultiCookie(cookies...), nil return sty, event.MultiCookie(cookies...), nil
@ -398,10 +397,3 @@ func copyBorderValue[T any, U ~[]T] (destination, source U) bool {
return false return false
} }
} }
type closerCookie struct {
io.Closer
}
func (cookie closerCookie) Close () {
cookie.Closer.Close()
}

View File

@ -7,11 +7,6 @@ var manager struct {
count int count int
} }
type funcCookie func ()
func (cookie funcCookie) Close () {
cookie()
}
// WaitFor ensures that the application will stay running while the given window // WaitFor ensures that the application will stay running while the given window
// is open. // is open.
func WaitFor (window tomo.Window) event.Cookie { func WaitFor (window tomo.Window) event.Cookie {
@ -27,7 +22,12 @@ func WaitFor (window tomo.Window) event.Cookie {
} }
} }
handleWaitClose := func () error {
handleClose();
return nil
}
return event.MultiCookie ( return event.MultiCookie (
window.OnClose(handleClose), window.OnClose(handleClose),
funcCookie(handleClose)) event.FuncCookie(handleWaitClose))
} }