summary refs log tree commit diff stats
path: root/lib/ui/tab.go
Commit message (Collapse)AuthorAgeFilesLines
* fix: Close unused MessageView when swapping viewRay Ganardi2020-04-201-0/+5
| | | | | | | Closes https://todo.sr.ht/~sircmpwn/aerc2/379 The old `MessageView` was not closed when replacing the tab content, which causes a memory leak.
* Add pinned tabsJeffas2020-03-091-5/+62
| | | | | | This adds the commands pin-tab and unpin-tab. Once pinned a tab lives on the left of the tabstrip and has a configurable marker, defaulting to ` before its name.
* Add move-tab commandJeffas2020-03-031-0/+41
|
* Fix tab refocus on removeJeffas2019-10-141-8/+14
| | | | | | | | Previously removing a tab would always pop from the history of tabs. This checks to see if the closing tab is the one selected, if it is then we use the history, otherwise we only need to change the selected tab if it was after (to the right of) the closing tab, in which case we just decrement the selected index.
* Fix pushing invalid tabs to historyJeffas2019-10-141-1/+4
| | | | A tab can now only be pushed onto the history if it is a selectable tab.
* Focus new tab after removeJeffas2019-09-181-0/+4
| | | | | After removing a tab we should focus the newly selected tab if it is Interactive. This ensures things like the terminal get drawn properly.
* Add MouseableJeffas2019-09-111-21/+81
| | | | | | | | | | | | | | | | | | | | | | This adds the Mouseable interface. When this is implemented for a component that item can accept and process mouseevents. At the top level when a mouse event is received it is passed to the grid's handler and then it trickles down until it reaches a component that can actually handle it, such as the tablist, dirlist or msglist. A mouse event is passed so that components can handle other things such as scrolling with the mousewheel. The components themselves then perform the necessary actions. Clicking emails in the messagelist opens them in a new tab. Textinputs can be clicked to position the cursor inside them. Mouseevents are not forwarded to the terminal at the moment. Elements which do not handle mouse events are not required to implement the Mouseable interface.
* Fix tabstrip over-drawing when not enough spaceJeffas2019-07-261-1/+8
| | | | | | | | Tabstrip didn't take into account the width of the context. Now, it just shows as many tabs as can fit and truncates the last one if necessary. In future it probably would be best to ensure that the selected tab is rendered on the screen.
* Fix invalid tab state when deselecting removed tabDrew DeVault2019-07-261-1/+1
|
* Fix :close on terminal panicJeffas2019-07-251-0/+5
| | | | | | | | Executing :close on a terminal would panic due to it already having been removed. This is also related to the fact that removing a tab doesn't check for whether it actually found a tab to remove or not.
* Fix panic when tabs.popHistory is nonexistentDrew DeVault2019-07-251-1/+1
|
* Add change tab commandJeffas2019-07-231-5/+20
| | | | | | | | | | This command allows the user to change tab by giving the tab name. This can be tab completed too. The previous tab is stored in the tabs module so that when a new tab is created it is still possible to go to the previous one. Normal invocation is :ct folder Previous tab is :ct -
* Add clickable tabsJeffas2019-07-111-0/+28
| | | | | | | | | | | This introduces a new interface `Clickable`. I'd imagine this would be implemented for most widgets eventually and would allow for programs run in the terminal to also have their mouse events forwarded to them. For the tabs it was relatively simple to check that the position of the click is within the boxes for the tabs. For other components I'd imagine that some state representing their currently drawn bounding box would be useful.
* lib/ui/tab: Add Replace methodKevin Kuehler2019-06-111-0/+16
| | | | | | Also expose a light wrapper method in aerc.go for tab replacement Signed-off-by: Kevin Kuehler <kkuehler@brave.com>
* Fix #116 0.1.0Drew DeVault2019-06-031-1/+1
|
* Add Tabs historyReto Brunner2019-06-021-4/+34
| | | | Fixes #77: When closing a tab, bring you back to the one you last had focused
* Update tab name as subject changesDrew DeVault2019-05-141-1/+3
| | | | Also moves truncation to the tab widget
* Use tcell.Style.Reverse instead of black on whiteDrew DeVault2019-03-301-9/+3
|
* Add :term-closeDrew DeVault2019-03-171-2/+2
|
* Move exline handling up to aerc, add :termDrew DeVault2019-03-171-3/+5
|
* Implement the Container interface in lib/ui/Drew DeVault2019-01-201-0/+8
|
* refactor lib/ui/tab to ensure staying in boundsMarkus Ongyerth2018-06-131-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 bugsDrew DeVault2018-06-111-1/+5
|
* Use default color for selected tabDrew DeVault2018-06-071-3/+9
|
* switch to tcell from termboxMarkus Ongyerth2018-06-011-13/+6
| | | | | | | | | | | | | 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
* Split UI library and widgetsDrew DeVault2018-02-261-0/+115