1package core
2
3import "testing"
4
5// A dialog of the covering fullscreen window shows over it with the focus;
6// other floats stay hidden. A focus move goes back to the fullscreen window
7// without leaving fullscreen.
8func TestDialogOverFullscreenParent(t *testing.T) {
9 for _, overflow := range []Overflow{OverflowScroll, OverflowFixed} {
10 t.Run(string(overflow), func(t *testing.T) {
11 w := workspace()
12 w.Overflow = overflow
13 w.AddWindow(1)
14 w.AddWindow(2)
15 w.FocusID(1)
16 w.ToggleFullscreen()
17 w.AddFloating(3, 20, 10) // a dialog of nobody
18 w.AddDialog(4, 1, 20, 10) // the dialog of the fullscreen window
19 w.AddDialog(5, 2, 20, 10) // the dialog of a hidden window
20 wantOrder(t, w, 1, 4)
21 if id, _ := w.Focused(); id != 4 {
22 t.Fatalf("focus %d, want the dialog", id)
23 }
24 if !w.FocusColumn(1) {
25 t.Fatal("focus move refused")
26 }
27 if id, _ := w.Focused(); id != 1 || w.fullscreen != 1 {
28 t.Fatalf("focus %d fullscreen %d", id, w.fullscreen)
29 }
30 wantOrder(t, w, 1, 4)
31 w.FocusID(4)
32 if id, _ := w.Focused(); id != 4 {
33 t.Fatalf("focus %d, want the dialog back", id)
34 }
35 w.RemoveWindow(4)
36 if id, _ := w.Focused(); id != 1 || w.fullscreen != 1 {
37 t.Fatalf("after close focus %d fullscreen %d", id, w.fullscreen)
38 }
39 wantOrder(t, w, 1)
40 })
41 }
42}