Buttons respond to enter key, window auto-selects root child
This commit is contained in:
parent
70e0566f3f
commit
80aafdf60c
@ -77,7 +77,8 @@ func (backend *Backend) NewWindow (
|
|||||||
|
|
||||||
func (window *Window) Adopt (child tomo.Element) {
|
func (window *Window) Adopt (child tomo.Element) {
|
||||||
if window.child != nil {
|
if window.child != nil {
|
||||||
child.SetParentHooks (tomo.ParentHooks {})
|
child.SetParentHooks (tomo.ParentHooks { })
|
||||||
|
if child.Selectable() { child.Handle(tomo.EventDeselect { }) }
|
||||||
}
|
}
|
||||||
window.child = child
|
window.child = child
|
||||||
if child != nil {
|
if child != nil {
|
||||||
@ -86,6 +87,7 @@ func (window *Window) Adopt (child tomo.Element) {
|
|||||||
MinimumSizeChange: window.childMinimumSizeChangeCallback,
|
MinimumSizeChange: window.childMinimumSizeChangeCallback,
|
||||||
SelectionRequest: window.childSelectionRequestCallback,
|
SelectionRequest: window.childSelectionRequestCallback,
|
||||||
})
|
})
|
||||||
|
if child.Selectable() { child.Handle(tomo.EventSelect { }) }
|
||||||
window.resizeChildToFit()
|
window.resizeChildToFit()
|
||||||
}
|
}
|
||||||
window.childMinimumSizeChangeCallback(child.MinimumSize())
|
window.childMinimumSizeChangeCallback(child.MinimumSize())
|
||||||
|
@ -47,6 +47,16 @@ func (element *Button) Handle (event tomo.Event) {
|
|||||||
element.core.PushAll()
|
element.core.PushAll()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case tomo.EventKeyDown:
|
||||||
|
keyDownEvent := event.(tomo.EventKeyDown)
|
||||||
|
if keyDownEvent.Key == tomo.KeyEnter {
|
||||||
|
element.pressed = true
|
||||||
|
if element.core.HasImage() {
|
||||||
|
element.draw()
|
||||||
|
element.core.PushAll()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case tomo.EventMouseUp:
|
case tomo.EventMouseUp:
|
||||||
if !element.enabled { break }
|
if !element.enabled { break }
|
||||||
|
|
||||||
@ -65,12 +75,24 @@ func (element *Button) Handle (event tomo.Event) {
|
|||||||
element.onClick()
|
element.onClick()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case tomo.EventKeyUp:
|
||||||
|
keyDownEvent := event.(tomo.EventKeyUp)
|
||||||
|
if keyDownEvent.Key == tomo.KeyEnter {
|
||||||
|
element.pressed = false
|
||||||
|
if element.core.HasImage() {
|
||||||
|
element.draw()
|
||||||
|
element.core.PushAll()
|
||||||
|
}
|
||||||
|
if element.onClick != nil {
|
||||||
|
element.onClick()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
case tomo.EventSelect:
|
case tomo.EventSelect:
|
||||||
element.selected = true
|
element.selected = true
|
||||||
|
|
||||||
case tomo.EventDeselect:
|
case tomo.EventDeselect:
|
||||||
element.selected = false
|
element.selected = false
|
||||||
// TODO: handle selection events, and the enter key
|
|
||||||
}
|
}
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user