- for (; it_below != stacking_list;
- it_below = g_list_previous(it_below))
- {
- /* stop when the window is not in a lower layer than the
- window it is going under (it_above) */
- GList *it_above = g_list_previous(it_below);
- if (client->layer <= window_layer(it_above->data))
- break;
+ else {
+ /* There is no window to put this directly above, so put it at the
+ top, so you know it is there.
+
+ It used to do this only if the window was focused and lower
+ it otherwise.
+
+ We also put it at the top not the bottom to fix a bug with
+ fullscreen windows. When focusLast is off and followsMouse is
+ on, when you switch desktops, the fullscreen window loses
+ focus and goes into its lower layer. If this puts it at the
+ bottom then when you come back to the desktop, the window is
+ at the bottom and won't get focus back.
+ */
+ it_below = stacking_list;