From 0ef9906557410d09b5d8a7b3763c4a1c3ef12cee Mon Sep 17 00:00:00 2001 From: tokyo4j Date: Mon, 30 Dec 2024 00:44:12 +0900 Subject: [PATCH] src/osd.c: make osd_preview_restore() private in osd.c --- include/osd.h | 3 --- src/input/keyboard.c | 2 -- src/osd.c | 55 ++++++++++++++++++++++---------------------- 3 files changed, 28 insertions(+), 32 deletions(-) diff --git a/include/osd.h b/include/osd.h index 478bcc30..2eefbf71 100644 --- a/include/osd.h +++ b/include/osd.h @@ -43,9 +43,6 @@ void osd_update(struct server *server); /* Closes the OSD */ void osd_finish(struct server *server); -/* Moves preview views back into their original stacking order and state */ -void osd_preview_restore(struct server *server); - /* Notify OSD about a destroying view */ void osd_on_view_destroy(struct view *view); diff --git a/src/input/keyboard.c b/src/input/keyboard.c index 1a8eebf6..7460fec5 100644 --- a/src/input/keyboard.c +++ b/src/input/keyboard.c @@ -76,7 +76,6 @@ end_cycling(struct server *server) } struct view *cycle_view = server->osd_state.cycle_view; - osd_preview_restore(server); /* FIXME: osd_finish() transiently sets focus to the old surface */ osd_finish(server); /* Note that server->osd_state.cycle_view is cleared at this point */ @@ -464,7 +463,6 @@ handle_cycle_view_key(struct server *server, struct keyinfo *keyinfo) for (int i = 0; i < keyinfo->translated.nr_syms; i++) { if (keyinfo->translated.syms[i] == XKB_KEY_Escape) { /* cancel view-cycle */ - osd_preview_restore(server); osd_finish(server); return; } diff --git a/src/osd.c b/src/osd.c index 1f58fb49..7eb3ad5a 100644 --- a/src/osd.c +++ b/src/osd.c @@ -102,9 +102,36 @@ osd_on_view_destroy(struct view *view) } } +static void +restore_preview_node(struct server *server) +{ + struct osd_state *osd_state = &server->osd_state; + if (osd_state->preview_node) { + wlr_scene_node_reparent(osd_state->preview_node, + osd_state->preview_parent); + + if (osd_state->preview_anchor) { + wlr_scene_node_place_above(osd_state->preview_node, + osd_state->preview_anchor); + } else { + /* Selected view was the first node */ + wlr_scene_node_lower_to_bottom(osd_state->preview_node); + } + + /* Node was disabled / minimized before, disable again */ + if (!osd_state->preview_was_enabled) { + wlr_scene_node_set_enabled(osd_state->preview_node, false); + } + osd_state->preview_node = NULL; + osd_state->preview_parent = NULL; + osd_state->preview_anchor = NULL; + } +} + void osd_finish(struct server *server) { + restore_preview_node(server); seat_focus_override_end(&server->seat); server->osd_state.preview_node = NULL; @@ -134,32 +161,6 @@ osd_finish(struct server *server) server->osd_state.cycle_view = NULL; } -void -osd_preview_restore(struct server *server) -{ - struct osd_state *osd_state = &server->osd_state; - if (osd_state->preview_node) { - wlr_scene_node_reparent(osd_state->preview_node, - osd_state->preview_parent); - - if (osd_state->preview_anchor) { - wlr_scene_node_place_above(osd_state->preview_node, - osd_state->preview_anchor); - } else { - /* Selected view was the first node */ - wlr_scene_node_lower_to_bottom(osd_state->preview_node); - } - - /* Node was disabled / minimized before, disable again */ - if (!osd_state->preview_was_enabled) { - wlr_scene_node_set_enabled(osd_state->preview_node, false); - } - osd_state->preview_node = NULL; - osd_state->preview_parent = NULL; - osd_state->preview_anchor = NULL; - } -} - static void preview_cycled_view(struct view *view) { @@ -168,7 +169,7 @@ preview_cycled_view(struct view *view) struct osd_state *osd_state = &view->server->osd_state; /* Move previous selected node back to its original place */ - osd_preview_restore(view->server); + restore_preview_node(view->server); /* Store some pointers so we can reset the preview later on */ osd_state->preview_node = &view->scene_tree->node; -- 2.52.0