mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Merge branch 'master' into wlroots-1243
This commit is contained in:
		
						commit
						b4d60da856
					
				
					 4 changed files with 34 additions and 17 deletions
				
			
		| 
						 | 
					@ -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);
 | 
				
			||||||
| 
						 | 
					@ -20,11 +22,6 @@ static void i3bar_block_free(struct i3bar_block *block) {
 | 
				
			||||||
		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);
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static bool i3bar_parse_json(struct status_line *status, const char *text) {
 | 
					static bool i3bar_parse_json(struct status_line *status, const char *text) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue