Add callbacks for resize and move
This commit is contained in:
@@ -57,8 +57,12 @@ type ScreenHandler interface {
|
||||
}
|
||||
|
||||
type Screen struct {
|
||||
fyne.CanvasObject
|
||||
rootElement *Element
|
||||
screenHandler ScreenHandler
|
||||
|
||||
resizeCallbacks []func(fyne.Size)
|
||||
moveCallbacks []func(fyne.Position)
|
||||
}
|
||||
|
||||
func New(
|
||||
@@ -107,13 +111,44 @@ func NewTemplate(
|
||||
}
|
||||
|
||||
func (s *Screen) Initialize() (obj fyne.CanvasObject, err error) {
|
||||
if obj, err = s.rootElement.BuildUI(s.screenHandler); err != nil {
|
||||
if s.CanvasObject, err = s.rootElement.BuildUI(s.screenHandler); err != nil {
|
||||
err = fmt.Errorf("failed to build screen: %w", err)
|
||||
return
|
||||
}
|
||||
obj = s
|
||||
return
|
||||
}
|
||||
|
||||
func (s *Screen) Move(p fyne.Position) {
|
||||
s.CanvasObject.Move(p)
|
||||
for _, cb := range s.moveCallbacks {
|
||||
cb(p)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Screen) Resize(sz fyne.Size) {
|
||||
s.CanvasObject.Resize(sz)
|
||||
for _, cb := range s.resizeCallbacks {
|
||||
cb(sz)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Screen) CreateRenderer() fyne.WidgetRenderer {
|
||||
return widget.NewSimpleRenderer(s.CanvasObject)
|
||||
}
|
||||
|
||||
func (s *Screen) RegisterResizeCallback(cb func(fyne.Size)) {
|
||||
s.resizeCallbacks = append(s.resizeCallbacks, cb)
|
||||
}
|
||||
|
||||
func (s *Screen) RegisterMoveCallback(cb func(fyne.Position)) {
|
||||
s.moveCallbacks = append(s.moveCallbacks, cb)
|
||||
}
|
||||
|
||||
func (s *Screen) AsContainer() *fyne.Container {
|
||||
return s.CanvasObject.(*fyne.Container)
|
||||
}
|
||||
|
||||
type TemplateScreenHandler struct {
|
||||
localizer *i18n.Localizer
|
||||
elementsMap map[string]*UIElement
|
||||
|
Reference in New Issue
Block a user