gmenu: Resolve search not always updating app list

This commit is contained in:
Trevor Slocum 2019-11-09 07:33:55 -08:00
parent ca559957f1
commit e15f4e1a7c
6 changed files with 44 additions and 33 deletions

View File

@ -1,3 +1,6 @@
0.2.3:
- gmenu: Resolve search not always updating app list
0.2.2:
- Resolve search not being case-insensitive
- gmenu: Use library tview for terminal interface

View File

@ -5,6 +5,16 @@
Desktop application launcher
## Screenshots
### Console
![](https://gmenu.rocketnine.space/static/gmenu_v022_1.png) ![](https://gmenu.rocketnine.space/static/gmenu_v022_2.png)
### GUI
![](https://gmenu.rocketnine.space/static/gtkmenu_v022_1.png) ![](https://gmenu.rocketnine.space/static/gtkmenu_v022_2.png)
## Download
[**Download gmenu**](https://gmenu.rocketnine.space/download/?sort=name&order=desc) (Linux binaries are available)

View File

@ -31,7 +31,7 @@ func NewOptionsList(options []string) *OptionsList {
options: options,
}
opts.TextView = opts.SetDynamicColors(true).SetWordWrap(false)
opts.TextView = opts.SetDynamicColors(true).SetWrap(true).SetWordWrap(false)
return &opts
}
@ -61,7 +61,7 @@ func (r *OptionsList) Draw(screen tcell.Screen) {
r.shown++
}
r.TextView.SetText(b.String()).Highlight("gmenu").Draw(screen)
r.TextView.SetText(b.String()).Highlight("gmenu").ScrollToBeginning().Draw(screen)
}
func initGUI() (*tview.Application, error) {
@ -98,6 +98,8 @@ func initGUI() (*tview.Application, error) {
}
app = app.SetInputCapture(func(event *tcell.EventKey) *tcell.EventKey {
defer app.QueueUpdateDraw(updateEntryInfo)
if event.Key() == tcell.KeyUp {
if optionsList.origin > 0 && optionsList.selected == optionsList.origin {
optionsList.origin--
@ -106,8 +108,6 @@ func initGUI() (*tview.Application, error) {
optionsList.selected--
}
event = nil
updateEntryInfo()
app.Draw()
} else if event.Key() == tcell.KeyDown {
if optionsList.selected < len(optionsList.options)-1 {
optionsList.selected++
@ -116,14 +116,10 @@ func initGUI() (*tview.Application, error) {
}
}
event = nil
updateEntryInfo()
app.Draw()
} else if event.Key() == tcell.KeyPgUp {
if optionsList.origin == 0 {
optionsList.selected = 0
updateEntryInfo()
app.Draw()
return nil
}
@ -133,8 +129,6 @@ func initGUI() (*tview.Application, error) {
}
optionsList.selected = optionsList.origin
updateEntryInfo()
app.Draw()
return nil
} else if event.Key() == tcell.KeyPgDn {
numEntries := len(gmenu.FilteredEntries)
@ -142,8 +136,6 @@ func initGUI() (*tview.Application, error) {
if optionsList.origin >= numEntries-optionsList.shown {
optionsList.selected = numEntries - 1
updateEntryInfo()
app.Draw()
return nil
}
@ -153,8 +145,6 @@ func initGUI() (*tview.Application, error) {
}
optionsList.selected = optionsList.origin
updateEntryInfo()
app.Draw()
return nil
} else if event.Key() == tcell.KeyEnter {
err := listSelect()

View File

@ -15,7 +15,7 @@ func updateEntries(input string) {
optionsList.selected = 0
optionsList.origin = 0
defer updateEntryInfo()
defer app.QueueUpdateDraw(updateEntryInfo)
optionsList.options = nil
for _, entry := range gmenu.FilteredEntries {

11
go.mod
View File

@ -4,12 +4,13 @@ go 1.12
require (
git.sr.ht/~tslocum/desktop v0.1.1
github.com/gdamore/tcell v1.1.2
github.com/gotk3/gotk3 v0.0.0-20190827191254-95d4bac6fe1b
github.com/gdamore/tcell v1.3.0
github.com/gotk3/gotk3 v0.0.0-20191027191019-60cba67d4ea4
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51
github.com/lithammer/fuzzysearch v1.0.2
github.com/mattn/go-isatty v0.0.9
github.com/mattn/go-isatty v0.0.10
github.com/mattn/go-runewidth v0.0.6 // indirect
github.com/pkg/errors v0.8.1
github.com/rivo/tview v0.0.0-20190829161255-f8bc69b90341
golang.org/x/sys v0.0.0-20190927073244-c990c680b611 // indirect
github.com/rivo/tview v0.0.0-20191018125527-685bf6da76c2
golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd // indirect
)

33
go.sum
View File

@ -4,28 +4,35 @@ github.com/DATA-DOG/go-sqlmock v1.3.3 h1:CWUqKXe0s8A2z6qCgkP4Kru7wC11YoAnoupUKFD
github.com/DATA-DOG/go-sqlmock v1.3.3/go.mod h1:f/Ixk793poVmq4qj/V1dPUg2JEAKC73Q5eFN3EC/SaM=
github.com/gdamore/encoding v1.0.0 h1:+7OoQ1Bc6eTm5niUzBa0Ctsh6JbMW6Ra+YNuAtDBdko=
github.com/gdamore/encoding v1.0.0/go.mod h1:alR0ol34c49FCSBLjhosxzcPHQbf2trDkoo5dl+VrEg=
github.com/gdamore/tcell v1.1.2 h1:Afe8cU6SECC06UmvaJ55Jr3Eh0tz/ywLjqWYqjGZp3s=
github.com/gdamore/tcell v1.1.2/go.mod h1:h3kq4HO9l2On+V9ed8w8ewqQEmGCSSHOgQ+2h8uzurE=
github.com/gotk3/gotk3 v0.0.0-20190827191254-95d4bac6fe1b h1:/ExhbPkho7qhFp96P5JZq5GB2x3ApecVIy0pqPoF0DQ=
github.com/gotk3/gotk3 v0.0.0-20190827191254-95d4bac6fe1b/go.mod h1:Eew3QBwAOBTrfFFDmsDE5wZWbcagBL1NUslj1GhRveo=
github.com/gdamore/tcell v1.3.0 h1:r35w0JBADPZCVQijYebl6YMWWtHRqVEGt7kL2eBADRM=
github.com/gdamore/tcell v1.3.0/go.mod h1:Hjvr+Ofd+gLglo7RYKxxnzCBmev3BzsS67MebKS4zMM=
github.com/gotk3/gotk3 v0.0.0-20191027191019-60cba67d4ea4 h1:XKmosDfDUElDjCNdtc5SpEArZXi3hOStu0HEOO9fm4Q=
github.com/gotk3/gotk3 v0.0.0-20191027191019-60cba67d4ea4/go.mod h1:Eew3QBwAOBTrfFFDmsDE5wZWbcagBL1NUslj1GhRveo=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 h1:Z9n2FFNUXsshfwJMBgNA0RU6/i7WVaAegv3PtuIHPMs=
github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51/go.mod h1:CzGEWj7cYgsdH8dAjBGEr58BoE7ScuLd+fwFZ44+/x8=
github.com/lithammer/fuzzysearch v1.0.2 h1:AjCE2iwc5y+8K+h2nXVc0Pmrpjvu+JVqMgiZ0oakXDM=
github.com/lithammer/fuzzysearch v1.0.2/go.mod h1:bvAJyokfCQ7Vknrd4Kgc+izmMrPj5CiBAu2t6rK1Kak=
github.com/lucasb-eyer/go-colorful v1.0.2 h1:mCMFu6PgSozg9tDNMMK3g18oJBX7oYGrC09mS6CXfO4=
github.com/lucasb-eyer/go-colorful v1.0.2/go.mod h1:0MS4r+7BZKSJ5mw4/S5MPN+qHFF1fYclkSPilDOKW0s=
github.com/mattn/go-isatty v0.0.9 h1:d5US/mDsogSGW37IV293h//ZFaeajb69h+EHFsv2xGg=
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
github.com/mattn/go-isatty v0.0.10 h1:qxFzApOv4WsAL965uUPIsXzAKCZxN2p9UqdhFS4ZW10=
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
github.com/mattn/go-runewidth v0.0.4 h1:2BvfKmzob6Bmd4YsL0zygOqfdFnK7GR4QL06Do4/p7Y=
github.com/mattn/go-runewidth v0.0.4/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU=
github.com/mattn/go-runewidth v0.0.6 h1:V2iyH+aX9C5fsYCpK60U8BYIvmhqxuOL3JZcqc1NB7k=
github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/rivo/tview v0.0.0-20190829161255-f8bc69b90341 h1:d2Z5U4d3fenPRFFweaMCogbXiRywM5kgYtu20/hol3M=
github.com/rivo/tview v0.0.0-20190829161255-f8bc69b90341/go.mod h1:+rKjP5+h9HMwWRpAfhIkkQ9KE3m3Nz5rwn7YtUpwgqk=
github.com/rivo/uniseg v0.0.0-20190513083848-b9f5b9457d44 h1:XKCbzPvK4/BbMXoMJOkYP2ANxiAEO0HM1xn6psSbXxY=
github.com/rivo/uniseg v0.0.0-20190513083848-b9f5b9457d44/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20190927073244-c990c680b611 h1:q9u40nxWT5zRClI/uU9dHCiYGottAg6Nzz4YUQyHxdA=
golang.org/x/sys v0.0.0-20190927073244-c990c680b611/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
github.com/rivo/tview v0.0.0-20191018125527-685bf6da76c2 h1:GVXSfgXOMAeLvFH7IrpY3yYM8H3YekZEFcZ14q9gQXM=
github.com/rivo/tview v0.0.0-20191018125527-685bf6da76c2/go.mod h1:/rBeY22VG2QprWnEqG57IBC8biVu3i0DOIjRLc9I8H0=
github.com/rivo/uniseg v0.1.0 h1:+2KBaVoUmb9XzDsrx/Ct0W/EYOSFf/nWTauy++DprtY=
github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
golang.org/x/sys v0.0.0-20190626150813-e07cf5db2756/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191018095205-727590c5006e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd h1:3x5uuvBgE6oaXJjCOvpCC1IpgJogqQ+PqGGU3ZxAgII=
golang.org/x/sys v0.0.0-20191105231009-c1f44814a5cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
golang.org/x/text v0.3.0 h1:g61tztE5qeGQ89tm6NTjjM9VPIm088od1l6aSorWRWg=
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
golang.org/x/text v0.3.2 h1:tW2bmiBqwgJj/UpqtC8EpXEZVYOwU0yG4iWbprSVAcs=
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=