Merge pull request #1574 from acrisci/config-refactor

Command criteria
This commit is contained in:
emersion 2018-01-22 01:16:23 +01:00 committed by GitHub
commit 0c58673c6a
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
40 changed files with 840 additions and 52 deletions

View file

@ -372,3 +372,14 @@ void sway_input_manager_configure_xcursor(struct sway_input_manager *input) {
sway_seat_configure_xcursor(seat);
}
}
struct sway_seat *sway_input_manager_get_default_seat(
struct sway_input_manager *input) {
struct sway_seat *seat = NULL;
wl_list_for_each(seat, &input->seats, link) {
if (strcmp(seat->wlr_seat->name, "seat0") == 0) {
return seat;
}
}
return seat;
}

View file

@ -89,9 +89,12 @@ static bool binding_matches_key_state(struct sway_binding *binding,
return false;
}
static void binding_execute_command(struct sway_binding *binding) {
static void keyboard_execute_command(struct sway_keyboard *keyboard,
struct sway_binding *binding) {
wlr_log(L_DEBUG, "running command for binding: %s",
binding->command);
config_clear_handler_context(config);
config->handler_context.seat = keyboard->seat_device->sway_seat;
struct cmd_results *results = handle_command(binding->command);
if (results->status != CMD_SUCCESS) {
wlr_log(L_DEBUG, "could not run command for binding: %s",
@ -160,7 +163,7 @@ static bool keyboard_execute_bindsym(struct sway_keyboard *keyboard,
}
if (match) {
binding_execute_command(binding);
keyboard_execute_command(keyboard, binding);
return true;
}
}
@ -267,7 +270,7 @@ static bool keyboard_execute_bindcode(struct sway_keyboard *keyboard,
for (int i = 0; i < keycode_bindings->length; ++i) {
struct sway_binding *binding = keycode_bindings->items[i];
if (binding_matches_keycodes(wlr_keyboard, binding, event)) {
binding_execute_command(binding);
keyboard_execute_command(keyboard, binding);
return true;
}
}

View file

@ -214,7 +214,7 @@ void sway_seat_set_focus(struct sway_seat *seat, swayc_t *container) {
if (container) {
struct sway_view *view = container->sway_view;
view->iface.set_activated(view, true);
view_set_activated(view, true);
wl_signal_add(&container->events.destroy, &seat->focus_destroy);
seat->focus_destroy.notify = handle_focus_destroy;
@ -234,8 +234,7 @@ void sway_seat_set_focus(struct sway_seat *seat, swayc_t *container) {
if (last_focus &&
!sway_input_manager_has_focus(seat->input, last_focus)) {
struct sway_view *view = last_focus->sway_view;
view->iface.set_activated(view, false);
view_set_activated(view, false);
}
}