diff options
author | Drew DeVault <sir@cmpwn.com> | 2018-09-14 20:56:50 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-09-14 20:56:50 -0400 |
commit | b4d60da8568c59e6aaf8995d737d587da88c2cbf (patch) | |
tree | 1f71cb868579ee7b0331435eee4f62592f9ab9d8 | |
parent | Update for swaywm/wlroots#1243 (diff) | |
parent | Postfix xdg-output headers (diff) | |
download | sway-b4d60da8568c59e6aaf8995d737d587da88c2cbf.tar.gz sway-b4d60da8568c59e6aaf8995d737d587da88c2cbf.tar.zst sway-b4d60da8568c59e6aaf8995d737d587da88c2cbf.zip |
Merge branch 'master' into wlroots-1243
-rw-r--r-- | sway/commands/output/background.c | 26 | ||||
-rw-r--r-- | sway/server.c | 2 | ||||
-rw-r--r-- | sway/tree/view.c | 2 | ||||
-rw-r--r-- | swaybar/i3bar.c | 21 |
4 files changed, 34 insertions, 17 deletions
diff --git a/sway/commands/output/background.c b/sway/commands/output/background.c index ddad679d..9e370d43 100644 --- a/sway/commands/output/background.c +++ b/sway/commands/output/background.c | |||
@@ -61,8 +61,14 @@ struct cmd_results *output_cmd_background(int argc, char **argv) { | |||
61 | "Missing background scaling mode."); | 61 | "Missing background scaling mode."); |
62 | } | 62 | } |
63 | 63 | ||
64 | wordexp_t p; | 64 | wordexp_t p = {0}; |
65 | char *src = join_args(argv, j); | 65 | char *src = join_args(argv, j); |
66 | while (strstr(src, " ")) { | ||
67 | src = realloc(src, strlen(src) + 2); | ||
68 | char *ptr = strstr(src, " ") + 1; | ||
69 | memmove(ptr + 1, ptr, strlen(ptr) + 1); | ||
70 | *ptr = '\\'; | ||
71 | } | ||
66 | if (wordexp(src, &p, 0) != 0 || p.we_wordv[0] == NULL) { | 72 | if (wordexp(src, &p, 0) != 0 || p.we_wordv[0] == NULL) { |
67 | struct cmd_results *cmd_res = cmd_results_new(CMD_INVALID, "output", | 73 | struct cmd_results *cmd_res = cmd_results_new(CMD_INVALID, "output", |
68 | "Invalid syntax (%s)", src); | 74 | "Invalid syntax (%s)", src); |
@@ -71,7 +77,7 @@ struct cmd_results *output_cmd_background(int argc, char **argv) { | |||
71 | return cmd_res; | 77 | return cmd_res; |
72 | } | 78 | } |
73 | free(src); | 79 | free(src); |
74 | src = strdup(p.we_wordv[0]); | 80 | src = join_args(p.we_wordv, p.we_wordc); |
75 | wordfree(&p); | 81 | wordfree(&p); |
76 | if (!src) { | 82 | if (!src) { |
77 | wlr_log(WLR_ERROR, "Failed to duplicate string"); | 83 | wlr_log(WLR_ERROR, "Failed to duplicate string"); |
@@ -117,6 +123,22 @@ struct cmd_results *output_cmd_background(int argc, char **argv) { | |||
117 | } | 123 | } |
118 | free(src); | 124 | free(src); |
119 | } else { | 125 | } else { |
126 | // Escape spaces and quotes in the final path for swaybg | ||
127 | for (size_t i = 0; i < strlen(src); i++) { | ||
128 | switch (src[i]) { | ||
129 | case ' ': | ||
130 | case '\'': | ||
131 | case '\"': | ||
132 | src = realloc(src, strlen(src) + 2); | ||
133 | memmove(src + i + 1, src + i, strlen(src + i) + 1); | ||
134 | *(src + i) = '\\'; | ||
135 | i++; | ||
136 | break; | ||
137 | default: | ||
138 | break; | ||
139 | } | ||
140 | } | ||
141 | |||
120 | output->background = src; | 142 | output->background = src; |
121 | output->background_option = strdup(mode); | 143 | output->background_option = strdup(mode); |
122 | } | 144 | } |
diff --git a/sway/server.c b/sway/server.c index 58843944..9440c10f 100644 --- a/sway/server.c +++ b/sway/server.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <wlr/types/wlr_screencopy_v1.h> | 16 | #include <wlr/types/wlr_screencopy_v1.h> |
17 | #include <wlr/types/wlr_server_decoration.h> | 17 | #include <wlr/types/wlr_server_decoration.h> |
18 | #include <wlr/types/wlr_xcursor_manager.h> | 18 | #include <wlr/types/wlr_xcursor_manager.h> |
19 | #include <wlr/types/wlr_xdg_output.h> | 19 | #include <wlr/types/wlr_xdg_output_v1.h> |
20 | #include <wlr/util/log.h> | 20 | #include <wlr/util/log.h> |
21 | #include "list.h" | 21 | #include "list.h" |
22 | #include "sway/config.h" | 22 | #include "sway/config.h" |
diff --git a/sway/tree/view.c b/sway/tree/view.c index d02abf30..78f85de2 100644 --- a/sway/tree/view.c +++ b/sway/tree/view.c | |||
@@ -34,8 +34,6 @@ void view_init(struct sway_view *view, enum sway_view_type type, | |||
34 | view->marks = create_list(); | 34 | view->marks = create_list(); |
35 | view->allow_request_urgent = true; | 35 | view->allow_request_urgent = true; |
36 | wl_signal_init(&view->events.unmap); | 36 | wl_signal_init(&view->events.unmap); |
37 | |||
38 | view->container = container_create(view); | ||
39 | } | 37 | } |
40 | 38 | ||
41 | void view_destroy(struct sway_view *view) { | 39 | void view_destroy(struct sway_view *view) { |
diff --git a/swaybar/i3bar.c b/swaybar/i3bar.c index 1345ee9b..0becae5d 100644 --- a/swaybar/i3bar.c +++ b/swaybar/i3bar.c | |||
@@ -8,22 +8,19 @@ | |||
8 | #include "swaybar/config.h" | 8 | #include "swaybar/config.h" |
9 | #include "swaybar/status_line.h" | 9 | #include "swaybar/status_line.h" |
10 | 10 | ||
11 | static void i3bar_block_free(struct i3bar_block *block) { | 11 | void i3bar_block_unref(struct i3bar_block *block) { |
12 | if (!block) { | 12 | if (block == NULL) { |
13 | return; | 13 | return; |
14 | } | 14 | } |
15 | free(block->full_text); | ||
16 | free(block->short_text); | ||
17 | free(block->align); | ||
18 | free(block->name); | ||
19 | free(block->instance); | ||
20 | free(block->color); | ||
21 | free(block); | ||
22 | } | ||
23 | 15 | ||
24 | void i3bar_block_unref(struct i3bar_block *block) { | ||
25 | if (--block->ref_count == 0) { | 16 | if (--block->ref_count == 0) { |
26 | i3bar_block_free(block); | 17 | free(block->full_text); |
18 | free(block->short_text); | ||
19 | free(block->align); | ||
20 | free(block->name); | ||
21 | free(block->instance); | ||
22 | free(block->color); | ||
23 | free(block); | ||
27 | } | 24 | } |
28 | } | 25 | } |
29 | 26 | ||