Window attempts to advance child's selection on alt-tab
This commit is contained in:
parent
507217a9da
commit
80c0a6be71
@ -66,11 +66,34 @@ func (window *Window) handleKeyPress (
|
||||
NumberPad: numberPad,
|
||||
}
|
||||
|
||||
window.child.Handle (tomo.EventKeyDown {
|
||||
keyDownEvent := tomo.EventKeyDown {
|
||||
Key: key,
|
||||
Modifiers: modifiers,
|
||||
Repeated: false, // FIXME: return correct value here
|
||||
})
|
||||
}
|
||||
|
||||
if keyDownEvent.Key == tomo.KeyTab && keyDownEvent.Modifiers.Alt {
|
||||
if window.child.Selectable() {
|
||||
direction := 1
|
||||
if keyDownEvent.Modifiers.Shift {
|
||||
direction = -1
|
||||
}
|
||||
|
||||
window.advanceSelectionInChild(direction)
|
||||
}
|
||||
} else {
|
||||
window.child.Handle(event)
|
||||
}
|
||||
}
|
||||
|
||||
func (window *Window) advanceSelectionInChild (direction int) {
|
||||
if window.child.Selected() {
|
||||
if !window.child.AdvanceSelection(direction) {
|
||||
window.child.Handle(tomo.EventDeselect { })
|
||||
}
|
||||
} else {
|
||||
window.child.Handle(tomo.EventSelect { })
|
||||
}
|
||||
}
|
||||
|
||||
func (window *Window) handleKeyRelease (
|
||||
|
17
tomo.go
17
tomo.go
@ -92,17 +92,18 @@ type Element interface {
|
||||
// element contains other selectable elements, it must return true.
|
||||
Selectable () (selectable bool)
|
||||
|
||||
// Selected returns wehther this element is currently selected. This
|
||||
// will always return false if it is not selectable.
|
||||
// Selected returns whether or not this element is currently selected.
|
||||
// This will always return false if it is not selectable.
|
||||
Selected () (selected bool)
|
||||
|
||||
// If this element contains other elements, and one is selected, this
|
||||
// method will advance the selection in the specified direction. If no
|
||||
// children are selected, or there are no more children to be selected
|
||||
// in the specified direction, the element will unselect all of its
|
||||
// children and return false. If the selection could be advanced, it
|
||||
// will return true. If the element contains no child elements, it will
|
||||
// always return false.
|
||||
// method will advance the selection in the specified direction. If
|
||||
// the element contains selectable elements but none of them are
|
||||
// selected, it will select the first selectable element. If there are
|
||||
// no more children to be selected in the specified direction, the
|
||||
// element will return false. If the selection could be advanced, it
|
||||
// will return true. If the element contains no selectable child
|
||||
// elements, it will always return false.
|
||||
AdvanceSelection (direction int) (ok bool)
|
||||
|
||||
// SetParentHooks gives the element callbacks that let it send
|
||||
|
Reference in New Issue
Block a user