mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 00:56:10 +00:00 
			
		
		
		
	Add a way to make the preview larger in tree mode, GitHub issue 4124.
This commit is contained in:
		
							
								
								
									
										47
									
								
								mode-tree.c
									
									
									
									
									
								
							
							
						
						
									
										47
									
								
								mode-tree.c
									
									
									
									
									
								
							@@ -30,6 +30,12 @@ enum mode_tree_search_dir {
 | 
			
		||||
	MODE_TREE_SEARCH_BACKWARD
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
enum mode_tree_preview {
 | 
			
		||||
	MODE_TREE_PREVIEW_OFF,
 | 
			
		||||
	MODE_TREE_PREVIEW_NORMAL,
 | 
			
		||||
	MODE_TREE_PREVIEW_BIG
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
struct mode_tree_item;
 | 
			
		||||
TAILQ_HEAD(mode_tree_list, mode_tree_item);
 | 
			
		||||
 | 
			
		||||
@@ -414,7 +420,12 @@ mode_tree_start(struct window_pane *wp, struct args *args,
 | 
			
		||||
	mtd->sort_list = sort_list;
 | 
			
		||||
	mtd->sort_size = sort_size;
 | 
			
		||||
 | 
			
		||||
	mtd->preview = !args_has(args, 'N');
 | 
			
		||||
	if (args_has(args, 'N') > 1)
 | 
			
		||||
		mtd->preview = MODE_TREE_PREVIEW_BIG;
 | 
			
		||||
	else if (args_has(args, 'N'))
 | 
			
		||||
		mtd->preview = MODE_TREE_PREVIEW_OFF;
 | 
			
		||||
	else
 | 
			
		||||
		mtd->preview = MODE_TREE_PREVIEW_NORMAL;
 | 
			
		||||
 | 
			
		||||
	sort = args_get(args, 'O');
 | 
			
		||||
	if (sort != NULL) {
 | 
			
		||||
@@ -470,12 +481,21 @@ mode_tree_set_height(struct mode_tree_data *mtd)
 | 
			
		||||
		if (height < screen_size_y(s))
 | 
			
		||||
		    mtd->height = screen_size_y(s) - height;
 | 
			
		||||
	} else {
 | 
			
		||||
		if (mtd->preview == MODE_TREE_PREVIEW_NORMAL) {
 | 
			
		||||
			mtd->height = (screen_size_y(s) / 3) * 2;
 | 
			
		||||
			if (mtd->height > mtd->line_size)
 | 
			
		||||
				mtd->height = screen_size_y(s) / 2;
 | 
			
		||||
	}
 | 
			
		||||
			if (mtd->height < 10)
 | 
			
		||||
				mtd->height = screen_size_y(s);
 | 
			
		||||
		} else if (mtd->preview == MODE_TREE_PREVIEW_BIG) {
 | 
			
		||||
			mtd->height = screen_size_y(s) / 4;
 | 
			
		||||
			if (mtd->height > mtd->line_size)
 | 
			
		||||
				mtd->height = mtd->line_size;
 | 
			
		||||
			if (mtd->height < 2)
 | 
			
		||||
				mtd->height = 2;
 | 
			
		||||
		} else
 | 
			
		||||
			mtd->height = screen_size_y(s);
 | 
			
		||||
	}
 | 
			
		||||
	if (screen_size_y(s) - mtd->height < 2)
 | 
			
		||||
		mtd->height = screen_size_y(s);
 | 
			
		||||
}
 | 
			
		||||
@@ -510,7 +530,7 @@ mode_tree_build(struct mode_tree_data *mtd)
 | 
			
		||||
	mode_tree_set_current(mtd, tag);
 | 
			
		||||
 | 
			
		||||
	mtd->width = screen_size_x(s);
 | 
			
		||||
	if (mtd->preview)
 | 
			
		||||
	if (mtd->preview != MODE_TREE_PREVIEW_OFF)
 | 
			
		||||
		mode_tree_set_height(mtd);
 | 
			
		||||
	else
 | 
			
		||||
		mtd->height = screen_size_y(s);
 | 
			
		||||
@@ -742,8 +762,11 @@ mode_tree_draw(struct mode_tree_data *mtd)
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (mtd->preview == MODE_TREE_PREVIEW_OFF)
 | 
			
		||||
		goto done;
 | 
			
		||||
 | 
			
		||||
	sy = screen_size_y(s);
 | 
			
		||||
	if (!mtd->preview || sy <= 4 || h <= 4 || sy - h <= 4 || w <= 4)
 | 
			
		||||
	if (sy <= 4 || h < 2 || sy - h <= 4 || w <= 4)
 | 
			
		||||
		goto done;
 | 
			
		||||
 | 
			
		||||
	line = &mtd->line_list[mtd->current];
 | 
			
		||||
@@ -1041,7 +1064,7 @@ mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
 | 
			
		||||
		if (x > mtd->width || y > mtd->height) {
 | 
			
		||||
			if (*key == KEYC_MOUSEDOWN3_PANE)
 | 
			
		||||
				mode_tree_display_menu(mtd, c, x, y, 1);
 | 
			
		||||
			if (!mtd->preview)
 | 
			
		||||
			if (mtd->preview == MODE_TREE_PREVIEW_OFF)
 | 
			
		||||
				*key = KEYC_NONE;
 | 
			
		||||
			return (0);
 | 
			
		||||
		}
 | 
			
		||||
@@ -1232,9 +1255,19 @@ mode_tree_key(struct mode_tree_data *mtd, struct client *c, key_code *key,
 | 
			
		||||
		    PROMPT_NOFORMAT, PROMPT_TYPE_SEARCH);
 | 
			
		||||
		break;
 | 
			
		||||
	case 'v':
 | 
			
		||||
		mtd->preview = !mtd->preview;
 | 
			
		||||
		switch (mtd->preview) {
 | 
			
		||||
		case MODE_TREE_PREVIEW_OFF:
 | 
			
		||||
			mtd->preview = MODE_TREE_PREVIEW_BIG;
 | 
			
		||||
			break;
 | 
			
		||||
		case MODE_TREE_PREVIEW_NORMAL:
 | 
			
		||||
			mtd->preview = MODE_TREE_PREVIEW_OFF;
 | 
			
		||||
			break;
 | 
			
		||||
		case MODE_TREE_PREVIEW_BIG:
 | 
			
		||||
			mtd->preview = MODE_TREE_PREVIEW_NORMAL;
 | 
			
		||||
			break;
 | 
			
		||||
		}
 | 
			
		||||
		mode_tree_build(mtd);
 | 
			
		||||
		if (mtd->preview)
 | 
			
		||||
		if (mtd->preview != MODE_TREE_PREVIEW_OFF)
 | 
			
		||||
			mode_tree_check_selected(mtd);
 | 
			
		||||
		break;
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										4
									
								
								tmux.1
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								tmux.1
									
									
									
									
									
								
							@@ -2627,7 +2627,7 @@ specifies the format for each item in the list and
 | 
			
		||||
.Fl K
 | 
			
		||||
a format for each shortcut key; both are evaluated once for each line.
 | 
			
		||||
.Fl N
 | 
			
		||||
starts without the preview.
 | 
			
		||||
starts without the preview or if given twice with the larger preview.
 | 
			
		||||
This command works only if at least one client is attached.
 | 
			
		||||
.It Xo
 | 
			
		||||
.Ic choose-tree
 | 
			
		||||
@@ -2711,7 +2711,7 @@ specifies the format for each item in the tree and
 | 
			
		||||
.Fl K
 | 
			
		||||
a format for each shortcut key; both are evaluated once for each line.
 | 
			
		||||
.Fl N
 | 
			
		||||
starts without the preview.
 | 
			
		||||
starts without the preview or if given twice with the larger preview.
 | 
			
		||||
.Fl G
 | 
			
		||||
includes all sessions in any session groups in the tree rather than only the
 | 
			
		||||
first.
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user