Skip to content

windowPreview: Adjust WindowPreview stack when stackAbove overlay shown

Keyu Tao requested to merge taoky/gnome-shell:preview-always-restack-1 into main

When there are 3 or more windows in WorkspaceLayout, showing or hiding window preview overlay in some certain orders could cause inconsistencies in windows' vertical arrangement.

Let's take window A, B, C as an example. Initially, A is above B and B is above C in workspace layout like this: A -> B -> C.

After opening activities, user could:

  1. Move cursor to B preview, which would move B above all in layout: B -> A -> C
  2. Move cursor from B to C preview. When C's showOverlay() is called before B's hideOverlay(), _restack() would move C above all and don't change B's arrangement: C -> B -> A
  3. Finally, move cursor away from C's preview: B -> A -> C

In this case, when user closes Activities, they would see window stacking wrong for a while.

Closes: #4638.


Screencast. Before:

before

After:

after

Merge request reports

Loading