Wonkiness on layout
This commit is contained in:
@@ -50,7 +50,7 @@ type Searcher struct {
|
||||
hideOnSelect bool
|
||||
logger func(string, ...any)
|
||||
|
||||
keyMap KeyMap
|
||||
keyMap, customKeyMap KeyMap
|
||||
}
|
||||
|
||||
var _ Widget = (*Searcher)(nil)
|
||||
@@ -79,6 +79,7 @@ func (w *Searcher) Init(id string, style tcell.Style) {
|
||||
tcell.KeyPgDn: w.handleKeyPgDn,
|
||||
tcell.KeyEnter: w.handleKeyEnter,
|
||||
})
|
||||
w.customKeyMap = BlankKeyMap()
|
||||
w.focusable = true
|
||||
}
|
||||
|
||||
@@ -94,21 +95,29 @@ func (w *Searcher) HandleResize(ev *tcell.EventResize) {
|
||||
w.search.HandleResize(Coord{X: aW, Y: aH}.ResizeEvent())
|
||||
}
|
||||
|
||||
func (w *Searcher) SetKeyMap(km KeyMap) { w.keyMap = km }
|
||||
func (w *Searcher) AddToKeyMap(km KeyMap) { w.keyMap.Merge(km) }
|
||||
func (w *Searcher) SetKeyMap(km KeyMap, def bool) {
|
||||
if def {
|
||||
w.keyMap = km
|
||||
} else {
|
||||
w.customKeyMap = km
|
||||
}
|
||||
}
|
||||
func (w *Searcher) AddToKeyMap(km KeyMap) { w.customKeyMap.Merge(km) }
|
||||
func (w *Searcher) RemoveFromKeyMap(km KeyMap) {
|
||||
for k := range km.Keys {
|
||||
w.keyMap.Remove(k)
|
||||
w.customKeyMap.Remove(k)
|
||||
}
|
||||
for r := range km.Runes {
|
||||
w.keyMap.RemoveRune(r)
|
||||
w.customKeyMap.RemoveRune(r)
|
||||
}
|
||||
}
|
||||
|
||||
func (w *Searcher) HandleKey(ev *tcell.EventKey) bool {
|
||||
if !w.active {
|
||||
return false
|
||||
} else if ok := w.keyMap.Handle(ev); ok {
|
||||
}
|
||||
b1, b2 := w.keyMap.Handle(ev), w.customKeyMap.Handle(ev)
|
||||
if b1 || b2 {
|
||||
return true
|
||||
}
|
||||
return w.search.HandleKey(ev)
|
||||
@@ -174,18 +183,18 @@ func (w *Searcher) handleKeyEnter(ev *tcell.EventKey) bool {
|
||||
if w.hideOnSelect {
|
||||
w.visible = false
|
||||
}
|
||||
if w.selectFunc != nil {
|
||||
// Figure out our true index
|
||||
var idx int
|
||||
selV := w.filteredData[w.cursor]
|
||||
for i := range w.data {
|
||||
if w.data[i] == selV {
|
||||
idx = i
|
||||
}
|
||||
}
|
||||
return w.selectFunc(idx, selV)
|
||||
if w.selectFunc == nil || len(w.filteredData) <= w.cursor {
|
||||
return false
|
||||
}
|
||||
return false
|
||||
// Figure out our true index
|
||||
var idx int
|
||||
selV := w.filteredData[w.cursor]
|
||||
for i := range w.data {
|
||||
if w.data[i] == selV {
|
||||
idx = i
|
||||
}
|
||||
}
|
||||
return w.selectFunc(idx, selV)
|
||||
}
|
||||
|
||||
func (w *Searcher) HandleTime(ev *tcell.EventTime) { w.search.HandleTime(ev) }
|
||||
|
||||
Reference in New Issue
Block a user