rootston: add per-seat views

This commit is contained in:
emersion 2017-11-17 12:45:07 +01:00
parent 10f3be7384
commit bb6d34e7a5
No known key found for this signature in database
GPG key ID: 0FDE7BE0E88F5E48
12 changed files with 161 additions and 123 deletions

View file

@ -87,19 +87,20 @@ static const char *exec_prefix = "exec ";
static void keyboard_binding_execute(struct roots_keyboard *keyboard,
const char *command) {
struct roots_server *server = keyboard->input->server;
struct roots_seat *seat = keyboard->seat;
if (strcmp(command, "exit") == 0) {
wl_display_terminate(server->wl_display);
wl_display_terminate(keyboard->input->server->wl_display);
} else if (strcmp(command, "close") == 0) {
if (server->desktop->views->length > 0) {
struct roots_view *view =
server->desktop->views->items[server->desktop->views->length-1];
view_close(view);
if (!wl_list_empty(&seat->views)) {
struct roots_seat_view *first_seat_view = wl_container_of(
seat->views.next, first_seat_view, link);
view_close(first_seat_view->view);
}
} else if (strcmp(command, "next_window") == 0) {
if (server->desktop->views->length > 0) {
struct roots_view *view = server->desktop->views->items[0];
roots_seat_focus_view(keyboard->seat, view);
if (!wl_list_empty(&seat->views)) {
struct roots_seat_view *last_seat_view = wl_container_of(
seat->views.prev, last_seat_view, link);
roots_seat_focus_view(seat, last_seat_view->view);
}
} else if (strncmp(exec_prefix, command, strlen(exec_prefix)) == 0) {
const char *shell_cmd = command + strlen(exec_prefix);