]> git.mdlowis.com Git - proto/labwc.git/commitdiff
xdg: add xdg_shell_init()
authorJohan Malm <jgm323@gmail.com>
Fri, 20 Oct 2023 21:04:08 +0000 (22:04 +0100)
committerJohn Lindgren <john@jlindgren.net>
Fri, 20 Oct 2023 22:14:11 +0000 (18:14 -0400)
...to have the event-handler functions in the same translation unit as
the signal connector.

No functional change intended.

include/labwc.h
src/server.c
src/xdg.c

index 598d427053f005cb1b037c5a289fc360eee46993..e128a5c0023fe4ed04d85542c2d075b0981553fd 100644 (file)
@@ -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);
index 6457a7b594625b07ce10ed32658ea98a5a29cc84..29868e9629e426958479b77661adf4fa7b3c8553 100644 (file)
@@ -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) {
index c913cb930c225b6006ce34c6081ec963d4d27830..887761980f469f0a8e3899fe635b499482fcc2b3 100644 (file)
--- 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);
+}
+