mirror of
				https://github.com/labwc/labwc.git
				synced 2025-11-03 09:01:51 -05:00 
			
		
		
		
	osd: simplify to only use one view-array
This commit is contained in:
		
							parent
							
								
									57b9efeb45
								
							
						
					
					
						commit
						f2479090a2
					
				
					 1 changed files with 7 additions and 14 deletions
				
			
		
							
								
								
									
										21
									
								
								src/osd.c
									
										
									
									
									
								
							
							
						
						
									
										21
									
								
								src/osd.c
									
										
									
									
									
								
							| 
						 | 
					@ -258,7 +258,7 @@ get_title(struct view *view)
 | 
				
			||||||
static void
 | 
					static void
 | 
				
			||||||
render_osd(struct server *server, cairo_t *cairo, int w, int h,
 | 
					render_osd(struct server *server, cairo_t *cairo, int w, int h,
 | 
				
			||||||
		struct wl_list *node_list, bool show_workspace,
 | 
							struct wl_list *node_list, bool show_workspace,
 | 
				
			||||||
		const char *workspace_name, enum lab_view_criteria criteria)
 | 
							const char *workspace_name, struct wl_array *views)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	struct view *cycle_view = server->osd_state.cycle_view;
 | 
						struct view *cycle_view = server->osd_state.cycle_view;
 | 
				
			||||||
	struct theme *theme = server->theme;
 | 
						struct theme *theme = server->theme;
 | 
				
			||||||
| 
						 | 
					@ -317,10 +317,7 @@ render_osd(struct server *server, cairo_t *cairo, int w, int h,
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Draw text for each node */
 | 
						/* Draw text for each node */
 | 
				
			||||||
	struct view **view;
 | 
						struct view **view;
 | 
				
			||||||
	struct wl_array views;
 | 
						wl_array_for_each(view, views) {
 | 
				
			||||||
	wl_array_init(&views);
 | 
					 | 
				
			||||||
	desktop_views_append(server, &views, criteria);
 | 
					 | 
				
			||||||
	wl_array_for_each(view, &views) {
 | 
					 | 
				
			||||||
		/*
 | 
							/*
 | 
				
			||||||
		 *    OSD border
 | 
							 *    OSD border
 | 
				
			||||||
		 * +---------------------------------+
 | 
							 * +---------------------------------+
 | 
				
			||||||
| 
						 | 
					@ -391,23 +388,18 @@ render_osd(struct server *server, cairo_t *cairo, int w, int h,
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	free(buf.buf);
 | 
						free(buf.buf);
 | 
				
			||||||
	g_object_unref(layout);
 | 
						g_object_unref(layout);
 | 
				
			||||||
	wl_array_release(&views);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	cairo_surface_flush(surf);
 | 
						cairo_surface_flush(surf);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
static int
 | 
					static int
 | 
				
			||||||
get_osd_height(struct server *server, enum lab_view_criteria criteria)
 | 
					get_osd_height(struct server *server, struct wl_array *views)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int height = 0;
 | 
						int height = 0;
 | 
				
			||||||
	struct wl_array views;
 | 
					 | 
				
			||||||
	wl_array_init(&views);
 | 
					 | 
				
			||||||
	desktop_views_append(server, &views, criteria);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Includes item border width */
 | 
						/* Includes item border width */
 | 
				
			||||||
	size_t len = views.size / sizeof(struct view *);
 | 
						size_t len = views->size / sizeof(struct view *);
 | 
				
			||||||
	height += len * rc.theme->osd_window_switcher_item_height;
 | 
						height += len * rc.theme->osd_window_switcher_item_height;
 | 
				
			||||||
	wl_array_release(&views);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	/* Add OSD border width */
 | 
						/* Add OSD border width */
 | 
				
			||||||
	height += 2 * rc.theme->osd_border_width;
 | 
						height += 2 * rc.theme->osd_border_width;
 | 
				
			||||||
| 
						 | 
					@ -434,7 +426,7 @@ display_osd(struct output *output)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	float scale = output->wlr_output->scale;
 | 
						float scale = output->wlr_output->scale;
 | 
				
			||||||
	int w = theme->osd_window_switcher_width;
 | 
						int w = theme->osd_window_switcher_width;
 | 
				
			||||||
	int h = get_osd_height(server, criteria);
 | 
						int h = get_osd_height(server, &views);
 | 
				
			||||||
	if (show_workspace) {
 | 
						if (show_workspace) {
 | 
				
			||||||
		/* workspace indicator */
 | 
							/* workspace indicator */
 | 
				
			||||||
		h += theme->osd_window_switcher_item_height;
 | 
							h += theme->osd_window_switcher_item_height;
 | 
				
			||||||
| 
						 | 
					@ -449,7 +441,8 @@ display_osd(struct output *output)
 | 
				
			||||||
	/* Render OSD image */
 | 
						/* Render OSD image */
 | 
				
			||||||
	cairo_t *cairo = output->osd_buffer->cairo;
 | 
						cairo_t *cairo = output->osd_buffer->cairo;
 | 
				
			||||||
	render_osd(server, cairo, w, h, node_list, show_workspace,
 | 
						render_osd(server, cairo, w, h, node_list, show_workspace,
 | 
				
			||||||
		workspace_name, criteria);
 | 
							workspace_name, &views);
 | 
				
			||||||
 | 
						wl_array_release(&views);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	struct wlr_scene_buffer *scene_buffer = wlr_scene_buffer_create(
 | 
						struct wlr_scene_buffer *scene_buffer = wlr_scene_buffer_create(
 | 
				
			||||||
		output->osd_tree, &output->osd_buffer->base);
 | 
							output->osd_tree, &output->osd_buffer->base);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue