Commit fb891291b73beb6716cbf20a4b1b7948735bd02e Parent: 7216e9333e423fe6bf3a14396d31394e6e66f9be Author: mcol <mcol@posteo.net> Date: 2020-11-05 23:01:16 +0000 Committer: mcol <mcol@posteo.net> Committed: 2020-11-05 23:01:16 +0000 add keyboard struct; fix some formatting
src/types.h Modified
@@ -66,4 +66,10 @@ }; -struct server create_server(); +struct keyboard { + struct wl_list link; + struct server *server; + struct wlr_input_device *device; + struct wl_listener modifier_listener; + struct wl_listener key_listener; +};
src/shell.h Modified
@@ -3,9 +3,11 @@ #include "types.h" +void focus_view(struct view *view, struct wlr_surface *surface); void on_map(struct wl_listener *listener, void *data); void on_unmap(struct wl_listener *listener, void *data); void on_surface_destroy(struct wl_listener *listener, void *data); +void process_move_resize(struct view *view, enum cursor_mode mode, uint32_t edges); void on_request_move(struct wl_listener *listener, void *data); void on_request_resize(struct wl_listener *listener, void *data); void on_new_xdg_surface(struct wl_listener *listener, void *data);
src/shell.c Modified
@@ -4,15 +4,15 @@ #include "types.h" -static void focus_view(struct view *view, struct wlr_surface *surface) { +void focus_view(struct view *view, struct wlr_surface *surface) { if (view == NULL) { - return; + return; } struct server *server = view->server; struct wlr_seat *seat = server->seat; struct wlr_surface *prev_surface = seat->keyboard_state.focused_surface; if (prev_surface == surface) { - return; + return; } if (prev_surface) { struct wlr_xdg_surface *previous = wlr_xdg_surface_from_wlr_surface( @@ -32,6 +32,7 @@ ); } + void on_map(struct wl_listener *listener, void *data) { struct view *view = wl_container_of(listener, view, map_listener); view->is_mapped = true; @@ -98,30 +99,30 @@ void on_new_xdg_surface(struct wl_listener *listener, void *data) { - struct server *server = wl_container_of(listener, server, new_xdg_surface_listener); - struct wlr_xdg_surface *surface = data; - if (surface->role != WLR_XDG_SURFACE_ROLE_TOPLEVEL) { - return; - } - - struct view *view = calloc(1, sizeof(struct view)); - view->server = server; - view->surface = surface; - - view->map_listener.notify = on_map; - wl_signal_add(&surface->events.map, &view->map_listener); - view->unmap_listener.notify = on_unmap; - wl_signal_add(&surface->events.unmap, &view->unmap_listener); - view->destroy_listener.notify = on_surface_destroy; - wl_signal_add(&surface->events.destroy, &view->destroy_listener); - - struct wlr_xdg_toplevel *toplevel = surface->toplevel; - view->request_move_listener.notify = on_request_move; - wl_signal_add(&toplevel->events.request_move, &view->request_move_listener); - view->request_resize_listener.notify = on_request_resize; - wl_signal_add(&toplevel->events.request_resize, &view->request_resize_listener); - - wl_list_insert(&server->views, &view->link); + struct server *server = wl_container_of(listener, server, new_xdg_surface_listener); + struct wlr_xdg_surface *surface = data; + if (surface->role != WLR_XDG_SURFACE_ROLE_TOPLEVEL) { + return; + } + + struct view *view = calloc(1, sizeof(struct view)); + view->server = server; + view->surface = surface; + + view->map_listener.notify = on_map; + wl_signal_add(&surface->events.map, &view->map_listener); + view->unmap_listener.notify = on_unmap; + wl_signal_add(&surface->events.unmap, &view->unmap_listener); + view->destroy_listener.notify = on_surface_destroy; + wl_signal_add(&surface->events.destroy, &view->destroy_listener); + + struct wlr_xdg_toplevel *toplevel = surface->toplevel; + view->request_move_listener.notify = on_request_move; + wl_signal_add(&toplevel->events.request_move, &view->request_move_listener); + view->request_resize_listener.notify = on_request_resize; + wl_signal_add(&toplevel->events.request_resize, &view->request_resize_listener); + + wl_list_insert(&server->views, &view->link); } @@ -130,4 +131,4 @@ server->shell = wlr_xdg_shell_create(server->display); server->new_xdg_surface_listener.notify = on_new_xdg_surface; wl_signal_add(&server->shell->events.new_surface, &server->new_xdg_surface_listener); -}; +}