]> granicus.if.org Git - vim/commitdiff
patch 8.0.1821: cursor in terminal window moves when pressing CTRL-W v8.0.1821
authorBram Moolenaar <Bram@vim.org>
Sat, 12 May 2018 18:36:24 +0000 (20:36 +0200)
committerBram Moolenaar <Bram@vim.org>
Sat, 12 May 2018 18:36:24 +0000 (20:36 +0200)
Problem:    Cursor in terminal window moves when pressing CTRL-W. (Dominique
            Pelle)
Solution:   Do not more the cursor or redraw when not in Terminal-Normal mode.
            (closes #2904)

src/terminal.c
src/version.c

index 277f18bcd6aad801d6e972582e412f9df771d80e..48bacd9ba9aca8e69ab234206110b6fe562f0577 100644 (file)
@@ -1606,23 +1606,24 @@ move_terminal_to_buffer(term_T *term)
     vterm_state_get_default_colors(vterm_obtain_state(term->tl_vterm),
                       &term->tl_default_color.fg, &term->tl_default_color.bg);
 
-    FOR_ALL_WINDOWS(wp)
-    {
-       if (wp->w_buffer == term->tl_buffer)
+    if (term->tl_normal_mode)
+       FOR_ALL_WINDOWS(wp)
        {
-           wp->w_cursor.lnum = term->tl_buffer->b_ml.ml_line_count;
-           wp->w_cursor.col = 0;
-           wp->w_valid = 0;
-           if (wp->w_cursor.lnum >= wp->w_height)
+           if (wp->w_buffer == term->tl_buffer)
            {
-               linenr_T min_topline = wp->w_cursor.lnum - wp->w_height + 1;
+               wp->w_cursor.lnum = term->tl_buffer->b_ml.ml_line_count;
+               wp->w_cursor.col = 0;
+               wp->w_valid = 0;
+               if (wp->w_cursor.lnum >= wp->w_height)
+               {
+                   linenr_T min_topline = wp->w_cursor.lnum - wp->w_height + 1;
 
-               if (wp->w_topline < min_topline)
-                   wp->w_topline = min_topline;
+                   if (wp->w_topline < min_topline)
+                       wp->w_topline = min_topline;
+               }
+               redraw_win_later(wp, NOT_VALID);
            }
-           redraw_win_later(wp, NOT_VALID);
        }
-    }
 }
 
 #if defined(FEAT_TIMERS) || defined(PROTO)
@@ -1688,11 +1689,11 @@ term_enter_normal_mode(void)
 {
     term_T *term = curbuf->b_term;
 
+    set_terminal_mode(term, TRUE);
+
     /* Append the current terminal contents to the buffer. */
     move_terminal_to_buffer(term);
 
-    set_terminal_mode(term, TRUE);
-
     /* Move the window cursor to the position of the cursor in the
      * terminal. */
     curwin->w_cursor.lnum = term->tl_scrollback_scrolled
index 7d86c010eb75c153dc18976a977a0701f61c7fbd..38d26f13d7ad298717769753a79d87ca4827dcf0 100644 (file)
@@ -761,6 +761,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1821,
 /**/
     1820,
 /**/