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"
type Window struct {
backend *Backend
xWindow *xwindow.Window
xCanvas *xgraphics.Image
child tomo.Element
onClose func ()
drawCallback func (region tomo.Image)
minimumSizeChangeCallback func (width, height int)
backend *Backend
xWindow *xwindow.Window
xCanvas *xgraphics.Image
child tomo.Element
onClose func ()
skipChildDrawCallback bool
metrics struct {
@ -89,9 +87,7 @@ func (window *Window) Adopt (child tomo.Element) {
})
window.resizeChildToFit()
}
window.childMinimumSizeChangeCallback (
child.MinimumWidth(),
child.MinimumHeight())
window.childMinimumSizeChangeCallback(child.MinimumSize())
}
func (window *Window) Child () (child tomo.Element) {

14
tomo.go
View File

@ -95,15 +95,11 @@ type Element interface {
// element adopts a child element, it must set these callbacks.
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
// height may be set to. If the element is resized to an amount smaller
// that MinimumHeight, it will instead set its height to MinimumHeight.
MinimumHeight () (minimum int)
// MinimumSize specifies the minimum amount of pixels this element's
// width and height may be set to. If the element is given a resize
// event with dimensions smaller than this, it will use its minimum
// instead of the offending dimension(s).
MinimumSize () (width, height int)
}
// Window represents a top-level container generated by the currently running