mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Merge pull request #685 from thuck/floating_size
Initial work for floating view with sane values
This commit is contained in:
		
						commit
						df8caa29a7
					
				
					 5 changed files with 40 additions and 0 deletions
				
			
		| 
						 | 
				
			
			@ -226,6 +226,12 @@ struct sway_config {
 | 
			
		|||
		struct border_colors placeholder;
 | 
			
		||||
		uint32_t background;
 | 
			
		||||
	} border_colors;
 | 
			
		||||
 | 
			
		||||
	// floating view minimum
 | 
			
		||||
	int32_t floating_maximum_width;
 | 
			
		||||
	int32_t floating_maximum_height;
 | 
			
		||||
	int32_t floating_minimum_width;
 | 
			
		||||
	int32_t floating_minimum_height;
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -168,6 +168,8 @@ swayc_t *new_view(swayc_t *sibling, wlc_handle handle);
 | 
			
		|||
 */
 | 
			
		||||
swayc_t *new_floating_view(wlc_handle handle);
 | 
			
		||||
 | 
			
		||||
void floating_view_sane_size(swayc_t *view);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Frees an output's container.
 | 
			
		||||
 */
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -172,6 +172,12 @@ static void config_defaults(struct sway_config *config) {
 | 
			
		|||
	config->font = strdup("monospace 10");
 | 
			
		||||
	config->font_height = get_font_text_height(config->font);
 | 
			
		||||
 | 
			
		||||
	// floating view
 | 
			
		||||
	config->floating_maximum_width = -1;
 | 
			
		||||
	config->floating_maximum_height = -1;
 | 
			
		||||
	config->floating_minimum_width = 75;
 | 
			
		||||
	config->floating_minimum_height = 50;
 | 
			
		||||
 | 
			
		||||
	// Flags
 | 
			
		||||
	config->focus_follows_mouse = true;
 | 
			
		||||
	config->mouse_warping = true;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -328,6 +328,31 @@ swayc_t *new_floating_view(wlc_handle handle) {
 | 
			
		|||
	return view;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void floating_view_sane_size(swayc_t *view) {
 | 
			
		||||
	if (config->floating_minimum_height != -1 &&
 | 
			
		||||
		view->desired_height < config->floating_minimum_height) {
 | 
			
		||||
		view->desired_height = config->floating_minimum_height;
 | 
			
		||||
	}
 | 
			
		||||
	if (config->floating_minimum_width != -1 &&
 | 
			
		||||
		view->desired_width < config->floating_minimum_width) {
 | 
			
		||||
		view->desired_width = config->floating_minimum_width;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (config->floating_maximum_height != -1 &&
 | 
			
		||||
		view->desired_height > config->floating_maximum_height) {
 | 
			
		||||
		view->desired_height = config->floating_maximum_height;
 | 
			
		||||
	}
 | 
			
		||||
	if (config->floating_maximum_width != -1 &&
 | 
			
		||||
		view->desired_width > config->floating_maximum_width) {
 | 
			
		||||
		view->desired_width = config->floating_maximum_width;
 | 
			
		||||
	}
 | 
			
		||||
	sway_log(L_DEBUG, "Sane values for view to %d x %d @ %.f, %.f", 
 | 
			
		||||
		view->desired_width, view->desired_height, view->x, view->y);
 | 
			
		||||
 | 
			
		||||
	return;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Destroy container
 | 
			
		||||
 | 
			
		||||
swayc_t *destroy_output(swayc_t *output) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -350,6 +350,7 @@ static void handle_view_geometry_request(wlc_handle handle, const struct wlc_geo
 | 
			
		|||
		view->desired_height = geometry->size.h;
 | 
			
		||||
 | 
			
		||||
		if (view->is_floating) {
 | 
			
		||||
			floating_view_sane_size(view);
 | 
			
		||||
			view->width = view->desired_width;
 | 
			
		||||
			view->height = view->desired_height;
 | 
			
		||||
			view->x = geometry->origin.x;
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue