diff options
author | Tadeo Kondrak <me@tadeo.ca> | 2019-11-01 11:37:29 -0600 |
---|---|---|
committer | Simon Ser <contact@emersion.fr> | 2019-11-17 13:34:24 +0100 |
commit | 7f54495b5e62a65627cdb61f099e241f0594a6d9 (patch) | |
tree | a0480453d0721ab7df31a43c1e45c7fd7dbeb3d5 /sway/input | |
parent | 4829f1c26a521a4ef6659d91505112cc0be8d237 (diff) | |
download | sway-7f54495b5e62a65627cdb61f099e241f0594a6d9.tar.xz |
Use an enum instead of a marker string for map_to_
Diffstat (limited to 'sway/input')
-rw-r--r-- | sway/input/seat.c | 67 |
1 files changed, 31 insertions, 36 deletions
diff --git a/sway/input/seat.c b/sway/input/seat.c index 5fc23a19..f486d5e7 100644 --- a/sway/input/seat.c +++ b/sway/input/seat.c @@ -575,62 +575,57 @@ static void seat_reset_input_config(struct sway_seat *seat, static void seat_apply_input_config(struct sway_seat *seat, struct sway_seat_device *sway_device) { - const char *mapped_to_output = NULL; - struct wlr_box *mapped_to_region = NULL; - - struct input_config *ic = input_device_get_config( - sway_device->input_device); - if (ic != NULL) { - sway_log(SWAY_DEBUG, "Applying input config to %s", - sway_device->input_device->identifier); - - // We use an empty string as a marker to clear the mapped_to_output - // property, because a NULL set in a handler_context isn't preserved. - if (ic->mapped_to_output != NULL && ic->mapped_to_output[0] == '\0') { - free(ic->mapped_to_output); - ic->mapped_to_output = NULL; - wlr_cursor_map_input_to_output(seat->cursor->cursor, - sway_device->input_device->wlr_device, NULL); - } + struct input_config *ic = + input_device_get_config(sway_device->input_device); + if (ic == NULL) { + return; + } - mapped_to_output = ic->mapped_to_output; - if (mapped_to_output != NULL) { - // Output has just been set, clear region setting. - free(ic->mapped_to_region); - ic->mapped_to_region = NULL; - wlr_cursor_map_input_to_region(seat->cursor->cursor, - sway_device->input_device->wlr_device, NULL); - } + sway_log(SWAY_DEBUG, "Applying input config to %s", + sway_device->input_device->identifier); - mapped_to_region = ic->mapped_to_region; - } + const char *mapped_to_output = ic->mapped_to_output; + struct wlr_box *mapped_to_region = ic->mapped_to_region; - if (mapped_to_output == NULL && mapped_to_region == NULL) { + switch (ic->mapped_to) { + case MAPPED_TO_DEFAULT: mapped_to_output = sway_device->input_device->wlr_device->output_name; - } - - if (mapped_to_output != NULL) { + if (mapped_to_output == NULL) { + return; + } + /* fallthrough */ + case MAPPED_TO_OUTPUT: sway_log(SWAY_DEBUG, "Mapping input device %s to output %s", sway_device->input_device->identifier, mapped_to_output); if (strcmp("*", mapped_to_output) == 0) { wlr_cursor_map_input_to_output(seat->cursor->cursor, sway_device->input_device->wlr_device, NULL); + wlr_cursor_map_input_to_region(seat->cursor->cursor, + sway_device->input_device->wlr_device, NULL); sway_log(SWAY_DEBUG, "Reset output mapping"); return; } struct sway_output *output = output_by_name_or_id(mapped_to_output); - if (output) { - wlr_cursor_map_input_to_output(seat->cursor->cursor, - sway_device->input_device->wlr_device, output->wlr_output); - sway_log(SWAY_DEBUG, "Mapped to output %s", output->wlr_output->name); + if (!output) { + return; } - } else if (mapped_to_region != NULL) { + wlr_cursor_map_input_to_output(seat->cursor->cursor, + sway_device->input_device->wlr_device, output->wlr_output); + wlr_cursor_map_input_to_region(seat->cursor->cursor, + sway_device->input_device->wlr_device, NULL); + sway_log(SWAY_DEBUG, + "Mapped to output %s", output->wlr_output->name); + return; + case MAPPED_TO_REGION: sway_log(SWAY_DEBUG, "Mapping input device %s to %d,%d %dx%d", sway_device->input_device->identifier, mapped_to_region->x, mapped_to_region->y, mapped_to_region->width, mapped_to_region->height); + wlr_cursor_map_input_to_output(seat->cursor->cursor, + sway_device->input_device->wlr_device, NULL); wlr_cursor_map_input_to_region(seat->cursor->cursor, sway_device->input_device->wlr_device, mapped_to_region); + return; } } |