mirror of
				https://github.com/swaywm/sway.git
				synced 2025-11-03 09:01:43 -05:00 
			
		
		
		
	Revert "Don't unmaximize floating views"
This reverts commit 97672295ed.
			
			
This commit is contained in:
		
							parent
							
								
									53c4467573
								
							
						
					
					
						commit
						e0d0e8f840
					
				
					 7 changed files with 51 additions and 6 deletions
				
			
		| 
						 | 
				
			
			@ -32,6 +32,7 @@ struct sway_view_impl {
 | 
			
		|||
	void (*configure)(struct sway_view *view, double lx, double ly, int width,
 | 
			
		||||
		int height);
 | 
			
		||||
	void (*set_activated)(struct sway_view *view, bool activated);
 | 
			
		||||
	void (*set_tiled)(struct sway_view *view, bool tiled);
 | 
			
		||||
	void (*set_fullscreen)(struct sway_view *view, bool fullscreen);
 | 
			
		||||
	bool (*wants_floating)(struct sway_view *view);
 | 
			
		||||
	void (*for_each_surface)(struct sway_view *view,
 | 
			
		||||
| 
						 | 
				
			
			@ -223,6 +224,8 @@ void view_autoconfigure(struct sway_view *view);
 | 
			
		|||
 | 
			
		||||
void view_set_activated(struct sway_view *view, bool activated);
 | 
			
		||||
 | 
			
		||||
void view_set_tiled(struct sway_view *view, bool tiled);
 | 
			
		||||
 | 
			
		||||
void view_set_fullscreen_raw(struct sway_view *view, bool fullscreen);
 | 
			
		||||
 | 
			
		||||
void view_set_fullscreen(struct sway_view *view, bool fullscreen);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -645,7 +645,7 @@ static void render_container_simple(struct sway_output *output,
 | 
			
		|||
			if (child->sway_view->border == B_NORMAL) {
 | 
			
		||||
				render_titlebar(output, damage, child, child->x, child->y,
 | 
			
		||||
						child->width, colors, title_texture, marks_texture);
 | 
			
		||||
			} else {
 | 
			
		||||
			} else if (con->sway_view->border != B_NONE) {
 | 
			
		||||
				render_top_border(output, damage, child, colors);
 | 
			
		||||
			}
 | 
			
		||||
			render_view(output, damage, child, colors);
 | 
			
		||||
| 
						 | 
				
			
			@ -815,7 +815,7 @@ static void render_floating_container(struct sway_output *soutput,
 | 
			
		|||
		if (con->sway_view->border == B_NORMAL) {
 | 
			
		||||
			render_titlebar(soutput, damage, con, con->x, con->y, con->width,
 | 
			
		||||
					colors, title_texture, marks_texture);
 | 
			
		||||
		} else {
 | 
			
		||||
		} else if (con->sway_view->border != B_NONE) {
 | 
			
		||||
			render_top_border(soutput, damage, con, colors);
 | 
			
		||||
		}
 | 
			
		||||
		render_view(soutput, damage, con, colors);
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -111,6 +111,19 @@ static void set_activated(struct sway_view *view, bool activated) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void set_tiled(struct sway_view *view, bool tiled) {
 | 
			
		||||
	if (xdg_shell_view_from_view(view) == NULL) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	struct wlr_xdg_surface *surface = view->wlr_xdg_surface;
 | 
			
		||||
	enum wlr_edges edges = WLR_EDGE_NONE;
 | 
			
		||||
	if (tiled) {
 | 
			
		||||
		edges = WLR_EDGE_LEFT | WLR_EDGE_RIGHT | WLR_EDGE_TOP |
 | 
			
		||||
				WLR_EDGE_BOTTOM;
 | 
			
		||||
	}
 | 
			
		||||
	wlr_xdg_toplevel_set_tiled(surface, edges);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void set_fullscreen(struct sway_view *view, bool fullscreen) {
 | 
			
		||||
	if (xdg_shell_view_from_view(view) == NULL) {
 | 
			
		||||
		return;
 | 
			
		||||
| 
						 | 
				
			
			@ -164,6 +177,7 @@ static const struct sway_view_impl view_impl = {
 | 
			
		|||
	.get_string_prop = get_string_prop,
 | 
			
		||||
	.configure = configure,
 | 
			
		||||
	.set_activated = set_activated,
 | 
			
		||||
	.set_tiled = set_tiled,
 | 
			
		||||
	.set_fullscreen = set_fullscreen,
 | 
			
		||||
	.wants_floating = wants_floating,
 | 
			
		||||
	.for_each_surface = for_each_surface,
 | 
			
		||||
| 
						 | 
				
			
			@ -273,8 +287,6 @@ void handle_xdg_shell_surface(struct wl_listener *listener, void *data) {
 | 
			
		|||
	wlr_log(L_DEBUG, "New xdg_shell toplevel title='%s' app_id='%s'",
 | 
			
		||||
		xdg_surface->toplevel->title, xdg_surface->toplevel->app_id);
 | 
			
		||||
	wlr_xdg_surface_ping(xdg_surface);
 | 
			
		||||
	wlr_xdg_toplevel_set_tiled(xdg_surface, WLR_EDGE_LEFT | WLR_EDGE_RIGHT |
 | 
			
		||||
		WLR_EDGE_TOP | WLR_EDGE_BOTTOM);
 | 
			
		||||
 | 
			
		||||
	struct sway_xdg_shell_view *xdg_shell_view =
 | 
			
		||||
		calloc(1, sizeof(struct sway_xdg_shell_view));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -110,6 +110,14 @@ static void set_activated(struct sway_view *view, bool activated) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void set_tiled(struct sway_view *view, bool tiled) {
 | 
			
		||||
	if (xdg_shell_v6_view_from_view(view) == NULL) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	struct wlr_xdg_surface_v6 *surface = view->wlr_xdg_surface_v6;
 | 
			
		||||
	wlr_xdg_toplevel_v6_set_maximized(surface, tiled);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void set_fullscreen(struct sway_view *view, bool fullscreen) {
 | 
			
		||||
	if (xdg_shell_v6_view_from_view(view) == NULL) {
 | 
			
		||||
		return;
 | 
			
		||||
| 
						 | 
				
			
			@ -164,6 +172,7 @@ static const struct sway_view_impl view_impl = {
 | 
			
		|||
	.get_string_prop = get_string_prop,
 | 
			
		||||
	.configure = configure,
 | 
			
		||||
	.set_activated = set_activated,
 | 
			
		||||
	.set_tiled = set_tiled,
 | 
			
		||||
	.set_fullscreen = set_fullscreen,
 | 
			
		||||
	.wants_floating = wants_floating,
 | 
			
		||||
	.for_each_surface = for_each_surface,
 | 
			
		||||
| 
						 | 
				
			
			@ -273,7 +282,6 @@ void handle_xdg_shell_v6_surface(struct wl_listener *listener, void *data) {
 | 
			
		|||
	wlr_log(L_DEBUG, "New xdg_shell_v6 toplevel title='%s' app_id='%s'",
 | 
			
		||||
		xdg_surface->toplevel->title, xdg_surface->toplevel->app_id);
 | 
			
		||||
	wlr_xdg_surface_v6_ping(xdg_surface);
 | 
			
		||||
	wlr_xdg_toplevel_v6_set_maximized(xdg_surface, true);
 | 
			
		||||
 | 
			
		||||
	struct sway_xdg_shell_v6_view *xdg_shell_v6_view =
 | 
			
		||||
		calloc(1, sizeof(struct sway_xdg_shell_v6_view));
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -199,6 +199,14 @@ static void set_activated(struct sway_view *view, bool activated) {
 | 
			
		|||
	wlr_xwayland_surface_activate(surface, activated);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void set_tiled(struct sway_view *view, bool tiled) {
 | 
			
		||||
	if (xwayland_view_from_view(view) == NULL) {
 | 
			
		||||
		return;
 | 
			
		||||
	}
 | 
			
		||||
	struct wlr_xwayland_surface *surface = view->wlr_xwayland_surface;
 | 
			
		||||
	wlr_xwayland_surface_set_maximized(surface, tiled);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void set_fullscreen(struct sway_view *view, bool fullscreen) {
 | 
			
		||||
	if (xwayland_view_from_view(view) == NULL) {
 | 
			
		||||
		return;
 | 
			
		||||
| 
						 | 
				
			
			@ -265,6 +273,7 @@ static const struct sway_view_impl view_impl = {
 | 
			
		|||
	.get_int_prop = get_int_prop,
 | 
			
		||||
	.configure = configure,
 | 
			
		||||
	.set_activated = set_activated,
 | 
			
		||||
	.set_tiled = set_tiled,
 | 
			
		||||
	.set_fullscreen = set_fullscreen,
 | 
			
		||||
	.wants_floating = wants_floating,
 | 
			
		||||
	.close = _close,
 | 
			
		||||
| 
						 | 
				
			
			@ -309,7 +318,6 @@ static void handle_map(struct wl_listener *listener, void *data) {
 | 
			
		|||
	xwayland_view->commit.notify = handle_commit;
 | 
			
		||||
 | 
			
		||||
	// Put it back into the tree
 | 
			
		||||
	wlr_xwayland_surface_set_maximized(xsurface, true);
 | 
			
		||||
	view_map(view, xsurface->surface);
 | 
			
		||||
 | 
			
		||||
	if (xsurface->fullscreen) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -943,6 +943,9 @@ void container_set_floating(struct sway_container *container, bool enable) {
 | 
			
		|||
		container_add_child(workspace, container);
 | 
			
		||||
		container->width = container->parent->width;
 | 
			
		||||
		container->height = container->parent->height;
 | 
			
		||||
		if (container->type == C_VIEW) {
 | 
			
		||||
			view_set_tiled(container->sway_view, true);
 | 
			
		||||
		}
 | 
			
		||||
		container->is_sticky = false;
 | 
			
		||||
		container_reap_empty_recursive(workspace->sway_workspace->floating);
 | 
			
		||||
	}
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -141,6 +141,9 @@ static void view_autoconfigure_floating(struct sway_view *view) {
 | 
			
		|||
	view->border_top = view->border_bottom = true;
 | 
			
		||||
	view->border_left = view->border_right = true;
 | 
			
		||||
 | 
			
		||||
	// Don't maximize floating windows
 | 
			
		||||
	view_set_tiled(view, false);
 | 
			
		||||
 | 
			
		||||
	view_configure(view, lx, ly, width, height);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -248,6 +251,7 @@ void view_autoconfigure(struct sway_view *view) {
 | 
			
		|||
 | 
			
		||||
	view->x = x;
 | 
			
		||||
	view->y = y;
 | 
			
		||||
	view_set_tiled(view, true);
 | 
			
		||||
	view_configure(view, x, y, width, height);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			@ -257,6 +261,13 @@ void view_set_activated(struct sway_view *view, bool activated) {
 | 
			
		|||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void view_set_tiled(struct sway_view *view, bool tiled) {
 | 
			
		||||
	view->border = tiled ? config->border : B_NONE;
 | 
			
		||||
	if (view->impl->set_tiled) {
 | 
			
		||||
		view->impl->set_tiled(view, tiled);
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
// Set fullscreen, but without IPC events or arranging windows.
 | 
			
		||||
void view_set_fullscreen_raw(struct sway_view *view, bool fullscreen) {
 | 
			
		||||
	if (view->is_fullscreen == fullscreen) {
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue