Commit message (Collapse) | Author | Age | Files | Lines | |
---|---|---|---|---|---|
* | lib/ui: introduce Invalidatable | Simon Ser | 2019-04-27 | 4 | -32/+37 |
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Many Drawable implementations have their own Invalidate and OnInvalidate functions, with an unexported onInvalidate field. However OnInvalidate and Invalidate are usually not called in the same goroutine. This results in a race on this field, e.g.: Read at 0x00c000094748 by goroutine 7: git.sr.ht/~sircmpwn/aerc2/widgets.NewDirectoryList.func1() /home/simon/src/aerc2/widgets/dirlist.go:85 +0x56 git.sr.ht/~sircmpwn/aerc2/widgets.(*Spinner).Start.func1() /home/simon/src/aerc2/widgets/spinner.go:93 +0x1bb Previous write at 0x00c000094748 by main goroutine: [failed to restore the stack] Goroutine 7 (running) created at: git.sr.ht/~sircmpwn/aerc2/widgets.(*Spinner).Start() /home/simon/src/aerc2/widgets/spinner.go:46 +0x8f git.sr.ht/~sircmpwn/aerc2/widgets.NewDirectoryList() /home/simon/src/aerc2/widgets/dirlist.go:37 +0x286 git.sr.ht/~sircmpwn/aerc2/widgets.NewAccountView() /home/simon/src/aerc2/widgets/account.go:50 +0x5ca git.sr.ht/~sircmpwn/aerc2/widgets.NewAerc() /home/simon/src/aerc2/widgets/aerc.go:60 +0x800 main.main() /home/simon/src/aerc2/aerc.go:65 +0x33e To fix this, introduce a new type, Invalidatable, which protects the field. Unfortunately the Drawable must be passed to the callback function in Invalidate, so we still need to re-implement this in each Invalidatable user. | ||||
* | Make message viewer real, part two | Drew DeVault | 2019-03-31 | 1 | -1/+1 |
| | |||||
* | Rename FetchMessageBodies to FetchFullMessages | Drew DeVault | 2019-03-31 | 1 | -2/+2 |
| | |||||
* | Make the message viewer real, part one | Drew DeVault | 2019-03-31 | 1 | -1/+15 |
| | |||||
* | Don't parse mail in worker; send a reader instead | Drew DeVault | 2019-03-31 | 1 | -7/+6 |
| | |||||
* | Pull BodyStructure up from IMAP worker | Drew DeVault | 2019-03-31 | 1 | -1/+15 |
| | |||||
* | Add basic message viewer mockup | Drew DeVault | 2019-03-30 | 1 | -0/+10 |
| | |||||
* | Use tcell.Style.Reverse instead of black on white | Drew DeVault | 2019-03-30 | 3 | -10/+14 |
| | |||||
* | Show deleted emails pending server ack in grey | Drew DeVault | 2019-03-30 | 1 | -2/+15 |
| | | | | TODO: Don't let the user select or interact with deleted messages | ||||
* | Add body fetching support code | Drew DeVault | 2019-03-29 | 1 | -6/+71 |
| | |||||
* | Remove unused import from msgstore.go | Drew DeVault | 2019-03-21 | 1 | -2/+0 |
| | |||||
* | Implement :delete-message | Drew DeVault | 2019-03-20 | 1 | -3/+26 |
| | |||||
* | Add :term-close | Drew DeVault | 2019-03-17 | 2 | -3/+7 |
| | |||||
* | Move exline handling up to aerc, add :term | Drew DeVault | 2019-03-17 | 1 | -3/+5 |
| | |||||
* | Add basic terminal widget | Drew DeVault | 2019-03-17 | 2 | -0/+3 |
| | |||||
* | Add TODO to msgstore.go | Drew DeVault | 2019-03-15 | 1 | -1/+1 |
| | |||||
* | Move MessageStore into its own file | Drew DeVault | 2019-03-15 | 1 | -0/+86 |
| | |||||
* | Add :quit command | Drew DeVault | 2019-03-15 | 1 | -5/+0 |
| | |||||
* | Implement the Container interface in lib/ui/ | Drew DeVault | 2019-01-20 | 5 | -7/+26 |
| | |||||
* | Merge lib/ui/interfaces.go and add another | Drew DeVault | 2019-01-20 | 3 | -30/+42 |
| | |||||
* | Make repeated invalidations more efficient | Drew DeVault | 2019-01-14 | 1 | -0/+10 |
| | |||||
* | Add cursor handling in ex line | Drew DeVault | 2019-01-14 | 1 | -8/+9 |
| | |||||
* | Revert "Add abstract list, update dirlist accordingly" | Drew DeVault | 2019-01-13 | 2 | -111/+0 |
| | | | | This reverts commit 3157897c1a20e5638feaf56e753b7886bc4ba267. | ||||
* | Revert "Render selected list item differently" | Drew DeVault | 2019-01-13 | 1 | -1/+0 |
| | | | | This reverts commit 60284850f22624a03996e882fcfd6aeb2af88b93. | ||||
* | Render selected list item differently | Drew DeVault | 2019-01-13 | 1 | -0/+1 |
| | |||||
* | Add abstract list, update dirlist accordingly | Drew DeVault | 2019-01-13 | 2 | -0/+111 |
| | |||||
* | refactor lib/ui/tab to ensure staying in bounds | Markus Ongyerth | 2018-06-13 | 1 | -8/+21 |
| | | | | | | | | Fix a few potential out of bounds by placing proper checks, which should be relevant if all tabs are removed for some reason. Also avoid iterating all tabs in the invalidate handler, since we are only interested in whether it's the selected tab either way | ||||
* | Fix tab invalidation bugs | Drew DeVault | 2018-06-11 | 1 | -1/+5 |
| | |||||
* | Apply gofmt | Drew DeVault | 2018-06-11 | 3 | -7/+7 |
| | |||||
* | Clean up some old code | Drew DeVault | 2018-06-11 | 2 | -10/+6 |
| | |||||
* | Move sidebar into account tabs | Drew DeVault | 2018-06-11 | 1 | -4/+4 |
| | | | | | This is accomplished through a bit of a hack, the statusbar is able to be a child of multiple dudes | ||||
* | Use default color for selected tab | Drew DeVault | 2018-06-07 | 1 | -3/+9 |
| | |||||
* | switch to tcell from termbox | Markus Ongyerth | 2018-06-01 | 8 | -101/+105 |
| | | | | | | | | | | | | | This is a simple mostly straight forward switch to tcell in favor of termbox. It uses the tcell native api (not the compat layer) but does not make use of most features. Further changes should include moving to tcell's views.TextArea and the general built in widget behaviour instead of the current ad hoc implementation. Regression: Cursor isn't shown in ex-line | ||||
* | Pull main aerc UI into widget | Drew DeVault | 2018-02-27 | 3 | -13/+38 |
| | |||||
* | Add stack UI container | Drew DeVault | 2018-02-27 | 2 | -7/+80 |
| | |||||
* | Split UI library and widgets | Drew DeVault | 2018-02-26 | 8 | -0/+663 |