aboutsummaryrefslogtreecommitdiff
path: root/sway/config.c
diff options
context:
space:
mode:
Diffstat (limited to 'sway/config.c')
-rw-r--r--sway/config.c23
1 files changed, 15 insertions, 8 deletions
diff --git a/sway/config.c b/sway/config.c
index 1f03610a..553cba2b 100644
--- a/sway/config.c
+++ b/sway/config.c
@@ -447,15 +447,17 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
old_config->xwayland ? "enabled" : "disabled");
config->xwayland = old_config->xwayland;
- if (old_config->swaybg_client != NULL) {
- wl_client_destroy(old_config->swaybg_client);
- }
+ if (!config->validating) {
+ if (old_config->swaybg_client != NULL) {
+ wl_client_destroy(old_config->swaybg_client);
+ }
- if (old_config->swaynag_config_errors.client != NULL) {
- wl_client_destroy(old_config->swaynag_config_errors.client);
- }
+ if (old_config->swaynag_config_errors.client != NULL) {
+ wl_client_destroy(old_config->swaynag_config_errors.client);
+ }
- input_manager_reset_all_inputs();
+ input_manager_reset_all_inputs();
+ }
}
config->current_config_path = path;
@@ -520,8 +522,13 @@ bool load_main_config(const char *file, bool is_active, bool validating) {
return success;
}
- if (is_active) {
+ if (is_active && !validating) {
input_manager_verify_fallback_seat();
+
+ for (int i = 0; i < config->input_configs->length; i++) {
+ input_manager_apply_input_config(config->input_configs->items[i]);
+ }
+
for (int i = 0; i < config->seat_configs->length; i++) {
input_manager_apply_seat_config(config->seat_configs->items[i]);
}