view: save view->last_placement on initial positioning

Fix a regression introduced in 3f223fe5 where output layout changes may
move xdg views outside of the output layout with the error:
`view has no last placement info`. This happens also for X11 views if
they don't specify its own geometry on map.

Recent changes introduced `view->last_placement` which is used to
restore view positions after layout changes. This is supposed to be
updated when a view is mapped or manually moved by the user.

However, 3f223fe5 replaced `view_place_by_policy()` with
`view_compute_position_by_policy()` in the xdg view map handler. Unlike
`view_place_by_policy()`, this function does not update
`view->last_placement`, leaving it unset at the time of output layout
changes.

Therefore, this patch adds explicit calls to `view_save_last_placement()`
in the map handler to ensure `view->last_placement` is always set for
mapped views.
This commit is contained in:
tokyo4j 2026-03-08 18:44:59 +09:00 committed by Hiroaki Yamamoto
parent 1f776466a8
commit 3bb4ccd22d
4 changed files with 16 additions and 5 deletions

View file

@ -148,6 +148,8 @@ set_initial_position(struct view *view)
/* allow_cursor */ true, rc.placement_policy);
}
}
view_save_last_placement(view);
}
static void