mirror of https://github.com/rivo/tview.git
Provided a way to forward Ctrl-C to primites. Resolves #816
This commit is contained in:
parent
c8e57d57c6
commit
47e7db7885
|
@ -135,9 +135,16 @@ func NewApplication() *Application {
|
|||
// different one) by returning it or stop the key event processing by returning
|
||||
// nil.
|
||||
//
|
||||
// Note that this also affects the default event handling of the application
|
||||
// itself: Such a handler can intercept the Ctrl-C event which closes the
|
||||
// application.
|
||||
// The only default global key event is Ctrl-C which stops the application. It
|
||||
// requires special handling:
|
||||
//
|
||||
// - If you do not wish to change the default behavior, return the original
|
||||
// event object passed to your input capture function.
|
||||
// - If you wish to block Ctrl-C from any functionality, return nil.
|
||||
// - If you do not wish Ctrl-C to stop the application but still want to
|
||||
// forward the Ctrl-C event to primitives down the hierarchy, return a new
|
||||
// key event with the same key and modifiers, e.g.
|
||||
// tcell.NewEventKey(tcell.KeyCtrlC, 0, tcell.ModNone).
|
||||
func (a *Application) SetInputCapture(capture func(event *tcell.EventKey) *tcell.EventKey) *Application {
|
||||
a.inputCapture = capture
|
||||
return a
|
||||
|
@ -315,6 +322,7 @@ EventLoop:
|
|||
|
||||
// Intercept keys.
|
||||
var draw bool
|
||||
originalEvent := event
|
||||
if inputCapture != nil {
|
||||
event = inputCapture(event)
|
||||
if event == nil {
|
||||
|
@ -325,7 +333,7 @@ EventLoop:
|
|||
}
|
||||
|
||||
// Ctrl-C closes the application.
|
||||
if event.Key() == tcell.KeyCtrlC {
|
||||
if event == originalEvent && event.Key() == tcell.KeyCtrlC {
|
||||
a.Stop()
|
||||
break
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue