Mercurial > vim
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 |