]> git.mdlowis.com Git - proto/labwc.git/commitdiff
chase: handle xdg new toplevel event
authorConsolatis <35009135+Consolatis@users.noreply.github.com>
Tue, 19 Mar 2024 01:38:09 +0000 (02:38 +0100)
committerJohan Malm <johanmalm@users.noreply.github.com>
Wed, 17 Jul 2024 20:28:59 +0000 (21:28 +0100)
https://gitlab.freedesktop.org/wlroots/wlroots/-/merge_requests/4345

include/labwc.h
src/xdg.c

index bb1efd8ebbf614e6e276bcb59174346387fecc5e..cdb4e42fe24e88ebe80d64b5b5810be97f14f526 100644 (file)
@@ -229,7 +229,7 @@ struct server {
        struct wlr_xdg_shell *xdg_shell;
        struct wlr_layer_shell_v1 *layer_shell;
 
-       struct wl_listener new_xdg_surface;
+       struct wl_listener new_xdg_toplevel;
        struct wl_listener new_layer_surface;
 
        struct wl_listener kde_server_decoration;
index 16474e8f9bf69aa7650a6f7e30660d662132a8a7..14b209aed541f088ade97d6997b14a2225aadc9a 100644 (file)
--- a/src/xdg.c
+++ b/src/xdg.c
@@ -743,19 +743,14 @@ xdg_activation_handle_request(struct wl_listener *listener, void *data)
  *     to help the popups find their parent nodes
  */
 static void
-xdg_surface_new(struct wl_listener *listener, void *data)
+xdg_toplevel_new(struct wl_listener *listener, void *data)
 {
        struct server *server =
-               wl_container_of(listener, server, new_xdg_surface);
-       struct wlr_xdg_surface *xdg_surface = data;
+               wl_container_of(listener, server, new_xdg_toplevel);
+       struct wlr_xdg_toplevel *xdg_toplevel = data;
+       struct wlr_xdg_surface *xdg_surface = xdg_toplevel->base;
 
-       /*
-        * We deal with popups in xdg-popup.c and layers.c as they have to be
-        * treated differently
-        */
-       if (xdg_surface->role != WLR_XDG_SURFACE_ROLE_TOPLEVEL) {
-               return;
-       }
+       assert(xdg_surface->role == WLR_XDG_SURFACE_ROLE_TOPLEVEL);
 
        wlr_xdg_surface_ping(xdg_surface);
 
@@ -850,8 +845,9 @@ xdg_shell_init(struct server *server)
                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->new_xdg_toplevel.notify = xdg_toplevel_new;
+       wl_signal_add(&server->xdg_shell->events.new_toplevel, &server->new_xdg_toplevel);
 
        server->xdg_activation = wlr_xdg_activation_v1_create(server->wl_display);
        if (!server->xdg_activation) {