v0.8.0 446d1e3

workspace_clip_test.go RawHistoryFolder

1package ports
2
3import "testing"
4
5func TestSceneShowsWorkspaceClip(t *testing.T) {
6	s := Scene{OutputWidth: 100, OutputHeight: 100, WorkspaceClip: Rect{X: 25, Y: 25, W: 50, H: 50}, Windows: []SceneWindow{
7		{ID: 1, Rect: Rect{W: 20, H: 20}},
8		{ID: 2, Rect: Rect{X: 30, Y: 30, W: 20, H: 20}},
9		{ID: 3, Rect: Rect{W: 20, H: 20}, Popup: true, OverLayers: true},
10	}}
11	if s.Shows(1) || !s.Shows(2) || !s.Shows(3) {
12		t.Fatalf("shown: %v %v %v", s.Shows(1), s.Shows(2), s.Shows(3))
13	}
14	s.WorkspaceClip = Rect{}
15	if !s.Shows(1) {
16		t.Fatal("inherited workspace excluded surface")
17	}
18}
19
20// A tile under a panel (outside TileArea) is not drawn; a float, a
21// fullscreen window, a preview or a popup there still is. Panels covering
22// the whole output leave no tile drawn.
23func TestSceneShowsTileInset(t *testing.T) {
24	under := Rect{Y: 80, W: 50, H: 80}
25	s := Scene{OutputWidth: 100, OutputHeight: 100, TileInset: Insets{Bottom: 20}, Windows: []SceneWindow{
26		{ID: 1, Rect: Rect{W: 50, H: 80}},
27		{ID: 2, Rect: under},
28		{ID: 3, Rect: under, Floating: true},
29		{ID: 4, Rect: under, Fullscreen: true},
30		{ID: 5, Rect: under, Preview: 0.5},
31		{ID: 6, Rect: under, Popup: true},
32	}}
33	for id, want := range map[WindowID]bool{1: true, 2: false, 3: true, 4: true, 5: true, 6: true} {
34		if got := s.Shows(id); got != want {
35			t.Errorf("window %d shown %v, want %v", id, got, want)
36		}
37	}
38	s.TileInset = Insets{Right: 100, Bottom: 100}
39	if s.Shows(1) || !s.Shows(3) {
40		t.Fatalf("no room for tiles: tile %v, float %v", s.Shows(1), s.Shows(3))
41	}
42	s.TileInset = Insets{}
43	if !s.Shows(2) {
44		t.Fatal("tile with no panel not shown")
45	}
46}
47
48func TestRectContains(t *testing.T) {
49	r := Rect{X: 10, Y: 10, W: 20, H: 20}
50	for o, want := range map[Rect]bool{r: true, {X: 15, Y: 15, W: 5, H: 5}: true, {X: 9, Y: 10, W: 5, H: 5}: false, {X: 25, Y: 25, W: 6, H: 5}: false} {
51		if got := r.Contains(o); got != want {
52			t.Errorf("%+v contains %+v = %v, want %v", r, o, got, want)
53		}
54	}
55}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 23

Tags 10

↑↓ moveenter openesc close