diff --git a/dwl.c b/dwl.c index 54bc335..962a149 100644 --- a/dwl.c +++ b/dwl.c @@ -94,8 +94,8 @@ struct render_data { static void axisnotify(struct wl_listener *listener, void *data); static void buttonpress(struct wl_listener *listener, void *data); static void createkeyboard(struct wlr_input_device *device); -static void createnotify(struct wl_listener *listener, void *data); static void createmon(struct wl_listener *listener, void *data); +static void createnotify(struct wl_listener *listener, void *data); static void createpointer(struct wlr_input_device *device); static void cursorframe(struct wl_listener *listener, void *data); static void destroynotify(struct wl_listener *listener, void *data); @@ -120,10 +120,10 @@ static void resizemouse(const Arg *arg); static void setcursor(struct wl_listener *listener, void *data); static void spawn(const Arg *arg); static void unmapnotify(struct wl_listener *listener, void *data); -static bool xytosurface(Client *c, double lx, double ly, - struct wlr_surface **surface, double *sx, double *sy); static Client * xytoclient(double lx, double ly, struct wlr_surface **surface, double *sx, double *sy); +static bool xytosurface(Client *c, double lx, double ly, + struct wlr_surface **surface, double *sx, double *sy); /* variables */ static struct wl_display *wl_display; @@ -230,32 +230,6 @@ createkeyboard(struct wlr_input_device *device) wl_list_insert(&keyboards, &keyboard->link); } -void -createnotify(struct wl_listener *listener, void *data) -{ - /* This event is raised when wlr_xdg_shell receives a new xdg surface from a - * client, either a toplevel (application window) or popup. */ - struct wlr_xdg_surface *xdg_surface = data; - if (xdg_surface->role != WLR_XDG_SURFACE_ROLE_TOPLEVEL) { - return; - } - - /* Allocate a Client for this surface */ - Client *c = calloc(1, sizeof(*c)); - c->xdg_surface = xdg_surface; - - /* Listen to the various events it can emit */ - c->map.notify = maprequest; - wl_signal_add(&xdg_surface->events.map, &c->map); - c->unmap.notify = unmapnotify; - wl_signal_add(&xdg_surface->events.unmap, &c->unmap); - c->destroy.notify = destroynotify; - wl_signal_add(&xdg_surface->events.destroy, &c->destroy); - - /* Add it to the list of clients. */ - wl_list_insert(&clients, &c->link); -} - void createmon(struct wl_listener *listener, void *data) { @@ -297,6 +271,32 @@ createmon(struct wl_listener *listener, void *data) wlr_output_create_global(wlr_output); } +void +createnotify(struct wl_listener *listener, void *data) +{ + /* This event is raised when wlr_xdg_shell receives a new xdg surface from a + * client, either a toplevel (application window) or popup. */ + struct wlr_xdg_surface *xdg_surface = data; + if (xdg_surface->role != WLR_XDG_SURFACE_ROLE_TOPLEVEL) { + return; + } + + /* Allocate a Client for this surface */ + Client *c = calloc(1, sizeof(*c)); + c->xdg_surface = xdg_surface; + + /* Listen to the various events it can emit */ + c->map.notify = maprequest; + wl_signal_add(&xdg_surface->events.map, &c->map); + c->unmap.notify = unmapnotify; + wl_signal_add(&xdg_surface->events.unmap, &c->unmap); + c->destroy.notify = destroynotify; + wl_signal_add(&xdg_surface->events.destroy, &c->destroy); + + /* Add it to the list of clients. */ + wl_list_insert(&clients, &c->link); +} + void createpointer(struct wlr_input_device *device) { @@ -804,6 +804,21 @@ unmapnotify(struct wl_listener *listener, void *data) c->mapped = false; } +Client * +xytoclient(double lx, double ly, + struct wlr_surface **surface, double *sx, double *sy) +{ + /* This iterates over all of our surfaces and attempts to find one under the + * cursor. This relies on clients being ordered from top-to-bottom. */ + Client *c; + wl_list_for_each(c, &clients, link) { + if (xytosurface(c, lx, ly, surface, sx, sy)) { + return c; + } + } + return NULL; +} + bool xytosurface(Client *c, double lx, double ly, struct wlr_surface **surface, double *sx, double *sy) @@ -835,21 +850,6 @@ xytosurface(Client *c, double lx, double ly, return false; } -Client * -xytoclient(double lx, double ly, - struct wlr_surface **surface, double *sx, double *sy) -{ - /* This iterates over all of our surfaces and attempts to find one under the - * cursor. This relies on clients being ordered from top-to-bottom. */ - Client *c; - wl_list_for_each(c, &clients, link) { - if (xytosurface(c, lx, ly, surface, sx, sy)) { - return c; - } - } - return NULL; -} - int main(int argc, char *argv[]) {