Merge branch 'master' into wlroots-1243

This commit is contained in:
Drew DeVault 2018-09-14 20:56:50 -04:00 committed by GitHub
commit b4d60da856
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
4 changed files with 34 additions and 17 deletions

View file

@ -61,8 +61,14 @@ struct cmd_results *output_cmd_background(int argc, char **argv) {
"Missing background scaling mode."); "Missing background scaling mode.");
} }
wordexp_t p; wordexp_t p = {0};
char *src = join_args(argv, j); char *src = join_args(argv, j);
while (strstr(src, " ")) {
src = realloc(src, strlen(src) + 2);
char *ptr = strstr(src, " ") + 1;
memmove(ptr + 1, ptr, strlen(ptr) + 1);
*ptr = '\\';
}
if (wordexp(src, &p, 0) != 0 || p.we_wordv[0] == NULL) { if (wordexp(src, &p, 0) != 0 || p.we_wordv[0] == NULL) {
struct cmd_results *cmd_res = cmd_results_new(CMD_INVALID, "output", struct cmd_results *cmd_res = cmd_results_new(CMD_INVALID, "output",
"Invalid syntax (%s)", src); "Invalid syntax (%s)", src);
@ -71,7 +77,7 @@ struct cmd_results *output_cmd_background(int argc, char **argv) {
return cmd_res; return cmd_res;
} }
free(src); free(src);
src = strdup(p.we_wordv[0]); src = join_args(p.we_wordv, p.we_wordc);
wordfree(&p); wordfree(&p);
if (!src) { if (!src) {
wlr_log(WLR_ERROR, "Failed to duplicate string"); wlr_log(WLR_ERROR, "Failed to duplicate string");
@ -117,6 +123,22 @@ struct cmd_results *output_cmd_background(int argc, char **argv) {
} }
free(src); free(src);
} else { } else {
// Escape spaces and quotes in the final path for swaybg
for (size_t i = 0; i < strlen(src); i++) {
switch (src[i]) {
case ' ':
case '\'':
case '\"':
src = realloc(src, strlen(src) + 2);
memmove(src + i + 1, src + i, strlen(src + i) + 1);
*(src + i) = '\\';
i++;
break;
default:
break;
}
}
output->background = src; output->background = src;
output->background_option = strdup(mode); output->background_option = strdup(mode);
} }

View file

@ -16,7 +16,7 @@
#include <wlr/types/wlr_screencopy_v1.h> #include <wlr/types/wlr_screencopy_v1.h>
#include <wlr/types/wlr_server_decoration.h> #include <wlr/types/wlr_server_decoration.h>
#include <wlr/types/wlr_xcursor_manager.h> #include <wlr/types/wlr_xcursor_manager.h>
#include <wlr/types/wlr_xdg_output.h> #include <wlr/types/wlr_xdg_output_v1.h>
#include <wlr/util/log.h> #include <wlr/util/log.h>
#include "list.h" #include "list.h"
#include "sway/config.h" #include "sway/config.h"

View file

@ -34,8 +34,6 @@ void view_init(struct sway_view *view, enum sway_view_type type,
view->marks = create_list(); view->marks = create_list();
view->allow_request_urgent = true; view->allow_request_urgent = true;
wl_signal_init(&view->events.unmap); wl_signal_init(&view->events.unmap);
view->container = container_create(view);
} }
void view_destroy(struct sway_view *view) { void view_destroy(struct sway_view *view) {

View file

@ -8,22 +8,19 @@
#include "swaybar/config.h" #include "swaybar/config.h"
#include "swaybar/status_line.h" #include "swaybar/status_line.h"
static void i3bar_block_free(struct i3bar_block *block) { void i3bar_block_unref(struct i3bar_block *block) {
if (!block) { if (block == NULL) {
return; return;
} }
free(block->full_text);
free(block->short_text);
free(block->align);
free(block->name);
free(block->instance);
free(block->color);
free(block);
}
void i3bar_block_unref(struct i3bar_block *block) {
if (--block->ref_count == 0) { if (--block->ref_count == 0) {
i3bar_block_free(block); free(block->full_text);
free(block->short_text);
free(block->align);
free(block->name);
free(block->instance);
free(block->color);
free(block);
} }
} }