comparison src/window.c @ 826:1cdd2661f34c v7.0d01

updated for version 7.0d01
author vimboss
date Tue, 11 Apr 2006 21:38:50 +0000
parents 6675076019ae
children 5117153003bd
comparison
equal deleted inserted replaced
825:6675076019ae 826:1cdd2661f34c
89 #else 89 #else
90 # define ROWS_AVAIL (Rows - p_ch) 90 # define ROWS_AVAIL (Rows - p_ch)
91 #endif 91 #endif
92 92
93 #if defined(FEAT_WINDOWS) || defined(PROTO) 93 #if defined(FEAT_WINDOWS) || defined(PROTO)
94
95 static char *m_onlyone = N_("Already only one window");
96
94 /* 97 /*
95 * all CTRL-W window commands are handled here, called from normal_cmd(). 98 * all CTRL-W window commands are handled here, called from normal_cmd().
96 */ 99 */
97 void 100 void
98 do_window(nchar, Prenum, xchar) 101 do_window(nchar, Prenum, xchar)
328 CHECK_CMDWIN 331 CHECK_CMDWIN
329 win_goto_hor(FALSE, Prenum1); 332 win_goto_hor(FALSE, Prenum1);
330 break; 333 break;
331 #endif 334 #endif
332 335
336 /* move window to new tab page */
337 case 'T':
338 if (firstwin == lastwin)
339 MSG(_(m_onlyone));
340 else
341 {
342 tabpage_T *oldtab = curtab;
343 tabpage_T *newtab;
344 win_T *wp = curwin;
345
346 /* First create a new tab with the window, then go back to
347 * the old tab and close the window there. */
348 if (win_new_tabpage((int)Prenum) == OK
349 && valid_tabpage(oldtab))
350 {
351 newtab = curtab;
352 goto_tabpage_tp(oldtab);
353 if (curwin == wp)
354 win_close(curwin, FALSE);
355 if (valid_tabpage(newtab))
356 goto_tabpage_tp(newtab);
357 }
358 }
359 break;
360
333 /* cursor to top-left window */ 361 /* cursor to top-left window */
334 case 't': 362 case 't':
335 case Ctrl_T: 363 case Ctrl_T:
336 win_goto(firstwin); 364 win_goto(firstwin);
337 break; 365 break;
1100 #endif 1128 #endif
1101 newp->w_leftcol = oldp->w_leftcol; 1129 newp->w_leftcol = oldp->w_leftcol;
1102 newp->w_pcmark = oldp->w_pcmark; 1130 newp->w_pcmark = oldp->w_pcmark;
1103 newp->w_prev_pcmark = oldp->w_prev_pcmark; 1131 newp->w_prev_pcmark = oldp->w_prev_pcmark;
1104 newp->w_alt_fnum = oldp->w_alt_fnum; 1132 newp->w_alt_fnum = oldp->w_alt_fnum;
1133 newp->w_wrow = oldp->w_wrow;
1105 newp->w_fraction = oldp->w_fraction; 1134 newp->w_fraction = oldp->w_fraction;
1106 newp->w_prev_fraction_row = oldp->w_prev_fraction_row; 1135 newp->w_prev_fraction_row = oldp->w_prev_fraction_row;
1107 #ifdef FEAT_JUMPLIST 1136 #ifdef FEAT_JUMPLIST
1108 copy_jumplist(oldp, newp); 1137 copy_jumplist(oldp, newp);
1109 #endif 1138 #endif
2936 if (message 2965 if (message
2937 #ifdef FEAT_AUTOCMD 2966 #ifdef FEAT_AUTOCMD
2938 && !autocmd_busy 2967 && !autocmd_busy
2939 #endif 2968 #endif
2940 ) 2969 )
2941 MSG(_("Already only one window")); 2970 MSG(_(m_onlyone));
2942 return; 2971 return;
2943 } 2972 }
2944 2973
2945 /* Be very careful here: autocommands may change the window layout. */ 2974 /* Be very careful here: autocommands may change the window layout. */
2946 for (wp = firstwin; win_valid(wp); wp = nextwp) 2975 for (wp = firstwin; win_valid(wp); wp = nextwp)
5151 5180
5152 /* Don't want a negative height. Happens when splitting a tiny window. 5181 /* Don't want a negative height. Happens when splitting a tiny window.
5153 * Will equalize heights soon to fix it. */ 5182 * Will equalize heights soon to fix it. */
5154 if (height < 0) 5183 if (height < 0)
5155 height = 0; 5184 height = 0;
5185 if (wp->w_height == height)
5186 return; /* nothing to do */
5156 5187
5157 if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0) 5188 if (wp->w_wrow != wp->w_prev_fraction_row && wp->w_height > 0)
5158 wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT 5189 wp->w_fraction = ((long)wp->w_wrow * FRACTION_MULT
5159 + FRACTION_MULT / 2) / (long)wp->w_height; 5190 + FRACTION_MULT / 2) / (long)wp->w_height;
5160 5191