From 7f30de113441f565f135c5497c616e5bcfe21c33 Mon Sep 17 00:00:00 2001 From: Johan Malm Date: Fri, 20 Oct 2023 22:04:08 +0100 Subject: [PATCH] xdg: add xdg_shell_init() ...to have the event-handler functions in the same translation unit as the signal connector. No functional change intended. --- include/labwc.h | 5 +---- src/server.c | 24 +----------------------- src/xdg.c | 28 ++++++++++++++++++++++++++-- 3 files changed, 28 insertions(+), 29 deletions(-) diff --git a/include/labwc.h b/include/labwc.h index 598d4270..e128a5c0 100644 --- a/include/labwc.h +++ b/include/labwc.h @@ -356,10 +356,7 @@ struct constraint { }; void xdg_popup_create(struct view *view, struct wlr_xdg_popup *wlr_popup); - -void xdg_activation_handle_request(struct wl_listener *listener, void *data); - -void xdg_surface_new(struct wl_listener *listener, void *data); +void xdg_shell_init(struct server *server); void foreign_toplevel_handle_create(struct view *view); void foreign_toplevel_update_outputs(struct view *view); diff --git a/src/server.c b/src/server.c index 6457a7b5..29868e96 100644 --- a/src/server.c +++ b/src/server.c @@ -30,8 +30,6 @@ #include "workspaces.h" #include "xwayland.h" -#define LAB_XDG_SHELL_VERSION (2) - static struct wlr_compositor *compositor; static struct wl_event_source *sighup_source; static struct wl_event_source *sigint_source; @@ -359,30 +357,10 @@ server_init(struct server *server) wlr_primary_selection_v1_device_manager_create(server->wl_display); seat_init(server); - - /* Init xdg-shell */ - server->xdg_shell = wlr_xdg_shell_create(server->wl_display, - LAB_XDG_SHELL_VERSION); - if (!server->xdg_shell) { - wlr_log(WLR_ERROR, "unable to create the XDG shell interface"); - exit(EXIT_FAILURE); - } - server->new_xdg_surface.notify = xdg_surface_new; - wl_signal_add(&server->xdg_shell->events.new_surface, - &server->new_xdg_surface); - + xdg_shell_init(server); kde_server_decoration_init(server); xdg_server_decoration_init(server); - server->xdg_activation = wlr_xdg_activation_v1_create(server->wl_display); - if (!server->xdg_activation) { - wlr_log(WLR_ERROR, "unable to create xdg_activation interface"); - exit(EXIT_FAILURE); - } - server->xdg_activation_request.notify = xdg_activation_handle_request; - wl_signal_add(&server->xdg_activation->events.request_activate, - &server->xdg_activation_request); - struct wlr_presentation *presentation = wlr_presentation_create(server->wl_display, server->backend); if (!presentation) { diff --git a/src/xdg.c b/src/xdg.c index c913cb93..88776198 100644 --- a/src/xdg.c +++ b/src/xdg.c @@ -9,6 +9,7 @@ #include "window-rules.h" #include "workspaces.h" +#define LAB_XDG_SHELL_VERSION (2) #define CONFIGURE_TIMEOUT_MS 100 static struct xdg_toplevel_view * @@ -580,7 +581,7 @@ static const struct view_impl xdg_toplevel_view_impl = { .append_children = xdg_toplevel_view_append_children, }; -void +static void xdg_activation_handle_request(struct wl_listener *listener, void *data) { const struct wlr_xdg_activation_v1_request_activate_event *event = data; @@ -624,7 +625,7 @@ xdg_activation_handle_request(struct wl_listener *listener, void *data) * - wlr_surface->data = scene_tree * to help the popups find their parent nodes */ -void +static void xdg_surface_new(struct wl_listener *listener, void *data) { struct server *server = @@ -725,3 +726,26 @@ xdg_surface_new(struct wl_listener *listener, void *data) wl_list_insert(&server->views, &view->link); } + +void +xdg_shell_init(struct server *server) +{ + server->xdg_shell = wlr_xdg_shell_create(server->wl_display, + LAB_XDG_SHELL_VERSION); + if (!server->xdg_shell) { + wlr_log(WLR_ERROR, "unable to create the XDG shell interface"); + exit(EXIT_FAILURE); + } + server->new_xdg_surface.notify = xdg_surface_new; + wl_signal_add(&server->xdg_shell->events.new_surface, &server->new_xdg_surface); + + server->xdg_activation = wlr_xdg_activation_v1_create(server->wl_display); + if (!server->xdg_activation) { + wlr_log(WLR_ERROR, "unable to create xdg_activation interface"); + exit(EXIT_FAILURE); + } + server->xdg_activation_request.notify = xdg_activation_handle_request; + wl_signal_add(&server->xdg_activation->events.request_activate, + &server->xdg_activation_request); +} +