mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
Merge branch '28-unfocused-tab-problem'
This commit is contained in:
commit
6be6afaf2c
@ -20,7 +20,7 @@ type Widget struct {
|
||||
|
||||
func NewWidget(builtAt, version string) *Widget {
|
||||
widget := Widget{
|
||||
TextWidget: wtf.NewTextWidget(" System ", "system", false),
|
||||
TextWidget: wtf.NewTextWidget(" Build ", "system", false),
|
||||
BuiltAt: builtAt,
|
||||
Version: version,
|
||||
}
|
||||
|
2
wtf.go
2
wtf.go
@ -201,7 +201,7 @@ func main() {
|
||||
|
||||
FocusTracker = wtf.FocusTracker{
|
||||
App: app,
|
||||
Idx: 0,
|
||||
Idx: -1,
|
||||
Widgets: Widgets,
|
||||
}
|
||||
|
||||
|
@ -17,9 +17,11 @@ type FocusTracker struct {
|
||||
// Next sets the focus on the next widget in the widget list. If the current widget is
|
||||
// the last widget, sets focus on the first widget.
|
||||
func (tracker *FocusTracker) Next() {
|
||||
tracker.blur(tracker.Idx)
|
||||
tracker.increment()
|
||||
tracker.focus(tracker.Idx)
|
||||
if tracker.widgetHasFocus() {
|
||||
tracker.blur(tracker.Idx)
|
||||
tracker.increment()
|
||||
tracker.focus(tracker.Idx)
|
||||
}
|
||||
}
|
||||
|
||||
// None removes focus from the currently-focused widget.
|
||||
@ -30,9 +32,11 @@ func (tracker *FocusTracker) None() {
|
||||
// Prev sets the focus on the previous widget in the widget list. If the current widget is
|
||||
// the last widget, sets focus on the last widget.
|
||||
func (tracker *FocusTracker) Prev() {
|
||||
tracker.blur(tracker.Idx)
|
||||
tracker.decrement()
|
||||
tracker.focus(tracker.Idx)
|
||||
if tracker.widgetHasFocus() {
|
||||
tracker.blur(tracker.Idx)
|
||||
tracker.decrement()
|
||||
tracker.focus(tracker.Idx)
|
||||
}
|
||||
}
|
||||
|
||||
func (tracker *FocusTracker) Refocus() {
|
||||
@ -104,6 +108,10 @@ func (tracker *FocusTracker) increment() {
|
||||
// widgetHasFocus returns true if one of the widgets currently has the app's focus,
|
||||
// false if none of them do (ie: perhaps a modal dialog currently has it instead)
|
||||
func (tracker *FocusTracker) widgetHasFocus() bool {
|
||||
if tracker.Idx < 0 {
|
||||
return true
|
||||
}
|
||||
|
||||
for _, widget := range tracker.Widgets {
|
||||
if widget.TextView() == tracker.App.GetFocus() {
|
||||
return true
|
||||
|
Loading…
x
Reference in New Issue
Block a user