Merge branch 'master' into wlroots-1243
This commit is contained in:
commit
b4d60da856
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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"
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -8,10 +8,12 @@
|
||||||
#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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (--block->ref_count == 0) {
|
||||||
free(block->full_text);
|
free(block->full_text);
|
||||||
free(block->short_text);
|
free(block->short_text);
|
||||||
free(block->align);
|
free(block->align);
|
||||||
|
@ -19,11 +21,6 @@ static void i3bar_block_free(struct i3bar_block *block) {
|
||||||
free(block->instance);
|
free(block->instance);
|
||||||
free(block->color);
|
free(block->color);
|
||||||
free(block);
|
free(block);
|
||||||
}
|
|
||||||
|
|
||||||
void i3bar_block_unref(struct i3bar_block *block) {
|
|
||||||
if (--block->ref_count == 0) {
|
|
||||||
i3bar_block_free(block);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue