mirror of https://github.com/mum4k/termdash.git
Textinput can request keyboard exclusively.
This commit is contained in:
parent
42652429b4
commit
912de88b90
|
@ -54,6 +54,11 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|||
- the `button` widget allows specifying separate fill color values for each of
|
||||
its main states (up, focused and up, down).
|
||||
|
||||
#### Updates to the `textinput` widget
|
||||
|
||||
- the `textinput` widget can now be configured to request keyboard events
|
||||
exclusively when focused.
|
||||
|
||||
## [0.13.0] - 17-Nov-2020
|
||||
|
||||
### Added
|
||||
|
|
|
@ -59,9 +59,10 @@ type options struct {
|
|||
placeHolder string
|
||||
hideTextWith rune
|
||||
|
||||
filter FilterFn
|
||||
onSubmit SubmitFn
|
||||
clearOnSubmit bool
|
||||
filter FilterFn
|
||||
onSubmit SubmitFn
|
||||
clearOnSubmit bool
|
||||
exclusiveKeyboardOnFocus bool
|
||||
}
|
||||
|
||||
// validate validates the provided options.
|
||||
|
@ -263,3 +264,11 @@ func ClearOnSubmit() Option {
|
|||
opts.clearOnSubmit = true
|
||||
})
|
||||
}
|
||||
|
||||
// ExclusiveKeyboardOnFocus when set ensures that when this widget is focused,
|
||||
// no other widget receives any keyboard events.
|
||||
func ExclusiveKeyboardOnFocus() Option {
|
||||
return option(func(opts *options) {
|
||||
opts.exclusiveKeyboardOnFocus = true
|
||||
})
|
||||
}
|
||||
|
|
|
@ -326,8 +326,9 @@ func (ti *TextInput) Options() widgetapi.Options {
|
|||
maxWidth,
|
||||
needHeight,
|
||||
},
|
||||
WantKeyboard: widgetapi.KeyScopeFocused,
|
||||
WantMouse: widgetapi.MouseScopeWidget,
|
||||
WantKeyboard: widgetapi.KeyScopeFocused,
|
||||
WantMouse: widgetapi.MouseScopeWidget,
|
||||
ExclusiveKeyboardOnFocus: ti.opts.exclusiveKeyboardOnFocus,
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1704,6 +1704,19 @@ func TestOptions(t *testing.T) {
|
|||
WantMouse: widgetapi.MouseScopeWidget,
|
||||
},
|
||||
},
|
||||
{
|
||||
desc: "requests ExclusiveKeyboardOnFocus",
|
||||
opts: []Option{
|
||||
ExclusiveKeyboardOnFocus(),
|
||||
},
|
||||
want: widgetapi.Options{
|
||||
MinimumSize: image.Point{4, 1},
|
||||
MaximumSize: image.Point{0, 1},
|
||||
WantKeyboard: widgetapi.KeyScopeFocused,
|
||||
WantMouse: widgetapi.MouseScopeWidget,
|
||||
ExclusiveKeyboardOnFocus: true,
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
for _, tc := range tests {
|
||||
|
|
Loading…
Reference in New Issue