diff --git a/wdgt_alert.go b/wdgt_alert.go index 186d37b..115ae2b 100644 --- a/wdgt_alert.go +++ b/wdgt_alert.go @@ -116,7 +116,12 @@ func (w *Alert) HandleKey(ev *tcell.EventKey) bool { } return w.keyMap.Handle(ev) } -func (w *Alert) HandleTime(ev *tcell.EventTime) {} + +func (w *Alert) HandleTime(ev *tcell.EventTime) { + w.layout.HandleTime(ev) + w.btnLayout.HandleTime(ev) +} + func (w *Alert) Draw(screen tcell.Screen) { if !w.visible { return diff --git a/wdgt_bordered.go b/wdgt_bordered.go index c1aad56..37c6cd9 100644 --- a/wdgt_bordered.go +++ b/wdgt_bordered.go @@ -73,7 +73,7 @@ func (w *BorderedWidget) AddToKeyMap(km KeyMap) { w.widget.AddToKeyM func (w *BorderedWidget) RemoveFromKeyMap(km KeyMap) { w.widget.RemoveFromKeyMap(km) } func (w *BorderedWidget) HandleKey(ev *tcell.EventKey) bool { return w.HandleKey(ev) } -func (w *BorderedWidget) HandleTime(ev *tcell.EventTime) { w.HandleTime(ev) } +func (w *BorderedWidget) HandleTime(ev *tcell.EventTime) { w.widget.HandleTime(ev) } func (w *BorderedWidget) Draw(screen tcell.Screen) { if !w.visible { diff --git a/wdgt_filepicker.go b/wdgt_filepicker.go index 6cb0a78..4ce541d 100644 --- a/wdgt_filepicker.go +++ b/wdgt_filepicker.go @@ -101,7 +101,7 @@ func (w *FilePicker) HandleKey(ev *tcell.EventKey) bool { } return w.keyMap.Handle(ev) } -func (w *FilePicker) HandleTime(ev *tcell.EventTime) {} +func (w *FilePicker) HandleTime(ev *tcell.EventTime) { w.layout.HandleTime(ev) } func (w *FilePicker) Draw(screen tcell.Screen) { if !w.visible { return diff --git a/wdgt_list.go b/wdgt_list.go index fae6df3..97503b9 100644 --- a/wdgt_list.go +++ b/wdgt_list.go @@ -63,8 +63,8 @@ func (w *List) Init(id string, style tcell.Style) { w.style = style w.focusable = true w.keyMap = NewKeyMap(map[tcell.Key]func(ev *tcell.EventKey) bool{ - tcell.KeyUp: w.MoveUp, - tcell.KeyDown: w.MoveDown, + tcell.KeyUp: func(_ *tcell.EventKey) bool { return w.MoveUp() }, + tcell.KeyDown: func(_ *tcell.EventKey) bool { return w.MoveDown() }, tcell.KeyEnter: func(ev *tcell.EventKey) bool { if w.onSelect != nil && w.cursor < len(w.list) { return w.onSelect(w.cursor, w.list[w.cursor]) @@ -74,13 +74,13 @@ func (w *List) Init(id string, style tcell.Style) { }) w.keyMap.AddRune('j', func(ev *tcell.EventKey) bool { if w.vimMode { - return w.MoveDown(ev) + return w.MoveDown() } return false }) w.keyMap.AddRune('k', func(ev *tcell.EventKey) bool { if w.vimMode { - return w.MoveUp(ev) + return w.MoveUp() } return false }) @@ -189,7 +189,7 @@ func (w *List) MinW() int { func (w *List) MinH() int { return 4 } func (w *List) SetCursorWrap(b bool) { w.cursorWrap = b } -func (w *List) MoveUp(ev *tcell.EventKey) bool { +func (w *List) MoveUp() bool { if w.cursor > 0 { w.cursor-- return true @@ -200,7 +200,7 @@ func (w *List) MoveUp(ev *tcell.EventKey) bool { return false } -func (w *List) MoveDown(ev *tcell.EventKey) bool { +func (w *List) MoveDown() bool { if w.cursor < len(w.list)-1 { w.cursor++ return true diff --git a/wdgt_menu.go b/wdgt_menu.go index 635df59..a0d15ea 100644 --- a/wdgt_menu.go +++ b/wdgt_menu.go @@ -116,7 +116,13 @@ func (w *Menu) HandleKey(ev *tcell.EventKey) bool { // See if we can find an item that matches the key pressed return false } -func (w *Menu) HandleTime(ev *tcell.EventTime) {} + +func (w *Menu) HandleTime(ev *tcell.EventTime) { + for i := range w.items { + w.items[i].HandleTime(ev) + } +} + func (w *Menu) Draw(screen tcell.Screen) { switch w.menuType { case MenuTypeH: diff --git a/wdgt_menu_item.go b/wdgt_menu_item.go index 36fce5f..d413dff 100644 --- a/wdgt_menu_item.go +++ b/wdgt_menu_item.go @@ -101,7 +101,13 @@ func (w *MenuItem) HandleKey(ev *tcell.EventKey) bool { // Look for a sub-item that's selected return w.keyMap.Handle(ev) } -func (w *MenuItem) HandleTime(ev *tcell.EventTime) {} + +func (w *MenuItem) HandleTime(ev *tcell.EventTime) { + for i := range w.items { + w.items[i].HandleTime(ev) + } +} + func (w *MenuItem) Draw(screen tcell.Screen) { if !w.visible { return diff --git a/wdgt_prompt.go b/wdgt_prompt.go index d03d189..c178f63 100644 --- a/wdgt_prompt.go +++ b/wdgt_prompt.go @@ -100,7 +100,14 @@ func (w *Prompt) HandleKey(ev *tcell.EventKey) bool { } return w.keyMap.Handle(ev) } -func (w *Prompt) HandleTime(ev *tcell.EventTime) {} + +func (w *Prompt) HandleTime(ev *tcell.EventTime) { + w.message.HandleTime(ev) + w.field.HandleTime(ev) + w.btnOk.HandleTime(ev) + w.btnCancel.HandleTime(ev) +} + func (w *Prompt) Draw(screen tcell.Screen) { if !w.visible { return diff --git a/wdgt_relative_layout.go b/wdgt_relative_layout.go index 8823595..6063b82 100644 --- a/wdgt_relative_layout.go +++ b/wdgt_relative_layout.go @@ -95,7 +95,12 @@ func (w *RelativeLayout) RemoveFromKeyMap(km KeyMap) { } } func (w *RelativeLayout) HandleKey(ev *tcell.EventKey) bool { return w.keyMap.Handle(ev) } -func (w *RelativeLayout) HandleTime(ev *tcell.EventTime) {} +func (w *RelativeLayout) HandleTime(ev *tcell.EventTime) { + for i := range w.widgets { + w.widgets[i].HandleTime(ev) + } +} + func (w *RelativeLayout) Draw(screen tcell.Screen) { if !w.visible { return diff --git a/wdgt_searcher.go b/wdgt_searcher.go index 40faa2f..dc7e52b 100644 --- a/wdgt_searcher.go +++ b/wdgt_searcher.go @@ -188,7 +188,7 @@ func (w *Searcher) handleKeyEnter(ev *tcell.EventKey) bool { return false } -func (w *Searcher) HandleTime(ev *tcell.EventTime) {} +func (w *Searcher) HandleTime(ev *tcell.EventTime) { w.search.HandleTime(ev) } func (w *Searcher) Draw(screen tcell.Screen) { if !w.visible { return diff --git a/wdgt_timefield.go b/wdgt_timefield.go index caa0bad..e786e3e 100644 --- a/wdgt_timefield.go +++ b/wdgt_timefield.go @@ -161,7 +161,16 @@ func (w *TimeField) HandleKey(ev *tcell.EventKey) bool { } return false } -func (w *TimeField) HandleTime(ev *tcell.EventTime) {} + +func (w *TimeField) HandleTime(ev *tcell.EventTime) { + for _, wd := range []Widget{ + w.fldYear, w.fldMonth, w.fldDay, w.fldHour, + w.fldMinute, w.fldSecond, w.btnNow, + } { + wd.HandleTime(ev) + } +} + func (w *TimeField) Draw(screen tcell.Screen) { if !w.visible { return