mirror of
https://github.com/labwc/labwc.git
synced 2025-11-04 13:30:07 -05:00
src/osd.c: Ensure destroying views are not used as preview anchors
This commit is contained in:
parent
c83c1beace
commit
92976f30d0
2 changed files with 11 additions and 8 deletions
|
|
@ -216,6 +216,10 @@ desktop_cycle_view(struct server *server, struct view *start_view,
|
||||||
* - Pre-select the top view if NOT already focused
|
* - Pre-select the top view if NOT already focused
|
||||||
* - Otherwise select the view second from the top
|
* - Otherwise select the view second from the top
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Make sure to have all nodes in their actual ordering */
|
||||||
|
osd_preview_restore(server);
|
||||||
|
|
||||||
if (!start_view) {
|
if (!start_view) {
|
||||||
start_view = first_view(server);
|
start_view = first_view(server);
|
||||||
if (!start_view || start_view != desktop_focused_view(server)) {
|
if (!start_view || start_view != desktop_focused_view(server)) {
|
||||||
|
|
@ -233,9 +237,6 @@ desktop_cycle_view(struct server *server, struct view *start_view,
|
||||||
/* Scene nodes are ordered like last node == displayed topmost */
|
/* Scene nodes are ordered like last node == displayed topmost */
|
||||||
iter = dir == LAB_CYCLE_DIR_FORWARD ? get_prev_item : get_next_item;
|
iter = dir == LAB_CYCLE_DIR_FORWARD ? get_prev_item : get_next_item;
|
||||||
|
|
||||||
/* Make sure to have all nodes in their actual ordering */
|
|
||||||
osd_preview_restore(server);
|
|
||||||
|
|
||||||
do {
|
do {
|
||||||
list_item = iter(list_item);
|
list_item = iter(list_item);
|
||||||
if (list_item == list_head) {
|
if (list_item == list_head) {
|
||||||
|
|
|
||||||
12
src/osd.c
12
src/osd.c
|
|
@ -124,6 +124,8 @@ osd_on_view_destroy(struct view *view)
|
||||||
* If we are the current OSD selected view, cycle
|
* If we are the current OSD selected view, cycle
|
||||||
* to the next because we are dying.
|
* to the next because we are dying.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/* Also resets preview node */
|
||||||
osd_state->cycle_view = desktop_cycle_view(view->server,
|
osd_state->cycle_view = desktop_cycle_view(view->server,
|
||||||
osd_state->cycle_view, LAB_CYCLE_DIR_BACKWARD);
|
osd_state->cycle_view, LAB_CYCLE_DIR_BACKWARD);
|
||||||
|
|
||||||
|
|
@ -137,6 +139,11 @@ osd_on_view_destroy(struct view *view)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (osd_state->cycle_view) {
|
||||||
|
/* Update the OSD to reflect the view has now gone. */
|
||||||
|
osd_update(view->server);
|
||||||
|
}
|
||||||
|
|
||||||
if (view->scene_tree) {
|
if (view->scene_tree) {
|
||||||
struct wlr_scene_node *node = &view->scene_tree->node;
|
struct wlr_scene_node *node = &view->scene_tree->node;
|
||||||
if (osd_state->preview_anchor == node) {
|
if (osd_state->preview_anchor == node) {
|
||||||
|
|
@ -147,11 +154,6 @@ osd_on_view_destroy(struct view *view)
|
||||||
osd_state->preview_anchor = lab_wlr_scene_get_prev_node(node);
|
osd_state->preview_anchor = lab_wlr_scene_get_prev_node(node);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (osd_state->cycle_view) {
|
|
||||||
/* Update the OSD to reflect the view has now gone. */
|
|
||||||
osd_update(view->server);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue