mirror of
				https://github.com/tmux/tmux.git
				synced 2025-11-04 09:44:18 +00:00 
			
		
		
		
	main-horizontal layout and main-pane-height option to match vertical.
This commit is contained in:
		
							
								
								
									
										3
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								CHANGES
									
									
									
									
									
								
							@@ -1,5 +1,6 @@
 | 
				
			|||||||
18 May 2009
 | 
					18 May 2009
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					* main-horizontal layout and main-pane-height option to match vertical.
 | 
				
			||||||
* New window option main-pane-width to set the width of the large left pane with
 | 
					* New window option main-pane-width to set the width of the large left pane with
 | 
				
			||||||
  main-vertical (was left-vertical) layout. 
 | 
					  main-vertical (was left-vertical) layout. 
 | 
				
			||||||
* Lots of layout cleanup. manual layout is now manual-vertical.
 | 
					* Lots of layout cleanup. manual layout is now manual-vertical.
 | 
				
			||||||
@@ -1269,7 +1270,7 @@
 | 
				
			|||||||
  (including mutt, emacs). No status bar yet and no key remapping or other
 | 
					  (including mutt, emacs). No status bar yet and no key remapping or other
 | 
				
			||||||
  customisation.
 | 
					  customisation.
 | 
				
			||||||
 | 
					
 | 
				
			||||||
