Further simplified the API and updated the X backend to match

The MinimumWidth and MinimumHeight behaviors have been condensed
into MinimumSize, which returns both dimensions at once.
This commit is contained in:
Sasha Koshka 2023-01-09 11:31:59 -05:00
parent c94329e273
commit 292669a43f
2 changed files with 11 additions and 19 deletions

View File

@ -10,13 +10,11 @@ import "github.com/jezek/xgbutil/xgraphics"
import "git.tebibyte.media/sashakoshka/tomo" import "git.tebibyte.media/sashakoshka/tomo"
type Window struct { type Window struct {
backend *Backend backend *Backend
xWindow *xwindow.Window xWindow *xwindow.Window
xCanvas *xgraphics.Image xCanvas *xgraphics.Image
child tomo.Element child tomo.Element
onClose func () onClose func ()
drawCallback func (region tomo.Image)
minimumSizeChangeCallback func (width, height int)
skipChildDrawCallback bool skipChildDrawCallback bool
metrics struct { metrics struct {
@ -89,9 +87,7 @@ func (window *Window) Adopt (child tomo.Element) {
}) })
window.resizeChildToFit() window.resizeChildToFit()
} }
window.childMinimumSizeChangeCallback ( window.childMinimumSizeChangeCallback(child.MinimumSize())
child.MinimumWidth(),
child.MinimumHeight())
} }
func (window *Window) Child () (child tomo.Element) { func (window *Window) Child () (child tomo.Element) {

14
tomo.go
View File

@ -94,16 +94,12 @@ type Element interface {
// the parent element or containing any reference to it. When a parent // the parent element or containing any reference to it. When a parent
// element adopts a child element, it must set these callbacks. // element adopts a child element, it must set these callbacks.
SetParentHooks (callbacks ParentHooks) SetParentHooks (callbacks ParentHooks)
// MinimumWidth specifies the minimum amount of pixels this element's
// width may be set to. If the element is resized to an amount smaller
// that MinimumWidth, it will instead set its width to MinimumWidth.
MinimumWidth () (minimum int)
// MinimumHeight specifies the minimum amount of pixels this element's // MinimumSize specifies the minimum amount of pixels this element's
// height may be set to. If the element is resized to an amount smaller // width and height may be set to. If the element is given a resize
// that MinimumHeight, it will instead set its height to MinimumHeight. // event with dimensions smaller than this, it will use its minimum
MinimumHeight () (minimum int) // instead of the offending dimension(s).
MinimumSize () (width, height int)
} }
// Window represents a top-level container generated by the currently running // Window represents a top-level container generated by the currently running