$Id: CHANGES,v 1.291 2009-05-18 21:58:40 nicm Exp $
 | 
					$Id: CHANGES,v 1.292 2009-05-18 22:17:24 nicm Exp $
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 LocalWords:  showw utf UTF fulvio ciriaco joshe OSC APC gettime abc DEF OA clr
 | 
					 LocalWords:  showw utf UTF fulvio ciriaco joshe OSC APC gettime abc DEF OA clr
 | 
				
			||||||
 LocalWords:  rivo nurges lscm Erdely eol smysession mysession ek dstname RB ms
 | 
					 LocalWords:  rivo nurges lscm Erdely eol smysession mysession ek dstname RB ms
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										74
									
								
								layout.c
									
									
									
									
									
								
							
							
						
						
									
										74
									
								
								layout.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: layout.c,v 1.13 2009-05-18 21:58:40 nicm Exp $ */
 | 
					/* $Id: layout.c,v 1.14 2009-05-18 22:17:24 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2009 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -34,6 +34,7 @@
 | 
				
			|||||||
void	layout_active_only_refresh(struct window *, int);
 | 
					void	layout_active_only_refresh(struct window *, int);
 | 
				
			||||||
void	layout_even_h_refresh(struct window *, int);
 | 
					void	layout_even_h_refresh(struct window *, int);
 | 
				
			||||||
void	layout_even_v_refresh(struct window *, int);
 | 
					void	layout_even_v_refresh(struct window *, int);
 | 
				
			||||||
 | 
					void	layout_main_h_refresh(struct window *, int);
 | 
				
			||||||
void	layout_main_v_refresh(struct window *, int);
 | 
					void	layout_main_v_refresh(struct window *, int);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
const struct {
 | 
					const struct {
 | 
				
			||||||
@@ -45,6 +46,7 @@ const struct {
 | 
				
			|||||||
	{ "active-only", layout_active_only_refresh, NULL },
 | 
						{ "active-only", layout_active_only_refresh, NULL },
 | 
				
			||||||
	{ "even-horizontal", layout_even_h_refresh, NULL },
 | 
						{ "even-horizontal", layout_even_h_refresh, NULL },
 | 
				
			||||||
	{ "even-vertical", layout_even_v_refresh, NULL },
 | 
						{ "even-vertical", layout_even_v_refresh, NULL },
 | 
				
			||||||
 | 
						{ "main-horizontal", layout_main_h_refresh, NULL },
 | 
				
			||||||
	{ "main-vertical", layout_main_v_refresh, NULL },
 | 
						{ "main-vertical", layout_main_v_refresh, NULL },
 | 
				
			||||||
};
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -299,3 +301,73 @@ layout_main_v_refresh(struct window *w, int active_only)
 | 
				
			|||||||
		window_pane_resize(wp, wp->sx, wp->sy + 1);
 | 
							window_pane_resize(wp, wp->sx, wp->sy + 1);
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void
 | 
				
			||||||
 | 
					layout_main_h_refresh(struct window *w, int active_only)
 | 
				
			||||||
 | 
					{
 | 
				
			||||||
 | 
						struct window_pane	*wp;
 | 
				
			||||||
 | 
						u_int			 i, n, mainheight, width, xoff;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						if (active_only)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Get number of panes. */
 | 
				
			||||||
 | 
						n = window_count_panes(w);
 | 
				
			||||||
 | 
						if (n == 0)
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Get the main pane height and add one for separator line. */
 | 
				
			||||||
 | 
						mainheight = options_get_number(&w->options, "main-pane-height") + 1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Need >1 pane and minimum rows; if fewer, display active only. */
 | 
				
			||||||
 | 
						if (n == 1 || w->sy < mainheight + PANE_MINIMUM) {
 | 
				
			||||||
 | 
							layout_active_only_refresh(w, active_only);
 | 
				
			||||||
 | 
							return;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
						n--;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* How many can we fit, not including first? */
 | 
				
			||||||
 | 
						if (w->sx / n < PANE_MINIMUM) {
 | 
				
			||||||
 | 
							width = PANE_MINIMUM;
 | 
				
			||||||
 | 
							n = w->sx / PANE_MINIMUM;
 | 
				
			||||||
 | 
						} else
 | 
				
			||||||
 | 
							width = w->sx / n;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Fit the panes. */
 | 
				
			||||||
 | 
						i = xoff = 0;
 | 
				
			||||||
 | 
						TAILQ_FOREACH(wp, &w->panes, entry) {
 | 
				
			||||||
 | 
							if (wp == TAILQ_FIRST(&w->panes)) {
 | 
				
			||||||
 | 
								wp->xoff = 0;
 | 
				
			||||||
 | 
								wp->yoff = 0;
 | 
				
			||||||
 | 
								window_pane_resize(wp, w->sx, mainheight - 1);
 | 
				
			||||||
 | 
								wp->flags &= ~PANE_HIDDEN;
 | 
				
			||||||
 | 
								continue;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							if (i > n) {
 | 
				
			||||||
 | 
								wp->flags |= PANE_HIDDEN;
 | 
				
			||||||
 | 
								continue;
 | 
				
			||||||
 | 
							}
 | 
				
			||||||
 | 
							wp->flags &= ~PANE_HIDDEN;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							wp->xoff = xoff;
 | 
				
			||||||
 | 
							wp->yoff = mainheight;
 | 
				
			||||||
 | 
							if (i != n - 1)
 | 
				
			||||||
 | 
					 			window_pane_resize(wp, width - 1, w->sy - mainheight);
 | 
				
			||||||
 | 
							else
 | 
				
			||||||
 | 
					 			window_pane_resize(wp, width - 1, w->sy - mainheight);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							i++;
 | 
				
			||||||
 | 
							xoff += width;
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						/* Any space left? */
 | 
				
			||||||
 | 
						while (xoff++ < w->sx + 1) {
 | 
				
			||||||
 | 
							wp = TAILQ_LAST(&w->panes, window_panes);
 | 
				
			||||||
 | 
							while (wp != NULL && wp == TAILQ_FIRST(&w->panes))
 | 
				
			||||||
 | 
								wp = TAILQ_PREV(wp, window_panes, entry);
 | 
				
			||||||
 | 
							if (wp == NULL)
 | 
				
			||||||
 | 
								break;
 | 
				
			||||||
 | 
							window_pane_resize(wp, wp->sx + 1, wp->sy);
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
							
								
								
									
										3
									
								
								tmux.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								tmux.c
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
				
			|||||||
/* $Id: tmux.c,v 1.118 2009-05-18 21:55:53 nicm Exp $ */
 | 
					/* $Id: tmux.c,v 1.119 2009-05-18 22:17:24 nicm Exp $ */
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/*
 | 
					/*
 | 
				
			||||||
 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
					 * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net>
 | 
				
			||||||
@@ -323,6 +323,7 @@ main(int argc, char **argv)
 | 
				
			|||||||
	options_set_number(
 | 
						options_set_number(
 | 
				
			||||||
	    &global_window_options, "mode-attr", GRID_ATTR_REVERSE);
 | 
						    &global_window_options, "mode-attr", GRID_ATTR_REVERSE);
 | 
				
			||||||
	options_set_number(&global_window_options, "main-pane-width", 81);
 | 
						options_set_number(&global_window_options, "main-pane-width", 81);
 | 
				
			||||||
 | 
						options_set_number(&global_window_options, "main-pane-height", 24);
 | 
				
			||||||
	options_set_number(&global_window_options, "mode-bg", 3);
 | 
						options_set_number(&global_window_options, "mode-bg", 3);
 | 
				
			||||||
	options_set_number(&global_window_options, "mode-fg", 0);
 | 
						options_set_number(&global_window_options, "mode-fg", 0);
 | 
				
			||||||
	options_set_number(&global_window_options, "mode-keys", MODEKEY_EMACS);
 | 
						options_set_number(&global_window_options, "mode-keys", MODEKEY_EMACS);
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user